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// You cannot use Content-Type: application/x-www-form-urlencoded with Complete
200// Multipart Upload requests. Also, if you do not provide a Content-Type header,
201// CompleteMultipartUpload returns a 200 OK response.
202//
203// For more information about multipart uploads, see Uploading Objects Using
204// Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
205//
206// For information about permissions required to use the multipart upload API,
207// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
208//
209// CompleteMultipartUpload has the following special errors:
210//
211//    * Error code: EntityTooSmall Description: Your proposed upload is smaller
212//    than the minimum allowed object size. Each part must be at least 5 MB
213//    in size, except the last part. 400 Bad Request
214//
215//    * Error code: InvalidPart Description: One or more of the specified parts
216//    could not be found. The part might not have been uploaded, or the specified
217//    entity tag might not have matched the part's entity tag. 400 Bad Request
218//
219//    * Error code: InvalidPartOrder Description: The list of parts was not
220//    in ascending order. The parts list must be specified in order by part
221//    number. 400 Bad Request
222//
223//    * Error code: NoSuchUpload Description: The specified multipart upload
224//    does not exist. The upload ID might be invalid, or the multipart upload
225//    might have been aborted or completed. 404 Not Found
226//
227// The following operations are related to CompleteMultipartUpload:
228//
229//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
230//
231//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
232//
233//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
234//
235//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
236//
237//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
238//
239// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
240// with awserr.Error's Code and Message methods to get detailed information about
241// the error.
242//
243// See the AWS API reference guide for Amazon Simple Storage Service's
244// API operation CompleteMultipartUpload for usage and error information.
245// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
246func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) {
247	req, out := c.CompleteMultipartUploadRequest(input)
248	return out, req.Send()
249}
250
251// CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of
252// the ability to pass a context and additional request options.
253//
254// See CompleteMultipartUpload for details on how to use this API operation.
255//
256// The context must be non-nil and will be used for request cancellation. If
257// the context is nil a panic will occur. In the future the SDK may create
258// sub-contexts for http.Requests. See https://golang.org/pkg/context/
259// for more information on using Contexts.
260func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) {
261	req, out := c.CompleteMultipartUploadRequest(input)
262	req.SetContext(ctx)
263	req.ApplyOptions(opts...)
264	return out, req.Send()
265}
266
267const opCopyObject = "CopyObject"
268
269// CopyObjectRequest generates a "aws/request.Request" representing the
270// client's request for the CopyObject operation. The "output" return
271// value will be populated with the request's response once the request completes
272// successfully.
273//
274// Use "Send" method on the returned Request to send the API call to the service.
275// the "output" return value is not valid until after Send returns without error.
276//
277// See CopyObject for more information on using the CopyObject
278// API call, and error handling.
279//
280// This method is useful when you want to inject custom logic or configuration
281// into the SDK's request lifecycle. Such as custom headers, or retry logic.
282//
283//
284//    // Example sending a request using the CopyObjectRequest method.
285//    req, resp := client.CopyObjectRequest(params)
286//
287//    err := req.Send()
288//    if err == nil { // resp is now filled
289//        fmt.Println(resp)
290//    }
291//
292// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
293func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) {
294	op := &request.Operation{
295		Name:       opCopyObject,
296		HTTPMethod: "PUT",
297		HTTPPath:   "/{Bucket}/{Key+}",
298	}
299
300	if input == nil {
301		input = &CopyObjectInput{}
302	}
303
304	output = &CopyObjectOutput{}
305	req = c.newRequest(op, input, output)
306	return
307}
308
309// CopyObject API operation for Amazon Simple Storage Service.
310//
311// Creates a copy of an object that is already stored in Amazon S3.
312//
313// You can store individual objects of up to 5 TB in Amazon S3. You create a
314// copy of your object up to 5 GB in size in a single atomic action using this
315// API. However, to copy an object greater than 5 GB, you must use the multipart
316// upload Upload Part - Copy API. For more information, see Copy Object Using
317// the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
318//
319// All copy requests must be authenticated. Additionally, you must have read
320// access to the source object and write access to the destination bucket. For
321// more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
322// Both the Region that you want to copy the object from and the Region that
323// you want to copy the object to must be enabled for your account.
324//
325// A copy request might return an error when Amazon S3 receives the copy request
326// or while Amazon S3 is copying the files. If the error occurs before the copy
327// action starts, you receive a standard Amazon S3 error. If the error occurs
328// during the copy operation, the error response is embedded in the 200 OK response.
329// This means that a 200 OK response can contain either a success or an error.
330// Design your application to parse the contents of the response and handle
331// it appropriately.
332//
333// If the copy is successful, you receive a response with information about
334// the copied object.
335//
336// If the request is an HTTP 1.1 request, the response is chunk encoded. If
337// it were not, it would not contain the content-length, and you would need
338// to read the entire body.
339//
340// The copy request charge is based on the storage class and Region that you
341// specify for the destination object. For pricing information, see Amazon S3
342// pricing (http://aws.amazon.com/s3/pricing/).
343//
344// Amazon S3 transfer acceleration does not support cross-Region copies. If
345// you request a cross-Region copy using a transfer acceleration endpoint, you
346// get a 400 Bad Request error. For more information, see Transfer Acceleration
347// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
348//
349// Metadata
350//
351// When copying an object, you can preserve all metadata (default) or specify
352// new metadata. However, the ACL is not preserved and is set to private for
353// the user making the request. To override the default ACL setting, specify
354// a new ACL when generating a copy request. For more information, see Using
355// ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
356//
357// To specify whether you want the object metadata copied from the source object
358// or replaced with metadata provided in the request, you can optionally add
359// the x-amz-metadata-directive header. When you grant permissions, you can
360// use the s3:x-amz-metadata-directive condition key to enforce certain metadata
361// behavior when objects are uploaded. For more information, see Specifying
362// Conditions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html)
363// in the Amazon S3 User Guide. For a complete list of Amazon S3-specific condition
364// keys, see Actions, Resources, and Condition Keys for Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
365//
366//  x-amz-copy-source-if Headers
367//
368// To only copy an object under certain conditions, such as whether the Etag
369// matches or whether the object was modified before or after a specified date,
370// use the following request parameters:
371//
372//    * x-amz-copy-source-if-match
373//
374//    * x-amz-copy-source-if-none-match
375//
376//    * x-amz-copy-source-if-unmodified-since
377//
378//    * x-amz-copy-source-if-modified-since
379//
380// If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
381// headers are present in the request and evaluate as follows, Amazon S3 returns
382// 200 OK and copies the data:
383//
384//    * x-amz-copy-source-if-match condition evaluates to true
385//
386//    * x-amz-copy-source-if-unmodified-since condition evaluates to false
387//
388// If both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
389// headers are present in the request and evaluate as follows, Amazon S3 returns
390// the 412 Precondition Failed response code:
391//
392//    * x-amz-copy-source-if-none-match condition evaluates to false
393//
394//    * x-amz-copy-source-if-modified-since condition evaluates to true
395//
396// All headers with the x-amz- prefix, including x-amz-copy-source, must be
397// signed.
398//
399// Server-side encryption
400//
401// When you perform a CopyObject operation, you can optionally use the appropriate
402// encryption-related headers to encrypt the object using server-side encryption
403// with Amazon Web Services managed encryption keys (SSE-S3 or SSE-KMS) or a
404// customer-provided encryption key. With server-side encryption, Amazon S3
405// encrypts your data as it writes it to disks in its data centers and decrypts
406// the data when you access it. For more information about server-side encryption,
407// see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
408//
409// If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the
410// object. For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
411// in the Amazon S3 User Guide.
412//
413// Access Control List (ACL)-Specific Request Headers
414//
415// When copying an object, you can optionally use headers to grant ACL-based
416// permissions. By default, all objects are private. Only the owner has full
417// access control. When adding a new object, you can grant permissions to individual
418// Amazon Web Services accounts or to predefined groups defined by Amazon S3.
419// These permissions are then added to the ACL on the object. For more information,
420// see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
421// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
422//
423// Storage Class Options
424//
425// You can use the CopyObject action to change the storage class of an object
426// that is already stored in Amazon S3 using the StorageClass parameter. For
427// more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
428// in the Amazon S3 User Guide.
429//
430// Versioning
431//
432// By default, x-amz-copy-source identifies the current version of an object
433// to copy. If the current version is a delete marker, Amazon S3 behaves as
434// if the object was deleted. To copy a different version, use the versionId
435// subresource.
436//
437// If you enable versioning on the target bucket, Amazon S3 generates a unique
438// version ID for the object being copied. This version ID is different from
439// the version ID of the source object. Amazon S3 returns the version ID of
440// the copied object in the x-amz-version-id response header in the response.
441//
442// If you do not enable versioning or suspend it on the target bucket, the version
443// ID that Amazon S3 generates is always null.
444//
445// If the source object's storage class is GLACIER, you must restore a copy
446// of this object before you can use it as a source object for the copy operation.
447// For more information, see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
448//
449// The following operations are related to CopyObject:
450//
451//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
452//
453//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
454//
455// For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
456//
457// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
458// with awserr.Error's Code and Message methods to get detailed information about
459// the error.
460//
461// See the AWS API reference guide for Amazon Simple Storage Service's
462// API operation CopyObject for usage and error information.
463//
464// Returned Error Codes:
465//   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
466//   The source object of the COPY action is not in the active tier and is only
467//   stored in Amazon S3 Glacier.
468//
469// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
470func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
471	req, out := c.CopyObjectRequest(input)
472	return out, req.Send()
473}
474
475// CopyObjectWithContext is the same as CopyObject with the addition of
476// the ability to pass a context and additional request options.
477//
478// See CopyObject for details on how to use this API operation.
479//
480// The context must be non-nil and will be used for request cancellation. If
481// the context is nil a panic will occur. In the future the SDK may create
482// sub-contexts for http.Requests. See https://golang.org/pkg/context/
483// for more information on using Contexts.
484func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
485	req, out := c.CopyObjectRequest(input)
486	req.SetContext(ctx)
487	req.ApplyOptions(opts...)
488	return out, req.Send()
489}
490
491const opCreateBucket = "CreateBucket"
492
493// CreateBucketRequest generates a "aws/request.Request" representing the
494// client's request for the CreateBucket operation. The "output" return
495// value will be populated with the request's response once the request completes
496// successfully.
497//
498// Use "Send" method on the returned Request to send the API call to the service.
499// the "output" return value is not valid until after Send returns without error.
500//
501// See CreateBucket for more information on using the CreateBucket
502// API call, and error handling.
503//
504// This method is useful when you want to inject custom logic or configuration
505// into the SDK's request lifecycle. Such as custom headers, or retry logic.
506//
507//
508//    // Example sending a request using the CreateBucketRequest method.
509//    req, resp := client.CreateBucketRequest(params)
510//
511//    err := req.Send()
512//    if err == nil { // resp is now filled
513//        fmt.Println(resp)
514//    }
515//
516// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
517func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
518	op := &request.Operation{
519		Name:       opCreateBucket,
520		HTTPMethod: "PUT",
521		HTTPPath:   "/{Bucket}",
522	}
523
524	if input == nil {
525		input = &CreateBucketInput{}
526	}
527
528	output = &CreateBucketOutput{}
529	req = c.newRequest(op, input, output)
530	return
531}
532
533// CreateBucket API operation for Amazon Simple Storage Service.
534//
535// Creates a new S3 bucket. To create a bucket, you must register with Amazon
536// S3 and have a valid Amazon Web Services Access Key ID to authenticate requests.
537// Anonymous requests are never allowed to create buckets. By creating the bucket,
538// you become the bucket owner.
539//
540// Not every string is an acceptable bucket name. For information about bucket
541// naming restrictions, see Bucket naming rules (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
542//
543// If you want to create an Amazon S3 on Outposts bucket, see Create Bucket
544// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html).
545//
546// By default, the bucket is created in the US East (N. Virginia) Region. You
547// can optionally specify a Region in the request body. You might choose a Region
548// to optimize latency, minimize costs, or address regulatory requirements.
549// For example, if you reside in Europe, you will probably find it advantageous
550// to create buckets in the Europe (Ireland) Region. For more information, see
551// Accessing a bucket (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
552//
553// If you send your create bucket request to the s3.amazonaws.com endpoint,
554// the request goes to the us-east-1 Region. Accordingly, the signature calculations
555// in Signature Version 4 must use us-east-1 as the Region, even if the location
556// constraint in the request specifies another Region where the bucket is to
557// be created. If you create a bucket in a Region other than US East (N. Virginia),
558// your application must be able to handle 307 redirect. For more information,
559// see Virtual hosting of buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).
560//
561// When creating a bucket using this operation, you can optionally specify the
562// accounts or groups that should be granted specific permissions on the bucket.
563// There are two ways to grant the appropriate permissions using the request
564// headers.
565//
566//    * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports
567//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
568//    predefined set of grantees and permissions. For more information, see
569//    Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
570//
571//    * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write,
572//    x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
573//    headers. These headers map to the set of permissions Amazon S3 supports
574//    in an ACL. For more information, see Access control list (ACL) overview
575//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You
576//    specify each grantee as a type=value pair, where the type is one of the
577//    following: id – if the value specified is the canonical user ID of an
578//    Amazon Web Services account uri – if you are granting permissions to
579//    a predefined group emailAddress – if the value specified is the email
580//    address of an Amazon Web Services account Using email addresses to specify
581//    a grantee is only supported in the following Amazon Web Services Regions:
582//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
583//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
584//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
585//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
586//    in the Amazon Web Services General Reference. For example, the following
587//    x-amz-grant-read header grants the Amazon Web Services accounts identified
588//    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
589//    id="11112222333", id="444455556666"
590//
591// You can use either a canned ACL or specify access permissions explicitly.
592// You cannot do both.
593//
594// Permissions
595//
596// If your CreateBucket request specifies ACL permissions and the ACL is public-read,
597// public-read-write, authenticated-read, or if you specify access permissions
598// explicitly through any other ACL, both s3:CreateBucket and s3:PutBucketAcl
599// permissions are needed. If the ACL the CreateBucket request is private, only
600// s3:CreateBucket permission is needed.
601//
602// If ObjectLockEnabledForBucket is set to true in your CreateBucket request,
603// s3:PutBucketObjectLockConfiguration and s3:PutBucketVersioning permissions
604// are required.
605//
606// The following operations are related to CreateBucket:
607//
608//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
609//
610//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
611//
612// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
613// with awserr.Error's Code and Message methods to get detailed information about
614// the error.
615//
616// See the AWS API reference guide for Amazon Simple Storage Service's
617// API operation CreateBucket for usage and error information.
618//
619// Returned Error Codes:
620//   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
621//   The requested bucket name is not available. The bucket namespace is shared
622//   by all users of the system. Select a different name and try again.
623//
624//   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
625//   The bucket you tried to create already exists, and you own it. Amazon S3
626//   returns this error in all Amazon Web Services Regions except in the North
627//   Virginia Region. For legacy compatibility, if you re-create an existing bucket
628//   that you already own in the North Virginia Region, Amazon S3 returns 200
629//   OK and resets the bucket access control lists (ACLs).
630//
631// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
632func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
633	req, out := c.CreateBucketRequest(input)
634	return out, req.Send()
635}
636
637// CreateBucketWithContext is the same as CreateBucket with the addition of
638// the ability to pass a context and additional request options.
639//
640// See CreateBucket for details on how to use this API operation.
641//
642// The context must be non-nil and will be used for request cancellation. If
643// the context is nil a panic will occur. In the future the SDK may create
644// sub-contexts for http.Requests. See https://golang.org/pkg/context/
645// for more information on using Contexts.
646func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
647	req, out := c.CreateBucketRequest(input)
648	req.SetContext(ctx)
649	req.ApplyOptions(opts...)
650	return out, req.Send()
651}
652
653const opCreateMultipartUpload = "CreateMultipartUpload"
654
655// CreateMultipartUploadRequest generates a "aws/request.Request" representing the
656// client's request for the CreateMultipartUpload operation. The "output" return
657// value will be populated with the request's response once the request completes
658// successfully.
659//
660// Use "Send" method on the returned Request to send the API call to the service.
661// the "output" return value is not valid until after Send returns without error.
662//
663// See CreateMultipartUpload for more information on using the CreateMultipartUpload
664// API call, and error handling.
665//
666// This method is useful when you want to inject custom logic or configuration
667// into the SDK's request lifecycle. Such as custom headers, or retry logic.
668//
669//
670//    // Example sending a request using the CreateMultipartUploadRequest method.
671//    req, resp := client.CreateMultipartUploadRequest(params)
672//
673//    err := req.Send()
674//    if err == nil { // resp is now filled
675//        fmt.Println(resp)
676//    }
677//
678// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
679func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
680	op := &request.Operation{
681		Name:       opCreateMultipartUpload,
682		HTTPMethod: "POST",
683		HTTPPath:   "/{Bucket}/{Key+}?uploads",
684	}
685
686	if input == nil {
687		input = &CreateMultipartUploadInput{}
688	}
689
690	output = &CreateMultipartUploadOutput{}
691	req = c.newRequest(op, input, output)
692	return
693}
694
695// CreateMultipartUpload API operation for Amazon Simple Storage Service.
696//
697// This action initiates a multipart upload and returns an upload ID. This upload
698// ID is used to associate all of the parts in the specific multipart upload.
699// You specify this upload ID in each of your subsequent upload part requests
700// (see UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)).
701// You also include this upload ID in the final request to either complete or
702// abort the multipart upload request.
703//
704// For more information about multipart uploads, see Multipart Upload Overview
705// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html).
706//
707// If you have configured a lifecycle rule to abort incomplete multipart uploads,
708// the upload must complete within the number of days specified in the bucket
709// lifecycle configuration. Otherwise, the incomplete multipart upload becomes
710// eligible for an abort action and Amazon S3 aborts the multipart upload. For
711// more information, see Aborting Incomplete Multipart Uploads Using a Bucket
712// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
713//
714// For information about the permissions required to use the multipart upload
715// API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
716//
717// For request signing, multipart upload is just a series of regular requests.
718// You initiate a multipart upload, send one or more requests to upload parts,
719// and then complete the multipart upload process. You sign each request individually.
720// There is nothing special about signing multipart upload requests. For more
721// information about signing, see Authenticating Requests (Amazon Web Services
722// Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
723//
724// After you initiate a multipart upload and upload one or more parts, to stop
725// being charged for storing the uploaded parts, you must either complete or
726// abort the multipart upload. Amazon S3 frees up the space used to store the
727// parts and stop charging you for storing them only after you either complete
728// or abort a multipart upload.
729//
730// You can optionally request server-side encryption. For server-side encryption,
731// Amazon S3 encrypts your data as it writes it to disks in its data centers
732// and decrypts it when you access it. You can provide your own encryption key,
733// or use Amazon Web Services KMS keys or Amazon S3-managed encryption keys.
734// If you choose to provide your own encryption key, the request headers you
735// provide in UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
736// and UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
737// requests must match the headers you used in the request to initiate the upload
738// by using CreateMultipartUpload.
739//
740// To perform a multipart upload with encryption using an Amazon Web Services
741// KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey*
742// actions on the key. These permissions are required because Amazon S3 must
743// decrypt and read data from the encrypted file parts before it completes the
744// multipart upload. For more information, see Multipart upload API and permissions
745// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
746// in the Amazon S3 User Guide.
747//
748// If your Identity and Access Management (IAM) user or role is in the same
749// Amazon Web Services account as the KMS key, then you must have these permissions
750// on the key policy. If your IAM user or role belongs to a different account
751// than the key, then you must have the permissions on both the key policy and
752// your IAM user or role.
753//
754// For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
755//
756// Access Permissions
757//
758// When copying an object, you can optionally specify the accounts or groups
759// that should be granted specific permissions on the new object. There are
760// two ways to grant the permissions using the request headers:
761//
762//    * Specify a canned ACL with the x-amz-acl request header. For more information,
763//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
764//
765//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
766//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
767//    map to the set of permissions that Amazon S3 supports in an ACL. For more
768//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
769//
770// You can use either a canned ACL or specify access permissions explicitly.
771// You cannot do both.
772//
773// Server-Side- Encryption-Specific Request Headers
774//
775// You can optionally tell Amazon S3 to encrypt data at rest using server-side
776// encryption. Server-side encryption is for data encryption at rest. Amazon
777// S3 encrypts your data as it writes it to disks in its data centers and decrypts
778// it when you access it. The option you use depends on whether you want to
779// use Amazon Web Services managed encryption keys or provide your own encryption
780// key.
781//
782//    * Use encryption keys managed by Amazon S3 or customer managed key stored
783//    in Amazon Web Services Key Management Service (Amazon Web Services KMS)
784//    – If you want Amazon Web Services to manage the keys used to encrypt
785//    data, specify the following headers in the request. x-amz-server-side-encryption
786//    x-amz-server-side-encryption-aws-kms-key-id x-amz-server-side-encryption-context
787//    If you specify x-amz-server-side-encryption:aws:kms, but don't provide
788//    x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon
789//    Web Services managed key in Amazon Web Services KMS to protect the data.
790//    All GET and PUT requests for an object protected by Amazon Web Services
791//    KMS fail if you don't make them with SSL or by using SigV4. For more information
792//    about server-side encryption with KMS key (SSE-KMS), see Protecting Data
793//    Using Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
794//
795//    * Use customer-provided encryption keys – If you want to manage your
796//    own encryption keys, provide all the following headers in the request.
797//    x-amz-server-side-encryption-customer-algorithm x-amz-server-side-encryption-customer-key
798//    x-amz-server-side-encryption-customer-key-MD5 For more information about
799//    server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using
800//    Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
801//
802// Access-Control-List (ACL)-Specific Request Headers
803//
804// You also can use the following access control–related headers with this
805// operation. By default, all objects are private. Only the owner has full access
806// control. When adding a new object, you can grant permissions to individual
807// Amazon Web Services accounts or to predefined groups defined by Amazon S3.
808// These permissions are then added to the access control list (ACL) on the
809// object. For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
810// With this operation, you can grant access permissions using one of the following
811// two methods:
812//
813//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
814//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
815//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
816//
817//    * Specify access permissions explicitly — To explicitly grant access
818//    permissions to specific Amazon Web Services accounts or groups, use the
819//    following headers. Each header maps to specific permissions that Amazon
820//    S3 supports in an ACL. For more information, see Access Control List (ACL)
821//    Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
822//    In the header, you specify a list of grantees who get the specific permission.
823//    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
824//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
825//    specify each grantee as a type=value pair, where the type is one of the
826//    following: id – if the value specified is the canonical user ID of an
827//    Amazon Web Services account uri – if you are granting permissions to
828//    a predefined group emailAddress – if the value specified is the email
829//    address of an Amazon Web Services account Using email addresses to specify
830//    a grantee is only supported in the following Amazon Web Services Regions:
831//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
832//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
833//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
834//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
835//    in the Amazon Web Services General Reference. For example, the following
836//    x-amz-grant-read header grants the Amazon Web Services accounts identified
837//    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
838//    id="11112222333", id="444455556666"
839//
840// The following operations are related to CreateMultipartUpload:
841//
842//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
843//
844//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
845//
846//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
847//
848//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
849//
850//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
851//
852// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
853// with awserr.Error's Code and Message methods to get detailed information about
854// the error.
855//
856// See the AWS API reference guide for Amazon Simple Storage Service's
857// API operation CreateMultipartUpload for usage and error information.
858// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
859func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
860	req, out := c.CreateMultipartUploadRequest(input)
861	return out, req.Send()
862}
863
864// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
865// the ability to pass a context and additional request options.
866//
867// See CreateMultipartUpload for details on how to use this API operation.
868//
869// The context must be non-nil and will be used for request cancellation. If
870// the context is nil a panic will occur. In the future the SDK may create
871// sub-contexts for http.Requests. See https://golang.org/pkg/context/
872// for more information on using Contexts.
873func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
874	req, out := c.CreateMultipartUploadRequest(input)
875	req.SetContext(ctx)
876	req.ApplyOptions(opts...)
877	return out, req.Send()
878}
879
880const opDeleteBucket = "DeleteBucket"
881
882// DeleteBucketRequest generates a "aws/request.Request" representing the
883// client's request for the DeleteBucket operation. The "output" return
884// value will be populated with the request's response once the request completes
885// successfully.
886//
887// Use "Send" method on the returned Request to send the API call to the service.
888// the "output" return value is not valid until after Send returns without error.
889//
890// See DeleteBucket for more information on using the DeleteBucket
891// API call, and error handling.
892//
893// This method is useful when you want to inject custom logic or configuration
894// into the SDK's request lifecycle. Such as custom headers, or retry logic.
895//
896//
897//    // Example sending a request using the DeleteBucketRequest method.
898//    req, resp := client.DeleteBucketRequest(params)
899//
900//    err := req.Send()
901//    if err == nil { // resp is now filled
902//        fmt.Println(resp)
903//    }
904//
905// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
906func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
907	op := &request.Operation{
908		Name:       opDeleteBucket,
909		HTTPMethod: "DELETE",
910		HTTPPath:   "/{Bucket}",
911	}
912
913	if input == nil {
914		input = &DeleteBucketInput{}
915	}
916
917	output = &DeleteBucketOutput{}
918	req = c.newRequest(op, input, output)
919	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
920	return
921}
922
923// DeleteBucket API operation for Amazon Simple Storage Service.
924//
925// Deletes the S3 bucket. All objects (including all object versions and delete
926// markers) in the bucket must be deleted before the bucket itself can be deleted.
927//
928// Related Resources
929//
930//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
931//
932//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
933//
934// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
935// with awserr.Error's Code and Message methods to get detailed information about
936// the error.
937//
938// See the AWS API reference guide for Amazon Simple Storage Service's
939// API operation DeleteBucket for usage and error information.
940// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
941func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
942	req, out := c.DeleteBucketRequest(input)
943	return out, req.Send()
944}
945
946// DeleteBucketWithContext is the same as DeleteBucket with the addition of
947// the ability to pass a context and additional request options.
948//
949// See DeleteBucket for details on how to use this API operation.
950//
951// The context must be non-nil and will be used for request cancellation. If
952// the context is nil a panic will occur. In the future the SDK may create
953// sub-contexts for http.Requests. See https://golang.org/pkg/context/
954// for more information on using Contexts.
955func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
956	req, out := c.DeleteBucketRequest(input)
957	req.SetContext(ctx)
958	req.ApplyOptions(opts...)
959	return out, req.Send()
960}
961
962const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
963
964// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
965// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
966// value will be populated with the request's response once the request completes
967// successfully.
968//
969// Use "Send" method on the returned Request to send the API call to the service.
970// the "output" return value is not valid until after Send returns without error.
971//
972// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
973// API call, and error handling.
974//
975// This method is useful when you want to inject custom logic or configuration
976// into the SDK's request lifecycle. Such as custom headers, or retry logic.
977//
978//
979//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
980//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
981//
982//    err := req.Send()
983//    if err == nil { // resp is now filled
984//        fmt.Println(resp)
985//    }
986//
987// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
988func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
989	op := &request.Operation{
990		Name:       opDeleteBucketAnalyticsConfiguration,
991		HTTPMethod: "DELETE",
992		HTTPPath:   "/{Bucket}?analytics",
993	}
994
995	if input == nil {
996		input = &DeleteBucketAnalyticsConfigurationInput{}
997	}
998
999	output = &DeleteBucketAnalyticsConfigurationOutput{}
1000	req = c.newRequest(op, input, output)
1001	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1002	return
1003}
1004
1005// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
1006//
1007// Deletes an analytics configuration for the bucket (specified by the analytics
1008// configuration ID).
1009//
1010// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
1011// action. The bucket owner has this permission by default. The bucket owner
1012// can grant this permission to others. For more information about permissions,
1013// 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)
1014// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1015//
1016// For information about the Amazon S3 analytics feature, see Amazon S3 Analytics
1017// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
1018//
1019// The following operations are related to DeleteBucketAnalyticsConfiguration:
1020//
1021//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
1022//
1023//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
1024//
1025//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
1026//
1027// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1028// with awserr.Error's Code and Message methods to get detailed information about
1029// the error.
1030//
1031// See the AWS API reference guide for Amazon Simple Storage Service's
1032// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
1033// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
1034func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1035	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1036	return out, req.Send()
1037}
1038
1039// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
1040// the ability to pass a context and additional request options.
1041//
1042// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
1043//
1044// The context must be non-nil and will be used for request cancellation. If
1045// the context is nil a panic will occur. In the future the SDK may create
1046// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1047// for more information on using Contexts.
1048func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1049	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1050	req.SetContext(ctx)
1051	req.ApplyOptions(opts...)
1052	return out, req.Send()
1053}
1054
1055const opDeleteBucketCors = "DeleteBucketCors"
1056
1057// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
1058// client's request for the DeleteBucketCors operation. The "output" return
1059// value will be populated with the request's response once the request completes
1060// successfully.
1061//
1062// Use "Send" method on the returned Request to send the API call to the service.
1063// the "output" return value is not valid until after Send returns without error.
1064//
1065// See DeleteBucketCors for more information on using the DeleteBucketCors
1066// API call, and error handling.
1067//
1068// This method is useful when you want to inject custom logic or configuration
1069// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1070//
1071//
1072//    // Example sending a request using the DeleteBucketCorsRequest method.
1073//    req, resp := client.DeleteBucketCorsRequest(params)
1074//
1075//    err := req.Send()
1076//    if err == nil { // resp is now filled
1077//        fmt.Println(resp)
1078//    }
1079//
1080// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1081func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
1082	op := &request.Operation{
1083		Name:       opDeleteBucketCors,
1084		HTTPMethod: "DELETE",
1085		HTTPPath:   "/{Bucket}?cors",
1086	}
1087
1088	if input == nil {
1089		input = &DeleteBucketCorsInput{}
1090	}
1091
1092	output = &DeleteBucketCorsOutput{}
1093	req = c.newRequest(op, input, output)
1094	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1095	return
1096}
1097
1098// DeleteBucketCors API operation for Amazon Simple Storage Service.
1099//
1100// Deletes the cors configuration information set for the bucket.
1101//
1102// To use this operation, you must have permission to perform the s3:PutBucketCORS
1103// action. The bucket owner has this permission by default and can grant this
1104// permission to others.
1105//
1106// For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)
1107// in the Amazon S3 User Guide.
1108//
1109// Related Resources:
1110//
1111//    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
1112//
1113//    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
1114//
1115// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1116// with awserr.Error's Code and Message methods to get detailed information about
1117// the error.
1118//
1119// See the AWS API reference guide for Amazon Simple Storage Service's
1120// API operation DeleteBucketCors for usage and error information.
1121// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1122func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
1123	req, out := c.DeleteBucketCorsRequest(input)
1124	return out, req.Send()
1125}
1126
1127// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
1128// the ability to pass a context and additional request options.
1129//
1130// See DeleteBucketCors for details on how to use this API operation.
1131//
1132// The context must be non-nil and will be used for request cancellation. If
1133// the context is nil a panic will occur. In the future the SDK may create
1134// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1135// for more information on using Contexts.
1136func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
1137	req, out := c.DeleteBucketCorsRequest(input)
1138	req.SetContext(ctx)
1139	req.ApplyOptions(opts...)
1140	return out, req.Send()
1141}
1142
1143const opDeleteBucketEncryption = "DeleteBucketEncryption"
1144
1145// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
1146// client's request for the DeleteBucketEncryption operation. The "output" return
1147// value will be populated with the request's response once the request completes
1148// successfully.
1149//
1150// Use "Send" method on the returned Request to send the API call to the service.
1151// the "output" return value is not valid until after Send returns without error.
1152//
1153// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
1154// API call, and error handling.
1155//
1156// This method is useful when you want to inject custom logic or configuration
1157// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1158//
1159//
1160//    // Example sending a request using the DeleteBucketEncryptionRequest method.
1161//    req, resp := client.DeleteBucketEncryptionRequest(params)
1162//
1163//    err := req.Send()
1164//    if err == nil { // resp is now filled
1165//        fmt.Println(resp)
1166//    }
1167//
1168// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1169func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
1170	op := &request.Operation{
1171		Name:       opDeleteBucketEncryption,
1172		HTTPMethod: "DELETE",
1173		HTTPPath:   "/{Bucket}?encryption",
1174	}
1175
1176	if input == nil {
1177		input = &DeleteBucketEncryptionInput{}
1178	}
1179
1180	output = &DeleteBucketEncryptionOutput{}
1181	req = c.newRequest(op, input, output)
1182	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1183	return
1184}
1185
1186// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
1187//
1188// This implementation of the DELETE action removes default encryption from
1189// the bucket. For information about the Amazon S3 default encryption feature,
1190// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
1191// in the Amazon S3 User Guide.
1192//
1193// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
1194// action. The bucket owner has this permission by default. The bucket owner
1195// can grant this permission to others. For more information about permissions,
1196// 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)
1197// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
1198// in the Amazon S3 User Guide.
1199//
1200// Related Resources
1201//
1202//    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
1203//
1204//    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
1205//
1206// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1207// with awserr.Error's Code and Message methods to get detailed information about
1208// the error.
1209//
1210// See the AWS API reference guide for Amazon Simple Storage Service's
1211// API operation DeleteBucketEncryption for usage and error information.
1212// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1213func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
1214	req, out := c.DeleteBucketEncryptionRequest(input)
1215	return out, req.Send()
1216}
1217
1218// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
1219// the ability to pass a context and additional request options.
1220//
1221// See DeleteBucketEncryption for details on how to use this API operation.
1222//
1223// The context must be non-nil and will be used for request cancellation. If
1224// the context is nil a panic will occur. In the future the SDK may create
1225// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1226// for more information on using Contexts.
1227func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
1228	req, out := c.DeleteBucketEncryptionRequest(input)
1229	req.SetContext(ctx)
1230	req.ApplyOptions(opts...)
1231	return out, req.Send()
1232}
1233
1234const opDeleteBucketIntelligentTieringConfiguration = "DeleteBucketIntelligentTieringConfiguration"
1235
1236// DeleteBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
1237// client's request for the DeleteBucketIntelligentTieringConfiguration operation. The "output" return
1238// value will be populated with the request's response once the request completes
1239// successfully.
1240//
1241// Use "Send" method on the returned Request to send the API call to the service.
1242// the "output" return value is not valid until after Send returns without error.
1243//
1244// See DeleteBucketIntelligentTieringConfiguration for more information on using the DeleteBucketIntelligentTieringConfiguration
1245// API call, and error handling.
1246//
1247// This method is useful when you want to inject custom logic or configuration
1248// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1249//
1250//
1251//    // Example sending a request using the DeleteBucketIntelligentTieringConfigurationRequest method.
1252//    req, resp := client.DeleteBucketIntelligentTieringConfigurationRequest(params)
1253//
1254//    err := req.Send()
1255//    if err == nil { // resp is now filled
1256//        fmt.Println(resp)
1257//    }
1258//
1259// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
1260func (c *S3) DeleteBucketIntelligentTieringConfigurationRequest(input *DeleteBucketIntelligentTieringConfigurationInput) (req *request.Request, output *DeleteBucketIntelligentTieringConfigurationOutput) {
1261	op := &request.Operation{
1262		Name:       opDeleteBucketIntelligentTieringConfiguration,
1263		HTTPMethod: "DELETE",
1264		HTTPPath:   "/{Bucket}?intelligent-tiering",
1265	}
1266
1267	if input == nil {
1268		input = &DeleteBucketIntelligentTieringConfigurationInput{}
1269	}
1270
1271	output = &DeleteBucketIntelligentTieringConfigurationOutput{}
1272	req = c.newRequest(op, input, output)
1273	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1274	return
1275}
1276
1277// DeleteBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
1278//
1279// Deletes the S3 Intelligent-Tiering configuration from the specified bucket.
1280//
1281// The S3 Intelligent-Tiering storage class is designed to optimize storage
1282// costs by automatically moving data to the most cost-effective storage access
1283// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
1284// delivers automatic cost savings in two low latency and high throughput access
1285// tiers. For data that can be accessed asynchronously, you can choose to activate
1286// automatic archiving capabilities within the S3 Intelligent-Tiering storage
1287// class.
1288//
1289// The S3 Intelligent-Tiering storage class is the ideal storage class for data
1290// with unknown, changing, or unpredictable access patterns, independent of
1291// object size or retention period. If the size of an object is less than 128
1292// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
1293// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
1294// storage class.
1295//
1296// For more information, see Storage class for automatically optimizing frequently
1297// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
1298//
1299// Operations related to DeleteBucketIntelligentTieringConfiguration include:
1300//
1301//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
1302//
1303//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
1304//
1305//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
1306//
1307// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1308// with awserr.Error's Code and Message methods to get detailed information about
1309// the error.
1310//
1311// See the AWS API reference guide for Amazon Simple Storage Service's
1312// API operation DeleteBucketIntelligentTieringConfiguration for usage and error information.
1313// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
1314func (c *S3) DeleteBucketIntelligentTieringConfiguration(input *DeleteBucketIntelligentTieringConfigurationInput) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
1315	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
1316	return out, req.Send()
1317}
1318
1319// DeleteBucketIntelligentTieringConfigurationWithContext is the same as DeleteBucketIntelligentTieringConfiguration with the addition of
1320// the ability to pass a context and additional request options.
1321//
1322// See DeleteBucketIntelligentTieringConfiguration for details on how to use this API operation.
1323//
1324// The context must be non-nil and will be used for request cancellation. If
1325// the context is nil a panic will occur. In the future the SDK may create
1326// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1327// for more information on using Contexts.
1328func (c *S3) DeleteBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *DeleteBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
1329	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
1330	req.SetContext(ctx)
1331	req.ApplyOptions(opts...)
1332	return out, req.Send()
1333}
1334
1335const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
1336
1337// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1338// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
1339// value will be populated with the request's response once the request completes
1340// successfully.
1341//
1342// Use "Send" method on the returned Request to send the API call to the service.
1343// the "output" return value is not valid until after Send returns without error.
1344//
1345// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
1346// API call, and error handling.
1347//
1348// This method is useful when you want to inject custom logic or configuration
1349// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1350//
1351//
1352//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
1353//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
1354//
1355//    err := req.Send()
1356//    if err == nil { // resp is now filled
1357//        fmt.Println(resp)
1358//    }
1359//
1360// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1361func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
1362	op := &request.Operation{
1363		Name:       opDeleteBucketInventoryConfiguration,
1364		HTTPMethod: "DELETE",
1365		HTTPPath:   "/{Bucket}?inventory",
1366	}
1367
1368	if input == nil {
1369		input = &DeleteBucketInventoryConfigurationInput{}
1370	}
1371
1372	output = &DeleteBucketInventoryConfigurationOutput{}
1373	req = c.newRequest(op, input, output)
1374	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1375	return
1376}
1377
1378// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1379//
1380// Deletes an inventory configuration (identified by the inventory ID) from
1381// the bucket.
1382//
1383// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
1384// action. The bucket owner has this permission by default. The bucket owner
1385// can grant this permission to others. For more information about permissions,
1386// 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)
1387// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1388//
1389// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
1390// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
1391//
1392// Operations related to DeleteBucketInventoryConfiguration include:
1393//
1394//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
1395//
1396//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
1397//
1398//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
1399//
1400// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1401// with awserr.Error's Code and Message methods to get detailed information about
1402// the error.
1403//
1404// See the AWS API reference guide for Amazon Simple Storage Service's
1405// API operation DeleteBucketInventoryConfiguration for usage and error information.
1406// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1407func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
1408	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1409	return out, req.Send()
1410}
1411
1412// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
1413// the ability to pass a context and additional request options.
1414//
1415// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
1416//
1417// The context must be non-nil and will be used for request cancellation. If
1418// the context is nil a panic will occur. In the future the SDK may create
1419// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1420// for more information on using Contexts.
1421func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
1422	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1423	req.SetContext(ctx)
1424	req.ApplyOptions(opts...)
1425	return out, req.Send()
1426}
1427
1428const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
1429
1430// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
1431// client's request for the DeleteBucketLifecycle operation. The "output" return
1432// value will be populated with the request's response once the request completes
1433// successfully.
1434//
1435// Use "Send" method on the returned Request to send the API call to the service.
1436// the "output" return value is not valid until after Send returns without error.
1437//
1438// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
1439// API call, and error handling.
1440//
1441// This method is useful when you want to inject custom logic or configuration
1442// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1443//
1444//
1445//    // Example sending a request using the DeleteBucketLifecycleRequest method.
1446//    req, resp := client.DeleteBucketLifecycleRequest(params)
1447//
1448//    err := req.Send()
1449//    if err == nil { // resp is now filled
1450//        fmt.Println(resp)
1451//    }
1452//
1453// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1454func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
1455	op := &request.Operation{
1456		Name:       opDeleteBucketLifecycle,
1457		HTTPMethod: "DELETE",
1458		HTTPPath:   "/{Bucket}?lifecycle",
1459	}
1460
1461	if input == nil {
1462		input = &DeleteBucketLifecycleInput{}
1463	}
1464
1465	output = &DeleteBucketLifecycleOutput{}
1466	req = c.newRequest(op, input, output)
1467	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1468	return
1469}
1470
1471// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
1472//
1473// Deletes the lifecycle configuration from the specified bucket. Amazon S3
1474// removes all the lifecycle configuration rules in the lifecycle subresource
1475// associated with the bucket. Your objects never expire, and Amazon S3 no longer
1476// automatically deletes any objects on the basis of rules contained in the
1477// deleted lifecycle configuration.
1478//
1479// To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration
1480// action. By default, the bucket owner has this permission and the bucket owner
1481// can grant this permission to others.
1482//
1483// There is usually some time lag before lifecycle configuration deletion is
1484// fully propagated to all the Amazon S3 systems.
1485//
1486// For more information about the object expiration, see Elements to Describe
1487// Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
1488//
1489// Related actions include:
1490//
1491//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
1492//
1493//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
1494//
1495// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1496// with awserr.Error's Code and Message methods to get detailed information about
1497// the error.
1498//
1499// See the AWS API reference guide for Amazon Simple Storage Service's
1500// API operation DeleteBucketLifecycle for usage and error information.
1501// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1502func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
1503	req, out := c.DeleteBucketLifecycleRequest(input)
1504	return out, req.Send()
1505}
1506
1507// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
1508// the ability to pass a context and additional request options.
1509//
1510// See DeleteBucketLifecycle for details on how to use this API operation.
1511//
1512// The context must be non-nil and will be used for request cancellation. If
1513// the context is nil a panic will occur. In the future the SDK may create
1514// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1515// for more information on using Contexts.
1516func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
1517	req, out := c.DeleteBucketLifecycleRequest(input)
1518	req.SetContext(ctx)
1519	req.ApplyOptions(opts...)
1520	return out, req.Send()
1521}
1522
1523const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
1524
1525// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
1526// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
1527// value will be populated with the request's response once the request completes
1528// successfully.
1529//
1530// Use "Send" method on the returned Request to send the API call to the service.
1531// the "output" return value is not valid until after Send returns without error.
1532//
1533// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
1534// API call, and error handling.
1535//
1536// This method is useful when you want to inject custom logic or configuration
1537// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1538//
1539//
1540//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
1541//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
1542//
1543//    err := req.Send()
1544//    if err == nil { // resp is now filled
1545//        fmt.Println(resp)
1546//    }
1547//
1548// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1549func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
1550	op := &request.Operation{
1551		Name:       opDeleteBucketMetricsConfiguration,
1552		HTTPMethod: "DELETE",
1553		HTTPPath:   "/{Bucket}?metrics",
1554	}
1555
1556	if input == nil {
1557		input = &DeleteBucketMetricsConfigurationInput{}
1558	}
1559
1560	output = &DeleteBucketMetricsConfigurationOutput{}
1561	req = c.newRequest(op, input, output)
1562	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1563	return
1564}
1565
1566// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
1567//
1568// Deletes a metrics configuration for the Amazon CloudWatch request metrics
1569// (specified by the metrics configuration ID) from the bucket. Note that this
1570// doesn't include the daily storage metrics.
1571//
1572// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
1573// action. The bucket owner has this permission by default. The bucket owner
1574// can grant this permission to others. For more information about permissions,
1575// 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)
1576// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1577//
1578// For information about CloudWatch request metrics for Amazon S3, see Monitoring
1579// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
1580//
1581// The following operations are related to DeleteBucketMetricsConfiguration:
1582//
1583//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
1584//
1585//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
1586//
1587//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
1588//
1589//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
1590//
1591// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1592// with awserr.Error's Code and Message methods to get detailed information about
1593// the error.
1594//
1595// See the AWS API reference guide for Amazon Simple Storage Service's
1596// API operation DeleteBucketMetricsConfiguration for usage and error information.
1597// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1598func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
1599	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1600	return out, req.Send()
1601}
1602
1603// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
1604// the ability to pass a context and additional request options.
1605//
1606// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
1607//
1608// The context must be non-nil and will be used for request cancellation. If
1609// the context is nil a panic will occur. In the future the SDK may create
1610// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1611// for more information on using Contexts.
1612func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
1613	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1614	req.SetContext(ctx)
1615	req.ApplyOptions(opts...)
1616	return out, req.Send()
1617}
1618
1619const opDeleteBucketOwnershipControls = "DeleteBucketOwnershipControls"
1620
1621// DeleteBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
1622// client's request for the DeleteBucketOwnershipControls operation. The "output" return
1623// value will be populated with the request's response once the request completes
1624// successfully.
1625//
1626// Use "Send" method on the returned Request to send the API call to the service.
1627// the "output" return value is not valid until after Send returns without error.
1628//
1629// See DeleteBucketOwnershipControls for more information on using the DeleteBucketOwnershipControls
1630// API call, and error handling.
1631//
1632// This method is useful when you want to inject custom logic or configuration
1633// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1634//
1635//
1636//    // Example sending a request using the DeleteBucketOwnershipControlsRequest method.
1637//    req, resp := client.DeleteBucketOwnershipControlsRequest(params)
1638//
1639//    err := req.Send()
1640//    if err == nil { // resp is now filled
1641//        fmt.Println(resp)
1642//    }
1643//
1644// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
1645func (c *S3) DeleteBucketOwnershipControlsRequest(input *DeleteBucketOwnershipControlsInput) (req *request.Request, output *DeleteBucketOwnershipControlsOutput) {
1646	op := &request.Operation{
1647		Name:       opDeleteBucketOwnershipControls,
1648		HTTPMethod: "DELETE",
1649		HTTPPath:   "/{Bucket}?ownershipControls",
1650	}
1651
1652	if input == nil {
1653		input = &DeleteBucketOwnershipControlsInput{}
1654	}
1655
1656	output = &DeleteBucketOwnershipControlsOutput{}
1657	req = c.newRequest(op, input, output)
1658	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1659	return
1660}
1661
1662// DeleteBucketOwnershipControls API operation for Amazon Simple Storage Service.
1663//
1664// Removes OwnershipControls for an Amazon S3 bucket. To use this operation,
1665// you must have the s3:PutBucketOwnershipControls permission. For more information
1666// about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
1667//
1668// For information about Amazon S3 Object Ownership, see Using Object Ownership
1669// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
1670//
1671// The following operations are related to DeleteBucketOwnershipControls:
1672//
1673//    * GetBucketOwnershipControls
1674//
1675//    * PutBucketOwnershipControls
1676//
1677// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1678// with awserr.Error's Code and Message methods to get detailed information about
1679// the error.
1680//
1681// See the AWS API reference guide for Amazon Simple Storage Service's
1682// API operation DeleteBucketOwnershipControls for usage and error information.
1683// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
1684func (c *S3) DeleteBucketOwnershipControls(input *DeleteBucketOwnershipControlsInput) (*DeleteBucketOwnershipControlsOutput, error) {
1685	req, out := c.DeleteBucketOwnershipControlsRequest(input)
1686	return out, req.Send()
1687}
1688
1689// DeleteBucketOwnershipControlsWithContext is the same as DeleteBucketOwnershipControls with the addition of
1690// the ability to pass a context and additional request options.
1691//
1692// See DeleteBucketOwnershipControls for details on how to use this API operation.
1693//
1694// The context must be non-nil and will be used for request cancellation. If
1695// the context is nil a panic will occur. In the future the SDK may create
1696// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1697// for more information on using Contexts.
1698func (c *S3) DeleteBucketOwnershipControlsWithContext(ctx aws.Context, input *DeleteBucketOwnershipControlsInput, opts ...request.Option) (*DeleteBucketOwnershipControlsOutput, error) {
1699	req, out := c.DeleteBucketOwnershipControlsRequest(input)
1700	req.SetContext(ctx)
1701	req.ApplyOptions(opts...)
1702	return out, req.Send()
1703}
1704
1705const opDeleteBucketPolicy = "DeleteBucketPolicy"
1706
1707// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
1708// client's request for the DeleteBucketPolicy operation. The "output" return
1709// value will be populated with the request's response once the request completes
1710// successfully.
1711//
1712// Use "Send" method on the returned Request to send the API call to the service.
1713// the "output" return value is not valid until after Send returns without error.
1714//
1715// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
1716// API call, and error handling.
1717//
1718// This method is useful when you want to inject custom logic or configuration
1719// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1720//
1721//
1722//    // Example sending a request using the DeleteBucketPolicyRequest method.
1723//    req, resp := client.DeleteBucketPolicyRequest(params)
1724//
1725//    err := req.Send()
1726//    if err == nil { // resp is now filled
1727//        fmt.Println(resp)
1728//    }
1729//
1730// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1731func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
1732	op := &request.Operation{
1733		Name:       opDeleteBucketPolicy,
1734		HTTPMethod: "DELETE",
1735		HTTPPath:   "/{Bucket}?policy",
1736	}
1737
1738	if input == nil {
1739		input = &DeleteBucketPolicyInput{}
1740	}
1741
1742	output = &DeleteBucketPolicyOutput{}
1743	req = c.newRequest(op, input, output)
1744	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1745	return
1746}
1747
1748// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
1749//
1750// This implementation of the DELETE action uses the policy subresource to delete
1751// the policy of a specified bucket. If you are using an identity other than
1752// the root user of the Amazon Web Services account that owns the bucket, the
1753// calling identity must have the DeleteBucketPolicy permissions on the specified
1754// bucket and belong to the bucket owner's account to use this operation.
1755//
1756// If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403
1757// Access Denied error. If you have the correct permissions, but you're not
1758// using an identity that belongs to the bucket owner's account, Amazon S3 returns
1759// a 405 Method Not Allowed error.
1760//
1761// As a security precaution, the root user of the Amazon Web Services account
1762// that owns a bucket can always use this operation, even if the policy explicitly
1763// denies the root user the ability to perform this action.
1764//
1765// For more information about bucket policies, see Using Bucket Policies and
1766// UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
1767//
1768// The following operations are related to DeleteBucketPolicy
1769//
1770//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
1771//
1772//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
1773//
1774// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1775// with awserr.Error's Code and Message methods to get detailed information about
1776// the error.
1777//
1778// See the AWS API reference guide for Amazon Simple Storage Service's
1779// API operation DeleteBucketPolicy for usage and error information.
1780// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1781func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1782	req, out := c.DeleteBucketPolicyRequest(input)
1783	return out, req.Send()
1784}
1785
1786// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1787// the ability to pass a context and additional request options.
1788//
1789// See DeleteBucketPolicy for details on how to use this API operation.
1790//
1791// The context must be non-nil and will be used for request cancellation. If
1792// the context is nil a panic will occur. In the future the SDK may create
1793// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1794// for more information on using Contexts.
1795func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1796	req, out := c.DeleteBucketPolicyRequest(input)
1797	req.SetContext(ctx)
1798	req.ApplyOptions(opts...)
1799	return out, req.Send()
1800}
1801
1802const opDeleteBucketReplication = "DeleteBucketReplication"
1803
1804// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1805// client's request for the DeleteBucketReplication operation. The "output" return
1806// value will be populated with the request's response once the request completes
1807// successfully.
1808//
1809// Use "Send" method on the returned Request to send the API call to the service.
1810// the "output" return value is not valid until after Send returns without error.
1811//
1812// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1813// API call, and error handling.
1814//
1815// This method is useful when you want to inject custom logic or configuration
1816// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1817//
1818//
1819//    // Example sending a request using the DeleteBucketReplicationRequest method.
1820//    req, resp := client.DeleteBucketReplicationRequest(params)
1821//
1822//    err := req.Send()
1823//    if err == nil { // resp is now filled
1824//        fmt.Println(resp)
1825//    }
1826//
1827// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1828func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1829	op := &request.Operation{
1830		Name:       opDeleteBucketReplication,
1831		HTTPMethod: "DELETE",
1832		HTTPPath:   "/{Bucket}?replication",
1833	}
1834
1835	if input == nil {
1836		input = &DeleteBucketReplicationInput{}
1837	}
1838
1839	output = &DeleteBucketReplicationOutput{}
1840	req = c.newRequest(op, input, output)
1841	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1842	return
1843}
1844
1845// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1846//
1847// Deletes the replication configuration from the bucket.
1848//
1849// To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration
1850// action. The bucket owner has these permissions by default and can grant it
1851// to others. For more information about permissions, see Permissions Related
1852// 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)
1853// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1854//
1855// It can take a while for the deletion of a replication configuration to fully
1856// propagate.
1857//
1858// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
1859// in the Amazon S3 User Guide.
1860//
1861// The following operations are related to DeleteBucketReplication:
1862//
1863//    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
1864//
1865//    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
1866//
1867// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1868// with awserr.Error's Code and Message methods to get detailed information about
1869// the error.
1870//
1871// See the AWS API reference guide for Amazon Simple Storage Service's
1872// API operation DeleteBucketReplication for usage and error information.
1873// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1874func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1875	req, out := c.DeleteBucketReplicationRequest(input)
1876	return out, req.Send()
1877}
1878
1879// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1880// the ability to pass a context and additional request options.
1881//
1882// See DeleteBucketReplication for details on how to use this API operation.
1883//
1884// The context must be non-nil and will be used for request cancellation. If
1885// the context is nil a panic will occur. In the future the SDK may create
1886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1887// for more information on using Contexts.
1888func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1889	req, out := c.DeleteBucketReplicationRequest(input)
1890	req.SetContext(ctx)
1891	req.ApplyOptions(opts...)
1892	return out, req.Send()
1893}
1894
1895const opDeleteBucketTagging = "DeleteBucketTagging"
1896
1897// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1898// client's request for the DeleteBucketTagging operation. The "output" return
1899// value will be populated with the request's response once the request completes
1900// successfully.
1901//
1902// Use "Send" method on the returned Request to send the API call to the service.
1903// the "output" return value is not valid until after Send returns without error.
1904//
1905// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1906// API call, and error handling.
1907//
1908// This method is useful when you want to inject custom logic or configuration
1909// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1910//
1911//
1912//    // Example sending a request using the DeleteBucketTaggingRequest method.
1913//    req, resp := client.DeleteBucketTaggingRequest(params)
1914//
1915//    err := req.Send()
1916//    if err == nil { // resp is now filled
1917//        fmt.Println(resp)
1918//    }
1919//
1920// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1921func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1922	op := &request.Operation{
1923		Name:       opDeleteBucketTagging,
1924		HTTPMethod: "DELETE",
1925		HTTPPath:   "/{Bucket}?tagging",
1926	}
1927
1928	if input == nil {
1929		input = &DeleteBucketTaggingInput{}
1930	}
1931
1932	output = &DeleteBucketTaggingOutput{}
1933	req = c.newRequest(op, input, output)
1934	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1935	return
1936}
1937
1938// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1939//
1940// Deletes the tags from the bucket.
1941//
1942// To use this operation, you must have permission to perform the s3:PutBucketTagging
1943// action. By default, the bucket owner has this permission and can grant this
1944// permission to others.
1945//
1946// The following operations are related to DeleteBucketTagging:
1947//
1948//    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
1949//
1950//    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
1951//
1952// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1953// with awserr.Error's Code and Message methods to get detailed information about
1954// the error.
1955//
1956// See the AWS API reference guide for Amazon Simple Storage Service's
1957// API operation DeleteBucketTagging for usage and error information.
1958// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1959func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1960	req, out := c.DeleteBucketTaggingRequest(input)
1961	return out, req.Send()
1962}
1963
1964// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1965// the ability to pass a context and additional request options.
1966//
1967// See DeleteBucketTagging for details on how to use this API operation.
1968//
1969// The context must be non-nil and will be used for request cancellation. If
1970// the context is nil a panic will occur. In the future the SDK may create
1971// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1972// for more information on using Contexts.
1973func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1974	req, out := c.DeleteBucketTaggingRequest(input)
1975	req.SetContext(ctx)
1976	req.ApplyOptions(opts...)
1977	return out, req.Send()
1978}
1979
1980const opDeleteBucketWebsite = "DeleteBucketWebsite"
1981
1982// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1983// client's request for the DeleteBucketWebsite operation. The "output" return
1984// value will be populated with the request's response once the request completes
1985// successfully.
1986//
1987// Use "Send" method on the returned Request to send the API call to the service.
1988// the "output" return value is not valid until after Send returns without error.
1989//
1990// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1991// API call, and error handling.
1992//
1993// This method is useful when you want to inject custom logic or configuration
1994// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1995//
1996//
1997//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1998//    req, resp := client.DeleteBucketWebsiteRequest(params)
1999//
2000//    err := req.Send()
2001//    if err == nil { // resp is now filled
2002//        fmt.Println(resp)
2003//    }
2004//
2005// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
2006func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
2007	op := &request.Operation{
2008		Name:       opDeleteBucketWebsite,
2009		HTTPMethod: "DELETE",
2010		HTTPPath:   "/{Bucket}?website",
2011	}
2012
2013	if input == nil {
2014		input = &DeleteBucketWebsiteInput{}
2015	}
2016
2017	output = &DeleteBucketWebsiteOutput{}
2018	req = c.newRequest(op, input, output)
2019	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2020	return
2021}
2022
2023// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
2024//
2025// This action removes the website configuration for a bucket. Amazon S3 returns
2026// a 200 OK response upon successfully deleting a website configuration on the
2027// specified bucket. You will get a 200 OK response if the website configuration
2028// you are trying to delete does not exist on the bucket. Amazon S3 returns
2029// a 404 response if the bucket specified in the request does not exist.
2030//
2031// This DELETE action requires the S3:DeleteBucketWebsite permission. By default,
2032// only the bucket owner can delete the website configuration attached to a
2033// bucket. However, bucket owners can grant other users permission to delete
2034// the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite
2035// permission.
2036//
2037// For more information about hosting websites, see Hosting Websites on Amazon
2038// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
2039//
2040// The following operations are related to DeleteBucketWebsite:
2041//
2042//    * GetBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)
2043//
2044//    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
2045//
2046// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2047// with awserr.Error's Code and Message methods to get detailed information about
2048// the error.
2049//
2050// See the AWS API reference guide for Amazon Simple Storage Service's
2051// API operation DeleteBucketWebsite for usage and error information.
2052// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
2053func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
2054	req, out := c.DeleteBucketWebsiteRequest(input)
2055	return out, req.Send()
2056}
2057
2058// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
2059// the ability to pass a context and additional request options.
2060//
2061// See DeleteBucketWebsite for details on how to use this API operation.
2062//
2063// The context must be non-nil and will be used for request cancellation. If
2064// the context is nil a panic will occur. In the future the SDK may create
2065// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2066// for more information on using Contexts.
2067func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
2068	req, out := c.DeleteBucketWebsiteRequest(input)
2069	req.SetContext(ctx)
2070	req.ApplyOptions(opts...)
2071	return out, req.Send()
2072}
2073
2074const opDeleteObject = "DeleteObject"
2075
2076// DeleteObjectRequest generates a "aws/request.Request" representing the
2077// client's request for the DeleteObject operation. The "output" return
2078// value will be populated with the request's response once the request completes
2079// successfully.
2080//
2081// Use "Send" method on the returned Request to send the API call to the service.
2082// the "output" return value is not valid until after Send returns without error.
2083//
2084// See DeleteObject for more information on using the DeleteObject
2085// API call, and error handling.
2086//
2087// This method is useful when you want to inject custom logic or configuration
2088// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2089//
2090//
2091//    // Example sending a request using the DeleteObjectRequest method.
2092//    req, resp := client.DeleteObjectRequest(params)
2093//
2094//    err := req.Send()
2095//    if err == nil { // resp is now filled
2096//        fmt.Println(resp)
2097//    }
2098//
2099// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
2100func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
2101	op := &request.Operation{
2102		Name:       opDeleteObject,
2103		HTTPMethod: "DELETE",
2104		HTTPPath:   "/{Bucket}/{Key+}",
2105	}
2106
2107	if input == nil {
2108		input = &DeleteObjectInput{}
2109	}
2110
2111	output = &DeleteObjectOutput{}
2112	req = c.newRequest(op, input, output)
2113	return
2114}
2115
2116// DeleteObject API operation for Amazon Simple Storage Service.
2117//
2118// Removes the null version (if there is one) of an object and inserts a delete
2119// marker, which becomes the latest version of the object. If there isn't a
2120// null version, Amazon S3 does not remove any objects but will still respond
2121// that the command was successful.
2122//
2123// To remove a specific version, you must be the bucket owner and you must use
2124// the version Id subresource. Using this subresource permanently deletes the
2125// version. If the object deleted is a delete marker, Amazon S3 sets the response
2126// header, x-amz-delete-marker, to true.
2127//
2128// If the object you want to delete is in a bucket where the bucket versioning
2129// configuration is MFA Delete enabled, you must include the x-amz-mfa request
2130// header in the DELETE versionId request. Requests that include x-amz-mfa must
2131// use HTTPS.
2132//
2133// For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html).
2134// To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
2135//
2136// You can delete objects by explicitly calling DELETE Object or configure its
2137// lifecycle (PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html))
2138// to enable Amazon S3 to remove them for you. If you want to block users or
2139// accounts from removing or deleting objects from your bucket, you must deny
2140// them the s3:DeleteObject, s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration
2141// actions.
2142//
2143// The following action is related to DeleteObject:
2144//
2145//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
2146//
2147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2148// with awserr.Error's Code and Message methods to get detailed information about
2149// the error.
2150//
2151// See the AWS API reference guide for Amazon Simple Storage Service's
2152// API operation DeleteObject for usage and error information.
2153// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
2154func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
2155	req, out := c.DeleteObjectRequest(input)
2156	return out, req.Send()
2157}
2158
2159// DeleteObjectWithContext is the same as DeleteObject with the addition of
2160// the ability to pass a context and additional request options.
2161//
2162// See DeleteObject for details on how to use this API operation.
2163//
2164// The context must be non-nil and will be used for request cancellation. If
2165// the context is nil a panic will occur. In the future the SDK may create
2166// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2167// for more information on using Contexts.
2168func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
2169	req, out := c.DeleteObjectRequest(input)
2170	req.SetContext(ctx)
2171	req.ApplyOptions(opts...)
2172	return out, req.Send()
2173}
2174
2175const opDeleteObjectTagging = "DeleteObjectTagging"
2176
2177// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
2178// client's request for the DeleteObjectTagging operation. The "output" return
2179// value will be populated with the request's response once the request completes
2180// successfully.
2181//
2182// Use "Send" method on the returned Request to send the API call to the service.
2183// the "output" return value is not valid until after Send returns without error.
2184//
2185// See DeleteObjectTagging for more information on using the DeleteObjectTagging
2186// API call, and error handling.
2187//
2188// This method is useful when you want to inject custom logic or configuration
2189// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2190//
2191//
2192//    // Example sending a request using the DeleteObjectTaggingRequest method.
2193//    req, resp := client.DeleteObjectTaggingRequest(params)
2194//
2195//    err := req.Send()
2196//    if err == nil { // resp is now filled
2197//        fmt.Println(resp)
2198//    }
2199//
2200// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2201func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
2202	op := &request.Operation{
2203		Name:       opDeleteObjectTagging,
2204		HTTPMethod: "DELETE",
2205		HTTPPath:   "/{Bucket}/{Key+}?tagging",
2206	}
2207
2208	if input == nil {
2209		input = &DeleteObjectTaggingInput{}
2210	}
2211
2212	output = &DeleteObjectTaggingOutput{}
2213	req = c.newRequest(op, input, output)
2214	return
2215}
2216
2217// DeleteObjectTagging API operation for Amazon Simple Storage Service.
2218//
2219// Removes the entire tag set from the specified object. For more information
2220// about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
2221//
2222// To use this operation, you must have permission to perform the s3:DeleteObjectTagging
2223// action.
2224//
2225// To delete tags of a specific object version, add the versionId query parameter
2226// in the request. You will need permission for the s3:DeleteObjectVersionTagging
2227// action.
2228//
2229// The following operations are related to DeleteBucketMetricsConfiguration:
2230//
2231//    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
2232//
2233//    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
2234//
2235// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2236// with awserr.Error's Code and Message methods to get detailed information about
2237// the error.
2238//
2239// See the AWS API reference guide for Amazon Simple Storage Service's
2240// API operation DeleteObjectTagging for usage and error information.
2241// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2242func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
2243	req, out := c.DeleteObjectTaggingRequest(input)
2244	return out, req.Send()
2245}
2246
2247// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
2248// the ability to pass a context and additional request options.
2249//
2250// See DeleteObjectTagging for details on how to use this API operation.
2251//
2252// The context must be non-nil and will be used for request cancellation. If
2253// the context is nil a panic will occur. In the future the SDK may create
2254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2255// for more information on using Contexts.
2256func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
2257	req, out := c.DeleteObjectTaggingRequest(input)
2258	req.SetContext(ctx)
2259	req.ApplyOptions(opts...)
2260	return out, req.Send()
2261}
2262
2263const opDeleteObjects = "DeleteObjects"
2264
2265// DeleteObjectsRequest generates a "aws/request.Request" representing the
2266// client's request for the DeleteObjects operation. The "output" return
2267// value will be populated with the request's response once the request completes
2268// successfully.
2269//
2270// Use "Send" method on the returned Request to send the API call to the service.
2271// the "output" return value is not valid until after Send returns without error.
2272//
2273// See DeleteObjects for more information on using the DeleteObjects
2274// API call, and error handling.
2275//
2276// This method is useful when you want to inject custom logic or configuration
2277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2278//
2279//
2280//    // Example sending a request using the DeleteObjectsRequest method.
2281//    req, resp := client.DeleteObjectsRequest(params)
2282//
2283//    err := req.Send()
2284//    if err == nil { // resp is now filled
2285//        fmt.Println(resp)
2286//    }
2287//
2288// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2289func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
2290	op := &request.Operation{
2291		Name:       opDeleteObjects,
2292		HTTPMethod: "POST",
2293		HTTPPath:   "/{Bucket}?delete",
2294	}
2295
2296	if input == nil {
2297		input = &DeleteObjectsInput{}
2298	}
2299
2300	output = &DeleteObjectsOutput{}
2301	req = c.newRequest(op, input, output)
2302	req.Handlers.Build.PushBackNamed(request.NamedHandler{
2303		Name: "contentMd5Handler",
2304		Fn:   checksum.AddBodyContentMD5Handler,
2305	})
2306	return
2307}
2308
2309// DeleteObjects API operation for Amazon Simple Storage Service.
2310//
2311// This action enables you to delete multiple objects from a bucket using a
2312// single HTTP request. If you know the object keys that you want to delete,
2313// then this action provides a suitable alternative to sending individual delete
2314// requests, reducing per-request overhead.
2315//
2316// The request contains a list of up to 1000 keys that you want to delete. In
2317// the XML, you provide the object key names, and optionally, version IDs if
2318// you want to delete a specific version of the object from a versioning-enabled
2319// bucket. For each key, Amazon S3 performs a delete action and returns the
2320// result of that delete, success, or failure, in the response. Note that if
2321// the object specified in the request is not found, Amazon S3 returns the result
2322// as deleted.
2323//
2324// The action supports two modes for the response: verbose and quiet. By default,
2325// the action uses verbose mode in which the response includes the result of
2326// deletion of each key in your request. In quiet mode the response includes
2327// only keys where the delete action encountered an error. For a successful
2328// deletion, the action does not return any information about the delete in
2329// the response body.
2330//
2331// When performing this action on an MFA Delete enabled bucket, that attempts
2332// to delete any versioned objects, you must include an MFA token. If you do
2333// not provide one, the entire request will fail, even if there are non-versioned
2334// objects you are trying to delete. If you provide an invalid token, whether
2335// there are versioned keys in the request or not, the entire Multi-Object Delete
2336// request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
2337//
2338// Finally, the Content-MD5 header is required for all Multi-Object Delete requests.
2339// Amazon S3 uses the header value to ensure that your request body has not
2340// been altered in transit.
2341//
2342// The following operations are related to DeleteObjects:
2343//
2344//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
2345//
2346//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
2347//
2348//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
2349//
2350//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
2351//
2352//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
2353//
2354// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2355// with awserr.Error's Code and Message methods to get detailed information about
2356// the error.
2357//
2358// See the AWS API reference guide for Amazon Simple Storage Service's
2359// API operation DeleteObjects for usage and error information.
2360// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2361func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
2362	req, out := c.DeleteObjectsRequest(input)
2363	return out, req.Send()
2364}
2365
2366// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
2367// the ability to pass a context and additional request options.
2368//
2369// See DeleteObjects for details on how to use this API operation.
2370//
2371// The context must be non-nil and will be used for request cancellation. If
2372// the context is nil a panic will occur. In the future the SDK may create
2373// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2374// for more information on using Contexts.
2375func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
2376	req, out := c.DeleteObjectsRequest(input)
2377	req.SetContext(ctx)
2378	req.ApplyOptions(opts...)
2379	return out, req.Send()
2380}
2381
2382const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
2383
2384// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
2385// client's request for the DeletePublicAccessBlock operation. The "output" return
2386// value will be populated with the request's response once the request completes
2387// successfully.
2388//
2389// Use "Send" method on the returned Request to send the API call to the service.
2390// the "output" return value is not valid until after Send returns without error.
2391//
2392// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
2393// API call, and error handling.
2394//
2395// This method is useful when you want to inject custom logic or configuration
2396// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2397//
2398//
2399//    // Example sending a request using the DeletePublicAccessBlockRequest method.
2400//    req, resp := client.DeletePublicAccessBlockRequest(params)
2401//
2402//    err := req.Send()
2403//    if err == nil { // resp is now filled
2404//        fmt.Println(resp)
2405//    }
2406//
2407// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2408func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
2409	op := &request.Operation{
2410		Name:       opDeletePublicAccessBlock,
2411		HTTPMethod: "DELETE",
2412		HTTPPath:   "/{Bucket}?publicAccessBlock",
2413	}
2414
2415	if input == nil {
2416		input = &DeletePublicAccessBlockInput{}
2417	}
2418
2419	output = &DeletePublicAccessBlockOutput{}
2420	req = c.newRequest(op, input, output)
2421	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2422	return
2423}
2424
2425// DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
2426//
2427// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use
2428// this operation, you must have the s3:PutBucketPublicAccessBlock permission.
2429// For more information about permissions, see Permissions Related to Bucket
2430// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2431// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
2432//
2433// The following operations are related to DeletePublicAccessBlock:
2434//
2435//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
2436//
2437//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
2438//
2439//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
2440//
2441//    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
2442//
2443// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2444// with awserr.Error's Code and Message methods to get detailed information about
2445// the error.
2446//
2447// See the AWS API reference guide for Amazon Simple Storage Service's
2448// API operation DeletePublicAccessBlock for usage and error information.
2449// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2450func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
2451	req, out := c.DeletePublicAccessBlockRequest(input)
2452	return out, req.Send()
2453}
2454
2455// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
2456// the ability to pass a context and additional request options.
2457//
2458// See DeletePublicAccessBlock for details on how to use this API operation.
2459//
2460// The context must be non-nil and will be used for request cancellation. If
2461// the context is nil a panic will occur. In the future the SDK may create
2462// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2463// for more information on using Contexts.
2464func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
2465	req, out := c.DeletePublicAccessBlockRequest(input)
2466	req.SetContext(ctx)
2467	req.ApplyOptions(opts...)
2468	return out, req.Send()
2469}
2470
2471const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
2472
2473// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
2474// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
2475// value will be populated with the request's response once the request completes
2476// successfully.
2477//
2478// Use "Send" method on the returned Request to send the API call to the service.
2479// the "output" return value is not valid until after Send returns without error.
2480//
2481// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
2482// API call, and error handling.
2483//
2484// This method is useful when you want to inject custom logic or configuration
2485// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2486//
2487//
2488//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
2489//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
2490//
2491//    err := req.Send()
2492//    if err == nil { // resp is now filled
2493//        fmt.Println(resp)
2494//    }
2495//
2496// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2497func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
2498	op := &request.Operation{
2499		Name:       opGetBucketAccelerateConfiguration,
2500		HTTPMethod: "GET",
2501		HTTPPath:   "/{Bucket}?accelerate",
2502	}
2503
2504	if input == nil {
2505		input = &GetBucketAccelerateConfigurationInput{}
2506	}
2507
2508	output = &GetBucketAccelerateConfigurationOutput{}
2509	req = c.newRequest(op, input, output)
2510	return
2511}
2512
2513// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
2514//
2515// This implementation of the GET action uses the accelerate subresource to
2516// return the Transfer Acceleration state of a bucket, which is either Enabled
2517// or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
2518// enables you to perform faster data transfers to and from Amazon S3.
2519//
2520// To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration
2521// action. The bucket owner has this permission by default. The bucket owner
2522// can grant this permission to others. For more information about permissions,
2523// 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)
2524// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
2525// in the Amazon S3 User Guide.
2526//
2527// You set the Transfer Acceleration state of an existing bucket to Enabled
2528// or Suspended by using the PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
2529// operation.
2530//
2531// A GET accelerate request does not return a state value for a bucket that
2532// has no transfer acceleration state. A bucket has no Transfer Acceleration
2533// state if a state has never been set on the bucket.
2534//
2535// For more information about transfer acceleration, see Transfer Acceleration
2536// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
2537// in the Amazon S3 User Guide.
2538//
2539// Related Resources
2540//
2541//    * PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
2542//
2543// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2544// with awserr.Error's Code and Message methods to get detailed information about
2545// the error.
2546//
2547// See the AWS API reference guide for Amazon Simple Storage Service's
2548// API operation GetBucketAccelerateConfiguration for usage and error information.
2549// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2550func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
2551	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2552	return out, req.Send()
2553}
2554
2555// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
2556// the ability to pass a context and additional request options.
2557//
2558// See GetBucketAccelerateConfiguration for details on how to use this API operation.
2559//
2560// The context must be non-nil and will be used for request cancellation. If
2561// the context is nil a panic will occur. In the future the SDK may create
2562// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2563// for more information on using Contexts.
2564func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
2565	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2566	req.SetContext(ctx)
2567	req.ApplyOptions(opts...)
2568	return out, req.Send()
2569}
2570
2571const opGetBucketAcl = "GetBucketAcl"
2572
2573// GetBucketAclRequest generates a "aws/request.Request" representing the
2574// client's request for the GetBucketAcl operation. The "output" return
2575// value will be populated with the request's response once the request completes
2576// successfully.
2577//
2578// Use "Send" method on the returned Request to send the API call to the service.
2579// the "output" return value is not valid until after Send returns without error.
2580//
2581// See GetBucketAcl for more information on using the GetBucketAcl
2582// API call, and error handling.
2583//
2584// This method is useful when you want to inject custom logic or configuration
2585// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2586//
2587//
2588//    // Example sending a request using the GetBucketAclRequest method.
2589//    req, resp := client.GetBucketAclRequest(params)
2590//
2591//    err := req.Send()
2592//    if err == nil { // resp is now filled
2593//        fmt.Println(resp)
2594//    }
2595//
2596// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2597func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
2598	op := &request.Operation{
2599		Name:       opGetBucketAcl,
2600		HTTPMethod: "GET",
2601		HTTPPath:   "/{Bucket}?acl",
2602	}
2603
2604	if input == nil {
2605		input = &GetBucketAclInput{}
2606	}
2607
2608	output = &GetBucketAclOutput{}
2609	req = c.newRequest(op, input, output)
2610	return
2611}
2612
2613// GetBucketAcl API operation for Amazon Simple Storage Service.
2614//
2615// This implementation of the GET action uses the acl subresource to return
2616// the access control list (ACL) of a bucket. To use GET to return the ACL of
2617// the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission
2618// is granted to the anonymous user, you can return the ACL of the bucket without
2619// using an authorization header.
2620//
2621// Related Resources
2622//
2623//    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
2624//
2625// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2626// with awserr.Error's Code and Message methods to get detailed information about
2627// the error.
2628//
2629// See the AWS API reference guide for Amazon Simple Storage Service's
2630// API operation GetBucketAcl for usage and error information.
2631// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2632func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
2633	req, out := c.GetBucketAclRequest(input)
2634	return out, req.Send()
2635}
2636
2637// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
2638// the ability to pass a context and additional request options.
2639//
2640// See GetBucketAcl for details on how to use this API operation.
2641//
2642// The context must be non-nil and will be used for request cancellation. If
2643// the context is nil a panic will occur. In the future the SDK may create
2644// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2645// for more information on using Contexts.
2646func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
2647	req, out := c.GetBucketAclRequest(input)
2648	req.SetContext(ctx)
2649	req.ApplyOptions(opts...)
2650	return out, req.Send()
2651}
2652
2653const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
2654
2655// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
2656// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
2657// value will be populated with the request's response once the request completes
2658// successfully.
2659//
2660// Use "Send" method on the returned Request to send the API call to the service.
2661// the "output" return value is not valid until after Send returns without error.
2662//
2663// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
2664// API call, and error handling.
2665//
2666// This method is useful when you want to inject custom logic or configuration
2667// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2668//
2669//
2670//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
2671//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
2672//
2673//    err := req.Send()
2674//    if err == nil { // resp is now filled
2675//        fmt.Println(resp)
2676//    }
2677//
2678// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2679func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
2680	op := &request.Operation{
2681		Name:       opGetBucketAnalyticsConfiguration,
2682		HTTPMethod: "GET",
2683		HTTPPath:   "/{Bucket}?analytics",
2684	}
2685
2686	if input == nil {
2687		input = &GetBucketAnalyticsConfigurationInput{}
2688	}
2689
2690	output = &GetBucketAnalyticsConfigurationOutput{}
2691	req = c.newRequest(op, input, output)
2692	return
2693}
2694
2695// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
2696//
2697// This implementation of the GET action returns an analytics configuration
2698// (identified by the analytics configuration ID) from the bucket.
2699//
2700// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
2701// action. The bucket owner has this permission by default. The bucket owner
2702// can grant this permission to others. For more information about permissions,
2703// 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)
2704// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
2705// in the Amazon S3 User Guide.
2706//
2707// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
2708// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
2709// in the Amazon S3 User Guide.
2710//
2711// Related Resources
2712//
2713//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
2714//
2715//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
2716//
2717//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
2718//
2719// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2720// with awserr.Error's Code and Message methods to get detailed information about
2721// the error.
2722//
2723// See the AWS API reference guide for Amazon Simple Storage Service's
2724// API operation GetBucketAnalyticsConfiguration for usage and error information.
2725// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2726func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
2727	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2728	return out, req.Send()
2729}
2730
2731// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
2732// the ability to pass a context and additional request options.
2733//
2734// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
2735//
2736// The context must be non-nil and will be used for request cancellation. If
2737// the context is nil a panic will occur. In the future the SDK may create
2738// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2739// for more information on using Contexts.
2740func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
2741	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2742	req.SetContext(ctx)
2743	req.ApplyOptions(opts...)
2744	return out, req.Send()
2745}
2746
2747const opGetBucketCors = "GetBucketCors"
2748
2749// GetBucketCorsRequest generates a "aws/request.Request" representing the
2750// client's request for the GetBucketCors operation. The "output" return
2751// value will be populated with the request's response once the request completes
2752// successfully.
2753//
2754// Use "Send" method on the returned Request to send the API call to the service.
2755// the "output" return value is not valid until after Send returns without error.
2756//
2757// See GetBucketCors for more information on using the GetBucketCors
2758// API call, and error handling.
2759//
2760// This method is useful when you want to inject custom logic or configuration
2761// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2762//
2763//
2764//    // Example sending a request using the GetBucketCorsRequest method.
2765//    req, resp := client.GetBucketCorsRequest(params)
2766//
2767//    err := req.Send()
2768//    if err == nil { // resp is now filled
2769//        fmt.Println(resp)
2770//    }
2771//
2772// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2773func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
2774	op := &request.Operation{
2775		Name:       opGetBucketCors,
2776		HTTPMethod: "GET",
2777		HTTPPath:   "/{Bucket}?cors",
2778	}
2779
2780	if input == nil {
2781		input = &GetBucketCorsInput{}
2782	}
2783
2784	output = &GetBucketCorsOutput{}
2785	req = c.newRequest(op, input, output)
2786	return
2787}
2788
2789// GetBucketCors API operation for Amazon Simple Storage Service.
2790//
2791// Returns the cors configuration information set for the bucket.
2792//
2793// To use this operation, you must have permission to perform the s3:GetBucketCORS
2794// action. By default, the bucket owner has this permission and can grant it
2795// to others.
2796//
2797// For more information about cors, see Enabling Cross-Origin Resource Sharing
2798// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html).
2799//
2800// The following operations are related to GetBucketCors:
2801//
2802//    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
2803//
2804//    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
2805//
2806// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2807// with awserr.Error's Code and Message methods to get detailed information about
2808// the error.
2809//
2810// See the AWS API reference guide for Amazon Simple Storage Service's
2811// API operation GetBucketCors for usage and error information.
2812// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2813func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
2814	req, out := c.GetBucketCorsRequest(input)
2815	return out, req.Send()
2816}
2817
2818// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
2819// the ability to pass a context and additional request options.
2820//
2821// See GetBucketCors for details on how to use this API operation.
2822//
2823// The context must be non-nil and will be used for request cancellation. If
2824// the context is nil a panic will occur. In the future the SDK may create
2825// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2826// for more information on using Contexts.
2827func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
2828	req, out := c.GetBucketCorsRequest(input)
2829	req.SetContext(ctx)
2830	req.ApplyOptions(opts...)
2831	return out, req.Send()
2832}
2833
2834const opGetBucketEncryption = "GetBucketEncryption"
2835
2836// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
2837// client's request for the GetBucketEncryption operation. The "output" return
2838// value will be populated with the request's response once the request completes
2839// successfully.
2840//
2841// Use "Send" method on the returned Request to send the API call to the service.
2842// the "output" return value is not valid until after Send returns without error.
2843//
2844// See GetBucketEncryption for more information on using the GetBucketEncryption
2845// API call, and error handling.
2846//
2847// This method is useful when you want to inject custom logic or configuration
2848// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2849//
2850//
2851//    // Example sending a request using the GetBucketEncryptionRequest method.
2852//    req, resp := client.GetBucketEncryptionRequest(params)
2853//
2854//    err := req.Send()
2855//    if err == nil { // resp is now filled
2856//        fmt.Println(resp)
2857//    }
2858//
2859// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2860func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
2861	op := &request.Operation{
2862		Name:       opGetBucketEncryption,
2863		HTTPMethod: "GET",
2864		HTTPPath:   "/{Bucket}?encryption",
2865	}
2866
2867	if input == nil {
2868		input = &GetBucketEncryptionInput{}
2869	}
2870
2871	output = &GetBucketEncryptionOutput{}
2872	req = c.newRequest(op, input, output)
2873	return
2874}
2875
2876// GetBucketEncryption API operation for Amazon Simple Storage Service.
2877//
2878// Returns the default encryption configuration for an Amazon S3 bucket. If
2879// the bucket does not have a default encryption configuration, GetBucketEncryption
2880// returns ServerSideEncryptionConfigurationNotFoundError.
2881//
2882// For information about the Amazon S3 default encryption feature, see Amazon
2883// S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
2884//
2885// To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration
2886// action. The bucket owner has this permission by default. The bucket owner
2887// can grant this permission to others. For more information about permissions,
2888// 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)
2889// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
2890//
2891// The following operations are related to GetBucketEncryption:
2892//
2893//    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
2894//
2895//    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
2896//
2897// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2898// with awserr.Error's Code and Message methods to get detailed information about
2899// the error.
2900//
2901// See the AWS API reference guide for Amazon Simple Storage Service's
2902// API operation GetBucketEncryption for usage and error information.
2903// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2904func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
2905	req, out := c.GetBucketEncryptionRequest(input)
2906	return out, req.Send()
2907}
2908
2909// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
2910// the ability to pass a context and additional request options.
2911//
2912// See GetBucketEncryption for details on how to use this API operation.
2913//
2914// The context must be non-nil and will be used for request cancellation. If
2915// the context is nil a panic will occur. In the future the SDK may create
2916// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2917// for more information on using Contexts.
2918func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
2919	req, out := c.GetBucketEncryptionRequest(input)
2920	req.SetContext(ctx)
2921	req.ApplyOptions(opts...)
2922	return out, req.Send()
2923}
2924
2925const opGetBucketIntelligentTieringConfiguration = "GetBucketIntelligentTieringConfiguration"
2926
2927// GetBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
2928// client's request for the GetBucketIntelligentTieringConfiguration operation. The "output" return
2929// value will be populated with the request's response once the request completes
2930// successfully.
2931//
2932// Use "Send" method on the returned Request to send the API call to the service.
2933// the "output" return value is not valid until after Send returns without error.
2934//
2935// See GetBucketIntelligentTieringConfiguration for more information on using the GetBucketIntelligentTieringConfiguration
2936// API call, and error handling.
2937//
2938// This method is useful when you want to inject custom logic or configuration
2939// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2940//
2941//
2942//    // Example sending a request using the GetBucketIntelligentTieringConfigurationRequest method.
2943//    req, resp := client.GetBucketIntelligentTieringConfigurationRequest(params)
2944//
2945//    err := req.Send()
2946//    if err == nil { // resp is now filled
2947//        fmt.Println(resp)
2948//    }
2949//
2950// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
2951func (c *S3) GetBucketIntelligentTieringConfigurationRequest(input *GetBucketIntelligentTieringConfigurationInput) (req *request.Request, output *GetBucketIntelligentTieringConfigurationOutput) {
2952	op := &request.Operation{
2953		Name:       opGetBucketIntelligentTieringConfiguration,
2954		HTTPMethod: "GET",
2955		HTTPPath:   "/{Bucket}?intelligent-tiering",
2956	}
2957
2958	if input == nil {
2959		input = &GetBucketIntelligentTieringConfigurationInput{}
2960	}
2961
2962	output = &GetBucketIntelligentTieringConfigurationOutput{}
2963	req = c.newRequest(op, input, output)
2964	return
2965}
2966
2967// GetBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
2968//
2969// Gets the S3 Intelligent-Tiering configuration from the specified bucket.
2970//
2971// The S3 Intelligent-Tiering storage class is designed to optimize storage
2972// costs by automatically moving data to the most cost-effective storage access
2973// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
2974// delivers automatic cost savings in two low latency and high throughput access
2975// tiers. For data that can be accessed asynchronously, you can choose to activate
2976// automatic archiving capabilities within the S3 Intelligent-Tiering storage
2977// class.
2978//
2979// The S3 Intelligent-Tiering storage class is the ideal storage class for data
2980// with unknown, changing, or unpredictable access patterns, independent of
2981// object size or retention period. If the size of an object is less than 128
2982// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
2983// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
2984// storage class.
2985//
2986// For more information, see Storage class for automatically optimizing frequently
2987// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
2988//
2989// Operations related to GetBucketIntelligentTieringConfiguration include:
2990//
2991//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
2992//
2993//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
2994//
2995//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
2996//
2997// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2998// with awserr.Error's Code and Message methods to get detailed information about
2999// the error.
3000//
3001// See the AWS API reference guide for Amazon Simple Storage Service's
3002// API operation GetBucketIntelligentTieringConfiguration for usage and error information.
3003// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
3004func (c *S3) GetBucketIntelligentTieringConfiguration(input *GetBucketIntelligentTieringConfigurationInput) (*GetBucketIntelligentTieringConfigurationOutput, error) {
3005	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
3006	return out, req.Send()
3007}
3008
3009// GetBucketIntelligentTieringConfigurationWithContext is the same as GetBucketIntelligentTieringConfiguration with the addition of
3010// the ability to pass a context and additional request options.
3011//
3012// See GetBucketIntelligentTieringConfiguration for details on how to use this API operation.
3013//
3014// The context must be non-nil and will be used for request cancellation. If
3015// the context is nil a panic will occur. In the future the SDK may create
3016// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3017// for more information on using Contexts.
3018func (c *S3) GetBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *GetBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*GetBucketIntelligentTieringConfigurationOutput, error) {
3019	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
3020	req.SetContext(ctx)
3021	req.ApplyOptions(opts...)
3022	return out, req.Send()
3023}
3024
3025const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
3026
3027// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
3028// client's request for the GetBucketInventoryConfiguration operation. The "output" return
3029// value will be populated with the request's response once the request completes
3030// successfully.
3031//
3032// Use "Send" method on the returned Request to send the API call to the service.
3033// the "output" return value is not valid until after Send returns without error.
3034//
3035// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
3036// API call, and error handling.
3037//
3038// This method is useful when you want to inject custom logic or configuration
3039// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3040//
3041//
3042//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
3043//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
3044//
3045//    err := req.Send()
3046//    if err == nil { // resp is now filled
3047//        fmt.Println(resp)
3048//    }
3049//
3050// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
3051func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
3052	op := &request.Operation{
3053		Name:       opGetBucketInventoryConfiguration,
3054		HTTPMethod: "GET",
3055		HTTPPath:   "/{Bucket}?inventory",
3056	}
3057
3058	if input == nil {
3059		input = &GetBucketInventoryConfigurationInput{}
3060	}
3061
3062	output = &GetBucketInventoryConfigurationOutput{}
3063	req = c.newRequest(op, input, output)
3064	return
3065}
3066
3067// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
3068//
3069// Returns an inventory configuration (identified by the inventory configuration
3070// ID) from the bucket.
3071//
3072// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
3073// action. The bucket owner has this permission by default and can grant this
3074// permission to others. For more information about permissions, see Permissions
3075// 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)
3076// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3077//
3078// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
3079// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
3080//
3081// The following operations are related to GetBucketInventoryConfiguration:
3082//
3083//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
3084//
3085//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
3086//
3087//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
3088//
3089// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3090// with awserr.Error's Code and Message methods to get detailed information about
3091// the error.
3092//
3093// See the AWS API reference guide for Amazon Simple Storage Service's
3094// API operation GetBucketInventoryConfiguration for usage and error information.
3095// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
3096func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
3097	req, out := c.GetBucketInventoryConfigurationRequest(input)
3098	return out, req.Send()
3099}
3100
3101// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
3102// the ability to pass a context and additional request options.
3103//
3104// See GetBucketInventoryConfiguration for details on how to use this API operation.
3105//
3106// The context must be non-nil and will be used for request cancellation. If
3107// the context is nil a panic will occur. In the future the SDK may create
3108// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3109// for more information on using Contexts.
3110func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
3111	req, out := c.GetBucketInventoryConfigurationRequest(input)
3112	req.SetContext(ctx)
3113	req.ApplyOptions(opts...)
3114	return out, req.Send()
3115}
3116
3117const opGetBucketLifecycle = "GetBucketLifecycle"
3118
3119// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
3120// client's request for the GetBucketLifecycle operation. The "output" return
3121// value will be populated with the request's response once the request completes
3122// successfully.
3123//
3124// Use "Send" method on the returned Request to send the API call to the service.
3125// the "output" return value is not valid until after Send returns without error.
3126//
3127// See GetBucketLifecycle for more information on using the GetBucketLifecycle
3128// API call, and error handling.
3129//
3130// This method is useful when you want to inject custom logic or configuration
3131// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3132//
3133//
3134//    // Example sending a request using the GetBucketLifecycleRequest method.
3135//    req, resp := client.GetBucketLifecycleRequest(params)
3136//
3137//    err := req.Send()
3138//    if err == nil { // resp is now filled
3139//        fmt.Println(resp)
3140//    }
3141//
3142// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
3143//
3144// Deprecated: GetBucketLifecycle has been deprecated
3145func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
3146	if c.Client.Config.Logger != nil {
3147		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
3148	}
3149	op := &request.Operation{
3150		Name:       opGetBucketLifecycle,
3151		HTTPMethod: "GET",
3152		HTTPPath:   "/{Bucket}?lifecycle",
3153	}
3154
3155	if input == nil {
3156		input = &GetBucketLifecycleInput{}
3157	}
3158
3159	output = &GetBucketLifecycleOutput{}
3160	req = c.newRequest(op, input, output)
3161	return
3162}
3163
3164// GetBucketLifecycle API operation for Amazon Simple Storage Service.
3165//
3166//
3167// For an updated version of this API, see GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html).
3168// If you configured a bucket lifecycle using the filter element, you should
3169// see the updated version of this topic. This topic is provided for backward
3170// compatibility.
3171//
3172// Returns the lifecycle configuration information set on the bucket. For information
3173// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
3174//
3175// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
3176// action. The bucket owner has this permission by default. The bucket owner
3177// can grant this permission to others. For more information about permissions,
3178// 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)
3179// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3180//
3181// GetBucketLifecycle has the following special error:
3182//
3183//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
3184//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
3185//    Code Prefix: Client
3186//
3187// The following operations are related to GetBucketLifecycle:
3188//
3189//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
3190//
3191//    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
3192//
3193//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
3194//
3195// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3196// with awserr.Error's Code and Message methods to get detailed information about
3197// the error.
3198//
3199// See the AWS API reference guide for Amazon Simple Storage Service's
3200// API operation GetBucketLifecycle for usage and error information.
3201// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
3202//
3203// Deprecated: GetBucketLifecycle has been deprecated
3204func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
3205	req, out := c.GetBucketLifecycleRequest(input)
3206	return out, req.Send()
3207}
3208
3209// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
3210// the ability to pass a context and additional request options.
3211//
3212// See GetBucketLifecycle for details on how to use this API operation.
3213//
3214// The context must be non-nil and will be used for request cancellation. If
3215// the context is nil a panic will occur. In the future the SDK may create
3216// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3217// for more information on using Contexts.
3218//
3219// Deprecated: GetBucketLifecycleWithContext has been deprecated
3220func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
3221	req, out := c.GetBucketLifecycleRequest(input)
3222	req.SetContext(ctx)
3223	req.ApplyOptions(opts...)
3224	return out, req.Send()
3225}
3226
3227const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
3228
3229// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
3230// client's request for the GetBucketLifecycleConfiguration operation. The "output" return
3231// value will be populated with the request's response once the request completes
3232// successfully.
3233//
3234// Use "Send" method on the returned Request to send the API call to the service.
3235// the "output" return value is not valid until after Send returns without error.
3236//
3237// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
3238// API call, and error handling.
3239//
3240// This method is useful when you want to inject custom logic or configuration
3241// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3242//
3243//
3244//    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
3245//    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
3246//
3247//    err := req.Send()
3248//    if err == nil { // resp is now filled
3249//        fmt.Println(resp)
3250//    }
3251//
3252// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
3253func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
3254	op := &request.Operation{
3255		Name:       opGetBucketLifecycleConfiguration,
3256		HTTPMethod: "GET",
3257		HTTPPath:   "/{Bucket}?lifecycle",
3258	}
3259
3260	if input == nil {
3261		input = &GetBucketLifecycleConfigurationInput{}
3262	}
3263
3264	output = &GetBucketLifecycleConfigurationOutput{}
3265	req = c.newRequest(op, input, output)
3266	return
3267}
3268
3269// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
3270//
3271//
3272// Bucket lifecycle configuration now supports specifying a lifecycle rule using
3273// an object key name prefix, one or more object tags, or a combination of both.
3274// Accordingly, this section describes the latest API. The response describes
3275// the new filter element that you can use to specify a filter to select a subset
3276// of objects to which the rule applies. If you are using a previous version
3277// of the lifecycle configuration, it still works. For the earlier action, see
3278// GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html).
3279//
3280// Returns the lifecycle configuration information set on the bucket. For information
3281// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
3282//
3283// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
3284// action. The bucket owner has this permission, by default. The bucket owner
3285// can grant this permission to others. For more information about permissions,
3286// 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)
3287// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3288//
3289// GetBucketLifecycleConfiguration has the following special error:
3290//
3291//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
3292//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
3293//    Code Prefix: Client
3294//
3295// The following operations are related to GetBucketLifecycleConfiguration:
3296//
3297//    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)
3298//
3299//    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
3300//
3301//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
3302//
3303// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3304// with awserr.Error's Code and Message methods to get detailed information about
3305// the error.
3306//
3307// See the AWS API reference guide for Amazon Simple Storage Service's
3308// API operation GetBucketLifecycleConfiguration for usage and error information.
3309// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
3310func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
3311	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3312	return out, req.Send()
3313}
3314
3315// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
3316// the ability to pass a context and additional request options.
3317//
3318// See GetBucketLifecycleConfiguration for details on how to use this API operation.
3319//
3320// The context must be non-nil and will be used for request cancellation. If
3321// the context is nil a panic will occur. In the future the SDK may create
3322// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3323// for more information on using Contexts.
3324func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
3325	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3326	req.SetContext(ctx)
3327	req.ApplyOptions(opts...)
3328	return out, req.Send()
3329}
3330
3331const opGetBucketLocation = "GetBucketLocation"
3332
3333// GetBucketLocationRequest generates a "aws/request.Request" representing the
3334// client's request for the GetBucketLocation operation. The "output" return
3335// value will be populated with the request's response once the request completes
3336// successfully.
3337//
3338// Use "Send" method on the returned Request to send the API call to the service.
3339// the "output" return value is not valid until after Send returns without error.
3340//
3341// See GetBucketLocation for more information on using the GetBucketLocation
3342// API call, and error handling.
3343//
3344// This method is useful when you want to inject custom logic or configuration
3345// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3346//
3347//
3348//    // Example sending a request using the GetBucketLocationRequest method.
3349//    req, resp := client.GetBucketLocationRequest(params)
3350//
3351//    err := req.Send()
3352//    if err == nil { // resp is now filled
3353//        fmt.Println(resp)
3354//    }
3355//
3356// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3357func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
3358	op := &request.Operation{
3359		Name:       opGetBucketLocation,
3360		HTTPMethod: "GET",
3361		HTTPPath:   "/{Bucket}?location",
3362	}
3363
3364	if input == nil {
3365		input = &GetBucketLocationInput{}
3366	}
3367
3368	output = &GetBucketLocationOutput{}
3369	req = c.newRequest(op, input, output)
3370	return
3371}
3372
3373// GetBucketLocation API operation for Amazon Simple Storage Service.
3374//
3375// Returns the Region the bucket resides in. You set the bucket's Region using
3376// the LocationConstraint request parameter in a CreateBucket request. For more
3377// information, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
3378//
3379// To use this implementation of the operation, you must be the bucket owner.
3380//
3381// To use this API against an access point, provide the alias of the access
3382// point in place of the bucket name.
3383//
3384// The following operations are related to GetBucketLocation:
3385//
3386//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
3387//
3388//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
3389//
3390// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3391// with awserr.Error's Code and Message methods to get detailed information about
3392// the error.
3393//
3394// See the AWS API reference guide for Amazon Simple Storage Service's
3395// API operation GetBucketLocation for usage and error information.
3396// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3397func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
3398	req, out := c.GetBucketLocationRequest(input)
3399	return out, req.Send()
3400}
3401
3402// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
3403// the ability to pass a context and additional request options.
3404//
3405// See GetBucketLocation for details on how to use this API operation.
3406//
3407// The context must be non-nil and will be used for request cancellation. If
3408// the context is nil a panic will occur. In the future the SDK may create
3409// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3410// for more information on using Contexts.
3411func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
3412	req, out := c.GetBucketLocationRequest(input)
3413	req.SetContext(ctx)
3414	req.ApplyOptions(opts...)
3415	return out, req.Send()
3416}
3417
3418const opGetBucketLogging = "GetBucketLogging"
3419
3420// GetBucketLoggingRequest generates a "aws/request.Request" representing the
3421// client's request for the GetBucketLogging operation. The "output" return
3422// value will be populated with the request's response once the request completes
3423// successfully.
3424//
3425// Use "Send" method on the returned Request to send the API call to the service.
3426// the "output" return value is not valid until after Send returns without error.
3427//
3428// See GetBucketLogging for more information on using the GetBucketLogging
3429// API call, and error handling.
3430//
3431// This method is useful when you want to inject custom logic or configuration
3432// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3433//
3434//
3435//    // Example sending a request using the GetBucketLoggingRequest method.
3436//    req, resp := client.GetBucketLoggingRequest(params)
3437//
3438//    err := req.Send()
3439//    if err == nil { // resp is now filled
3440//        fmt.Println(resp)
3441//    }
3442//
3443// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3444func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
3445	op := &request.Operation{
3446		Name:       opGetBucketLogging,
3447		HTTPMethod: "GET",
3448		HTTPPath:   "/{Bucket}?logging",
3449	}
3450
3451	if input == nil {
3452		input = &GetBucketLoggingInput{}
3453	}
3454
3455	output = &GetBucketLoggingOutput{}
3456	req = c.newRequest(op, input, output)
3457	return
3458}
3459
3460// GetBucketLogging API operation for Amazon Simple Storage Service.
3461//
3462// Returns the logging status of a bucket and the permissions users have to
3463// view and modify that status. To use GET, you must be the bucket owner.
3464//
3465// The following operations are related to GetBucketLogging:
3466//
3467//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
3468//
3469//    * PutBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)
3470//
3471// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3472// with awserr.Error's Code and Message methods to get detailed information about
3473// the error.
3474//
3475// See the AWS API reference guide for Amazon Simple Storage Service's
3476// API operation GetBucketLogging for usage and error information.
3477// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3478func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
3479	req, out := c.GetBucketLoggingRequest(input)
3480	return out, req.Send()
3481}
3482
3483// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
3484// the ability to pass a context and additional request options.
3485//
3486// See GetBucketLogging for details on how to use this API operation.
3487//
3488// The context must be non-nil and will be used for request cancellation. If
3489// the context is nil a panic will occur. In the future the SDK may create
3490// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3491// for more information on using Contexts.
3492func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
3493	req, out := c.GetBucketLoggingRequest(input)
3494	req.SetContext(ctx)
3495	req.ApplyOptions(opts...)
3496	return out, req.Send()
3497}
3498
3499const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
3500
3501// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
3502// client's request for the GetBucketMetricsConfiguration operation. The "output" return
3503// value will be populated with the request's response once the request completes
3504// successfully.
3505//
3506// Use "Send" method on the returned Request to send the API call to the service.
3507// the "output" return value is not valid until after Send returns without error.
3508//
3509// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
3510// API call, and error handling.
3511//
3512// This method is useful when you want to inject custom logic or configuration
3513// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3514//
3515//
3516//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
3517//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
3518//
3519//    err := req.Send()
3520//    if err == nil { // resp is now filled
3521//        fmt.Println(resp)
3522//    }
3523//
3524// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3525func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
3526	op := &request.Operation{
3527		Name:       opGetBucketMetricsConfiguration,
3528		HTTPMethod: "GET",
3529		HTTPPath:   "/{Bucket}?metrics",
3530	}
3531
3532	if input == nil {
3533		input = &GetBucketMetricsConfigurationInput{}
3534	}
3535
3536	output = &GetBucketMetricsConfigurationOutput{}
3537	req = c.newRequest(op, input, output)
3538	return
3539}
3540
3541// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
3542//
3543// Gets a metrics configuration (specified by the metrics configuration ID)
3544// from the bucket. Note that this doesn't include the daily storage metrics.
3545//
3546// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
3547// action. The bucket owner has this permission by default. The bucket owner
3548// can grant this permission to others. For more information about permissions,
3549// 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)
3550// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3551//
3552// For information about CloudWatch request metrics for Amazon S3, see Monitoring
3553// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
3554//
3555// The following operations are related to GetBucketMetricsConfiguration:
3556//
3557//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
3558//
3559//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
3560//
3561//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
3562//
3563//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
3564//
3565// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3566// with awserr.Error's Code and Message methods to get detailed information about
3567// the error.
3568//
3569// See the AWS API reference guide for Amazon Simple Storage Service's
3570// API operation GetBucketMetricsConfiguration for usage and error information.
3571// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3572func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
3573	req, out := c.GetBucketMetricsConfigurationRequest(input)
3574	return out, req.Send()
3575}
3576
3577// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
3578// the ability to pass a context and additional request options.
3579//
3580// See GetBucketMetricsConfiguration for details on how to use this API operation.
3581//
3582// The context must be non-nil and will be used for request cancellation. If
3583// the context is nil a panic will occur. In the future the SDK may create
3584// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3585// for more information on using Contexts.
3586func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
3587	req, out := c.GetBucketMetricsConfigurationRequest(input)
3588	req.SetContext(ctx)
3589	req.ApplyOptions(opts...)
3590	return out, req.Send()
3591}
3592
3593const opGetBucketNotification = "GetBucketNotification"
3594
3595// GetBucketNotificationRequest generates a "aws/request.Request" representing the
3596// client's request for the GetBucketNotification operation. The "output" return
3597// value will be populated with the request's response once the request completes
3598// successfully.
3599//
3600// Use "Send" method on the returned Request to send the API call to the service.
3601// the "output" return value is not valid until after Send returns without error.
3602//
3603// See GetBucketNotification for more information on using the GetBucketNotification
3604// API call, and error handling.
3605//
3606// This method is useful when you want to inject custom logic or configuration
3607// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3608//
3609//
3610//    // Example sending a request using the GetBucketNotificationRequest method.
3611//    req, resp := client.GetBucketNotificationRequest(params)
3612//
3613//    err := req.Send()
3614//    if err == nil { // resp is now filled
3615//        fmt.Println(resp)
3616//    }
3617//
3618// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3619//
3620// Deprecated: GetBucketNotification has been deprecated
3621func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
3622	if c.Client.Config.Logger != nil {
3623		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
3624	}
3625	op := &request.Operation{
3626		Name:       opGetBucketNotification,
3627		HTTPMethod: "GET",
3628		HTTPPath:   "/{Bucket}?notification",
3629	}
3630
3631	if input == nil {
3632		input = &GetBucketNotificationConfigurationRequest{}
3633	}
3634
3635	output = &NotificationConfigurationDeprecated{}
3636	req = c.newRequest(op, input, output)
3637	return
3638}
3639
3640// GetBucketNotification API operation for Amazon Simple Storage Service.
3641//
3642// No longer used, see GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html).
3643//
3644// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3645// with awserr.Error's Code and Message methods to get detailed information about
3646// the error.
3647//
3648// See the AWS API reference guide for Amazon Simple Storage Service's
3649// API operation GetBucketNotification for usage and error information.
3650// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3651//
3652// Deprecated: GetBucketNotification has been deprecated
3653func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
3654	req, out := c.GetBucketNotificationRequest(input)
3655	return out, req.Send()
3656}
3657
3658// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
3659// the ability to pass a context and additional request options.
3660//
3661// See GetBucketNotification for details on how to use this API operation.
3662//
3663// The context must be non-nil and will be used for request cancellation. If
3664// the context is nil a panic will occur. In the future the SDK may create
3665// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3666// for more information on using Contexts.
3667//
3668// Deprecated: GetBucketNotificationWithContext has been deprecated
3669func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
3670	req, out := c.GetBucketNotificationRequest(input)
3671	req.SetContext(ctx)
3672	req.ApplyOptions(opts...)
3673	return out, req.Send()
3674}
3675
3676const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
3677
3678// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
3679// client's request for the GetBucketNotificationConfiguration operation. The "output" return
3680// value will be populated with the request's response once the request completes
3681// successfully.
3682//
3683// Use "Send" method on the returned Request to send the API call to the service.
3684// the "output" return value is not valid until after Send returns without error.
3685//
3686// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
3687// API call, and error handling.
3688//
3689// This method is useful when you want to inject custom logic or configuration
3690// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3691//
3692//
3693//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
3694//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
3695//
3696//    err := req.Send()
3697//    if err == nil { // resp is now filled
3698//        fmt.Println(resp)
3699//    }
3700//
3701// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3702func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
3703	op := &request.Operation{
3704		Name:       opGetBucketNotificationConfiguration,
3705		HTTPMethod: "GET",
3706		HTTPPath:   "/{Bucket}?notification",
3707	}
3708
3709	if input == nil {
3710		input = &GetBucketNotificationConfigurationRequest{}
3711	}
3712
3713	output = &NotificationConfiguration{}
3714	req = c.newRequest(op, input, output)
3715	return
3716}
3717
3718// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
3719//
3720// Returns the notification configuration of a bucket.
3721//
3722// If notifications are not enabled on the bucket, the action returns an empty
3723// NotificationConfiguration element.
3724//
3725// By default, you must be the bucket owner to read the notification configuration
3726// of a bucket. However, the bucket owner can use a bucket policy to grant permission
3727// to other users to read this configuration with the s3:GetBucketNotification
3728// permission.
3729//
3730// For more information about setting and reading the notification configuration
3731// on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
3732// For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3733//
3734// The following action is related to GetBucketNotification:
3735//
3736//    * PutBucketNotification (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html)
3737//
3738// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3739// with awserr.Error's Code and Message methods to get detailed information about
3740// the error.
3741//
3742// See the AWS API reference guide for Amazon Simple Storage Service's
3743// API operation GetBucketNotificationConfiguration for usage and error information.
3744// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3745func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
3746	req, out := c.GetBucketNotificationConfigurationRequest(input)
3747	return out, req.Send()
3748}
3749
3750// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
3751// the ability to pass a context and additional request options.
3752//
3753// See GetBucketNotificationConfiguration for details on how to use this API operation.
3754//
3755// The context must be non-nil and will be used for request cancellation. If
3756// the context is nil a panic will occur. In the future the SDK may create
3757// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3758// for more information on using Contexts.
3759func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
3760	req, out := c.GetBucketNotificationConfigurationRequest(input)
3761	req.SetContext(ctx)
3762	req.ApplyOptions(opts...)
3763	return out, req.Send()
3764}
3765
3766const opGetBucketOwnershipControls = "GetBucketOwnershipControls"
3767
3768// GetBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
3769// client's request for the GetBucketOwnershipControls operation. The "output" return
3770// value will be populated with the request's response once the request completes
3771// successfully.
3772//
3773// Use "Send" method on the returned Request to send the API call to the service.
3774// the "output" return value is not valid until after Send returns without error.
3775//
3776// See GetBucketOwnershipControls for more information on using the GetBucketOwnershipControls
3777// API call, and error handling.
3778//
3779// This method is useful when you want to inject custom logic or configuration
3780// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3781//
3782//
3783//    // Example sending a request using the GetBucketOwnershipControlsRequest method.
3784//    req, resp := client.GetBucketOwnershipControlsRequest(params)
3785//
3786//    err := req.Send()
3787//    if err == nil { // resp is now filled
3788//        fmt.Println(resp)
3789//    }
3790//
3791// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
3792func (c *S3) GetBucketOwnershipControlsRequest(input *GetBucketOwnershipControlsInput) (req *request.Request, output *GetBucketOwnershipControlsOutput) {
3793	op := &request.Operation{
3794		Name:       opGetBucketOwnershipControls,
3795		HTTPMethod: "GET",
3796		HTTPPath:   "/{Bucket}?ownershipControls",
3797	}
3798
3799	if input == nil {
3800		input = &GetBucketOwnershipControlsInput{}
3801	}
3802
3803	output = &GetBucketOwnershipControlsOutput{}
3804	req = c.newRequest(op, input, output)
3805	return
3806}
3807
3808// GetBucketOwnershipControls API operation for Amazon Simple Storage Service.
3809//
3810// Retrieves OwnershipControls for an Amazon S3 bucket. To use this operation,
3811// you must have the s3:GetBucketOwnershipControls permission. For more information
3812// about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3813//
3814// For information about Amazon S3 Object Ownership, see Using Object Ownership
3815// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
3816//
3817// The following operations are related to GetBucketOwnershipControls:
3818//
3819//    * PutBucketOwnershipControls
3820//
3821//    * DeleteBucketOwnershipControls
3822//
3823// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3824// with awserr.Error's Code and Message methods to get detailed information about
3825// the error.
3826//
3827// See the AWS API reference guide for Amazon Simple Storage Service's
3828// API operation GetBucketOwnershipControls for usage and error information.
3829// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
3830func (c *S3) GetBucketOwnershipControls(input *GetBucketOwnershipControlsInput) (*GetBucketOwnershipControlsOutput, error) {
3831	req, out := c.GetBucketOwnershipControlsRequest(input)
3832	return out, req.Send()
3833}
3834
3835// GetBucketOwnershipControlsWithContext is the same as GetBucketOwnershipControls with the addition of
3836// the ability to pass a context and additional request options.
3837//
3838// See GetBucketOwnershipControls for details on how to use this API operation.
3839//
3840// The context must be non-nil and will be used for request cancellation. If
3841// the context is nil a panic will occur. In the future the SDK may create
3842// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3843// for more information on using Contexts.
3844func (c *S3) GetBucketOwnershipControlsWithContext(ctx aws.Context, input *GetBucketOwnershipControlsInput, opts ...request.Option) (*GetBucketOwnershipControlsOutput, error) {
3845	req, out := c.GetBucketOwnershipControlsRequest(input)
3846	req.SetContext(ctx)
3847	req.ApplyOptions(opts...)
3848	return out, req.Send()
3849}
3850
3851const opGetBucketPolicy = "GetBucketPolicy"
3852
3853// GetBucketPolicyRequest generates a "aws/request.Request" representing the
3854// client's request for the GetBucketPolicy operation. The "output" return
3855// value will be populated with the request's response once the request completes
3856// successfully.
3857//
3858// Use "Send" method on the returned Request to send the API call to the service.
3859// the "output" return value is not valid until after Send returns without error.
3860//
3861// See GetBucketPolicy for more information on using the GetBucketPolicy
3862// API call, and error handling.
3863//
3864// This method is useful when you want to inject custom logic or configuration
3865// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3866//
3867//
3868//    // Example sending a request using the GetBucketPolicyRequest method.
3869//    req, resp := client.GetBucketPolicyRequest(params)
3870//
3871//    err := req.Send()
3872//    if err == nil { // resp is now filled
3873//        fmt.Println(resp)
3874//    }
3875//
3876// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3877func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
3878	op := &request.Operation{
3879		Name:       opGetBucketPolicy,
3880		HTTPMethod: "GET",
3881		HTTPPath:   "/{Bucket}?policy",
3882	}
3883
3884	if input == nil {
3885		input = &GetBucketPolicyInput{}
3886	}
3887
3888	output = &GetBucketPolicyOutput{}
3889	req = c.newRequest(op, input, output)
3890	return
3891}
3892
3893// GetBucketPolicy API operation for Amazon Simple Storage Service.
3894//
3895// Returns the policy of a specified bucket. If you are using an identity other
3896// than the root user of the Amazon Web Services account that owns the bucket,
3897// the calling identity must have the GetBucketPolicy permissions on the specified
3898// bucket and belong to the bucket owner's account in order to use this operation.
3899//
3900// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
3901// Denied error. If you have the correct permissions, but you're not using an
3902// identity that belongs to the bucket owner's account, Amazon S3 returns a
3903// 405 Method Not Allowed error.
3904//
3905// As a security precaution, the root user of the Amazon Web Services account
3906// that owns a bucket can always use this operation, even if the policy explicitly
3907// denies the root user the ability to perform this action.
3908//
3909// For more information about bucket policies, see Using Bucket Policies and
3910// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3911//
3912// The following action is related to GetBucketPolicy:
3913//
3914//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
3915//
3916// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3917// with awserr.Error's Code and Message methods to get detailed information about
3918// the error.
3919//
3920// See the AWS API reference guide for Amazon Simple Storage Service's
3921// API operation GetBucketPolicy for usage and error information.
3922// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3923func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
3924	req, out := c.GetBucketPolicyRequest(input)
3925	return out, req.Send()
3926}
3927
3928// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
3929// the ability to pass a context and additional request options.
3930//
3931// See GetBucketPolicy for details on how to use this API operation.
3932//
3933// The context must be non-nil and will be used for request cancellation. If
3934// the context is nil a panic will occur. In the future the SDK may create
3935// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3936// for more information on using Contexts.
3937func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
3938	req, out := c.GetBucketPolicyRequest(input)
3939	req.SetContext(ctx)
3940	req.ApplyOptions(opts...)
3941	return out, req.Send()
3942}
3943
3944const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
3945
3946// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
3947// client's request for the GetBucketPolicyStatus operation. The "output" return
3948// value will be populated with the request's response once the request completes
3949// successfully.
3950//
3951// Use "Send" method on the returned Request to send the API call to the service.
3952// the "output" return value is not valid until after Send returns without error.
3953//
3954// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
3955// API call, and error handling.
3956//
3957// This method is useful when you want to inject custom logic or configuration
3958// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3959//
3960//
3961//    // Example sending a request using the GetBucketPolicyStatusRequest method.
3962//    req, resp := client.GetBucketPolicyStatusRequest(params)
3963//
3964//    err := req.Send()
3965//    if err == nil { // resp is now filled
3966//        fmt.Println(resp)
3967//    }
3968//
3969// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3970func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
3971	op := &request.Operation{
3972		Name:       opGetBucketPolicyStatus,
3973		HTTPMethod: "GET",
3974		HTTPPath:   "/{Bucket}?policyStatus",
3975	}
3976
3977	if input == nil {
3978		input = &GetBucketPolicyStatusInput{}
3979	}
3980
3981	output = &GetBucketPolicyStatusOutput{}
3982	req = c.newRequest(op, input, output)
3983	return
3984}
3985
3986// GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
3987//
3988// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3989// bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus
3990// permission. For more information about Amazon S3 permissions, see Specifying
3991// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3992//
3993// For more information about when Amazon S3 considers a bucket public, see
3994// 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).
3995//
3996// The following operations are related to GetBucketPolicyStatus:
3997//
3998//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
3999//
4000//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
4001//
4002//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
4003//
4004//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
4005//
4006// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4007// with awserr.Error's Code and Message methods to get detailed information about
4008// the error.
4009//
4010// See the AWS API reference guide for Amazon Simple Storage Service's
4011// API operation GetBucketPolicyStatus for usage and error information.
4012// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
4013func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
4014	req, out := c.GetBucketPolicyStatusRequest(input)
4015	return out, req.Send()
4016}
4017
4018// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
4019// the ability to pass a context and additional request options.
4020//
4021// See GetBucketPolicyStatus for details on how to use this API operation.
4022//
4023// The context must be non-nil and will be used for request cancellation. If
4024// the context is nil a panic will occur. In the future the SDK may create
4025// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4026// for more information on using Contexts.
4027func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
4028	req, out := c.GetBucketPolicyStatusRequest(input)
4029	req.SetContext(ctx)
4030	req.ApplyOptions(opts...)
4031	return out, req.Send()
4032}
4033
4034const opGetBucketReplication = "GetBucketReplication"
4035
4036// GetBucketReplicationRequest generates a "aws/request.Request" representing the
4037// client's request for the GetBucketReplication operation. The "output" return
4038// value will be populated with the request's response once the request completes
4039// successfully.
4040//
4041// Use "Send" method on the returned Request to send the API call to the service.
4042// the "output" return value is not valid until after Send returns without error.
4043//
4044// See GetBucketReplication for more information on using the GetBucketReplication
4045// API call, and error handling.
4046//
4047// This method is useful when you want to inject custom logic or configuration
4048// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4049//
4050//
4051//    // Example sending a request using the GetBucketReplicationRequest method.
4052//    req, resp := client.GetBucketReplicationRequest(params)
4053//
4054//    err := req.Send()
4055//    if err == nil { // resp is now filled
4056//        fmt.Println(resp)
4057//    }
4058//
4059// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
4060func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
4061	op := &request.Operation{
4062		Name:       opGetBucketReplication,
4063		HTTPMethod: "GET",
4064		HTTPPath:   "/{Bucket}?replication",
4065	}
4066
4067	if input == nil {
4068		input = &GetBucketReplicationInput{}
4069	}
4070
4071	output = &GetBucketReplicationOutput{}
4072	req = c.newRequest(op, input, output)
4073	return
4074}
4075
4076// GetBucketReplication API operation for Amazon Simple Storage Service.
4077//
4078// Returns the replication configuration of a bucket.
4079//
4080// It can take a while to propagate the put or delete a replication configuration
4081// to all Amazon S3 systems. Therefore, a get request soon after put or delete
4082// can return a wrong result.
4083//
4084// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
4085// in the Amazon S3 User Guide.
4086//
4087// This action requires permissions for the s3:GetReplicationConfiguration action.
4088// For more information about permissions, see Using Bucket Policies and User
4089// Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
4090//
4091// If you include the Filter element in a replication configuration, you must
4092// also include the DeleteMarkerReplication and Priority elements. The response
4093// also returns those elements.
4094//
4095// For information about GetBucketReplication errors, see List of replication-related
4096// error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
4097//
4098// The following operations are related to GetBucketReplication:
4099//
4100//    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
4101//
4102//    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
4103//
4104// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4105// with awserr.Error's Code and Message methods to get detailed information about
4106// the error.
4107//
4108// See the AWS API reference guide for Amazon Simple Storage Service's
4109// API operation GetBucketReplication for usage and error information.
4110// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
4111func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
4112	req, out := c.GetBucketReplicationRequest(input)
4113	return out, req.Send()
4114}
4115
4116// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
4117// the ability to pass a context and additional request options.
4118//
4119// See GetBucketReplication for details on how to use this API operation.
4120//
4121// The context must be non-nil and will be used for request cancellation. If
4122// the context is nil a panic will occur. In the future the SDK may create
4123// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4124// for more information on using Contexts.
4125func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
4126	req, out := c.GetBucketReplicationRequest(input)
4127	req.SetContext(ctx)
4128	req.ApplyOptions(opts...)
4129	return out, req.Send()
4130}
4131
4132const opGetBucketRequestPayment = "GetBucketRequestPayment"
4133
4134// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
4135// client's request for the GetBucketRequestPayment operation. The "output" return
4136// value will be populated with the request's response once the request completes
4137// successfully.
4138//
4139// Use "Send" method on the returned Request to send the API call to the service.
4140// the "output" return value is not valid until after Send returns without error.
4141//
4142// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
4143// API call, and error handling.
4144//
4145// This method is useful when you want to inject custom logic or configuration
4146// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4147//
4148//
4149//    // Example sending a request using the GetBucketRequestPaymentRequest method.
4150//    req, resp := client.GetBucketRequestPaymentRequest(params)
4151//
4152//    err := req.Send()
4153//    if err == nil { // resp is now filled
4154//        fmt.Println(resp)
4155//    }
4156//
4157// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
4158func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
4159	op := &request.Operation{
4160		Name:       opGetBucketRequestPayment,
4161		HTTPMethod: "GET",
4162		HTTPPath:   "/{Bucket}?requestPayment",
4163	}
4164
4165	if input == nil {
4166		input = &GetBucketRequestPaymentInput{}
4167	}
4168
4169	output = &GetBucketRequestPaymentOutput{}
4170	req = c.newRequest(op, input, output)
4171	return
4172}
4173
4174// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
4175//
4176// Returns the request payment configuration of a bucket. To use this version
4177// of the operation, you must be the bucket owner. For more information, see
4178// Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
4179//
4180// The following operations are related to GetBucketRequestPayment:
4181//
4182//    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
4183//
4184// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4185// with awserr.Error's Code and Message methods to get detailed information about
4186// the error.
4187//
4188// See the AWS API reference guide for Amazon Simple Storage Service's
4189// API operation GetBucketRequestPayment for usage and error information.
4190// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
4191func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
4192	req, out := c.GetBucketRequestPaymentRequest(input)
4193	return out, req.Send()
4194}
4195
4196// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
4197// the ability to pass a context and additional request options.
4198//
4199// See GetBucketRequestPayment for details on how to use this API operation.
4200//
4201// The context must be non-nil and will be used for request cancellation. If
4202// the context is nil a panic will occur. In the future the SDK may create
4203// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4204// for more information on using Contexts.
4205func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
4206	req, out := c.GetBucketRequestPaymentRequest(input)
4207	req.SetContext(ctx)
4208	req.ApplyOptions(opts...)
4209	return out, req.Send()
4210}
4211
4212const opGetBucketTagging = "GetBucketTagging"
4213
4214// GetBucketTaggingRequest generates a "aws/request.Request" representing the
4215// client's request for the GetBucketTagging operation. The "output" return
4216// value will be populated with the request's response once the request completes
4217// successfully.
4218//
4219// Use "Send" method on the returned Request to send the API call to the service.
4220// the "output" return value is not valid until after Send returns without error.
4221//
4222// See GetBucketTagging for more information on using the GetBucketTagging
4223// API call, and error handling.
4224//
4225// This method is useful when you want to inject custom logic or configuration
4226// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4227//
4228//
4229//    // Example sending a request using the GetBucketTaggingRequest method.
4230//    req, resp := client.GetBucketTaggingRequest(params)
4231//
4232//    err := req.Send()
4233//    if err == nil { // resp is now filled
4234//        fmt.Println(resp)
4235//    }
4236//
4237// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
4238func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
4239	op := &request.Operation{
4240		Name:       opGetBucketTagging,
4241		HTTPMethod: "GET",
4242		HTTPPath:   "/{Bucket}?tagging",
4243	}
4244
4245	if input == nil {
4246		input = &GetBucketTaggingInput{}
4247	}
4248
4249	output = &GetBucketTaggingOutput{}
4250	req = c.newRequest(op, input, output)
4251	return
4252}
4253
4254// GetBucketTagging API operation for Amazon Simple Storage Service.
4255//
4256// Returns the tag set associated with the bucket.
4257//
4258// To use this operation, you must have permission to perform the s3:GetBucketTagging
4259// action. By default, the bucket owner has this permission and can grant this
4260// permission to others.
4261//
4262// GetBucketTagging has the following special error:
4263//
4264//    * Error code: NoSuchTagSetError Description: There is no tag set associated
4265//    with the bucket.
4266//
4267// The following operations are related to GetBucketTagging:
4268//
4269//    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
4270//
4271//    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
4272//
4273// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4274// with awserr.Error's Code and Message methods to get detailed information about
4275// the error.
4276//
4277// See the AWS API reference guide for Amazon Simple Storage Service's
4278// API operation GetBucketTagging for usage and error information.
4279// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
4280func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
4281	req, out := c.GetBucketTaggingRequest(input)
4282	return out, req.Send()
4283}
4284
4285// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
4286// the ability to pass a context and additional request options.
4287//
4288// See GetBucketTagging for details on how to use this API operation.
4289//
4290// The context must be non-nil and will be used for request cancellation. If
4291// the context is nil a panic will occur. In the future the SDK may create
4292// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4293// for more information on using Contexts.
4294func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
4295	req, out := c.GetBucketTaggingRequest(input)
4296	req.SetContext(ctx)
4297	req.ApplyOptions(opts...)
4298	return out, req.Send()
4299}
4300
4301const opGetBucketVersioning = "GetBucketVersioning"
4302
4303// GetBucketVersioningRequest generates a "aws/request.Request" representing the
4304// client's request for the GetBucketVersioning operation. The "output" return
4305// value will be populated with the request's response once the request completes
4306// successfully.
4307//
4308// Use "Send" method on the returned Request to send the API call to the service.
4309// the "output" return value is not valid until after Send returns without error.
4310//
4311// See GetBucketVersioning for more information on using the GetBucketVersioning
4312// API call, and error handling.
4313//
4314// This method is useful when you want to inject custom logic or configuration
4315// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4316//
4317//
4318//    // Example sending a request using the GetBucketVersioningRequest method.
4319//    req, resp := client.GetBucketVersioningRequest(params)
4320//
4321//    err := req.Send()
4322//    if err == nil { // resp is now filled
4323//        fmt.Println(resp)
4324//    }
4325//
4326// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
4327func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
4328	op := &request.Operation{
4329		Name:       opGetBucketVersioning,
4330		HTTPMethod: "GET",
4331		HTTPPath:   "/{Bucket}?versioning",
4332	}
4333
4334	if input == nil {
4335		input = &GetBucketVersioningInput{}
4336	}
4337
4338	output = &GetBucketVersioningOutput{}
4339	req = c.newRequest(op, input, output)
4340	return
4341}
4342
4343// GetBucketVersioning API operation for Amazon Simple Storage Service.
4344//
4345// Returns the versioning state of a bucket.
4346//
4347// To retrieve the versioning state of a bucket, you must be the bucket owner.
4348//
4349// This implementation also returns the MFA Delete status of the versioning
4350// state. If the MFA Delete status is enabled, the bucket owner must use an
4351// authentication device to change the versioning state of the bucket.
4352//
4353// The following operations are related to GetBucketVersioning:
4354//
4355//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
4356//
4357//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
4358//
4359//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
4360//
4361// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4362// with awserr.Error's Code and Message methods to get detailed information about
4363// the error.
4364//
4365// See the AWS API reference guide for Amazon Simple Storage Service's
4366// API operation GetBucketVersioning for usage and error information.
4367// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
4368func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
4369	req, out := c.GetBucketVersioningRequest(input)
4370	return out, req.Send()
4371}
4372
4373// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
4374// the ability to pass a context and additional request options.
4375//
4376// See GetBucketVersioning for details on how to use this API operation.
4377//
4378// The context must be non-nil and will be used for request cancellation. If
4379// the context is nil a panic will occur. In the future the SDK may create
4380// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4381// for more information on using Contexts.
4382func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
4383	req, out := c.GetBucketVersioningRequest(input)
4384	req.SetContext(ctx)
4385	req.ApplyOptions(opts...)
4386	return out, req.Send()
4387}
4388
4389const opGetBucketWebsite = "GetBucketWebsite"
4390
4391// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
4392// client's request for the GetBucketWebsite operation. The "output" return
4393// value will be populated with the request's response once the request completes
4394// successfully.
4395//
4396// Use "Send" method on the returned Request to send the API call to the service.
4397// the "output" return value is not valid until after Send returns without error.
4398//
4399// See GetBucketWebsite for more information on using the GetBucketWebsite
4400// API call, and error handling.
4401//
4402// This method is useful when you want to inject custom logic or configuration
4403// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4404//
4405//
4406//    // Example sending a request using the GetBucketWebsiteRequest method.
4407//    req, resp := client.GetBucketWebsiteRequest(params)
4408//
4409//    err := req.Send()
4410//    if err == nil { // resp is now filled
4411//        fmt.Println(resp)
4412//    }
4413//
4414// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4415func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
4416	op := &request.Operation{
4417		Name:       opGetBucketWebsite,
4418		HTTPMethod: "GET",
4419		HTTPPath:   "/{Bucket}?website",
4420	}
4421
4422	if input == nil {
4423		input = &GetBucketWebsiteInput{}
4424	}
4425
4426	output = &GetBucketWebsiteOutput{}
4427	req = c.newRequest(op, input, output)
4428	return
4429}
4430
4431// GetBucketWebsite API operation for Amazon Simple Storage Service.
4432//
4433// Returns the website configuration for a bucket. To host website on Amazon
4434// S3, you can configure a bucket as website by adding a website configuration.
4435// For more information about hosting websites, see Hosting Websites on Amazon
4436// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
4437//
4438// This GET action requires the S3:GetBucketWebsite permission. By default,
4439// only the bucket owner can read the bucket website configuration. However,
4440// bucket owners can allow other users to read the website configuration by
4441// writing a bucket policy granting them the S3:GetBucketWebsite permission.
4442//
4443// The following operations are related to DeleteBucketWebsite:
4444//
4445//    * DeleteBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html)
4446//
4447//    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
4448//
4449// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4450// with awserr.Error's Code and Message methods to get detailed information about
4451// the error.
4452//
4453// See the AWS API reference guide for Amazon Simple Storage Service's
4454// API operation GetBucketWebsite for usage and error information.
4455// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4456func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
4457	req, out := c.GetBucketWebsiteRequest(input)
4458	return out, req.Send()
4459}
4460
4461// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
4462// the ability to pass a context and additional request options.
4463//
4464// See GetBucketWebsite for details on how to use this API operation.
4465//
4466// The context must be non-nil and will be used for request cancellation. If
4467// the context is nil a panic will occur. In the future the SDK may create
4468// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4469// for more information on using Contexts.
4470func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
4471	req, out := c.GetBucketWebsiteRequest(input)
4472	req.SetContext(ctx)
4473	req.ApplyOptions(opts...)
4474	return out, req.Send()
4475}
4476
4477const opGetObject = "GetObject"
4478
4479// GetObjectRequest generates a "aws/request.Request" representing the
4480// client's request for the GetObject operation. The "output" return
4481// value will be populated with the request's response once the request completes
4482// successfully.
4483//
4484// Use "Send" method on the returned Request to send the API call to the service.
4485// the "output" return value is not valid until after Send returns without error.
4486//
4487// See GetObject for more information on using the GetObject
4488// API call, and error handling.
4489//
4490// This method is useful when you want to inject custom logic or configuration
4491// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4492//
4493//
4494//    // Example sending a request using the GetObjectRequest method.
4495//    req, resp := client.GetObjectRequest(params)
4496//
4497//    err := req.Send()
4498//    if err == nil { // resp is now filled
4499//        fmt.Println(resp)
4500//    }
4501//
4502// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4503func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
4504	op := &request.Operation{
4505		Name:       opGetObject,
4506		HTTPMethod: "GET",
4507		HTTPPath:   "/{Bucket}/{Key+}",
4508	}
4509
4510	if input == nil {
4511		input = &GetObjectInput{}
4512	}
4513
4514	output = &GetObjectOutput{}
4515	req = c.newRequest(op, input, output)
4516	return
4517}
4518
4519// GetObject API operation for Amazon Simple Storage Service.
4520//
4521// Retrieves objects from Amazon S3. To use GET, you must have READ access to
4522// the object. If you grant READ access to the anonymous user, you can return
4523// the object without using an authorization header.
4524//
4525// An Amazon S3 bucket has no directory hierarchy such as you would find in
4526// a typical computer file system. You can, however, create a logical hierarchy
4527// by using object key names that imply a folder structure. For example, instead
4528// of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg.
4529//
4530// To get an object from such a logical hierarchy, specify the full key name
4531// for the object in the GET operation. For a virtual hosted-style request example,
4532// if you have the object photos/2006/February/sample.jpg, specify the resource
4533// as /photos/2006/February/sample.jpg. For a path-style request example, if
4534// you have the object photos/2006/February/sample.jpg in the bucket named examplebucket,
4535// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For
4536// more information about request types, see HTTP Host Header Bucket Specification
4537// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
4538//
4539// To distribute large files to many people, you can save bandwidth costs by
4540// using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4541// For more information about returning the ACL of an object, see GetObjectAcl
4542// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html).
4543//
4544// If the object you are retrieving is stored in the S3 Glacier or S3 Glacier
4545// Deep Archive storage class, or S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering
4546// Deep Archive tiers, before you can retrieve the object you must first restore
4547// a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
4548// Otherwise, this action returns an InvalidObjectStateError error. For information
4549// about restoring archived objects, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
4550//
4551// Encryption request headers, like x-amz-server-side-encryption, should not
4552// be sent for GET requests if your object uses server-side encryption with
4553// KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed encryption
4554// keys (SSE-S3). If your object does use these types of keys, you’ll get
4555// an HTTP 400 BadRequest error.
4556//
4557// If you encrypt an object by using server-side encryption with customer-provided
4558// encryption keys (SSE-C) when you store the object in Amazon S3, then when
4559// you GET the object, you must use the following headers:
4560//
4561//    * x-amz-server-side-encryption-customer-algorithm
4562//
4563//    * x-amz-server-side-encryption-customer-key
4564//
4565//    * x-amz-server-side-encryption-customer-key-MD5
4566//
4567// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
4568// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
4569//
4570// Assuming you have the relevant permission to read object tags, the response
4571// also returns the x-amz-tagging-count header that provides the count of number
4572// of tags associated with the object. You can use GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
4573// to retrieve the tag set associated with an object.
4574//
4575// Permissions
4576//
4577// You need the relevant read object (or version) permission for this operation.
4578// For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4579// If the object you request does not exist, the error Amazon S3 returns depends
4580// on whether you also have the s3:ListBucket permission.
4581//
4582//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 will
4583//    return an HTTP status code 404 ("no such key") error.
4584//
4585//    * If you don’t have the s3:ListBucket permission, Amazon S3 will return
4586//    an HTTP status code 403 ("access denied") error.
4587//
4588// Versioning
4589//
4590// By default, the GET action returns the current version of an object. To return
4591// a different version, use the versionId subresource.
4592//
4593//    * If you supply a versionId, you need the s3:GetObjectVersion permission
4594//    to access a specific version of an object. If you request a specific version,
4595//    you do not need to have the s3:GetObject permission.
4596//
4597//    * If the current version of the object is a delete marker, Amazon S3 behaves
4598//    as if the object was deleted and includes x-amz-delete-marker: true in
4599//    the response.
4600//
4601// For more information about versioning, see PutBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html).
4602//
4603// Overriding Response Header Values
4604//
4605// There are times when you want to override certain response header values
4606// in a GET response. For example, you might override the Content-Disposition
4607// response header value in your GET request.
4608//
4609// You can override values for a set of response headers using the following
4610// query parameters. These response header values are sent only on a successful
4611// request, that is, when status code 200 OK is returned. The set of headers
4612// you can override using these parameters is a subset of the headers that Amazon
4613// S3 accepts when you create an object. The response headers that you can override
4614// for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
4615// Content-Disposition, and Content-Encoding. To override these header values
4616// in the GET response, you use the following request parameters.
4617//
4618// You must sign the request, either using an Authorization header or a presigned
4619// URL, when using these parameters. They cannot be used with an unsigned (anonymous)
4620// request.
4621//
4622//    * response-content-type
4623//
4624//    * response-content-language
4625//
4626//    * response-expires
4627//
4628//    * response-cache-control
4629//
4630//    * response-content-disposition
4631//
4632//    * response-content-encoding
4633//
4634// Additional Considerations about Request Headers
4635//
4636// If both of the If-Match and If-Unmodified-Since headers are present in the
4637// request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
4638// condition evaluates to false; then, S3 returns 200 OK and the data requested.
4639//
4640// If both of the If-None-Match and If-Modified-Since headers are present in
4641// the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since
4642// condition evaluates to true; then, S3 returns 304 Not Modified response code.
4643//
4644// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
4645//
4646// The following operations are related to GetObject:
4647//
4648//    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
4649//
4650//    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
4651//
4652// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4653// with awserr.Error's Code and Message methods to get detailed information about
4654// the error.
4655//
4656// See the AWS API reference guide for Amazon Simple Storage Service's
4657// API operation GetObject for usage and error information.
4658//
4659// Returned Error Codes:
4660//   * ErrCodeNoSuchKey "NoSuchKey"
4661//   The specified key does not exist.
4662//
4663//   * ErrCodeInvalidObjectState "InvalidObjectState"
4664//   Object is archived and inaccessible until restored.
4665//
4666// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4667func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
4668	req, out := c.GetObjectRequest(input)
4669	return out, req.Send()
4670}
4671
4672// GetObjectWithContext is the same as GetObject with the addition of
4673// the ability to pass a context and additional request options.
4674//
4675// See GetObject for details on how to use this API operation.
4676//
4677// The context must be non-nil and will be used for request cancellation. If
4678// the context is nil a panic will occur. In the future the SDK may create
4679// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4680// for more information on using Contexts.
4681func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
4682	req, out := c.GetObjectRequest(input)
4683	req.SetContext(ctx)
4684	req.ApplyOptions(opts...)
4685	return out, req.Send()
4686}
4687
4688const opGetObjectAcl = "GetObjectAcl"
4689
4690// GetObjectAclRequest generates a "aws/request.Request" representing the
4691// client's request for the GetObjectAcl operation. The "output" return
4692// value will be populated with the request's response once the request completes
4693// successfully.
4694//
4695// Use "Send" method on the returned Request to send the API call to the service.
4696// the "output" return value is not valid until after Send returns without error.
4697//
4698// See GetObjectAcl for more information on using the GetObjectAcl
4699// API call, and error handling.
4700//
4701// This method is useful when you want to inject custom logic or configuration
4702// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4703//
4704//
4705//    // Example sending a request using the GetObjectAclRequest method.
4706//    req, resp := client.GetObjectAclRequest(params)
4707//
4708//    err := req.Send()
4709//    if err == nil { // resp is now filled
4710//        fmt.Println(resp)
4711//    }
4712//
4713// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4714func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
4715	op := &request.Operation{
4716		Name:       opGetObjectAcl,
4717		HTTPMethod: "GET",
4718		HTTPPath:   "/{Bucket}/{Key+}?acl",
4719	}
4720
4721	if input == nil {
4722		input = &GetObjectAclInput{}
4723	}
4724
4725	output = &GetObjectAclOutput{}
4726	req = c.newRequest(op, input, output)
4727	return
4728}
4729
4730// GetObjectAcl API operation for Amazon Simple Storage Service.
4731//
4732// Returns the access control list (ACL) of an object. To use this operation,
4733// you must have READ_ACP access to the object.
4734//
4735// This action is not supported by Amazon S3 on Outposts.
4736//
4737// Versioning
4738//
4739// By default, GET returns ACL information about the current version of an object.
4740// To return ACL information about a different version, use the versionId subresource.
4741//
4742// The following operations are related to GetObjectAcl:
4743//
4744//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
4745//
4746//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
4747//
4748//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
4749//
4750// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4751// with awserr.Error's Code and Message methods to get detailed information about
4752// the error.
4753//
4754// See the AWS API reference guide for Amazon Simple Storage Service's
4755// API operation GetObjectAcl for usage and error information.
4756//
4757// Returned Error Codes:
4758//   * ErrCodeNoSuchKey "NoSuchKey"
4759//   The specified key does not exist.
4760//
4761// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4762func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
4763	req, out := c.GetObjectAclRequest(input)
4764	return out, req.Send()
4765}
4766
4767// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
4768// the ability to pass a context and additional request options.
4769//
4770// See GetObjectAcl for details on how to use this API operation.
4771//
4772// The context must be non-nil and will be used for request cancellation. If
4773// the context is nil a panic will occur. In the future the SDK may create
4774// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4775// for more information on using Contexts.
4776func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
4777	req, out := c.GetObjectAclRequest(input)
4778	req.SetContext(ctx)
4779	req.ApplyOptions(opts...)
4780	return out, req.Send()
4781}
4782
4783const opGetObjectLegalHold = "GetObjectLegalHold"
4784
4785// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
4786// client's request for the GetObjectLegalHold operation. The "output" return
4787// value will be populated with the request's response once the request completes
4788// successfully.
4789//
4790// Use "Send" method on the returned Request to send the API call to the service.
4791// the "output" return value is not valid until after Send returns without error.
4792//
4793// See GetObjectLegalHold for more information on using the GetObjectLegalHold
4794// API call, and error handling.
4795//
4796// This method is useful when you want to inject custom logic or configuration
4797// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4798//
4799//
4800//    // Example sending a request using the GetObjectLegalHoldRequest method.
4801//    req, resp := client.GetObjectLegalHoldRequest(params)
4802//
4803//    err := req.Send()
4804//    if err == nil { // resp is now filled
4805//        fmt.Println(resp)
4806//    }
4807//
4808// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4809func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
4810	op := &request.Operation{
4811		Name:       opGetObjectLegalHold,
4812		HTTPMethod: "GET",
4813		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
4814	}
4815
4816	if input == nil {
4817		input = &GetObjectLegalHoldInput{}
4818	}
4819
4820	output = &GetObjectLegalHoldOutput{}
4821	req = c.newRequest(op, input, output)
4822	return
4823}
4824
4825// GetObjectLegalHold API operation for Amazon Simple Storage Service.
4826//
4827// Gets an object's current Legal Hold status. For more information, see Locking
4828// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4829//
4830// This action is not supported by Amazon S3 on Outposts.
4831//
4832// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4833// with awserr.Error's Code and Message methods to get detailed information about
4834// the error.
4835//
4836// See the AWS API reference guide for Amazon Simple Storage Service's
4837// API operation GetObjectLegalHold for usage and error information.
4838// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4839func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
4840	req, out := c.GetObjectLegalHoldRequest(input)
4841	return out, req.Send()
4842}
4843
4844// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
4845// the ability to pass a context and additional request options.
4846//
4847// See GetObjectLegalHold for details on how to use this API operation.
4848//
4849// The context must be non-nil and will be used for request cancellation. If
4850// the context is nil a panic will occur. In the future the SDK may create
4851// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4852// for more information on using Contexts.
4853func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
4854	req, out := c.GetObjectLegalHoldRequest(input)
4855	req.SetContext(ctx)
4856	req.ApplyOptions(opts...)
4857	return out, req.Send()
4858}
4859
4860const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
4861
4862// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
4863// client's request for the GetObjectLockConfiguration operation. The "output" return
4864// value will be populated with the request's response once the request completes
4865// successfully.
4866//
4867// Use "Send" method on the returned Request to send the API call to the service.
4868// the "output" return value is not valid until after Send returns without error.
4869//
4870// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
4871// API call, and error handling.
4872//
4873// This method is useful when you want to inject custom logic or configuration
4874// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4875//
4876//
4877//    // Example sending a request using the GetObjectLockConfigurationRequest method.
4878//    req, resp := client.GetObjectLockConfigurationRequest(params)
4879//
4880//    err := req.Send()
4881//    if err == nil { // resp is now filled
4882//        fmt.Println(resp)
4883//    }
4884//
4885// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4886func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
4887	op := &request.Operation{
4888		Name:       opGetObjectLockConfiguration,
4889		HTTPMethod: "GET",
4890		HTTPPath:   "/{Bucket}?object-lock",
4891	}
4892
4893	if input == nil {
4894		input = &GetObjectLockConfigurationInput{}
4895	}
4896
4897	output = &GetObjectLockConfigurationOutput{}
4898	req = c.newRequest(op, input, output)
4899	return
4900}
4901
4902// GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
4903//
4904// Gets the Object Lock configuration for a bucket. The rule specified in the
4905// Object Lock configuration will be applied by default to every new object
4906// placed in the specified bucket. For more information, see Locking Objects
4907// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4908//
4909// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4910// with awserr.Error's Code and Message methods to get detailed information about
4911// the error.
4912//
4913// See the AWS API reference guide for Amazon Simple Storage Service's
4914// API operation GetObjectLockConfiguration for usage and error information.
4915// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4916func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
4917	req, out := c.GetObjectLockConfigurationRequest(input)
4918	return out, req.Send()
4919}
4920
4921// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
4922// the ability to pass a context and additional request options.
4923//
4924// See GetObjectLockConfiguration for details on how to use this API operation.
4925//
4926// The context must be non-nil and will be used for request cancellation. If
4927// the context is nil a panic will occur. In the future the SDK may create
4928// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4929// for more information on using Contexts.
4930func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
4931	req, out := c.GetObjectLockConfigurationRequest(input)
4932	req.SetContext(ctx)
4933	req.ApplyOptions(opts...)
4934	return out, req.Send()
4935}
4936
4937const opGetObjectRetention = "GetObjectRetention"
4938
4939// GetObjectRetentionRequest generates a "aws/request.Request" representing the
4940// client's request for the GetObjectRetention operation. The "output" return
4941// value will be populated with the request's response once the request completes
4942// successfully.
4943//
4944// Use "Send" method on the returned Request to send the API call to the service.
4945// the "output" return value is not valid until after Send returns without error.
4946//
4947// See GetObjectRetention for more information on using the GetObjectRetention
4948// API call, and error handling.
4949//
4950// This method is useful when you want to inject custom logic or configuration
4951// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4952//
4953//
4954//    // Example sending a request using the GetObjectRetentionRequest method.
4955//    req, resp := client.GetObjectRetentionRequest(params)
4956//
4957//    err := req.Send()
4958//    if err == nil { // resp is now filled
4959//        fmt.Println(resp)
4960//    }
4961//
4962// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4963func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
4964	op := &request.Operation{
4965		Name:       opGetObjectRetention,
4966		HTTPMethod: "GET",
4967		HTTPPath:   "/{Bucket}/{Key+}?retention",
4968	}
4969
4970	if input == nil {
4971		input = &GetObjectRetentionInput{}
4972	}
4973
4974	output = &GetObjectRetentionOutput{}
4975	req = c.newRequest(op, input, output)
4976	return
4977}
4978
4979// GetObjectRetention API operation for Amazon Simple Storage Service.
4980//
4981// Retrieves an object's retention settings. For more information, see Locking
4982// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4983//
4984// This action is not supported by Amazon S3 on Outposts.
4985//
4986// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4987// with awserr.Error's Code and Message methods to get detailed information about
4988// the error.
4989//
4990// See the AWS API reference guide for Amazon Simple Storage Service's
4991// API operation GetObjectRetention for usage and error information.
4992// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4993func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
4994	req, out := c.GetObjectRetentionRequest(input)
4995	return out, req.Send()
4996}
4997
4998// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
4999// the ability to pass a context and additional request options.
5000//
5001// See GetObjectRetention for details on how to use this API operation.
5002//
5003// The context must be non-nil and will be used for request cancellation. If
5004// the context is nil a panic will occur. In the future the SDK may create
5005// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5006// for more information on using Contexts.
5007func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
5008	req, out := c.GetObjectRetentionRequest(input)
5009	req.SetContext(ctx)
5010	req.ApplyOptions(opts...)
5011	return out, req.Send()
5012}
5013
5014const opGetObjectTagging = "GetObjectTagging"
5015
5016// GetObjectTaggingRequest generates a "aws/request.Request" representing the
5017// client's request for the GetObjectTagging operation. The "output" return
5018// value will be populated with the request's response once the request completes
5019// successfully.
5020//
5021// Use "Send" method on the returned Request to send the API call to the service.
5022// the "output" return value is not valid until after Send returns without error.
5023//
5024// See GetObjectTagging for more information on using the GetObjectTagging
5025// API call, and error handling.
5026//
5027// This method is useful when you want to inject custom logic or configuration
5028// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5029//
5030//
5031//    // Example sending a request using the GetObjectTaggingRequest method.
5032//    req, resp := client.GetObjectTaggingRequest(params)
5033//
5034//    err := req.Send()
5035//    if err == nil { // resp is now filled
5036//        fmt.Println(resp)
5037//    }
5038//
5039// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
5040func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
5041	op := &request.Operation{
5042		Name:       opGetObjectTagging,
5043		HTTPMethod: "GET",
5044		HTTPPath:   "/{Bucket}/{Key+}?tagging",
5045	}
5046
5047	if input == nil {
5048		input = &GetObjectTaggingInput{}
5049	}
5050
5051	output = &GetObjectTaggingOutput{}
5052	req = c.newRequest(op, input, output)
5053	return
5054}
5055
5056// GetObjectTagging API operation for Amazon Simple Storage Service.
5057//
5058// Returns the tag-set of an object. You send the GET request against the tagging
5059// subresource associated with the object.
5060//
5061// To use this operation, you must have permission to perform the s3:GetObjectTagging
5062// action. By default, the GET action returns information about current version
5063// of an object. For a versioned bucket, you can have multiple versions of an
5064// object in your bucket. To retrieve tags of any other version, use the versionId
5065// query parameter. You also need permission for the s3:GetObjectVersionTagging
5066// action.
5067//
5068// By default, the bucket owner has this permission and can grant this permission
5069// to others.
5070//
5071// For information about the Amazon S3 object tagging feature, see Object Tagging
5072// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
5073//
5074// The following action is related to GetObjectTagging:
5075//
5076//    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
5077//
5078//    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
5079//
5080// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5081// with awserr.Error's Code and Message methods to get detailed information about
5082// the error.
5083//
5084// See the AWS API reference guide for Amazon Simple Storage Service's
5085// API operation GetObjectTagging for usage and error information.
5086// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
5087func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
5088	req, out := c.GetObjectTaggingRequest(input)
5089	return out, req.Send()
5090}
5091
5092// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
5093// the ability to pass a context and additional request options.
5094//
5095// See GetObjectTagging for details on how to use this API operation.
5096//
5097// The context must be non-nil and will be used for request cancellation. If
5098// the context is nil a panic will occur. In the future the SDK may create
5099// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5100// for more information on using Contexts.
5101func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
5102	req, out := c.GetObjectTaggingRequest(input)
5103	req.SetContext(ctx)
5104	req.ApplyOptions(opts...)
5105	return out, req.Send()
5106}
5107
5108const opGetObjectTorrent = "GetObjectTorrent"
5109
5110// GetObjectTorrentRequest generates a "aws/request.Request" representing the
5111// client's request for the GetObjectTorrent operation. The "output" return
5112// value will be populated with the request's response once the request completes
5113// successfully.
5114//
5115// Use "Send" method on the returned Request to send the API call to the service.
5116// the "output" return value is not valid until after Send returns without error.
5117//
5118// See GetObjectTorrent for more information on using the GetObjectTorrent
5119// API call, and error handling.
5120//
5121// This method is useful when you want to inject custom logic or configuration
5122// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5123//
5124//
5125//    // Example sending a request using the GetObjectTorrentRequest method.
5126//    req, resp := client.GetObjectTorrentRequest(params)
5127//
5128//    err := req.Send()
5129//    if err == nil { // resp is now filled
5130//        fmt.Println(resp)
5131//    }
5132//
5133// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
5134func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
5135	op := &request.Operation{
5136		Name:       opGetObjectTorrent,
5137		HTTPMethod: "GET",
5138		HTTPPath:   "/{Bucket}/{Key+}?torrent",
5139	}
5140
5141	if input == nil {
5142		input = &GetObjectTorrentInput{}
5143	}
5144
5145	output = &GetObjectTorrentOutput{}
5146	req = c.newRequest(op, input, output)
5147	return
5148}
5149
5150// GetObjectTorrent API operation for Amazon Simple Storage Service.
5151//
5152// Returns torrent files from a bucket. BitTorrent can save you bandwidth when
5153// you're distributing large files. For more information about BitTorrent, see
5154// Using BitTorrent with Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
5155//
5156// You can get torrent only for objects that are less than 5 GB in size, and
5157// that are not encrypted using server-side encryption with a customer-provided
5158// encryption key.
5159//
5160// To use GET, you must have READ access to the object.
5161//
5162// This action is not supported by Amazon S3 on Outposts.
5163//
5164// The following action is related to GetObjectTorrent:
5165//
5166//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
5167//
5168// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5169// with awserr.Error's Code and Message methods to get detailed information about
5170// the error.
5171//
5172// See the AWS API reference guide for Amazon Simple Storage Service's
5173// API operation GetObjectTorrent for usage and error information.
5174// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
5175func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
5176	req, out := c.GetObjectTorrentRequest(input)
5177	return out, req.Send()
5178}
5179
5180// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
5181// the ability to pass a context and additional request options.
5182//
5183// See GetObjectTorrent for details on how to use this API operation.
5184//
5185// The context must be non-nil and will be used for request cancellation. If
5186// the context is nil a panic will occur. In the future the SDK may create
5187// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5188// for more information on using Contexts.
5189func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
5190	req, out := c.GetObjectTorrentRequest(input)
5191	req.SetContext(ctx)
5192	req.ApplyOptions(opts...)
5193	return out, req.Send()
5194}
5195
5196const opGetPublicAccessBlock = "GetPublicAccessBlock"
5197
5198// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
5199// client's request for the GetPublicAccessBlock operation. The "output" return
5200// value will be populated with the request's response once the request completes
5201// successfully.
5202//
5203// Use "Send" method on the returned Request to send the API call to the service.
5204// the "output" return value is not valid until after Send returns without error.
5205//
5206// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
5207// API call, and error handling.
5208//
5209// This method is useful when you want to inject custom logic or configuration
5210// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5211//
5212//
5213//    // Example sending a request using the GetPublicAccessBlockRequest method.
5214//    req, resp := client.GetPublicAccessBlockRequest(params)
5215//
5216//    err := req.Send()
5217//    if err == nil { // resp is now filled
5218//        fmt.Println(resp)
5219//    }
5220//
5221// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
5222func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
5223	op := &request.Operation{
5224		Name:       opGetPublicAccessBlock,
5225		HTTPMethod: "GET",
5226		HTTPPath:   "/{Bucket}?publicAccessBlock",
5227	}
5228
5229	if input == nil {
5230		input = &GetPublicAccessBlockInput{}
5231	}
5232
5233	output = &GetPublicAccessBlockOutput{}
5234	req = c.newRequest(op, input, output)
5235	return
5236}
5237
5238// GetPublicAccessBlock API operation for Amazon Simple Storage Service.
5239//
5240// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To
5241// use this operation, you must have the s3:GetBucketPublicAccessBlock permission.
5242// For more information about Amazon S3 permissions, see Specifying Permissions
5243// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5244//
5245// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
5246// or an object, it checks the PublicAccessBlock configuration for both the
5247// bucket (or the bucket that contains the object) and the bucket owner's account.
5248// If the PublicAccessBlock settings are different between the bucket and the
5249// account, Amazon S3 uses the most restrictive combination of the bucket-level
5250// and account-level settings.
5251//
5252// For more information about when Amazon S3 considers a bucket or an object
5253// 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).
5254//
5255// The following operations are related to GetPublicAccessBlock:
5256//
5257//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
5258//
5259//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
5260//
5261//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
5262//
5263//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
5264//
5265// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5266// with awserr.Error's Code and Message methods to get detailed information about
5267// the error.
5268//
5269// See the AWS API reference guide for Amazon Simple Storage Service's
5270// API operation GetPublicAccessBlock for usage and error information.
5271// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
5272func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
5273	req, out := c.GetPublicAccessBlockRequest(input)
5274	return out, req.Send()
5275}
5276
5277// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
5278// the ability to pass a context and additional request options.
5279//
5280// See GetPublicAccessBlock for details on how to use this API operation.
5281//
5282// The context must be non-nil and will be used for request cancellation. If
5283// the context is nil a panic will occur. In the future the SDK may create
5284// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5285// for more information on using Contexts.
5286func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
5287	req, out := c.GetPublicAccessBlockRequest(input)
5288	req.SetContext(ctx)
5289	req.ApplyOptions(opts...)
5290	return out, req.Send()
5291}
5292
5293const opHeadBucket = "HeadBucket"
5294
5295// HeadBucketRequest generates a "aws/request.Request" representing the
5296// client's request for the HeadBucket operation. The "output" return
5297// value will be populated with the request's response once the request completes
5298// successfully.
5299//
5300// Use "Send" method on the returned Request to send the API call to the service.
5301// the "output" return value is not valid until after Send returns without error.
5302//
5303// See HeadBucket for more information on using the HeadBucket
5304// API call, and error handling.
5305//
5306// This method is useful when you want to inject custom logic or configuration
5307// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5308//
5309//
5310//    // Example sending a request using the HeadBucketRequest method.
5311//    req, resp := client.HeadBucketRequest(params)
5312//
5313//    err := req.Send()
5314//    if err == nil { // resp is now filled
5315//        fmt.Println(resp)
5316//    }
5317//
5318// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
5319func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
5320	op := &request.Operation{
5321		Name:       opHeadBucket,
5322		HTTPMethod: "HEAD",
5323		HTTPPath:   "/{Bucket}",
5324	}
5325
5326	if input == nil {
5327		input = &HeadBucketInput{}
5328	}
5329
5330	output = &HeadBucketOutput{}
5331	req = c.newRequest(op, input, output)
5332	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5333	return
5334}
5335
5336// HeadBucket API operation for Amazon Simple Storage Service.
5337//
5338// This action is useful to determine if a bucket exists and you have permission
5339// to access it. The action returns a 200 OK if the bucket exists and you have
5340// permission to access it.
5341//
5342// If the bucket does not exist or you do not have permission to access it,
5343// the HEAD request returns a generic 404 Not Found or 403 Forbidden code. A
5344// message body is not included, so you cannot determine the exception beyond
5345// these error codes.
5346//
5347// To use this operation, you must have permissions to perform the s3:ListBucket
5348// action. The bucket owner has this permission by default and can grant this
5349// permission to others. For more information about permissions, see Permissions
5350// 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)
5351// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5352//
5353// To use this API against an access point, you must provide the alias of the
5354// access point in place of the bucket name or specify the access point ARN.
5355// When using the access point ARN, you must direct requests to the access point
5356// hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
5357// When using the Amazon Web Services SDKs, you provide the ARN in place of
5358// the bucket name. For more information see, Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html).
5359//
5360// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5361// with awserr.Error's Code and Message methods to get detailed information about
5362// the error.
5363//
5364// See the AWS API reference guide for Amazon Simple Storage Service's
5365// API operation HeadBucket for usage and error information.
5366//
5367// Returned Error Codes:
5368//   * ErrCodeNoSuchBucket "NoSuchBucket"
5369//   The specified bucket does not exist.
5370//
5371// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
5372func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
5373	req, out := c.HeadBucketRequest(input)
5374	return out, req.Send()
5375}
5376
5377// HeadBucketWithContext is the same as HeadBucket with the addition of
5378// the ability to pass a context and additional request options.
5379//
5380// See HeadBucket for details on how to use this API operation.
5381//
5382// The context must be non-nil and will be used for request cancellation. If
5383// the context is nil a panic will occur. In the future the SDK may create
5384// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5385// for more information on using Contexts.
5386func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
5387	req, out := c.HeadBucketRequest(input)
5388	req.SetContext(ctx)
5389	req.ApplyOptions(opts...)
5390	return out, req.Send()
5391}
5392
5393const opHeadObject = "HeadObject"
5394
5395// HeadObjectRequest generates a "aws/request.Request" representing the
5396// client's request for the HeadObject operation. The "output" return
5397// value will be populated with the request's response once the request completes
5398// successfully.
5399//
5400// Use "Send" method on the returned Request to send the API call to the service.
5401// the "output" return value is not valid until after Send returns without error.
5402//
5403// See HeadObject for more information on using the HeadObject
5404// API call, and error handling.
5405//
5406// This method is useful when you want to inject custom logic or configuration
5407// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5408//
5409//
5410//    // Example sending a request using the HeadObjectRequest method.
5411//    req, resp := client.HeadObjectRequest(params)
5412//
5413//    err := req.Send()
5414//    if err == nil { // resp is now filled
5415//        fmt.Println(resp)
5416//    }
5417//
5418// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5419func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
5420	op := &request.Operation{
5421		Name:       opHeadObject,
5422		HTTPMethod: "HEAD",
5423		HTTPPath:   "/{Bucket}/{Key+}",
5424	}
5425
5426	if input == nil {
5427		input = &HeadObjectInput{}
5428	}
5429
5430	output = &HeadObjectOutput{}
5431	req = c.newRequest(op, input, output)
5432	return
5433}
5434
5435// HeadObject API operation for Amazon Simple Storage Service.
5436//
5437// The HEAD action retrieves metadata from an object without returning the object
5438// itself. This action is useful if you're only interested in an object's metadata.
5439// To use HEAD, you must have READ access to the object.
5440//
5441// A HEAD request has the same options as a GET action on an object. The response
5442// is identical to the GET response except that there is no response body. Because
5443// of this, if the HEAD request generates an error, it returns a generic 404
5444// Not Found or 403 Forbidden code. It is not possible to retrieve the exact
5445// exception beyond these error codes.
5446//
5447// If you encrypt an object by using server-side encryption with customer-provided
5448// encryption keys (SSE-C) when you store the object in Amazon S3, then when
5449// you retrieve the metadata from the object, you must use the following headers:
5450//
5451//    * x-amz-server-side-encryption-customer-algorithm
5452//
5453//    * x-amz-server-side-encryption-customer-key
5454//
5455//    * x-amz-server-side-encryption-customer-key-MD5
5456//
5457// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
5458// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
5459//
5460//    * Encryption request headers, like x-amz-server-side-encryption, should
5461//    not be sent for GET requests if your object uses server-side encryption
5462//    with KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed
5463//    encryption keys (SSE-S3). If your object does use these types of keys,
5464//    you’ll get an HTTP 400 BadRequest error.
5465//
5466//    * The last modified property in this case is the creation date of the
5467//    object.
5468//
5469// Request headers are limited to 8 KB in size. For more information, see Common
5470// Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
5471//
5472// Consider the following when using request headers:
5473//
5474//    * Consideration 1 – If both of the If-Match and If-Unmodified-Since
5475//    headers are present in the request as follows: If-Match condition evaluates
5476//    to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon
5477//    S3 returns 200 OK and the data requested.
5478//
5479//    * Consideration 2 – If both of the If-None-Match and If-Modified-Since
5480//    headers are present in the request as follows: If-None-Match condition
5481//    evaluates to false, and; If-Modified-Since condition evaluates to true;
5482//    Then Amazon S3 returns the 304 Not Modified response code.
5483//
5484// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
5485//
5486// Permissions
5487//
5488// You need the relevant read object (or version) permission for this operation.
5489// For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5490// If the object you request does not exist, the error Amazon S3 returns depends
5491// on whether you also have the s3:ListBucket permission.
5492//
5493//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 returns
5494//    an HTTP status code 404 ("no such key") error.
5495//
5496//    * If you don’t have the s3:ListBucket permission, Amazon S3 returns
5497//    an HTTP status code 403 ("access denied") error.
5498//
5499// The following action is related to HeadObject:
5500//
5501//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
5502//
5503// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
5504// for more information on returned errors.
5505//
5506// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5507// with awserr.Error's Code and Message methods to get detailed information about
5508// the error.
5509//
5510// See the AWS API reference guide for Amazon Simple Storage Service's
5511// API operation HeadObject for usage and error information.
5512// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5513func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
5514	req, out := c.HeadObjectRequest(input)
5515	return out, req.Send()
5516}
5517
5518// HeadObjectWithContext is the same as HeadObject with the addition of
5519// the ability to pass a context and additional request options.
5520//
5521// See HeadObject for details on how to use this API operation.
5522//
5523// The context must be non-nil and will be used for request cancellation. If
5524// the context is nil a panic will occur. In the future the SDK may create
5525// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5526// for more information on using Contexts.
5527func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
5528	req, out := c.HeadObjectRequest(input)
5529	req.SetContext(ctx)
5530	req.ApplyOptions(opts...)
5531	return out, req.Send()
5532}
5533
5534const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
5535
5536// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
5537// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
5538// value will be populated with the request's response once the request completes
5539// successfully.
5540//
5541// Use "Send" method on the returned Request to send the API call to the service.
5542// the "output" return value is not valid until after Send returns without error.
5543//
5544// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
5545// API call, and error handling.
5546//
5547// This method is useful when you want to inject custom logic or configuration
5548// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5549//
5550//
5551//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
5552//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
5553//
5554//    err := req.Send()
5555//    if err == nil { // resp is now filled
5556//        fmt.Println(resp)
5557//    }
5558//
5559// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5560func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
5561	op := &request.Operation{
5562		Name:       opListBucketAnalyticsConfigurations,
5563		HTTPMethod: "GET",
5564		HTTPPath:   "/{Bucket}?analytics",
5565	}
5566
5567	if input == nil {
5568		input = &ListBucketAnalyticsConfigurationsInput{}
5569	}
5570
5571	output = &ListBucketAnalyticsConfigurationsOutput{}
5572	req = c.newRequest(op, input, output)
5573	return
5574}
5575
5576// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
5577//
5578// Lists the analytics configurations for the bucket. You can have up to 1,000
5579// analytics configurations per bucket.
5580//
5581// This action supports list pagination and does not return more than 100 configurations
5582// at a time. You should always check the IsTruncated element in the response.
5583// If there are no more configurations to list, IsTruncated is set to false.
5584// If there are more configurations to list, IsTruncated is set to true, and
5585// there will be a value in NextContinuationToken. You use the NextContinuationToken
5586// value to continue the pagination of the list by passing the value in continuation-token
5587// in the request to GET the next page.
5588//
5589// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
5590// action. The bucket owner has this permission by default. The bucket owner
5591// can grant this permission to others. For more information about permissions,
5592// 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)
5593// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5594//
5595// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
5596// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
5597//
5598// The following operations are related to ListBucketAnalyticsConfigurations:
5599//
5600//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
5601//
5602//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
5603//
5604//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
5605//
5606// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5607// with awserr.Error's Code and Message methods to get detailed information about
5608// the error.
5609//
5610// See the AWS API reference guide for Amazon Simple Storage Service's
5611// API operation ListBucketAnalyticsConfigurations for usage and error information.
5612// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5613func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
5614	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5615	return out, req.Send()
5616}
5617
5618// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
5619// the ability to pass a context and additional request options.
5620//
5621// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
5622//
5623// The context must be non-nil and will be used for request cancellation. If
5624// the context is nil a panic will occur. In the future the SDK may create
5625// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5626// for more information on using Contexts.
5627func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
5628	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5629	req.SetContext(ctx)
5630	req.ApplyOptions(opts...)
5631	return out, req.Send()
5632}
5633
5634const opListBucketIntelligentTieringConfigurations = "ListBucketIntelligentTieringConfigurations"
5635
5636// ListBucketIntelligentTieringConfigurationsRequest generates a "aws/request.Request" representing the
5637// client's request for the ListBucketIntelligentTieringConfigurations operation. The "output" return
5638// value will be populated with the request's response once the request completes
5639// successfully.
5640//
5641// Use "Send" method on the returned Request to send the API call to the service.
5642// the "output" return value is not valid until after Send returns without error.
5643//
5644// See ListBucketIntelligentTieringConfigurations for more information on using the ListBucketIntelligentTieringConfigurations
5645// API call, and error handling.
5646//
5647// This method is useful when you want to inject custom logic or configuration
5648// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5649//
5650//
5651//    // Example sending a request using the ListBucketIntelligentTieringConfigurationsRequest method.
5652//    req, resp := client.ListBucketIntelligentTieringConfigurationsRequest(params)
5653//
5654//    err := req.Send()
5655//    if err == nil { // resp is now filled
5656//        fmt.Println(resp)
5657//    }
5658//
5659// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
5660func (c *S3) ListBucketIntelligentTieringConfigurationsRequest(input *ListBucketIntelligentTieringConfigurationsInput) (req *request.Request, output *ListBucketIntelligentTieringConfigurationsOutput) {
5661	op := &request.Operation{
5662		Name:       opListBucketIntelligentTieringConfigurations,
5663		HTTPMethod: "GET",
5664		HTTPPath:   "/{Bucket}?intelligent-tiering",
5665	}
5666
5667	if input == nil {
5668		input = &ListBucketIntelligentTieringConfigurationsInput{}
5669	}
5670
5671	output = &ListBucketIntelligentTieringConfigurationsOutput{}
5672	req = c.newRequest(op, input, output)
5673	return
5674}
5675
5676// ListBucketIntelligentTieringConfigurations API operation for Amazon Simple Storage Service.
5677//
5678// Lists the S3 Intelligent-Tiering configuration from the specified bucket.
5679//
5680// The S3 Intelligent-Tiering storage class is designed to optimize storage
5681// costs by automatically moving data to the most cost-effective storage access
5682// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
5683// delivers automatic cost savings in two low latency and high throughput access
5684// tiers. For data that can be accessed asynchronously, you can choose to activate
5685// automatic archiving capabilities within the S3 Intelligent-Tiering storage
5686// class.
5687//
5688// The S3 Intelligent-Tiering storage class is the ideal storage class for data
5689// with unknown, changing, or unpredictable access patterns, independent of
5690// object size or retention period. If the size of an object is less than 128
5691// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
5692// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
5693// storage class.
5694//
5695// For more information, see Storage class for automatically optimizing frequently
5696// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
5697//
5698// Operations related to ListBucketIntelligentTieringConfigurations include:
5699//
5700//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
5701//
5702//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
5703//
5704//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
5705//
5706// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5707// with awserr.Error's Code and Message methods to get detailed information about
5708// the error.
5709//
5710// See the AWS API reference guide for Amazon Simple Storage Service's
5711// API operation ListBucketIntelligentTieringConfigurations for usage and error information.
5712// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
5713func (c *S3) ListBucketIntelligentTieringConfigurations(input *ListBucketIntelligentTieringConfigurationsInput) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
5714	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
5715	return out, req.Send()
5716}
5717
5718// ListBucketIntelligentTieringConfigurationsWithContext is the same as ListBucketIntelligentTieringConfigurations with the addition of
5719// the ability to pass a context and additional request options.
5720//
5721// See ListBucketIntelligentTieringConfigurations for details on how to use this API operation.
5722//
5723// The context must be non-nil and will be used for request cancellation. If
5724// the context is nil a panic will occur. In the future the SDK may create
5725// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5726// for more information on using Contexts.
5727func (c *S3) ListBucketIntelligentTieringConfigurationsWithContext(ctx aws.Context, input *ListBucketIntelligentTieringConfigurationsInput, opts ...request.Option) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
5728	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
5729	req.SetContext(ctx)
5730	req.ApplyOptions(opts...)
5731	return out, req.Send()
5732}
5733
5734const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
5735
5736// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
5737// client's request for the ListBucketInventoryConfigurations operation. The "output" return
5738// value will be populated with the request's response once the request completes
5739// successfully.
5740//
5741// Use "Send" method on the returned Request to send the API call to the service.
5742// the "output" return value is not valid until after Send returns without error.
5743//
5744// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
5745// API call, and error handling.
5746//
5747// This method is useful when you want to inject custom logic or configuration
5748// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5749//
5750//
5751//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
5752//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
5753//
5754//    err := req.Send()
5755//    if err == nil { // resp is now filled
5756//        fmt.Println(resp)
5757//    }
5758//
5759// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5760func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
5761	op := &request.Operation{
5762		Name:       opListBucketInventoryConfigurations,
5763		HTTPMethod: "GET",
5764		HTTPPath:   "/{Bucket}?inventory",
5765	}
5766
5767	if input == nil {
5768		input = &ListBucketInventoryConfigurationsInput{}
5769	}
5770
5771	output = &ListBucketInventoryConfigurationsOutput{}
5772	req = c.newRequest(op, input, output)
5773	return
5774}
5775
5776// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
5777//
5778// Returns a list of inventory configurations for the bucket. You can have up
5779// to 1,000 analytics configurations per bucket.
5780//
5781// This action supports list pagination and does not return more than 100 configurations
5782// at a time. Always check the IsTruncated element in the response. If there
5783// are no more configurations to list, IsTruncated is set to false. If there
5784// are more configurations to list, IsTruncated is set to true, and there is
5785// a value in NextContinuationToken. You use the NextContinuationToken value
5786// to continue the pagination of the list by passing the value in continuation-token
5787// in the request to GET the next page.
5788//
5789// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
5790// action. The bucket owner has this permission by default. The bucket owner
5791// can grant this permission to others. For more information about permissions,
5792// 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)
5793// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5794//
5795// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
5796// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
5797//
5798// The following operations are related to ListBucketInventoryConfigurations:
5799//
5800//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
5801//
5802//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
5803//
5804//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
5805//
5806// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5807// with awserr.Error's Code and Message methods to get detailed information about
5808// the error.
5809//
5810// See the AWS API reference guide for Amazon Simple Storage Service's
5811// API operation ListBucketInventoryConfigurations for usage and error information.
5812// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5813func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
5814	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5815	return out, req.Send()
5816}
5817
5818// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
5819// the ability to pass a context and additional request options.
5820//
5821// See ListBucketInventoryConfigurations for details on how to use this API operation.
5822//
5823// The context must be non-nil and will be used for request cancellation. If
5824// the context is nil a panic will occur. In the future the SDK may create
5825// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5826// for more information on using Contexts.
5827func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
5828	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5829	req.SetContext(ctx)
5830	req.ApplyOptions(opts...)
5831	return out, req.Send()
5832}
5833
5834const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
5835
5836// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
5837// client's request for the ListBucketMetricsConfigurations operation. The "output" return
5838// value will be populated with the request's response once the request completes
5839// successfully.
5840//
5841// Use "Send" method on the returned Request to send the API call to the service.
5842// the "output" return value is not valid until after Send returns without error.
5843//
5844// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
5845// API call, and error handling.
5846//
5847// This method is useful when you want to inject custom logic or configuration
5848// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5849//
5850//
5851//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
5852//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
5853//
5854//    err := req.Send()
5855//    if err == nil { // resp is now filled
5856//        fmt.Println(resp)
5857//    }
5858//
5859// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5860func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
5861	op := &request.Operation{
5862		Name:       opListBucketMetricsConfigurations,
5863		HTTPMethod: "GET",
5864		HTTPPath:   "/{Bucket}?metrics",
5865	}
5866
5867	if input == nil {
5868		input = &ListBucketMetricsConfigurationsInput{}
5869	}
5870
5871	output = &ListBucketMetricsConfigurationsOutput{}
5872	req = c.newRequest(op, input, output)
5873	return
5874}
5875
5876// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
5877//
5878// Lists the metrics configurations for the bucket. The metrics configurations
5879// are only for the request metrics of the bucket and do not provide information
5880// on daily storage metrics. You can have up to 1,000 configurations per bucket.
5881//
5882// This action supports list pagination and does not return more than 100 configurations
5883// at a time. Always check the IsTruncated element in the response. If there
5884// are no more configurations to list, IsTruncated is set to false. If there
5885// are more configurations to list, IsTruncated is set to true, and there is
5886// a value in NextContinuationToken. You use the NextContinuationToken value
5887// to continue the pagination of the list by passing the value in continuation-token
5888// in the request to GET the next page.
5889//
5890// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
5891// action. The bucket owner has this permission by default. The bucket owner
5892// can grant this permission to others. For more information about permissions,
5893// 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)
5894// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5895//
5896// For more information about metrics configurations and CloudWatch request
5897// metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
5898//
5899// The following operations are related to ListBucketMetricsConfigurations:
5900//
5901//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
5902//
5903//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
5904//
5905//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
5906//
5907// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5908// with awserr.Error's Code and Message methods to get detailed information about
5909// the error.
5910//
5911// See the AWS API reference guide for Amazon Simple Storage Service's
5912// API operation ListBucketMetricsConfigurations for usage and error information.
5913// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5914func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
5915	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5916	return out, req.Send()
5917}
5918
5919// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
5920// the ability to pass a context and additional request options.
5921//
5922// See ListBucketMetricsConfigurations for details on how to use this API operation.
5923//
5924// The context must be non-nil and will be used for request cancellation. If
5925// the context is nil a panic will occur. In the future the SDK may create
5926// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5927// for more information on using Contexts.
5928func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
5929	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5930	req.SetContext(ctx)
5931	req.ApplyOptions(opts...)
5932	return out, req.Send()
5933}
5934
5935const opListBuckets = "ListBuckets"
5936
5937// ListBucketsRequest generates a "aws/request.Request" representing the
5938// client's request for the ListBuckets operation. The "output" return
5939// value will be populated with the request's response once the request completes
5940// successfully.
5941//
5942// Use "Send" method on the returned Request to send the API call to the service.
5943// the "output" return value is not valid until after Send returns without error.
5944//
5945// See ListBuckets for more information on using the ListBuckets
5946// API call, and error handling.
5947//
5948// This method is useful when you want to inject custom logic or configuration
5949// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5950//
5951//
5952//    // Example sending a request using the ListBucketsRequest method.
5953//    req, resp := client.ListBucketsRequest(params)
5954//
5955//    err := req.Send()
5956//    if err == nil { // resp is now filled
5957//        fmt.Println(resp)
5958//    }
5959//
5960// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5961func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
5962	op := &request.Operation{
5963		Name:       opListBuckets,
5964		HTTPMethod: "GET",
5965		HTTPPath:   "/",
5966	}
5967
5968	if input == nil {
5969		input = &ListBucketsInput{}
5970	}
5971
5972	output = &ListBucketsOutput{}
5973	req = c.newRequest(op, input, output)
5974	return
5975}
5976
5977// ListBuckets API operation for Amazon Simple Storage Service.
5978//
5979// Returns a list of all buckets owned by the authenticated sender of the request.
5980//
5981// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5982// with awserr.Error's Code and Message methods to get detailed information about
5983// the error.
5984//
5985// See the AWS API reference guide for Amazon Simple Storage Service's
5986// API operation ListBuckets for usage and error information.
5987// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5988func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
5989	req, out := c.ListBucketsRequest(input)
5990	return out, req.Send()
5991}
5992
5993// ListBucketsWithContext is the same as ListBuckets with the addition of
5994// the ability to pass a context and additional request options.
5995//
5996// See ListBuckets for details on how to use this API operation.
5997//
5998// The context must be non-nil and will be used for request cancellation. If
5999// the context is nil a panic will occur. In the future the SDK may create
6000// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6001// for more information on using Contexts.
6002func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
6003	req, out := c.ListBucketsRequest(input)
6004	req.SetContext(ctx)
6005	req.ApplyOptions(opts...)
6006	return out, req.Send()
6007}
6008
6009const opListMultipartUploads = "ListMultipartUploads"
6010
6011// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
6012// client's request for the ListMultipartUploads operation. The "output" return
6013// value will be populated with the request's response once the request completes
6014// successfully.
6015//
6016// Use "Send" method on the returned Request to send the API call to the service.
6017// the "output" return value is not valid until after Send returns without error.
6018//
6019// See ListMultipartUploads for more information on using the ListMultipartUploads
6020// API call, and error handling.
6021//
6022// This method is useful when you want to inject custom logic or configuration
6023// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6024//
6025//
6026//    // Example sending a request using the ListMultipartUploadsRequest method.
6027//    req, resp := client.ListMultipartUploadsRequest(params)
6028//
6029//    err := req.Send()
6030//    if err == nil { // resp is now filled
6031//        fmt.Println(resp)
6032//    }
6033//
6034// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
6035func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
6036	op := &request.Operation{
6037		Name:       opListMultipartUploads,
6038		HTTPMethod: "GET",
6039		HTTPPath:   "/{Bucket}?uploads",
6040		Paginator: &request.Paginator{
6041			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
6042			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
6043			LimitToken:      "MaxUploads",
6044			TruncationToken: "IsTruncated",
6045		},
6046	}
6047
6048	if input == nil {
6049		input = &ListMultipartUploadsInput{}
6050	}
6051
6052	output = &ListMultipartUploadsOutput{}
6053	req = c.newRequest(op, input, output)
6054	return
6055}
6056
6057// ListMultipartUploads API operation for Amazon Simple Storage Service.
6058//
6059// This action lists in-progress multipart uploads. An in-progress multipart
6060// upload is a multipart upload that has been initiated using the Initiate Multipart
6061// Upload request, but has not yet been completed or aborted.
6062//
6063// This action returns at most 1,000 multipart uploads in the response. 1,000
6064// multipart uploads is the maximum number of uploads a response can include,
6065// which is also the default value. You can further limit the number of uploads
6066// in a response by specifying the max-uploads parameter in the response. If
6067// additional multipart uploads satisfy the list criteria, the response will
6068// contain an IsTruncated element with the value true. To list the additional
6069// multipart uploads, use the key-marker and upload-id-marker request parameters.
6070//
6071// In the response, the uploads are sorted by key. If your application has initiated
6072// more than one multipart upload using the same object key, then uploads in
6073// the response are first sorted by key. Additionally, uploads are sorted in
6074// ascending order within each key by the upload initiation time.
6075//
6076// For more information on multipart uploads, see Uploading Objects Using Multipart
6077// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6078//
6079// For information on permissions required to use the multipart upload API,
6080// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6081//
6082// The following operations are related to ListMultipartUploads:
6083//
6084//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
6085//
6086//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
6087//
6088//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
6089//
6090//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
6091//
6092//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
6093//
6094// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6095// with awserr.Error's Code and Message methods to get detailed information about
6096// the error.
6097//
6098// See the AWS API reference guide for Amazon Simple Storage Service's
6099// API operation ListMultipartUploads for usage and error information.
6100// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
6101func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
6102	req, out := c.ListMultipartUploadsRequest(input)
6103	return out, req.Send()
6104}
6105
6106// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
6107// the ability to pass a context and additional request options.
6108//
6109// See ListMultipartUploads for details on how to use this API operation.
6110//
6111// The context must be non-nil and will be used for request cancellation. If
6112// the context is nil a panic will occur. In the future the SDK may create
6113// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6114// for more information on using Contexts.
6115func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
6116	req, out := c.ListMultipartUploadsRequest(input)
6117	req.SetContext(ctx)
6118	req.ApplyOptions(opts...)
6119	return out, req.Send()
6120}
6121
6122// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
6123// calling the "fn" function with the response data for each page. To stop
6124// iterating, return false from the fn function.
6125//
6126// See ListMultipartUploads method for more information on how to use this operation.
6127//
6128// Note: This operation can generate multiple requests to a service.
6129//
6130//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
6131//    pageNum := 0
6132//    err := client.ListMultipartUploadsPages(params,
6133//        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
6134//            pageNum++
6135//            fmt.Println(page)
6136//            return pageNum <= 3
6137//        })
6138//
6139func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
6140	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
6141}
6142
6143// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
6144// it takes a Context and allows setting request options on the pages.
6145//
6146// The context must be non-nil and will be used for request cancellation. If
6147// the context is nil a panic will occur. In the future the SDK may create
6148// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6149// for more information on using Contexts.
6150func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
6151	p := request.Pagination{
6152		NewRequest: func() (*request.Request, error) {
6153			var inCpy *ListMultipartUploadsInput
6154			if input != nil {
6155				tmp := *input
6156				inCpy = &tmp
6157			}
6158			req, _ := c.ListMultipartUploadsRequest(inCpy)
6159			req.SetContext(ctx)
6160			req.ApplyOptions(opts...)
6161			return req, nil
6162		},
6163	}
6164
6165	for p.Next() {
6166		if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) {
6167			break
6168		}
6169	}
6170
6171	return p.Err()
6172}
6173
6174const opListObjectVersions = "ListObjectVersions"
6175
6176// ListObjectVersionsRequest generates a "aws/request.Request" representing the
6177// client's request for the ListObjectVersions operation. The "output" return
6178// value will be populated with the request's response once the request completes
6179// successfully.
6180//
6181// Use "Send" method on the returned Request to send the API call to the service.
6182// the "output" return value is not valid until after Send returns without error.
6183//
6184// See ListObjectVersions for more information on using the ListObjectVersions
6185// API call, and error handling.
6186//
6187// This method is useful when you want to inject custom logic or configuration
6188// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6189//
6190//
6191//    // Example sending a request using the ListObjectVersionsRequest method.
6192//    req, resp := client.ListObjectVersionsRequest(params)
6193//
6194//    err := req.Send()
6195//    if err == nil { // resp is now filled
6196//        fmt.Println(resp)
6197//    }
6198//
6199// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
6200func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
6201	op := &request.Operation{
6202		Name:       opListObjectVersions,
6203		HTTPMethod: "GET",
6204		HTTPPath:   "/{Bucket}?versions",
6205		Paginator: &request.Paginator{
6206			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
6207			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
6208			LimitToken:      "MaxKeys",
6209			TruncationToken: "IsTruncated",
6210		},
6211	}
6212
6213	if input == nil {
6214		input = &ListObjectVersionsInput{}
6215	}
6216
6217	output = &ListObjectVersionsOutput{}
6218	req = c.newRequest(op, input, output)
6219	return
6220}
6221
6222// ListObjectVersions API operation for Amazon Simple Storage Service.
6223//
6224// Returns metadata about all versions of the objects in a bucket. You can also
6225// use request parameters as selection criteria to return metadata about a subset
6226// of all the object versions.
6227//
6228// To use this operation, you must have permissions to perform the s3:ListBucketVersions
6229// action. Be aware of the name difference.
6230//
6231// A 200 OK response can contain valid or invalid XML. Make sure to design your
6232// application to parse the contents of the response and handle it appropriately.
6233//
6234// To use this operation, you must have READ access to the bucket.
6235//
6236// This action is not supported by Amazon S3 on Outposts.
6237//
6238// The following operations are related to ListObjectVersions:
6239//
6240//    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
6241//
6242//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6243//
6244//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6245//
6246//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
6247//
6248// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6249// with awserr.Error's Code and Message methods to get detailed information about
6250// the error.
6251//
6252// See the AWS API reference guide for Amazon Simple Storage Service's
6253// API operation ListObjectVersions for usage and error information.
6254// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
6255func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
6256	req, out := c.ListObjectVersionsRequest(input)
6257	return out, req.Send()
6258}
6259
6260// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
6261// the ability to pass a context and additional request options.
6262//
6263// See ListObjectVersions for details on how to use this API operation.
6264//
6265// The context must be non-nil and will be used for request cancellation. If
6266// the context is nil a panic will occur. In the future the SDK may create
6267// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6268// for more information on using Contexts.
6269func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
6270	req, out := c.ListObjectVersionsRequest(input)
6271	req.SetContext(ctx)
6272	req.ApplyOptions(opts...)
6273	return out, req.Send()
6274}
6275
6276// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
6277// calling the "fn" function with the response data for each page. To stop
6278// iterating, return false from the fn function.
6279//
6280// See ListObjectVersions method for more information on how to use this operation.
6281//
6282// Note: This operation can generate multiple requests to a service.
6283//
6284//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
6285//    pageNum := 0
6286//    err := client.ListObjectVersionsPages(params,
6287//        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
6288//            pageNum++
6289//            fmt.Println(page)
6290//            return pageNum <= 3
6291//        })
6292//
6293func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
6294	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
6295}
6296
6297// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
6298// it takes a Context and allows setting request options on the pages.
6299//
6300// The context must be non-nil and will be used for request cancellation. If
6301// the context is nil a panic will occur. In the future the SDK may create
6302// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6303// for more information on using Contexts.
6304func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
6305	p := request.Pagination{
6306		NewRequest: func() (*request.Request, error) {
6307			var inCpy *ListObjectVersionsInput
6308			if input != nil {
6309				tmp := *input
6310				inCpy = &tmp
6311			}
6312			req, _ := c.ListObjectVersionsRequest(inCpy)
6313			req.SetContext(ctx)
6314			req.ApplyOptions(opts...)
6315			return req, nil
6316		},
6317	}
6318
6319	for p.Next() {
6320		if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) {
6321			break
6322		}
6323	}
6324
6325	return p.Err()
6326}
6327
6328const opListObjects = "ListObjects"
6329
6330// ListObjectsRequest generates a "aws/request.Request" representing the
6331// client's request for the ListObjects operation. The "output" return
6332// value will be populated with the request's response once the request completes
6333// successfully.
6334//
6335// Use "Send" method on the returned Request to send the API call to the service.
6336// the "output" return value is not valid until after Send returns without error.
6337//
6338// See ListObjects for more information on using the ListObjects
6339// API call, and error handling.
6340//
6341// This method is useful when you want to inject custom logic or configuration
6342// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6343//
6344//
6345//    // Example sending a request using the ListObjectsRequest method.
6346//    req, resp := client.ListObjectsRequest(params)
6347//
6348//    err := req.Send()
6349//    if err == nil { // resp is now filled
6350//        fmt.Println(resp)
6351//    }
6352//
6353// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
6354func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
6355	op := &request.Operation{
6356		Name:       opListObjects,
6357		HTTPMethod: "GET",
6358		HTTPPath:   "/{Bucket}",
6359		Paginator: &request.Paginator{
6360			InputTokens:     []string{"Marker"},
6361			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
6362			LimitToken:      "MaxKeys",
6363			TruncationToken: "IsTruncated",
6364		},
6365	}
6366
6367	if input == nil {
6368		input = &ListObjectsInput{}
6369	}
6370
6371	output = &ListObjectsOutput{}
6372	req = c.newRequest(op, input, output)
6373	return
6374}
6375
6376// ListObjects API operation for Amazon Simple Storage Service.
6377//
6378// Returns some or all (up to 1,000) of the objects in a bucket. You can use
6379// the request parameters as selection criteria to return a subset of the objects
6380// in a bucket. A 200 OK response can contain valid or invalid XML. Be sure
6381// to design your application to parse the contents of the response and handle
6382// it appropriately.
6383//
6384// This action has been revised. We recommend that you use the newer version,
6385// ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html),
6386// when developing applications. For backward compatibility, Amazon S3 continues
6387// to support ListObjects.
6388//
6389// The following operations are related to ListObjects:
6390//
6391//    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
6392//
6393//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6394//
6395//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6396//
6397//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6398//
6399//    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
6400//
6401// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6402// with awserr.Error's Code and Message methods to get detailed information about
6403// the error.
6404//
6405// See the AWS API reference guide for Amazon Simple Storage Service's
6406// API operation ListObjects for usage and error information.
6407//
6408// Returned Error Codes:
6409//   * ErrCodeNoSuchBucket "NoSuchBucket"
6410//   The specified bucket does not exist.
6411//
6412// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
6413func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
6414	req, out := c.ListObjectsRequest(input)
6415	return out, req.Send()
6416}
6417
6418// ListObjectsWithContext is the same as ListObjects with the addition of
6419// the ability to pass a context and additional request options.
6420//
6421// See ListObjects for details on how to use this API operation.
6422//
6423// The context must be non-nil and will be used for request cancellation. If
6424// the context is nil a panic will occur. In the future the SDK may create
6425// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6426// for more information on using Contexts.
6427func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
6428	req, out := c.ListObjectsRequest(input)
6429	req.SetContext(ctx)
6430	req.ApplyOptions(opts...)
6431	return out, req.Send()
6432}
6433
6434// ListObjectsPages iterates over the pages of a ListObjects operation,
6435// calling the "fn" function with the response data for each page. To stop
6436// iterating, return false from the fn function.
6437//
6438// See ListObjects method for more information on how to use this operation.
6439//
6440// Note: This operation can generate multiple requests to a service.
6441//
6442//    // Example iterating over at most 3 pages of a ListObjects operation.
6443//    pageNum := 0
6444//    err := client.ListObjectsPages(params,
6445//        func(page *s3.ListObjectsOutput, lastPage bool) bool {
6446//            pageNum++
6447//            fmt.Println(page)
6448//            return pageNum <= 3
6449//        })
6450//
6451func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
6452	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
6453}
6454
6455// ListObjectsPagesWithContext same as ListObjectsPages except
6456// it takes a Context and allows setting request options on the pages.
6457//
6458// The context must be non-nil and will be used for request cancellation. If
6459// the context is nil a panic will occur. In the future the SDK may create
6460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6461// for more information on using Contexts.
6462func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
6463	p := request.Pagination{
6464		NewRequest: func() (*request.Request, error) {
6465			var inCpy *ListObjectsInput
6466			if input != nil {
6467				tmp := *input
6468				inCpy = &tmp
6469			}
6470			req, _ := c.ListObjectsRequest(inCpy)
6471			req.SetContext(ctx)
6472			req.ApplyOptions(opts...)
6473			return req, nil
6474		},
6475	}
6476
6477	for p.Next() {
6478		if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) {
6479			break
6480		}
6481	}
6482
6483	return p.Err()
6484}
6485
6486const opListObjectsV2 = "ListObjectsV2"
6487
6488// ListObjectsV2Request generates a "aws/request.Request" representing the
6489// client's request for the ListObjectsV2 operation. The "output" return
6490// value will be populated with the request's response once the request completes
6491// successfully.
6492//
6493// Use "Send" method on the returned Request to send the API call to the service.
6494// the "output" return value is not valid until after Send returns without error.
6495//
6496// See ListObjectsV2 for more information on using the ListObjectsV2
6497// API call, and error handling.
6498//
6499// This method is useful when you want to inject custom logic or configuration
6500// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6501//
6502//
6503//    // Example sending a request using the ListObjectsV2Request method.
6504//    req, resp := client.ListObjectsV2Request(params)
6505//
6506//    err := req.Send()
6507//    if err == nil { // resp is now filled
6508//        fmt.Println(resp)
6509//    }
6510//
6511// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6512func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
6513	op := &request.Operation{
6514		Name:       opListObjectsV2,
6515		HTTPMethod: "GET",
6516		HTTPPath:   "/{Bucket}?list-type=2",
6517		Paginator: &request.Paginator{
6518			InputTokens:     []string{"ContinuationToken"},
6519			OutputTokens:    []string{"NextContinuationToken"},
6520			LimitToken:      "MaxKeys",
6521			TruncationToken: "",
6522		},
6523	}
6524
6525	if input == nil {
6526		input = &ListObjectsV2Input{}
6527	}
6528
6529	output = &ListObjectsV2Output{}
6530	req = c.newRequest(op, input, output)
6531	return
6532}
6533
6534// ListObjectsV2 API operation for Amazon Simple Storage Service.
6535//
6536// Returns some or all (up to 1,000) of the objects in a bucket with each request.
6537// You can use the request parameters as selection criteria to return a subset
6538// of the objects in a bucket. A 200 OK response can contain valid or invalid
6539// XML. Make sure to design your application to parse the contents of the response
6540// and handle it appropriately. Objects are returned sorted in an ascending
6541// order of the respective key names in the list. For more information about
6542// listing objects, see Listing object keys programmatically (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)
6543//
6544// To use this operation, you must have READ access to the bucket.
6545//
6546// To use this action in an Identity and Access Management (IAM) policy, you
6547// must have permissions to perform the s3:ListBucket action. The bucket owner
6548// has this permission by default and can grant this permission to others. For
6549// more information about permissions, see Permissions Related to Bucket Subresource
6550// Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6551// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
6552//
6553// This section describes the latest revision of this action. We recommend that
6554// you use this revised API for application development. For backward compatibility,
6555// Amazon S3 continues to support the prior version of this API, ListObjects
6556// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html).
6557//
6558// To get a list of your buckets, see ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html).
6559//
6560// The following operations are related to ListObjectsV2:
6561//
6562//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6563//
6564//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6565//
6566//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6567//
6568// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6569// with awserr.Error's Code and Message methods to get detailed information about
6570// the error.
6571//
6572// See the AWS API reference guide for Amazon Simple Storage Service's
6573// API operation ListObjectsV2 for usage and error information.
6574//
6575// Returned Error Codes:
6576//   * ErrCodeNoSuchBucket "NoSuchBucket"
6577//   The specified bucket does not exist.
6578//
6579// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6580func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
6581	req, out := c.ListObjectsV2Request(input)
6582	return out, req.Send()
6583}
6584
6585// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
6586// the ability to pass a context and additional request options.
6587//
6588// See ListObjectsV2 for details on how to use this API operation.
6589//
6590// The context must be non-nil and will be used for request cancellation. If
6591// the context is nil a panic will occur. In the future the SDK may create
6592// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6593// for more information on using Contexts.
6594func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
6595	req, out := c.ListObjectsV2Request(input)
6596	req.SetContext(ctx)
6597	req.ApplyOptions(opts...)
6598	return out, req.Send()
6599}
6600
6601// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
6602// calling the "fn" function with the response data for each page. To stop
6603// iterating, return false from the fn function.
6604//
6605// See ListObjectsV2 method for more information on how to use this operation.
6606//
6607// Note: This operation can generate multiple requests to a service.
6608//
6609//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
6610//    pageNum := 0
6611//    err := client.ListObjectsV2Pages(params,
6612//        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
6613//            pageNum++
6614//            fmt.Println(page)
6615//            return pageNum <= 3
6616//        })
6617//
6618func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
6619	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
6620}
6621
6622// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
6623// it takes a Context and allows setting request options on the pages.
6624//
6625// The context must be non-nil and will be used for request cancellation. If
6626// the context is nil a panic will occur. In the future the SDK may create
6627// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6628// for more information on using Contexts.
6629func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
6630	p := request.Pagination{
6631		NewRequest: func() (*request.Request, error) {
6632			var inCpy *ListObjectsV2Input
6633			if input != nil {
6634				tmp := *input
6635				inCpy = &tmp
6636			}
6637			req, _ := c.ListObjectsV2Request(inCpy)
6638			req.SetContext(ctx)
6639			req.ApplyOptions(opts...)
6640			return req, nil
6641		},
6642	}
6643
6644	for p.Next() {
6645		if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) {
6646			break
6647		}
6648	}
6649
6650	return p.Err()
6651}
6652
6653const opListParts = "ListParts"
6654
6655// ListPartsRequest generates a "aws/request.Request" representing the
6656// client's request for the ListParts operation. The "output" return
6657// value will be populated with the request's response once the request completes
6658// successfully.
6659//
6660// Use "Send" method on the returned Request to send the API call to the service.
6661// the "output" return value is not valid until after Send returns without error.
6662//
6663// See ListParts for more information on using the ListParts
6664// API call, and error handling.
6665//
6666// This method is useful when you want to inject custom logic or configuration
6667// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6668//
6669//
6670//    // Example sending a request using the ListPartsRequest method.
6671//    req, resp := client.ListPartsRequest(params)
6672//
6673//    err := req.Send()
6674//    if err == nil { // resp is now filled
6675//        fmt.Println(resp)
6676//    }
6677//
6678// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6679func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
6680	op := &request.Operation{
6681		Name:       opListParts,
6682		HTTPMethod: "GET",
6683		HTTPPath:   "/{Bucket}/{Key+}",
6684		Paginator: &request.Paginator{
6685			InputTokens:     []string{"PartNumberMarker"},
6686			OutputTokens:    []string{"NextPartNumberMarker"},
6687			LimitToken:      "MaxParts",
6688			TruncationToken: "IsTruncated",
6689		},
6690	}
6691
6692	if input == nil {
6693		input = &ListPartsInput{}
6694	}
6695
6696	output = &ListPartsOutput{}
6697	req = c.newRequest(op, input, output)
6698	return
6699}
6700
6701// ListParts API operation for Amazon Simple Storage Service.
6702//
6703// Lists the parts that have been uploaded for a specific multipart upload.
6704// This operation must include the upload ID, which you obtain by sending the
6705// initiate multipart upload request (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)).
6706// This request returns a maximum of 1,000 uploaded parts. The default number
6707// of parts returned is 1,000 parts. You can restrict the number of parts returned
6708// by specifying the max-parts request parameter. If your multipart upload consists
6709// of more than 1,000 parts, the response returns an IsTruncated field with
6710// the value of true, and a NextPartNumberMarker element. In subsequent ListParts
6711// requests you can include the part-number-marker query string parameter and
6712// set its value to the NextPartNumberMarker field value from the previous response.
6713//
6714// For more information on multipart uploads, see Uploading Objects Using Multipart
6715// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6716//
6717// For information on permissions required to use the multipart upload API,
6718// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6719//
6720// The following operations are related to ListParts:
6721//
6722//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
6723//
6724//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
6725//
6726//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
6727//
6728//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
6729//
6730//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
6731//
6732// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6733// with awserr.Error's Code and Message methods to get detailed information about
6734// the error.
6735//
6736// See the AWS API reference guide for Amazon Simple Storage Service's
6737// API operation ListParts for usage and error information.
6738// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6739func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
6740	req, out := c.ListPartsRequest(input)
6741	return out, req.Send()
6742}
6743
6744// ListPartsWithContext is the same as ListParts with the addition of
6745// the ability to pass a context and additional request options.
6746//
6747// See ListParts for details on how to use this API operation.
6748//
6749// The context must be non-nil and will be used for request cancellation. If
6750// the context is nil a panic will occur. In the future the SDK may create
6751// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6752// for more information on using Contexts.
6753func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
6754	req, out := c.ListPartsRequest(input)
6755	req.SetContext(ctx)
6756	req.ApplyOptions(opts...)
6757	return out, req.Send()
6758}
6759
6760// ListPartsPages iterates over the pages of a ListParts operation,
6761// calling the "fn" function with the response data for each page. To stop
6762// iterating, return false from the fn function.
6763//
6764// See ListParts method for more information on how to use this operation.
6765//
6766// Note: This operation can generate multiple requests to a service.
6767//
6768//    // Example iterating over at most 3 pages of a ListParts operation.
6769//    pageNum := 0
6770//    err := client.ListPartsPages(params,
6771//        func(page *s3.ListPartsOutput, lastPage bool) bool {
6772//            pageNum++
6773//            fmt.Println(page)
6774//            return pageNum <= 3
6775//        })
6776//
6777func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
6778	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
6779}
6780
6781// ListPartsPagesWithContext same as ListPartsPages except
6782// it takes a Context and allows setting request options on the pages.
6783//
6784// The context must be non-nil and will be used for request cancellation. If
6785// the context is nil a panic will occur. In the future the SDK may create
6786// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6787// for more information on using Contexts.
6788func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
6789	p := request.Pagination{
6790		NewRequest: func() (*request.Request, error) {
6791			var inCpy *ListPartsInput
6792			if input != nil {
6793				tmp := *input
6794				inCpy = &tmp
6795			}
6796			req, _ := c.ListPartsRequest(inCpy)
6797			req.SetContext(ctx)
6798			req.ApplyOptions(opts...)
6799			return req, nil
6800		},
6801	}
6802
6803	for p.Next() {
6804		if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) {
6805			break
6806		}
6807	}
6808
6809	return p.Err()
6810}
6811
6812const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
6813
6814// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
6815// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
6816// value will be populated with the request's response once the request completes
6817// successfully.
6818//
6819// Use "Send" method on the returned Request to send the API call to the service.
6820// the "output" return value is not valid until after Send returns without error.
6821//
6822// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
6823// API call, and error handling.
6824//
6825// This method is useful when you want to inject custom logic or configuration
6826// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6827//
6828//
6829//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
6830//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
6831//
6832//    err := req.Send()
6833//    if err == nil { // resp is now filled
6834//        fmt.Println(resp)
6835//    }
6836//
6837// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6838func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
6839	op := &request.Operation{
6840		Name:       opPutBucketAccelerateConfiguration,
6841		HTTPMethod: "PUT",
6842		HTTPPath:   "/{Bucket}?accelerate",
6843	}
6844
6845	if input == nil {
6846		input = &PutBucketAccelerateConfigurationInput{}
6847	}
6848
6849	output = &PutBucketAccelerateConfigurationOutput{}
6850	req = c.newRequest(op, input, output)
6851	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6852	return
6853}
6854
6855// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
6856//
6857// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
6858// Acceleration is a bucket-level feature that enables you to perform faster
6859// data transfers to Amazon S3.
6860//
6861// To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration
6862// action. The bucket owner has this permission by default. The bucket owner
6863// can grant this permission to others. For more information about permissions,
6864// 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)
6865// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
6866//
6867// The Transfer Acceleration state of a bucket can be set to one of the following
6868// two values:
6869//
6870//    * Enabled – Enables accelerated data transfers to the bucket.
6871//
6872//    * Suspended – Disables accelerated data transfers to the bucket.
6873//
6874// The GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
6875// action returns the transfer acceleration state of a bucket.
6876//
6877// After setting the Transfer Acceleration state of a bucket to Enabled, it
6878// might take up to thirty minutes before the data transfer rates to the bucket
6879// increase.
6880//
6881// The name of the bucket used for Transfer Acceleration must be DNS-compliant
6882// and must not contain periods (".").
6883//
6884// For more information about transfer acceleration, see Transfer Acceleration
6885// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
6886//
6887// The following operations are related to PutBucketAccelerateConfiguration:
6888//
6889//    * GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
6890//
6891//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6892//
6893// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6894// with awserr.Error's Code and Message methods to get detailed information about
6895// the error.
6896//
6897// See the AWS API reference guide for Amazon Simple Storage Service's
6898// API operation PutBucketAccelerateConfiguration for usage and error information.
6899// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6900func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
6901	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6902	return out, req.Send()
6903}
6904
6905// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
6906// the ability to pass a context and additional request options.
6907//
6908// See PutBucketAccelerateConfiguration for details on how to use this API operation.
6909//
6910// The context must be non-nil and will be used for request cancellation. If
6911// the context is nil a panic will occur. In the future the SDK may create
6912// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6913// for more information on using Contexts.
6914func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
6915	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6916	req.SetContext(ctx)
6917	req.ApplyOptions(opts...)
6918	return out, req.Send()
6919}
6920
6921const opPutBucketAcl = "PutBucketAcl"
6922
6923// PutBucketAclRequest generates a "aws/request.Request" representing the
6924// client's request for the PutBucketAcl operation. The "output" return
6925// value will be populated with the request's response once the request completes
6926// successfully.
6927//
6928// Use "Send" method on the returned Request to send the API call to the service.
6929// the "output" return value is not valid until after Send returns without error.
6930//
6931// See PutBucketAcl for more information on using the PutBucketAcl
6932// API call, and error handling.
6933//
6934// This method is useful when you want to inject custom logic or configuration
6935// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6936//
6937//
6938//    // Example sending a request using the PutBucketAclRequest method.
6939//    req, resp := client.PutBucketAclRequest(params)
6940//
6941//    err := req.Send()
6942//    if err == nil { // resp is now filled
6943//        fmt.Println(resp)
6944//    }
6945//
6946// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6947func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
6948	op := &request.Operation{
6949		Name:       opPutBucketAcl,
6950		HTTPMethod: "PUT",
6951		HTTPPath:   "/{Bucket}?acl",
6952	}
6953
6954	if input == nil {
6955		input = &PutBucketAclInput{}
6956	}
6957
6958	output = &PutBucketAclOutput{}
6959	req = c.newRequest(op, input, output)
6960	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6961	req.Handlers.Build.PushBackNamed(request.NamedHandler{
6962		Name: "contentMd5Handler",
6963		Fn:   checksum.AddBodyContentMD5Handler,
6964	})
6965	return
6966}
6967
6968// PutBucketAcl API operation for Amazon Simple Storage Service.
6969//
6970// Sets the permissions on an existing bucket using access control lists (ACL).
6971// For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
6972// To set the ACL of a bucket, you must have WRITE_ACP permission.
6973//
6974// You can use one of the following two ways to set a bucket's permissions:
6975//
6976//    * Specify the ACL in the request body
6977//
6978//    * Specify permissions using request headers
6979//
6980// You cannot specify access permission using both the body and the request
6981// headers.
6982//
6983// Depending on your application needs, you may choose to set the ACL on a bucket
6984// using either the request body or the headers. For example, if you have an
6985// existing application that updates a bucket ACL using the request body, then
6986// you can continue to use that approach.
6987//
6988// Access Permissions
6989//
6990// You can set access permissions using one of the following methods:
6991//
6992//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
6993//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
6994//    predefined set of grantees and permissions. Specify the canned ACL name
6995//    as the value of x-amz-acl. If you use this header, you cannot use other
6996//    access control-specific headers in your request. For more information,
6997//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
6998//
6999//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
7000//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
7001//    these headers, you specify explicit access permissions and grantees (Amazon
7002//    Web Services accounts or Amazon S3 groups) who will receive the permission.
7003//    If you use these ACL-specific headers, you cannot use the x-amz-acl header
7004//    to set a canned ACL. These parameters map to the set of permissions that
7005//    Amazon S3 supports in an ACL. For more information, see Access Control
7006//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
7007//    You specify each grantee as a type=value pair, where the type is one of
7008//    the following: id – if the value specified is the canonical user ID
7009//    of an Amazon Web Services account uri – if you are granting permissions
7010//    to a predefined group emailAddress – if the value specified is the email
7011//    address of an Amazon Web Services account Using email addresses to specify
7012//    a grantee is only supported in the following Amazon Web Services Regions:
7013//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
7014//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
7015//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
7016//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
7017//    in the Amazon Web Services General Reference. For example, the following
7018//    x-amz-grant-write header grants create, overwrite, and delete objects
7019//    permission to LogDelivery group predefined by Amazon S3 and two Amazon
7020//    Web Services accounts identified by their email addresses. x-amz-grant-write:
7021//    uri="http://acs.amazonaws.com/groups/s3/LogDelivery", id="111122223333",
7022//    id="555566667777"
7023//
7024// You can use either a canned ACL or specify access permissions explicitly.
7025// You cannot do both.
7026//
7027// Grantee Values
7028//
7029// You can specify the person (grantee) to whom you're assigning access rights
7030// (using request elements) in the following ways:
7031//
7032//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7033//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
7034//    </Grantee> DisplayName is optional and ignored in the request
7035//
7036//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7037//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
7038//
7039//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7040//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
7041//    The grantee is resolved to the CanonicalUser and, in a response to a GET
7042//    Object acl request, appears as the CanonicalUser. Using email addresses
7043//    to specify a grantee is only supported in the following Amazon Web Services
7044//    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
7045//    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
7046//    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
7047//    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
7048//    in the Amazon Web Services General Reference.
7049//
7050// Related Resources
7051//
7052//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
7053//
7054//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
7055//
7056//    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
7057//
7058// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7059// with awserr.Error's Code and Message methods to get detailed information about
7060// the error.
7061//
7062// See the AWS API reference guide for Amazon Simple Storage Service's
7063// API operation PutBucketAcl for usage and error information.
7064// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
7065func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
7066	req, out := c.PutBucketAclRequest(input)
7067	return out, req.Send()
7068}
7069
7070// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
7071// the ability to pass a context and additional request options.
7072//
7073// See PutBucketAcl for details on how to use this API operation.
7074//
7075// The context must be non-nil and will be used for request cancellation. If
7076// the context is nil a panic will occur. In the future the SDK may create
7077// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7078// for more information on using Contexts.
7079func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
7080	req, out := c.PutBucketAclRequest(input)
7081	req.SetContext(ctx)
7082	req.ApplyOptions(opts...)
7083	return out, req.Send()
7084}
7085
7086const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
7087
7088// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
7089// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
7090// value will be populated with the request's response once the request completes
7091// successfully.
7092//
7093// Use "Send" method on the returned Request to send the API call to the service.
7094// the "output" return value is not valid until after Send returns without error.
7095//
7096// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
7097// API call, and error handling.
7098//
7099// This method is useful when you want to inject custom logic or configuration
7100// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7101//
7102//
7103//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
7104//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
7105//
7106//    err := req.Send()
7107//    if err == nil { // resp is now filled
7108//        fmt.Println(resp)
7109//    }
7110//
7111// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
7112func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
7113	op := &request.Operation{
7114		Name:       opPutBucketAnalyticsConfiguration,
7115		HTTPMethod: "PUT",
7116		HTTPPath:   "/{Bucket}?analytics",
7117	}
7118
7119	if input == nil {
7120		input = &PutBucketAnalyticsConfigurationInput{}
7121	}
7122
7123	output = &PutBucketAnalyticsConfigurationOutput{}
7124	req = c.newRequest(op, input, output)
7125	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7126	return
7127}
7128
7129// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
7130//
7131// Sets an analytics configuration for the bucket (specified by the analytics
7132// configuration ID). You can have up to 1,000 analytics configurations per
7133// bucket.
7134//
7135// You can choose to have storage class analysis export analysis reports sent
7136// to a comma-separated values (CSV) flat file. See the DataExport request element.
7137// Reports are updated daily and are based on the object filters that you configure.
7138// When selecting data export, you specify a destination bucket and an optional
7139// destination prefix where the file is written. You can export the data to
7140// a destination bucket in a different account. However, the destination bucket
7141// must be in the same Region as the bucket that you are making the PUT analytics
7142// configuration to. For more information, see Amazon S3 Analytics – Storage
7143// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
7144//
7145// You must create a bucket policy on the destination bucket where the exported
7146// file is written to grant permissions to Amazon S3 to write objects to the
7147// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
7148// and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
7149//
7150// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
7151// action. The bucket owner has this permission by default. The bucket owner
7152// can grant this permission to others. For more information about permissions,
7153// 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)
7154// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
7155//
7156// Special Errors
7157//
7158//    * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid
7159//    argument.
7160//
7161//    * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause:
7162//    You are attempting to create a new configuration but have already reached
7163//    the 1,000-configuration limit.
7164//
7165//    * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not
7166//    the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration
7167//    bucket permission to set the configuration on the bucket.
7168//
7169// Related Resources
7170//
7171//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
7172//
7173//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
7174//
7175//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
7176//
7177// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7178// with awserr.Error's Code and Message methods to get detailed information about
7179// the error.
7180//
7181// See the AWS API reference guide for Amazon Simple Storage Service's
7182// API operation PutBucketAnalyticsConfiguration for usage and error information.
7183// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
7184func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
7185	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
7186	return out, req.Send()
7187}
7188
7189// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
7190// the ability to pass a context and additional request options.
7191//
7192// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
7193//
7194// The context must be non-nil and will be used for request cancellation. If
7195// the context is nil a panic will occur. In the future the SDK may create
7196// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7197// for more information on using Contexts.
7198func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
7199	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
7200	req.SetContext(ctx)
7201	req.ApplyOptions(opts...)
7202	return out, req.Send()
7203}
7204
7205const opPutBucketCors = "PutBucketCors"
7206
7207// PutBucketCorsRequest generates a "aws/request.Request" representing the
7208// client's request for the PutBucketCors operation. The "output" return
7209// value will be populated with the request's response once the request completes
7210// successfully.
7211//
7212// Use "Send" method on the returned Request to send the API call to the service.
7213// the "output" return value is not valid until after Send returns without error.
7214//
7215// See PutBucketCors for more information on using the PutBucketCors
7216// API call, and error handling.
7217//
7218// This method is useful when you want to inject custom logic or configuration
7219// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7220//
7221//
7222//    // Example sending a request using the PutBucketCorsRequest method.
7223//    req, resp := client.PutBucketCorsRequest(params)
7224//
7225//    err := req.Send()
7226//    if err == nil { // resp is now filled
7227//        fmt.Println(resp)
7228//    }
7229//
7230// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
7231func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
7232	op := &request.Operation{
7233		Name:       opPutBucketCors,
7234		HTTPMethod: "PUT",
7235		HTTPPath:   "/{Bucket}?cors",
7236	}
7237
7238	if input == nil {
7239		input = &PutBucketCorsInput{}
7240	}
7241
7242	output = &PutBucketCorsOutput{}
7243	req = c.newRequest(op, input, output)
7244	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7245	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7246		Name: "contentMd5Handler",
7247		Fn:   checksum.AddBodyContentMD5Handler,
7248	})
7249	return
7250}
7251
7252// PutBucketCors API operation for Amazon Simple Storage Service.
7253//
7254// Sets the cors configuration for your bucket. If the configuration exists,
7255// Amazon S3 replaces it.
7256//
7257// To use this operation, you must be allowed to perform the s3:PutBucketCORS
7258// action. By default, the bucket owner has this permission and can grant it
7259// to others.
7260//
7261// You set this configuration on a bucket so that the bucket can service cross-origin
7262// requests. For example, you might want to enable a request whose origin is
7263// http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com
7264// by using the browser's XMLHttpRequest capability.
7265//
7266// To enable cross-origin resource sharing (CORS) on a bucket, you add the cors
7267// subresource to the bucket. The cors subresource is an XML document in which
7268// you configure rules that identify origins and the HTTP methods that can be
7269// executed on your bucket. The document is limited to 64 KB in size.
7270//
7271// When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request)
7272// against a bucket, it evaluates the cors configuration on the bucket and uses
7273// the first CORSRule rule that matches the incoming browser request to enable
7274// a cross-origin request. For a rule to match, the following conditions must
7275// be met:
7276//
7277//    * The request's Origin header must match AllowedOrigin elements.
7278//
7279//    * The request method (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
7280//    header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
7281//    elements.
7282//
7283//    * Every header specified in the Access-Control-Request-Headers request
7284//    header of a pre-flight request must match an AllowedHeader element.
7285//
7286// For more information about CORS, go to Enabling Cross-Origin Resource Sharing
7287// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
7288// S3 User Guide.
7289//
7290// Related Resources
7291//
7292//    * GetBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)
7293//
7294//    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
7295//
7296//    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
7297//
7298// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7299// with awserr.Error's Code and Message methods to get detailed information about
7300// the error.
7301//
7302// See the AWS API reference guide for Amazon Simple Storage Service's
7303// API operation PutBucketCors for usage and error information.
7304// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
7305func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
7306	req, out := c.PutBucketCorsRequest(input)
7307	return out, req.Send()
7308}
7309
7310// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
7311// the ability to pass a context and additional request options.
7312//
7313// See PutBucketCors for details on how to use this API operation.
7314//
7315// The context must be non-nil and will be used for request cancellation. If
7316// the context is nil a panic will occur. In the future the SDK may create
7317// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7318// for more information on using Contexts.
7319func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
7320	req, out := c.PutBucketCorsRequest(input)
7321	req.SetContext(ctx)
7322	req.ApplyOptions(opts...)
7323	return out, req.Send()
7324}
7325
7326const opPutBucketEncryption = "PutBucketEncryption"
7327
7328// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
7329// client's request for the PutBucketEncryption operation. The "output" return
7330// value will be populated with the request's response once the request completes
7331// successfully.
7332//
7333// Use "Send" method on the returned Request to send the API call to the service.
7334// the "output" return value is not valid until after Send returns without error.
7335//
7336// See PutBucketEncryption for more information on using the PutBucketEncryption
7337// API call, and error handling.
7338//
7339// This method is useful when you want to inject custom logic or configuration
7340// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7341//
7342//
7343//    // Example sending a request using the PutBucketEncryptionRequest method.
7344//    req, resp := client.PutBucketEncryptionRequest(params)
7345//
7346//    err := req.Send()
7347//    if err == nil { // resp is now filled
7348//        fmt.Println(resp)
7349//    }
7350//
7351// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
7352func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
7353	op := &request.Operation{
7354		Name:       opPutBucketEncryption,
7355		HTTPMethod: "PUT",
7356		HTTPPath:   "/{Bucket}?encryption",
7357	}
7358
7359	if input == nil {
7360		input = &PutBucketEncryptionInput{}
7361	}
7362
7363	output = &PutBucketEncryptionOutput{}
7364	req = c.newRequest(op, input, output)
7365	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7366	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7367		Name: "contentMd5Handler",
7368		Fn:   checksum.AddBodyContentMD5Handler,
7369	})
7370	return
7371}
7372
7373// PutBucketEncryption API operation for Amazon Simple Storage Service.
7374//
7375// This action uses the encryption subresource to configure default encryption
7376// and Amazon S3 Bucket Key for an existing bucket.
7377//
7378// Default encryption for a bucket can use server-side encryption with Amazon
7379// S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). If you specify
7380// default encryption using SSE-KMS, you can also configure Amazon S3 Bucket
7381// Key. For information about default encryption, see Amazon S3 default bucket
7382// encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
7383// in the Amazon S3 User Guide. For more information about S3 Bucket Keys, see
7384// Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
7385// in the Amazon S3 User Guide.
7386//
7387// This action requires Amazon Web Services Signature Version 4. For more information,
7388// see Authenticating Requests (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
7389//
7390// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
7391// action. The bucket owner has this permission by default. The bucket owner
7392// can grant this permission to others. For more information about permissions,
7393// 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)
7394// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7395// in the Amazon S3 User Guide.
7396//
7397// Related Resources
7398//
7399//    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
7400//
7401//    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
7402//
7403// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7404// with awserr.Error's Code and Message methods to get detailed information about
7405// the error.
7406//
7407// See the AWS API reference guide for Amazon Simple Storage Service's
7408// API operation PutBucketEncryption for usage and error information.
7409// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
7410func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
7411	req, out := c.PutBucketEncryptionRequest(input)
7412	return out, req.Send()
7413}
7414
7415// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
7416// the ability to pass a context and additional request options.
7417//
7418// See PutBucketEncryption for details on how to use this API operation.
7419//
7420// The context must be non-nil and will be used for request cancellation. If
7421// the context is nil a panic will occur. In the future the SDK may create
7422// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7423// for more information on using Contexts.
7424func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
7425	req, out := c.PutBucketEncryptionRequest(input)
7426	req.SetContext(ctx)
7427	req.ApplyOptions(opts...)
7428	return out, req.Send()
7429}
7430
7431const opPutBucketIntelligentTieringConfiguration = "PutBucketIntelligentTieringConfiguration"
7432
7433// PutBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
7434// client's request for the PutBucketIntelligentTieringConfiguration operation. The "output" return
7435// value will be populated with the request's response once the request completes
7436// successfully.
7437//
7438// Use "Send" method on the returned Request to send the API call to the service.
7439// the "output" return value is not valid until after Send returns without error.
7440//
7441// See PutBucketIntelligentTieringConfiguration for more information on using the PutBucketIntelligentTieringConfiguration
7442// API call, and error handling.
7443//
7444// This method is useful when you want to inject custom logic or configuration
7445// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7446//
7447//
7448//    // Example sending a request using the PutBucketIntelligentTieringConfigurationRequest method.
7449//    req, resp := client.PutBucketIntelligentTieringConfigurationRequest(params)
7450//
7451//    err := req.Send()
7452//    if err == nil { // resp is now filled
7453//        fmt.Println(resp)
7454//    }
7455//
7456// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
7457func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketIntelligentTieringConfigurationInput) (req *request.Request, output *PutBucketIntelligentTieringConfigurationOutput) {
7458	op := &request.Operation{
7459		Name:       opPutBucketIntelligentTieringConfiguration,
7460		HTTPMethod: "PUT",
7461		HTTPPath:   "/{Bucket}?intelligent-tiering",
7462	}
7463
7464	if input == nil {
7465		input = &PutBucketIntelligentTieringConfigurationInput{}
7466	}
7467
7468	output = &PutBucketIntelligentTieringConfigurationOutput{}
7469	req = c.newRequest(op, input, output)
7470	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7471	return
7472}
7473
7474// PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
7475//
7476// Puts a S3 Intelligent-Tiering configuration to the specified bucket. You
7477// can have up to 1,000 S3 Intelligent-Tiering configurations per bucket.
7478//
7479// The S3 Intelligent-Tiering storage class is designed to optimize storage
7480// costs by automatically moving data to the most cost-effective storage access
7481// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
7482// delivers automatic cost savings in two low latency and high throughput access
7483// tiers. For data that can be accessed asynchronously, you can choose to activate
7484// automatic archiving capabilities within the S3 Intelligent-Tiering storage
7485// class.
7486//
7487// The S3 Intelligent-Tiering storage class is the ideal storage class for data
7488// with unknown, changing, or unpredictable access patterns, independent of
7489// object size or retention period. If the size of an object is less than 128
7490// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
7491// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
7492// storage class.
7493//
7494// For more information, see Storage class for automatically optimizing frequently
7495// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
7496//
7497// Operations related to PutBucketIntelligentTieringConfiguration include:
7498//
7499//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
7500//
7501//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
7502//
7503//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
7504//
7505// You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically
7506// move objects stored in the S3 Intelligent-Tiering storage class to the Archive
7507// Access or Deep Archive Access tier.
7508//
7509// Special Errors
7510//
7511//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
7512//
7513//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
7514//    attempting to create a new configuration but have already reached the
7515//    1,000-configuration limit.
7516//
7517//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
7518//    of the specified bucket, or you do not have the s3:PutIntelligentTieringConfiguration
7519//    bucket permission to set the configuration on the bucket.
7520//
7521// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7522// with awserr.Error's Code and Message methods to get detailed information about
7523// the error.
7524//
7525// See the AWS API reference guide for Amazon Simple Storage Service's
7526// API operation PutBucketIntelligentTieringConfiguration for usage and error information.
7527// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
7528func (c *S3) PutBucketIntelligentTieringConfiguration(input *PutBucketIntelligentTieringConfigurationInput) (*PutBucketIntelligentTieringConfigurationOutput, error) {
7529	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
7530	return out, req.Send()
7531}
7532
7533// PutBucketIntelligentTieringConfigurationWithContext is the same as PutBucketIntelligentTieringConfiguration with the addition of
7534// the ability to pass a context and additional request options.
7535//
7536// See PutBucketIntelligentTieringConfiguration for details on how to use this API operation.
7537//
7538// The context must be non-nil and will be used for request cancellation. If
7539// the context is nil a panic will occur. In the future the SDK may create
7540// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7541// for more information on using Contexts.
7542func (c *S3) PutBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *PutBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*PutBucketIntelligentTieringConfigurationOutput, error) {
7543	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
7544	req.SetContext(ctx)
7545	req.ApplyOptions(opts...)
7546	return out, req.Send()
7547}
7548
7549const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
7550
7551// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
7552// client's request for the PutBucketInventoryConfiguration operation. The "output" return
7553// value will be populated with the request's response once the request completes
7554// successfully.
7555//
7556// Use "Send" method on the returned Request to send the API call to the service.
7557// the "output" return value is not valid until after Send returns without error.
7558//
7559// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
7560// API call, and error handling.
7561//
7562// This method is useful when you want to inject custom logic or configuration
7563// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7564//
7565//
7566//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
7567//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
7568//
7569//    err := req.Send()
7570//    if err == nil { // resp is now filled
7571//        fmt.Println(resp)
7572//    }
7573//
7574// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
7575func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
7576	op := &request.Operation{
7577		Name:       opPutBucketInventoryConfiguration,
7578		HTTPMethod: "PUT",
7579		HTTPPath:   "/{Bucket}?inventory",
7580	}
7581
7582	if input == nil {
7583		input = &PutBucketInventoryConfigurationInput{}
7584	}
7585
7586	output = &PutBucketInventoryConfigurationOutput{}
7587	req = c.newRequest(op, input, output)
7588	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7589	return
7590}
7591
7592// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
7593//
7594// This implementation of the PUT action adds an inventory configuration (identified
7595// by the inventory ID) to the bucket. You can have up to 1,000 inventory configurations
7596// per bucket.
7597//
7598// Amazon S3 inventory generates inventories of the objects in the bucket on
7599// a daily or weekly basis, and the results are published to a flat file. The
7600// bucket that is inventoried is called the source bucket, and the bucket where
7601// the inventory flat file is stored is called the destination bucket. The destination
7602// bucket must be in the same Amazon Web Services Region as the source bucket.
7603//
7604// When you configure an inventory for a source bucket, you specify the destination
7605// bucket where you want the inventory to be stored, and whether to generate
7606// the inventory daily or weekly. You can also configure what object metadata
7607// to include and whether to inventory all object versions or only current versions.
7608// For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
7609// in the Amazon S3 User Guide.
7610//
7611// You must create a bucket policy on the destination bucket to grant permissions
7612// to Amazon S3 to write objects to the bucket in the defined location. For
7613// an example policy, see Granting Permissions for Amazon S3 Inventory and Storage
7614// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
7615//
7616// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
7617// action. The bucket owner has this permission by default and can grant this
7618// permission to others. For more information about permissions, see Permissions
7619// 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)
7620// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7621// in the Amazon S3 User Guide.
7622//
7623// Special Errors
7624//
7625//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
7626//
7627//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
7628//    attempting to create a new configuration but have already reached the
7629//    1,000-configuration limit.
7630//
7631//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
7632//    of the specified bucket, or you do not have the s3:PutInventoryConfiguration
7633//    bucket permission to set the configuration on the bucket.
7634//
7635// Related Resources
7636//
7637//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
7638//
7639//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
7640//
7641//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
7642//
7643// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7644// with awserr.Error's Code and Message methods to get detailed information about
7645// the error.
7646//
7647// See the AWS API reference guide for Amazon Simple Storage Service's
7648// API operation PutBucketInventoryConfiguration for usage and error information.
7649// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
7650func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
7651	req, out := c.PutBucketInventoryConfigurationRequest(input)
7652	return out, req.Send()
7653}
7654
7655// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
7656// the ability to pass a context and additional request options.
7657//
7658// See PutBucketInventoryConfiguration for details on how to use this API operation.
7659//
7660// The context must be non-nil and will be used for request cancellation. If
7661// the context is nil a panic will occur. In the future the SDK may create
7662// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7663// for more information on using Contexts.
7664func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
7665	req, out := c.PutBucketInventoryConfigurationRequest(input)
7666	req.SetContext(ctx)
7667	req.ApplyOptions(opts...)
7668	return out, req.Send()
7669}
7670
7671const opPutBucketLifecycle = "PutBucketLifecycle"
7672
7673// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
7674// client's request for the PutBucketLifecycle operation. The "output" return
7675// value will be populated with the request's response once the request completes
7676// successfully.
7677//
7678// Use "Send" method on the returned Request to send the API call to the service.
7679// the "output" return value is not valid until after Send returns without error.
7680//
7681// See PutBucketLifecycle for more information on using the PutBucketLifecycle
7682// API call, and error handling.
7683//
7684// This method is useful when you want to inject custom logic or configuration
7685// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7686//
7687//
7688//    // Example sending a request using the PutBucketLifecycleRequest method.
7689//    req, resp := client.PutBucketLifecycleRequest(params)
7690//
7691//    err := req.Send()
7692//    if err == nil { // resp is now filled
7693//        fmt.Println(resp)
7694//    }
7695//
7696// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7697//
7698// Deprecated: PutBucketLifecycle has been deprecated
7699func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
7700	if c.Client.Config.Logger != nil {
7701		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
7702	}
7703	op := &request.Operation{
7704		Name:       opPutBucketLifecycle,
7705		HTTPMethod: "PUT",
7706		HTTPPath:   "/{Bucket}?lifecycle",
7707	}
7708
7709	if input == nil {
7710		input = &PutBucketLifecycleInput{}
7711	}
7712
7713	output = &PutBucketLifecycleOutput{}
7714	req = c.newRequest(op, input, output)
7715	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7716	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7717		Name: "contentMd5Handler",
7718		Fn:   checksum.AddBodyContentMD5Handler,
7719	})
7720	return
7721}
7722
7723// PutBucketLifecycle API operation for Amazon Simple Storage Service.
7724//
7725//
7726// For an updated version of this API, see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html).
7727// This version has been deprecated. Existing lifecycle configurations will
7728// work. For new lifecycle configurations, use the updated API.
7729//
7730// Creates a new lifecycle configuration for the bucket or replaces an existing
7731// lifecycle configuration. For information about lifecycle configuration, see
7732// Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7733// in the Amazon S3 User Guide.
7734//
7735// By default, all Amazon S3 resources, including buckets, objects, and related
7736// subresources (for example, lifecycle configuration and website configuration)
7737// are private. Only the resource owner, the Amazon Web Services account that
7738// created the resource, can access it. The resource owner can optionally grant
7739// access permissions to others by writing an access policy. For this operation,
7740// users must get the s3:PutLifecycleConfiguration permission.
7741//
7742// You can also explicitly deny permissions. Explicit denial also supersedes
7743// any other permissions. If you want to prevent users or accounts from removing
7744// or deleting objects from your bucket, you must deny them permissions for
7745// the following actions:
7746//
7747//    * s3:DeleteObject
7748//
7749//    * s3:DeleteObjectVersion
7750//
7751//    * s3:PutLifecycleConfiguration
7752//
7753// For more information about permissions, see Managing Access Permissions to
7754// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7755// in the Amazon S3 User Guide.
7756//
7757// For more examples of transitioning objects to storage classes such as STANDARD_IA
7758// or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#lifecycle-configuration-examples).
7759//
7760// Related Resources
7761//
7762//    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)(Deprecated)
7763//
7764//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
7765//
7766//    * RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
7767//
7768//    * By default, a resource owner—in this case, a bucket owner, which is
7769//    the Amazon Web Services account that created the bucket—can perform
7770//    any of the operations. A resource owner can also grant others permission
7771//    to perform the operation. For more information, see the following topics
7772//    in the Amazon S3 User Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
7773//    Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7774//
7775// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7776// with awserr.Error's Code and Message methods to get detailed information about
7777// the error.
7778//
7779// See the AWS API reference guide for Amazon Simple Storage Service's
7780// API operation PutBucketLifecycle for usage and error information.
7781// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7782//
7783// Deprecated: PutBucketLifecycle has been deprecated
7784func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
7785	req, out := c.PutBucketLifecycleRequest(input)
7786	return out, req.Send()
7787}
7788
7789// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
7790// the ability to pass a context and additional request options.
7791//
7792// See PutBucketLifecycle for details on how to use this API operation.
7793//
7794// The context must be non-nil and will be used for request cancellation. If
7795// the context is nil a panic will occur. In the future the SDK may create
7796// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7797// for more information on using Contexts.
7798//
7799// Deprecated: PutBucketLifecycleWithContext has been deprecated
7800func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
7801	req, out := c.PutBucketLifecycleRequest(input)
7802	req.SetContext(ctx)
7803	req.ApplyOptions(opts...)
7804	return out, req.Send()
7805}
7806
7807const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
7808
7809// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
7810// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
7811// value will be populated with the request's response once the request completes
7812// successfully.
7813//
7814// Use "Send" method on the returned Request to send the API call to the service.
7815// the "output" return value is not valid until after Send returns without error.
7816//
7817// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
7818// API call, and error handling.
7819//
7820// This method is useful when you want to inject custom logic or configuration
7821// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7822//
7823//
7824//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
7825//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
7826//
7827//    err := req.Send()
7828//    if err == nil { // resp is now filled
7829//        fmt.Println(resp)
7830//    }
7831//
7832// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7833func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
7834	op := &request.Operation{
7835		Name:       opPutBucketLifecycleConfiguration,
7836		HTTPMethod: "PUT",
7837		HTTPPath:   "/{Bucket}?lifecycle",
7838	}
7839
7840	if input == nil {
7841		input = &PutBucketLifecycleConfigurationInput{}
7842	}
7843
7844	output = &PutBucketLifecycleConfigurationOutput{}
7845	req = c.newRequest(op, input, output)
7846	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7847	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7848		Name: "contentMd5Handler",
7849		Fn:   checksum.AddBodyContentMD5Handler,
7850	})
7851	return
7852}
7853
7854// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
7855//
7856// Creates a new lifecycle configuration for the bucket or replaces an existing
7857// lifecycle configuration. For information about lifecycle configuration, see
7858// Managing your storage lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html).
7859//
7860// Bucket lifecycle configuration now supports specifying a lifecycle rule using
7861// an object key name prefix, one or more object tags, or a combination of both.
7862// Accordingly, this section describes the latest API. The previous version
7863// of the API supported filtering based only on an object key name prefix, which
7864// is supported for backward compatibility. For the related API description,
7865// see PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html).
7866//
7867// Rules
7868//
7869// You specify the lifecycle configuration in your request body. The lifecycle
7870// configuration is specified as XML consisting of one or more rules. Each rule
7871// consists of the following:
7872//
7873//    * Filter identifying a subset of objects to which the rule applies. The
7874//    filter can be based on a key name prefix, object tags, or a combination
7875//    of both.
7876//
7877//    * Status whether the rule is in effect.
7878//
7879//    * One or more lifecycle transition and expiration actions that you want
7880//    Amazon S3 to perform on the objects identified by the filter. If the state
7881//    of your bucket is versioning-enabled or versioning-suspended, you can
7882//    have many versions of the same object (one current version and zero or
7883//    more noncurrent versions). Amazon S3 provides predefined actions that
7884//    you can specify for current and noncurrent object versions.
7885//
7886// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7887// and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
7888//
7889// Permissions
7890//
7891// By default, all Amazon S3 resources are private, including buckets, objects,
7892// and related subresources (for example, lifecycle configuration and website
7893// configuration). Only the resource owner (that is, the Amazon Web Services
7894// account that created it) can access the resource. The resource owner can
7895// optionally grant access permissions to others by writing an access policy.
7896// For this operation, a user must get the s3:PutLifecycleConfiguration permission.
7897//
7898// You can also explicitly deny permissions. Explicit deny also supersedes any
7899// other permissions. If you want to block users or accounts from removing or
7900// deleting objects from your bucket, you must deny them permissions for the
7901// following actions:
7902//
7903//    * s3:DeleteObject
7904//
7905//    * s3:DeleteObjectVersion
7906//
7907//    * s3:PutLifecycleConfiguration
7908//
7909// For more information about permissions, see Managing Access Permissions to
7910// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
7911//
7912// The following are related to PutBucketLifecycleConfiguration:
7913//
7914//    * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
7915//
7916//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
7917//
7918//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
7919//
7920// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7921// with awserr.Error's Code and Message methods to get detailed information about
7922// the error.
7923//
7924// See the AWS API reference guide for Amazon Simple Storage Service's
7925// API operation PutBucketLifecycleConfiguration for usage and error information.
7926// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7927func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
7928	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7929	return out, req.Send()
7930}
7931
7932// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
7933// the ability to pass a context and additional request options.
7934//
7935// See PutBucketLifecycleConfiguration for details on how to use this API operation.
7936//
7937// The context must be non-nil and will be used for request cancellation. If
7938// the context is nil a panic will occur. In the future the SDK may create
7939// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7940// for more information on using Contexts.
7941func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
7942	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7943	req.SetContext(ctx)
7944	req.ApplyOptions(opts...)
7945	return out, req.Send()
7946}
7947
7948const opPutBucketLogging = "PutBucketLogging"
7949
7950// PutBucketLoggingRequest generates a "aws/request.Request" representing the
7951// client's request for the PutBucketLogging operation. The "output" return
7952// value will be populated with the request's response once the request completes
7953// successfully.
7954//
7955// Use "Send" method on the returned Request to send the API call to the service.
7956// the "output" return value is not valid until after Send returns without error.
7957//
7958// See PutBucketLogging for more information on using the PutBucketLogging
7959// API call, and error handling.
7960//
7961// This method is useful when you want to inject custom logic or configuration
7962// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7963//
7964//
7965//    // Example sending a request using the PutBucketLoggingRequest method.
7966//    req, resp := client.PutBucketLoggingRequest(params)
7967//
7968//    err := req.Send()
7969//    if err == nil { // resp is now filled
7970//        fmt.Println(resp)
7971//    }
7972//
7973// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7974func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
7975	op := &request.Operation{
7976		Name:       opPutBucketLogging,
7977		HTTPMethod: "PUT",
7978		HTTPPath:   "/{Bucket}?logging",
7979	}
7980
7981	if input == nil {
7982		input = &PutBucketLoggingInput{}
7983	}
7984
7985	output = &PutBucketLoggingOutput{}
7986	req = c.newRequest(op, input, output)
7987	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7988	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7989		Name: "contentMd5Handler",
7990		Fn:   checksum.AddBodyContentMD5Handler,
7991	})
7992	return
7993}
7994
7995// PutBucketLogging API operation for Amazon Simple Storage Service.
7996//
7997// Set the logging parameters for a bucket and to specify permissions for who
7998// can view and modify the logging parameters. All logs are saved to buckets
7999// in the same Amazon Web Services Region as the source bucket. To set the logging
8000// status of a bucket, you must be the bucket owner.
8001//
8002// The bucket owner is automatically granted FULL_CONTROL to all logs. You use
8003// the Grantee request element to grant access to other people. The Permissions
8004// request element specifies the kind of access the grantee has to the logs.
8005//
8006// Grantee Values
8007//
8008// You can specify the person (grantee) to whom you're assigning access rights
8009// (using request elements) in the following ways:
8010//
8011//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8012//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
8013//    </Grantee> DisplayName is optional and ignored in the request.
8014//
8015//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8016//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress></Grantee>
8017//    The grantee is resolved to the CanonicalUser and, in a response to a GET
8018//    Object acl request, appears as the CanonicalUser.
8019//
8020//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8021//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
8022//
8023// To enable logging, you use LoggingEnabled and its children request elements.
8024// To disable logging, you use an empty BucketLoggingStatus request element:
8025//
8026// <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
8027//
8028// For more information about server access logging, see Server Access Logging
8029// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
8030//
8031// For more information about creating a bucket, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
8032// For more information about returning the logging status of a bucket, see
8033// GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html).
8034//
8035// The following operations are related to PutBucketLogging:
8036//
8037//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
8038//
8039//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
8040//
8041//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8042//
8043//    * GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)
8044//
8045// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8046// with awserr.Error's Code and Message methods to get detailed information about
8047// the error.
8048//
8049// See the AWS API reference guide for Amazon Simple Storage Service's
8050// API operation PutBucketLogging for usage and error information.
8051// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
8052func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
8053	req, out := c.PutBucketLoggingRequest(input)
8054	return out, req.Send()
8055}
8056
8057// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
8058// the ability to pass a context and additional request options.
8059//
8060// See PutBucketLogging for details on how to use this API operation.
8061//
8062// The context must be non-nil and will be used for request cancellation. If
8063// the context is nil a panic will occur. In the future the SDK may create
8064// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8065// for more information on using Contexts.
8066func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
8067	req, out := c.PutBucketLoggingRequest(input)
8068	req.SetContext(ctx)
8069	req.ApplyOptions(opts...)
8070	return out, req.Send()
8071}
8072
8073const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
8074
8075// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
8076// client's request for the PutBucketMetricsConfiguration operation. The "output" return
8077// value will be populated with the request's response once the request completes
8078// successfully.
8079//
8080// Use "Send" method on the returned Request to send the API call to the service.
8081// the "output" return value is not valid until after Send returns without error.
8082//
8083// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
8084// API call, and error handling.
8085//
8086// This method is useful when you want to inject custom logic or configuration
8087// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8088//
8089//
8090//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
8091//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
8092//
8093//    err := req.Send()
8094//    if err == nil { // resp is now filled
8095//        fmt.Println(resp)
8096//    }
8097//
8098// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
8099func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
8100	op := &request.Operation{
8101		Name:       opPutBucketMetricsConfiguration,
8102		HTTPMethod: "PUT",
8103		HTTPPath:   "/{Bucket}?metrics",
8104	}
8105
8106	if input == nil {
8107		input = &PutBucketMetricsConfigurationInput{}
8108	}
8109
8110	output = &PutBucketMetricsConfigurationOutput{}
8111	req = c.newRequest(op, input, output)
8112	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8113	return
8114}
8115
8116// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
8117//
8118// Sets a metrics configuration (specified by the metrics configuration ID)
8119// for the bucket. You can have up to 1,000 metrics configurations per bucket.
8120// If you're updating an existing metrics configuration, note that this is a
8121// full replacement of the existing metrics configuration. If you don't include
8122// the elements you want to keep, they are erased.
8123//
8124// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
8125// action. The bucket owner has this permission by default. The bucket owner
8126// can grant this permission to others. For more information about permissions,
8127// 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)
8128// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8129//
8130// For information about CloudWatch request metrics for Amazon S3, see Monitoring
8131// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
8132//
8133// The following operations are related to PutBucketMetricsConfiguration:
8134//
8135//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
8136//
8137//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
8138//
8139//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
8140//
8141// GetBucketLifecycle has the following special error:
8142//
8143//    * Error code: TooManyConfigurations Description: You are attempting to
8144//    create a new configuration but have already reached the 1,000-configuration
8145//    limit. HTTP Status Code: HTTP 400 Bad Request
8146//
8147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8148// with awserr.Error's Code and Message methods to get detailed information about
8149// the error.
8150//
8151// See the AWS API reference guide for Amazon Simple Storage Service's
8152// API operation PutBucketMetricsConfiguration for usage and error information.
8153// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
8154func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
8155	req, out := c.PutBucketMetricsConfigurationRequest(input)
8156	return out, req.Send()
8157}
8158
8159// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
8160// the ability to pass a context and additional request options.
8161//
8162// See PutBucketMetricsConfiguration for details on how to use this API operation.
8163//
8164// The context must be non-nil and will be used for request cancellation. If
8165// the context is nil a panic will occur. In the future the SDK may create
8166// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8167// for more information on using Contexts.
8168func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
8169	req, out := c.PutBucketMetricsConfigurationRequest(input)
8170	req.SetContext(ctx)
8171	req.ApplyOptions(opts...)
8172	return out, req.Send()
8173}
8174
8175const opPutBucketNotification = "PutBucketNotification"
8176
8177// PutBucketNotificationRequest generates a "aws/request.Request" representing the
8178// client's request for the PutBucketNotification operation. The "output" return
8179// value will be populated with the request's response once the request completes
8180// successfully.
8181//
8182// Use "Send" method on the returned Request to send the API call to the service.
8183// the "output" return value is not valid until after Send returns without error.
8184//
8185// See PutBucketNotification for more information on using the PutBucketNotification
8186// API call, and error handling.
8187//
8188// This method is useful when you want to inject custom logic or configuration
8189// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8190//
8191//
8192//    // Example sending a request using the PutBucketNotificationRequest method.
8193//    req, resp := client.PutBucketNotificationRequest(params)
8194//
8195//    err := req.Send()
8196//    if err == nil { // resp is now filled
8197//        fmt.Println(resp)
8198//    }
8199//
8200// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
8201//
8202// Deprecated: PutBucketNotification has been deprecated
8203func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
8204	if c.Client.Config.Logger != nil {
8205		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
8206	}
8207	op := &request.Operation{
8208		Name:       opPutBucketNotification,
8209		HTTPMethod: "PUT",
8210		HTTPPath:   "/{Bucket}?notification",
8211	}
8212
8213	if input == nil {
8214		input = &PutBucketNotificationInput{}
8215	}
8216
8217	output = &PutBucketNotificationOutput{}
8218	req = c.newRequest(op, input, output)
8219	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8220	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8221		Name: "contentMd5Handler",
8222		Fn:   checksum.AddBodyContentMD5Handler,
8223	})
8224	return
8225}
8226
8227// PutBucketNotification API operation for Amazon Simple Storage Service.
8228//
8229// No longer used, see the PutBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)
8230// operation.
8231//
8232// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8233// with awserr.Error's Code and Message methods to get detailed information about
8234// the error.
8235//
8236// See the AWS API reference guide for Amazon Simple Storage Service's
8237// API operation PutBucketNotification for usage and error information.
8238// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
8239//
8240// Deprecated: PutBucketNotification has been deprecated
8241func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
8242	req, out := c.PutBucketNotificationRequest(input)
8243	return out, req.Send()
8244}
8245
8246// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
8247// the ability to pass a context and additional request options.
8248//
8249// See PutBucketNotification for details on how to use this API operation.
8250//
8251// The context must be non-nil and will be used for request cancellation. If
8252// the context is nil a panic will occur. In the future the SDK may create
8253// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8254// for more information on using Contexts.
8255//
8256// Deprecated: PutBucketNotificationWithContext has been deprecated
8257func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
8258	req, out := c.PutBucketNotificationRequest(input)
8259	req.SetContext(ctx)
8260	req.ApplyOptions(opts...)
8261	return out, req.Send()
8262}
8263
8264const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
8265
8266// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
8267// client's request for the PutBucketNotificationConfiguration operation. The "output" return
8268// value will be populated with the request's response once the request completes
8269// successfully.
8270//
8271// Use "Send" method on the returned Request to send the API call to the service.
8272// the "output" return value is not valid until after Send returns without error.
8273//
8274// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
8275// API call, and error handling.
8276//
8277// This method is useful when you want to inject custom logic or configuration
8278// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8279//
8280//
8281//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
8282//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
8283//
8284//    err := req.Send()
8285//    if err == nil { // resp is now filled
8286//        fmt.Println(resp)
8287//    }
8288//
8289// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
8290func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
8291	op := &request.Operation{
8292		Name:       opPutBucketNotificationConfiguration,
8293		HTTPMethod: "PUT",
8294		HTTPPath:   "/{Bucket}?notification",
8295	}
8296
8297	if input == nil {
8298		input = &PutBucketNotificationConfigurationInput{}
8299	}
8300
8301	output = &PutBucketNotificationConfigurationOutput{}
8302	req = c.newRequest(op, input, output)
8303	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8304	return
8305}
8306
8307// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
8308//
8309// Enables notifications of specified events for a bucket. For more information
8310// about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
8311//
8312// Using this API, you can replace an existing notification configuration. The
8313// configuration is an XML file that defines the event types that you want Amazon
8314// S3 to publish and the destination where you want Amazon S3 to publish an
8315// event notification when it detects an event of the specified type.
8316//
8317// By default, your bucket has no event notifications configured. That is, the
8318// notification configuration will be an empty NotificationConfiguration.
8319//
8320// <NotificationConfiguration>
8321//
8322// </NotificationConfiguration>
8323//
8324// This action replaces the existing notification configuration with the configuration
8325// you include in the request body.
8326//
8327// After Amazon S3 receives this request, it first verifies that any Amazon
8328// Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon
8329// SQS) destination exists, and that the bucket owner has permission to publish
8330// to it by sending a test notification. In the case of Lambda destinations,
8331// Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission
8332// to invoke the function from the Amazon S3 bucket. For more information, see
8333// Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
8334//
8335// You can disable notifications by adding the empty NotificationConfiguration
8336// element.
8337//
8338// By default, only the bucket owner can configure notifications on a bucket.
8339// However, bucket owners can use a bucket policy to grant permission to other
8340// users to set this configuration with s3:PutBucketNotification permission.
8341//
8342// The PUT notification is an atomic operation. For example, suppose your notification
8343// configuration includes SNS topic, SQS queue, and Lambda function configurations.
8344// When you send a PUT request with this configuration, Amazon S3 sends test
8345// messages to your SNS topic. If the message fails, the entire PUT action will
8346// fail, and Amazon S3 will not add the configuration to your bucket.
8347//
8348// Responses
8349//
8350// If the configuration in the request body includes only one TopicConfiguration
8351// specifying only the s3:ReducedRedundancyLostObject event type, the response
8352// will also include the x-amz-sns-test-message-id header containing the message
8353// ID of the test notification sent to the topic.
8354//
8355// The following action is related to PutBucketNotificationConfiguration:
8356//
8357//    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
8358//
8359// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8360// with awserr.Error's Code and Message methods to get detailed information about
8361// the error.
8362//
8363// See the AWS API reference guide for Amazon Simple Storage Service's
8364// API operation PutBucketNotificationConfiguration for usage and error information.
8365// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
8366func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
8367	req, out := c.PutBucketNotificationConfigurationRequest(input)
8368	return out, req.Send()
8369}
8370
8371// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
8372// the ability to pass a context and additional request options.
8373//
8374// See PutBucketNotificationConfiguration for details on how to use this API operation.
8375//
8376// The context must be non-nil and will be used for request cancellation. If
8377// the context is nil a panic will occur. In the future the SDK may create
8378// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8379// for more information on using Contexts.
8380func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
8381	req, out := c.PutBucketNotificationConfigurationRequest(input)
8382	req.SetContext(ctx)
8383	req.ApplyOptions(opts...)
8384	return out, req.Send()
8385}
8386
8387const opPutBucketOwnershipControls = "PutBucketOwnershipControls"
8388
8389// PutBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
8390// client's request for the PutBucketOwnershipControls operation. The "output" return
8391// value will be populated with the request's response once the request completes
8392// successfully.
8393//
8394// Use "Send" method on the returned Request to send the API call to the service.
8395// the "output" return value is not valid until after Send returns without error.
8396//
8397// See PutBucketOwnershipControls for more information on using the PutBucketOwnershipControls
8398// API call, and error handling.
8399//
8400// This method is useful when you want to inject custom logic or configuration
8401// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8402//
8403//
8404//    // Example sending a request using the PutBucketOwnershipControlsRequest method.
8405//    req, resp := client.PutBucketOwnershipControlsRequest(params)
8406//
8407//    err := req.Send()
8408//    if err == nil { // resp is now filled
8409//        fmt.Println(resp)
8410//    }
8411//
8412// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
8413func (c *S3) PutBucketOwnershipControlsRequest(input *PutBucketOwnershipControlsInput) (req *request.Request, output *PutBucketOwnershipControlsOutput) {
8414	op := &request.Operation{
8415		Name:       opPutBucketOwnershipControls,
8416		HTTPMethod: "PUT",
8417		HTTPPath:   "/{Bucket}?ownershipControls",
8418	}
8419
8420	if input == nil {
8421		input = &PutBucketOwnershipControlsInput{}
8422	}
8423
8424	output = &PutBucketOwnershipControlsOutput{}
8425	req = c.newRequest(op, input, output)
8426	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8427	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8428		Name: "contentMd5Handler",
8429		Fn:   checksum.AddBodyContentMD5Handler,
8430	})
8431	return
8432}
8433
8434// PutBucketOwnershipControls API operation for Amazon Simple Storage Service.
8435//
8436// Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this
8437// operation, you must have the s3:PutBucketOwnershipControls permission. For
8438// more information about Amazon S3 permissions, see Specifying Permissions
8439// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
8440//
8441// For information about Amazon S3 Object Ownership, see Using Object Ownership
8442// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
8443//
8444// The following operations are related to PutBucketOwnershipControls:
8445//
8446//    * GetBucketOwnershipControls
8447//
8448//    * DeleteBucketOwnershipControls
8449//
8450// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8451// with awserr.Error's Code and Message methods to get detailed information about
8452// the error.
8453//
8454// See the AWS API reference guide for Amazon Simple Storage Service's
8455// API operation PutBucketOwnershipControls for usage and error information.
8456// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
8457func (c *S3) PutBucketOwnershipControls(input *PutBucketOwnershipControlsInput) (*PutBucketOwnershipControlsOutput, error) {
8458	req, out := c.PutBucketOwnershipControlsRequest(input)
8459	return out, req.Send()
8460}
8461
8462// PutBucketOwnershipControlsWithContext is the same as PutBucketOwnershipControls with the addition of
8463// the ability to pass a context and additional request options.
8464//
8465// See PutBucketOwnershipControls for details on how to use this API operation.
8466//
8467// The context must be non-nil and will be used for request cancellation. If
8468// the context is nil a panic will occur. In the future the SDK may create
8469// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8470// for more information on using Contexts.
8471func (c *S3) PutBucketOwnershipControlsWithContext(ctx aws.Context, input *PutBucketOwnershipControlsInput, opts ...request.Option) (*PutBucketOwnershipControlsOutput, error) {
8472	req, out := c.PutBucketOwnershipControlsRequest(input)
8473	req.SetContext(ctx)
8474	req.ApplyOptions(opts...)
8475	return out, req.Send()
8476}
8477
8478const opPutBucketPolicy = "PutBucketPolicy"
8479
8480// PutBucketPolicyRequest generates a "aws/request.Request" representing the
8481// client's request for the PutBucketPolicy operation. The "output" return
8482// value will be populated with the request's response once the request completes
8483// successfully.
8484//
8485// Use "Send" method on the returned Request to send the API call to the service.
8486// the "output" return value is not valid until after Send returns without error.
8487//
8488// See PutBucketPolicy for more information on using the PutBucketPolicy
8489// API call, and error handling.
8490//
8491// This method is useful when you want to inject custom logic or configuration
8492// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8493//
8494//
8495//    // Example sending a request using the PutBucketPolicyRequest method.
8496//    req, resp := client.PutBucketPolicyRequest(params)
8497//
8498//    err := req.Send()
8499//    if err == nil { // resp is now filled
8500//        fmt.Println(resp)
8501//    }
8502//
8503// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
8504func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
8505	op := &request.Operation{
8506		Name:       opPutBucketPolicy,
8507		HTTPMethod: "PUT",
8508		HTTPPath:   "/{Bucket}?policy",
8509	}
8510
8511	if input == nil {
8512		input = &PutBucketPolicyInput{}
8513	}
8514
8515	output = &PutBucketPolicyOutput{}
8516	req = c.newRequest(op, input, output)
8517	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8518	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8519		Name: "contentMd5Handler",
8520		Fn:   checksum.AddBodyContentMD5Handler,
8521	})
8522	return
8523}
8524
8525// PutBucketPolicy API operation for Amazon Simple Storage Service.
8526//
8527// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
8528// an identity other than the root user of the Amazon Web Services account that
8529// owns the bucket, the calling identity must have the PutBucketPolicy permissions
8530// on the specified bucket and belong to the bucket owner's account in order
8531// to use this operation.
8532//
8533// If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access
8534// Denied error. If you have the correct permissions, but you're not using an
8535// identity that belongs to the bucket owner's account, Amazon S3 returns a
8536// 405 Method Not Allowed error.
8537//
8538// As a security precaution, the root user of the Amazon Web Services account
8539// that owns a bucket can always use this operation, even if the policy explicitly
8540// denies the root user the ability to perform this action.
8541//
8542// For more information, see Bucket policy examples (https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).
8543//
8544// The following operations are related to PutBucketPolicy:
8545//
8546//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8547//
8548//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
8549//
8550// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8551// with awserr.Error's Code and Message methods to get detailed information about
8552// the error.
8553//
8554// See the AWS API reference guide for Amazon Simple Storage Service's
8555// API operation PutBucketPolicy for usage and error information.
8556// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
8557func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
8558	req, out := c.PutBucketPolicyRequest(input)
8559	return out, req.Send()
8560}
8561
8562// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
8563// the ability to pass a context and additional request options.
8564//
8565// See PutBucketPolicy for details on how to use this API operation.
8566//
8567// The context must be non-nil and will be used for request cancellation. If
8568// the context is nil a panic will occur. In the future the SDK may create
8569// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8570// for more information on using Contexts.
8571func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
8572	req, out := c.PutBucketPolicyRequest(input)
8573	req.SetContext(ctx)
8574	req.ApplyOptions(opts...)
8575	return out, req.Send()
8576}
8577
8578const opPutBucketReplication = "PutBucketReplication"
8579
8580// PutBucketReplicationRequest generates a "aws/request.Request" representing the
8581// client's request for the PutBucketReplication operation. The "output" return
8582// value will be populated with the request's response once the request completes
8583// successfully.
8584//
8585// Use "Send" method on the returned Request to send the API call to the service.
8586// the "output" return value is not valid until after Send returns without error.
8587//
8588// See PutBucketReplication for more information on using the PutBucketReplication
8589// API call, and error handling.
8590//
8591// This method is useful when you want to inject custom logic or configuration
8592// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8593//
8594//
8595//    // Example sending a request using the PutBucketReplicationRequest method.
8596//    req, resp := client.PutBucketReplicationRequest(params)
8597//
8598//    err := req.Send()
8599//    if err == nil { // resp is now filled
8600//        fmt.Println(resp)
8601//    }
8602//
8603// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
8604func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
8605	op := &request.Operation{
8606		Name:       opPutBucketReplication,
8607		HTTPMethod: "PUT",
8608		HTTPPath:   "/{Bucket}?replication",
8609	}
8610
8611	if input == nil {
8612		input = &PutBucketReplicationInput{}
8613	}
8614
8615	output = &PutBucketReplicationOutput{}
8616	req = c.newRequest(op, input, output)
8617	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8618	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8619		Name: "contentMd5Handler",
8620		Fn:   checksum.AddBodyContentMD5Handler,
8621	})
8622	return
8623}
8624
8625// PutBucketReplication API operation for Amazon Simple Storage Service.
8626//
8627// Creates a replication configuration or replaces an existing one. For more
8628// information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
8629// in the Amazon S3 User Guide.
8630//
8631// Specify the replication configuration in the request body. In the replication
8632// configuration, you provide the name of the destination bucket or buckets
8633// where you want Amazon S3 to replicate objects, the IAM role that Amazon S3
8634// can assume to replicate objects on your behalf, and other relevant information.
8635//
8636// A replication configuration must include at least one rule, and can contain
8637// a maximum of 1,000. Each rule identifies a subset of objects to replicate
8638// by filtering the objects in the source bucket. To choose additional subsets
8639// of objects to replicate, add a rule for each subset.
8640//
8641// To specify a subset of the objects in the source bucket to apply a replication
8642// rule to, add the Filter element as a child of the Rule element. You can filter
8643// objects based on an object key prefix, one or more object tags, or both.
8644// When you add the Filter element in the configuration, you must also add the
8645// following elements: DeleteMarkerReplication, Status, and Priority.
8646//
8647// If you are using an earlier version of the replication configuration, Amazon
8648// S3 handles replication of delete markers differently. For more information,
8649// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
8650//
8651// For information about enabling versioning on a bucket, see Using Versioning
8652// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).
8653//
8654// Handling Replication of Encrypted Objects
8655//
8656// By default, Amazon S3 doesn't replicate objects that are stored at rest using
8657// server-side encryption with KMS keys. To replicate Amazon Web Services KMS-encrypted
8658// objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects,
8659// Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about
8660// replication configuration, see Replicating Objects Created with SSE Using
8661// KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
8662//
8663// For information on PutBucketReplication errors, see List of replication-related
8664// error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
8665//
8666// Permissions
8667//
8668// To create a PutBucketReplication request, you must have s3:PutReplicationConfiguration
8669// permissions for the bucket.
8670//
8671// By default, a resource owner, in this case the Amazon Web Services account
8672// that created the bucket, can perform this operation. The resource owner can
8673// also grant others permissions to perform the operation. For more information
8674// about permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
8675// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8676//
8677// To perform this operation, the user or role performing the action must have
8678// the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
8679// permission.
8680//
8681// The following operations are related to PutBucketReplication:
8682//
8683//    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
8684//
8685//    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
8686//
8687// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8688// with awserr.Error's Code and Message methods to get detailed information about
8689// the error.
8690//
8691// See the AWS API reference guide for Amazon Simple Storage Service's
8692// API operation PutBucketReplication for usage and error information.
8693// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
8694func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
8695	req, out := c.PutBucketReplicationRequest(input)
8696	return out, req.Send()
8697}
8698
8699// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
8700// the ability to pass a context and additional request options.
8701//
8702// See PutBucketReplication for details on how to use this API operation.
8703//
8704// The context must be non-nil and will be used for request cancellation. If
8705// the context is nil a panic will occur. In the future the SDK may create
8706// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8707// for more information on using Contexts.
8708func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
8709	req, out := c.PutBucketReplicationRequest(input)
8710	req.SetContext(ctx)
8711	req.ApplyOptions(opts...)
8712	return out, req.Send()
8713}
8714
8715const opPutBucketRequestPayment = "PutBucketRequestPayment"
8716
8717// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
8718// client's request for the PutBucketRequestPayment operation. The "output" return
8719// value will be populated with the request's response once the request completes
8720// successfully.
8721//
8722// Use "Send" method on the returned Request to send the API call to the service.
8723// the "output" return value is not valid until after Send returns without error.
8724//
8725// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
8726// API call, and error handling.
8727//
8728// This method is useful when you want to inject custom logic or configuration
8729// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8730//
8731//
8732//    // Example sending a request using the PutBucketRequestPaymentRequest method.
8733//    req, resp := client.PutBucketRequestPaymentRequest(params)
8734//
8735//    err := req.Send()
8736//    if err == nil { // resp is now filled
8737//        fmt.Println(resp)
8738//    }
8739//
8740// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
8741func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
8742	op := &request.Operation{
8743		Name:       opPutBucketRequestPayment,
8744		HTTPMethod: "PUT",
8745		HTTPPath:   "/{Bucket}?requestPayment",
8746	}
8747
8748	if input == nil {
8749		input = &PutBucketRequestPaymentInput{}
8750	}
8751
8752	output = &PutBucketRequestPaymentOutput{}
8753	req = c.newRequest(op, input, output)
8754	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8755	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8756		Name: "contentMd5Handler",
8757		Fn:   checksum.AddBodyContentMD5Handler,
8758	})
8759	return
8760}
8761
8762// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
8763//
8764// Sets the request payment configuration for a bucket. By default, the bucket
8765// owner pays for downloads from the bucket. This configuration parameter enables
8766// the bucket owner (only) to specify that the person requesting the download
8767// will be charged for the download. For more information, see Requester Pays
8768// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
8769//
8770// The following operations are related to PutBucketRequestPayment:
8771//
8772//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8773//
8774//    * GetBucketRequestPayment (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)
8775//
8776// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8777// with awserr.Error's Code and Message methods to get detailed information about
8778// the error.
8779//
8780// See the AWS API reference guide for Amazon Simple Storage Service's
8781// API operation PutBucketRequestPayment for usage and error information.
8782// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
8783func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
8784	req, out := c.PutBucketRequestPaymentRequest(input)
8785	return out, req.Send()
8786}
8787
8788// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
8789// the ability to pass a context and additional request options.
8790//
8791// See PutBucketRequestPayment for details on how to use this API operation.
8792//
8793// The context must be non-nil and will be used for request cancellation. If
8794// the context is nil a panic will occur. In the future the SDK may create
8795// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8796// for more information on using Contexts.
8797func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
8798	req, out := c.PutBucketRequestPaymentRequest(input)
8799	req.SetContext(ctx)
8800	req.ApplyOptions(opts...)
8801	return out, req.Send()
8802}
8803
8804const opPutBucketTagging = "PutBucketTagging"
8805
8806// PutBucketTaggingRequest generates a "aws/request.Request" representing the
8807// client's request for the PutBucketTagging operation. The "output" return
8808// value will be populated with the request's response once the request completes
8809// successfully.
8810//
8811// Use "Send" method on the returned Request to send the API call to the service.
8812// the "output" return value is not valid until after Send returns without error.
8813//
8814// See PutBucketTagging for more information on using the PutBucketTagging
8815// API call, and error handling.
8816//
8817// This method is useful when you want to inject custom logic or configuration
8818// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8819//
8820//
8821//    // Example sending a request using the PutBucketTaggingRequest method.
8822//    req, resp := client.PutBucketTaggingRequest(params)
8823//
8824//    err := req.Send()
8825//    if err == nil { // resp is now filled
8826//        fmt.Println(resp)
8827//    }
8828//
8829// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8830func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
8831	op := &request.Operation{
8832		Name:       opPutBucketTagging,
8833		HTTPMethod: "PUT",
8834		HTTPPath:   "/{Bucket}?tagging",
8835	}
8836
8837	if input == nil {
8838		input = &PutBucketTaggingInput{}
8839	}
8840
8841	output = &PutBucketTaggingOutput{}
8842	req = c.newRequest(op, input, output)
8843	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8844	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8845		Name: "contentMd5Handler",
8846		Fn:   checksum.AddBodyContentMD5Handler,
8847	})
8848	return
8849}
8850
8851// PutBucketTagging API operation for Amazon Simple Storage Service.
8852//
8853// Sets the tags for a bucket.
8854//
8855// Use tags to organize your Amazon Web Services bill to reflect your own cost
8856// structure. To do this, sign up to get your Amazon Web Services account bill
8857// with tag key values included. Then, to see the cost of combined resources,
8858// organize your billing information according to resources with the same tag
8859// key values. For example, you can tag several resources with a specific application
8860// name, and then organize your billing information to see the total cost of
8861// that application across several services. For more information, see Cost
8862// Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
8863// and Using Cost Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html).
8864//
8865// When this operation sets the tags for a bucket, it will overwrite any current
8866// tags the bucket already has. You cannot use this operation to add tags to
8867// an existing list of tags.
8868//
8869// To use this operation, you must have permissions to perform the s3:PutBucketTagging
8870// action. The bucket owner has this permission by default and can grant this
8871// permission to others. For more information about permissions, see Permissions
8872// 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)
8873// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8874//
8875// PutBucketTagging has the following special errors:
8876//
8877//    * Error code: InvalidTagError Description: The tag provided was not a
8878//    valid tag. This error can occur if the tag did not pass input validation.
8879//    For information about tag restrictions, see User-Defined Tag Restrictions
8880//    (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)
8881//    and Amazon Web Services-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html).
8882//
8883//    * Error code: MalformedXMLError Description: The XML provided does not
8884//    match the schema.
8885//
8886//    * Error code: OperationAbortedError Description: A conflicting conditional
8887//    action is currently in progress against this resource. Please try again.
8888//
8889//    * Error code: InternalError Description: The service was unable to apply
8890//    the provided tag to the bucket.
8891//
8892// The following operations are related to PutBucketTagging:
8893//
8894//    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
8895//
8896//    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
8897//
8898// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8899// with awserr.Error's Code and Message methods to get detailed information about
8900// the error.
8901//
8902// See the AWS API reference guide for Amazon Simple Storage Service's
8903// API operation PutBucketTagging for usage and error information.
8904// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8905func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
8906	req, out := c.PutBucketTaggingRequest(input)
8907	return out, req.Send()
8908}
8909
8910// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
8911// the ability to pass a context and additional request options.
8912//
8913// See PutBucketTagging for details on how to use this API operation.
8914//
8915// The context must be non-nil and will be used for request cancellation. If
8916// the context is nil a panic will occur. In the future the SDK may create
8917// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8918// for more information on using Contexts.
8919func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
8920	req, out := c.PutBucketTaggingRequest(input)
8921	req.SetContext(ctx)
8922	req.ApplyOptions(opts...)
8923	return out, req.Send()
8924}
8925
8926const opPutBucketVersioning = "PutBucketVersioning"
8927
8928// PutBucketVersioningRequest generates a "aws/request.Request" representing the
8929// client's request for the PutBucketVersioning operation. The "output" return
8930// value will be populated with the request's response once the request completes
8931// successfully.
8932//
8933// Use "Send" method on the returned Request to send the API call to the service.
8934// the "output" return value is not valid until after Send returns without error.
8935//
8936// See PutBucketVersioning for more information on using the PutBucketVersioning
8937// API call, and error handling.
8938//
8939// This method is useful when you want to inject custom logic or configuration
8940// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8941//
8942//
8943//    // Example sending a request using the PutBucketVersioningRequest method.
8944//    req, resp := client.PutBucketVersioningRequest(params)
8945//
8946//    err := req.Send()
8947//    if err == nil { // resp is now filled
8948//        fmt.Println(resp)
8949//    }
8950//
8951// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8952func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
8953	op := &request.Operation{
8954		Name:       opPutBucketVersioning,
8955		HTTPMethod: "PUT",
8956		HTTPPath:   "/{Bucket}?versioning",
8957	}
8958
8959	if input == nil {
8960		input = &PutBucketVersioningInput{}
8961	}
8962
8963	output = &PutBucketVersioningOutput{}
8964	req = c.newRequest(op, input, output)
8965	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8966	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8967		Name: "contentMd5Handler",
8968		Fn:   checksum.AddBodyContentMD5Handler,
8969	})
8970	return
8971}
8972
8973// PutBucketVersioning API operation for Amazon Simple Storage Service.
8974//
8975// Sets the versioning state of an existing bucket. To set the versioning state,
8976// you must be the bucket owner.
8977//
8978// You can set the versioning state with one of the following values:
8979//
8980// Enabled—Enables versioning for the objects in the bucket. All objects added
8981// to the bucket receive a unique version ID.
8982//
8983// Suspended—Disables versioning for the objects in the bucket. All objects
8984// added to the bucket receive the version ID null.
8985//
8986// If the versioning state has never been set on a bucket, it has no versioning
8987// state; a GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
8988// request does not return a versioning state value.
8989//
8990// If the bucket owner enables MFA Delete in the bucket versioning configuration,
8991// the bucket owner must include the x-amz-mfa request header and the Status
8992// and the MfaDelete request elements in a request to set the versioning state
8993// of the bucket.
8994//
8995// If you have an object expiration lifecycle policy in your non-versioned bucket
8996// and you want to maintain the same permanent delete behavior when you enable
8997// versioning, you must add a noncurrent expiration policy. The noncurrent expiration
8998// lifecycle policy will manage the deletes of the noncurrent object versions
8999// in the version-enabled bucket. (A version-enabled bucket maintains one current
9000// and zero or more noncurrent object versions.) For more information, see Lifecycle
9001// and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
9002//
9003// Related Resources
9004//
9005//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
9006//
9007//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
9008//
9009//    * GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
9010//
9011// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9012// with awserr.Error's Code and Message methods to get detailed information about
9013// the error.
9014//
9015// See the AWS API reference guide for Amazon Simple Storage Service's
9016// API operation PutBucketVersioning for usage and error information.
9017// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
9018func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
9019	req, out := c.PutBucketVersioningRequest(input)
9020	return out, req.Send()
9021}
9022
9023// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
9024// the ability to pass a context and additional request options.
9025//
9026// See PutBucketVersioning for details on how to use this API operation.
9027//
9028// The context must be non-nil and will be used for request cancellation. If
9029// the context is nil a panic will occur. In the future the SDK may create
9030// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9031// for more information on using Contexts.
9032func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
9033	req, out := c.PutBucketVersioningRequest(input)
9034	req.SetContext(ctx)
9035	req.ApplyOptions(opts...)
9036	return out, req.Send()
9037}
9038
9039const opPutBucketWebsite = "PutBucketWebsite"
9040
9041// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
9042// client's request for the PutBucketWebsite operation. The "output" return
9043// value will be populated with the request's response once the request completes
9044// successfully.
9045//
9046// Use "Send" method on the returned Request to send the API call to the service.
9047// the "output" return value is not valid until after Send returns without error.
9048//
9049// See PutBucketWebsite for more information on using the PutBucketWebsite
9050// API call, and error handling.
9051//
9052// This method is useful when you want to inject custom logic or configuration
9053// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9054//
9055//
9056//    // Example sending a request using the PutBucketWebsiteRequest method.
9057//    req, resp := client.PutBucketWebsiteRequest(params)
9058//
9059//    err := req.Send()
9060//    if err == nil { // resp is now filled
9061//        fmt.Println(resp)
9062//    }
9063//
9064// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
9065func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
9066	op := &request.Operation{
9067		Name:       opPutBucketWebsite,
9068		HTTPMethod: "PUT",
9069		HTTPPath:   "/{Bucket}?website",
9070	}
9071
9072	if input == nil {
9073		input = &PutBucketWebsiteInput{}
9074	}
9075
9076	output = &PutBucketWebsiteOutput{}
9077	req = c.newRequest(op, input, output)
9078	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9079	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9080		Name: "contentMd5Handler",
9081		Fn:   checksum.AddBodyContentMD5Handler,
9082	})
9083	return
9084}
9085
9086// PutBucketWebsite API operation for Amazon Simple Storage Service.
9087//
9088// Sets the configuration of the website that is specified in the website subresource.
9089// To configure a bucket as a website, you can add this subresource on the bucket
9090// with website configuration information such as the file name of the index
9091// document and any redirect rules. For more information, see Hosting Websites
9092// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
9093//
9094// This PUT action requires the S3:PutBucketWebsite permission. By default,
9095// only the bucket owner can configure the website attached to a bucket; however,
9096// bucket owners can allow other users to set the website configuration by writing
9097// a bucket policy that grants them the S3:PutBucketWebsite permission.
9098//
9099// To redirect all website requests sent to the bucket's website endpoint, you
9100// add a website configuration with the following elements. Because all requests
9101// are sent to another website, you don't need to provide index document name
9102// for the bucket.
9103//
9104//    * WebsiteConfiguration
9105//
9106//    * RedirectAllRequestsTo
9107//
9108//    * HostName
9109//
9110//    * Protocol
9111//
9112// If you want granular control over redirects, you can use the following elements
9113// to add routing rules that describe conditions for redirecting requests and
9114// information about the redirect destination. In this case, the website configuration
9115// must provide an index document for the bucket, because some requests might
9116// not be redirected.
9117//
9118//    * WebsiteConfiguration
9119//
9120//    * IndexDocument
9121//
9122//    * Suffix
9123//
9124//    * ErrorDocument
9125//
9126//    * Key
9127//
9128//    * RoutingRules
9129//
9130//    * RoutingRule
9131//
9132//    * Condition
9133//
9134//    * HttpErrorCodeReturnedEquals
9135//
9136//    * KeyPrefixEquals
9137//
9138//    * Redirect
9139//
9140//    * Protocol
9141//
9142//    * HostName
9143//
9144//    * ReplaceKeyPrefixWith
9145//
9146//    * ReplaceKeyWith
9147//
9148//    * HttpRedirectCode
9149//
9150// Amazon S3 has a limitation of 50 routing rules per website configuration.
9151// If you require more than 50 routing rules, you can use object redirect. For
9152// more information, see Configuring an Object Redirect (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html)
9153// in the Amazon S3 User Guide.
9154//
9155// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9156// with awserr.Error's Code and Message methods to get detailed information about
9157// the error.
9158//
9159// See the AWS API reference guide for Amazon Simple Storage Service's
9160// API operation PutBucketWebsite for usage and error information.
9161// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
9162func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
9163	req, out := c.PutBucketWebsiteRequest(input)
9164	return out, req.Send()
9165}
9166
9167// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
9168// the ability to pass a context and additional request options.
9169//
9170// See PutBucketWebsite for details on how to use this API operation.
9171//
9172// The context must be non-nil and will be used for request cancellation. If
9173// the context is nil a panic will occur. In the future the SDK may create
9174// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9175// for more information on using Contexts.
9176func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
9177	req, out := c.PutBucketWebsiteRequest(input)
9178	req.SetContext(ctx)
9179	req.ApplyOptions(opts...)
9180	return out, req.Send()
9181}
9182
9183const opPutObject = "PutObject"
9184
9185// PutObjectRequest generates a "aws/request.Request" representing the
9186// client's request for the PutObject operation. The "output" return
9187// value will be populated with the request's response once the request completes
9188// successfully.
9189//
9190// Use "Send" method on the returned Request to send the API call to the service.
9191// the "output" return value is not valid until after Send returns without error.
9192//
9193// See PutObject for more information on using the PutObject
9194// API call, and error handling.
9195//
9196// This method is useful when you want to inject custom logic or configuration
9197// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9198//
9199//
9200//    // Example sending a request using the PutObjectRequest method.
9201//    req, resp := client.PutObjectRequest(params)
9202//
9203//    err := req.Send()
9204//    if err == nil { // resp is now filled
9205//        fmt.Println(resp)
9206//    }
9207//
9208// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
9209func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
9210	op := &request.Operation{
9211		Name:       opPutObject,
9212		HTTPMethod: "PUT",
9213		HTTPPath:   "/{Bucket}/{Key+}",
9214	}
9215
9216	if input == nil {
9217		input = &PutObjectInput{}
9218	}
9219
9220	output = &PutObjectOutput{}
9221	req = c.newRequest(op, input, output)
9222	return
9223}
9224
9225// PutObject API operation for Amazon Simple Storage Service.
9226//
9227// Adds an object to a bucket. You must have WRITE permissions on a bucket to
9228// add an object to it.
9229//
9230// Amazon S3 never adds partial objects; if you receive a success response,
9231// Amazon S3 added the entire object to the bucket.
9232//
9233// Amazon S3 is a distributed system. If it receives multiple write requests
9234// for the same object simultaneously, it overwrites all but the last object
9235// written. Amazon S3 does not provide object locking; if you need this, make
9236// sure to build it into your application layer or use versioning instead.
9237//
9238// To ensure that data is not corrupted traversing the network, use the Content-MD5
9239// header. When you use this header, Amazon S3 checks the object against the
9240// provided MD5 value and, if they do not match, returns an error. Additionally,
9241// you can calculate the MD5 while putting an object to Amazon S3 and compare
9242// the returned ETag to the calculated MD5 value.
9243//
9244//    * To successfully complete the PutObject request, you must have the s3:PutObject
9245//    in your IAM permissions.
9246//
9247//    * To successfully change the objects acl of your PutObject request, you
9248//    must have the s3:PutObjectAcl in your IAM permissions.
9249//
9250//    * The Content-MD5 header is required for any request to upload an object
9251//    with a retention period configured using Amazon S3 Object Lock. For more
9252//    information about Amazon S3 Object Lock, see Amazon S3 Object Lock Overview
9253//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)
9254//    in the Amazon S3 User Guide.
9255//
9256// Server-side Encryption
9257//
9258// You can optionally request server-side encryption. With server-side encryption,
9259// Amazon S3 encrypts your data as it writes it to disks in its data centers
9260// and decrypts the data when you access it. You have the option to provide
9261// your own encryption key or use Amazon Web Services managed encryption keys
9262// (SSE-S3 or SSE-KMS). For more information, see Using Server-Side Encryption
9263// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
9264//
9265// If you request server-side encryption using Amazon Web Services Key Management
9266// Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For
9267// more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
9268// in the Amazon S3 User Guide.
9269//
9270// Access Control List (ACL)-Specific Request Headers
9271//
9272// You can use headers to grant ACL- based permissions. By default, all objects
9273// are private. Only the owner has full access control. When adding a new object,
9274// you can grant permissions to individual Amazon Web Services accounts or to
9275// predefined groups defined by Amazon S3. These permissions are then added
9276// to the ACL on the object. For more information, see Access Control List (ACL)
9277// Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
9278// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
9279//
9280// Storage Class Options
9281//
9282// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
9283// objects. The STANDARD storage class provides high durability and high availability.
9284// Depending on performance needs, you can specify a different Storage Class.
9285// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
9286// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
9287// in the Amazon S3 User Guide.
9288//
9289// Versioning
9290//
9291// If you enable versioning for a bucket, Amazon S3 automatically generates
9292// a unique version ID for the object being stored. Amazon S3 returns this ID
9293// in the response. When you enable versioning for a bucket, if Amazon S3 receives
9294// multiple write requests for the same object simultaneously, it stores all
9295// of the objects.
9296//
9297// For more information about versioning, see Adding Objects to Versioning Enabled
9298// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
9299// For information about returning the versioning state of a bucket, see GetBucketVersioning
9300// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html).
9301//
9302// Related Resources
9303//
9304//    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
9305//
9306//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
9307//
9308// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9309// with awserr.Error's Code and Message methods to get detailed information about
9310// the error.
9311//
9312// See the AWS API reference guide for Amazon Simple Storage Service's
9313// API operation PutObject for usage and error information.
9314// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
9315func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
9316	req, out := c.PutObjectRequest(input)
9317	return out, req.Send()
9318}
9319
9320// PutObjectWithContext is the same as PutObject with the addition of
9321// the ability to pass a context and additional request options.
9322//
9323// See PutObject for details on how to use this API operation.
9324//
9325// The context must be non-nil and will be used for request cancellation. If
9326// the context is nil a panic will occur. In the future the SDK may create
9327// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9328// for more information on using Contexts.
9329func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
9330	req, out := c.PutObjectRequest(input)
9331	req.SetContext(ctx)
9332	req.ApplyOptions(opts...)
9333	return out, req.Send()
9334}
9335
9336const opPutObjectAcl = "PutObjectAcl"
9337
9338// PutObjectAclRequest generates a "aws/request.Request" representing the
9339// client's request for the PutObjectAcl operation. The "output" return
9340// value will be populated with the request's response once the request completes
9341// successfully.
9342//
9343// Use "Send" method on the returned Request to send the API call to the service.
9344// the "output" return value is not valid until after Send returns without error.
9345//
9346// See PutObjectAcl for more information on using the PutObjectAcl
9347// API call, and error handling.
9348//
9349// This method is useful when you want to inject custom logic or configuration
9350// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9351//
9352//
9353//    // Example sending a request using the PutObjectAclRequest method.
9354//    req, resp := client.PutObjectAclRequest(params)
9355//
9356//    err := req.Send()
9357//    if err == nil { // resp is now filled
9358//        fmt.Println(resp)
9359//    }
9360//
9361// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
9362func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
9363	op := &request.Operation{
9364		Name:       opPutObjectAcl,
9365		HTTPMethod: "PUT",
9366		HTTPPath:   "/{Bucket}/{Key+}?acl",
9367	}
9368
9369	if input == nil {
9370		input = &PutObjectAclInput{}
9371	}
9372
9373	output = &PutObjectAclOutput{}
9374	req = c.newRequest(op, input, output)
9375	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9376		Name: "contentMd5Handler",
9377		Fn:   checksum.AddBodyContentMD5Handler,
9378	})
9379	return
9380}
9381
9382// PutObjectAcl API operation for Amazon Simple Storage Service.
9383//
9384// Uses the acl subresource to set the access control list (ACL) permissions
9385// for a new or existing object in an S3 bucket. You must have WRITE_ACP permission
9386// to set the ACL of an object. For more information, see What permissions can
9387// I grant? (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions)
9388// in the Amazon S3 User Guide.
9389//
9390// This action is not supported by Amazon S3 on Outposts.
9391//
9392// Depending on your application needs, you can choose to set the ACL on an
9393// object using either the request body or the headers. For example, if you
9394// have an existing application that updates a bucket ACL using the request
9395// body, you can continue to use that approach. For more information, see Access
9396// Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
9397// in the Amazon S3 User Guide.
9398//
9399// Access Permissions
9400//
9401// You can set access permissions using one of the following methods:
9402//
9403//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
9404//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
9405//    predefined set of grantees and permissions. Specify the canned ACL name
9406//    as the value of x-amz-acl. If you use this header, you cannot use other
9407//    access control-specific headers in your request. For more information,
9408//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
9409//
9410//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
9411//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
9412//    these headers, you specify explicit access permissions and grantees (Amazon
9413//    Web Services accounts or Amazon S3 groups) who will receive the permission.
9414//    If you use these ACL-specific headers, you cannot use x-amz-acl header
9415//    to set a canned ACL. These parameters map to the set of permissions that
9416//    Amazon S3 supports in an ACL. For more information, see Access Control
9417//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
9418//    You specify each grantee as a type=value pair, where the type is one of
9419//    the following: id – if the value specified is the canonical user ID
9420//    of an Amazon Web Services account uri – if you are granting permissions
9421//    to a predefined group emailAddress – if the value specified is the email
9422//    address of an Amazon Web Services account Using email addresses to specify
9423//    a grantee is only supported in the following Amazon Web Services Regions:
9424//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
9425//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
9426//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
9427//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
9428//    in the Amazon Web Services General Reference. For example, the following
9429//    x-amz-grant-read header grants list objects permission to the two Amazon
9430//    Web Services accounts identified by their email addresses. x-amz-grant-read:
9431//    emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
9432//
9433// You can use either a canned ACL or specify access permissions explicitly.
9434// You cannot do both.
9435//
9436// Grantee Values
9437//
9438// You can specify the person (grantee) to whom you're assigning access rights
9439// (using request elements) in the following ways:
9440//
9441//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9442//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
9443//    </Grantee> DisplayName is optional and ignored in the request.
9444//
9445//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9446//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
9447//
9448//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9449//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
9450//    The grantee is resolved to the CanonicalUser and, in a response to a GET
9451//    Object acl request, appears as the CanonicalUser. Using email addresses
9452//    to specify a grantee is only supported in the following Amazon Web Services
9453//    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
9454//    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
9455//    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
9456//    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
9457//    in the Amazon Web Services General Reference.
9458//
9459// Versioning
9460//
9461// The ACL of an object is set at the object version level. By default, PUT
9462// sets the ACL of the current version of an object. To set the ACL of a different
9463// version, use the versionId subresource.
9464//
9465// Related Resources
9466//
9467//    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
9468//
9469//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
9470//
9471// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9472// with awserr.Error's Code and Message methods to get detailed information about
9473// the error.
9474//
9475// See the AWS API reference guide for Amazon Simple Storage Service's
9476// API operation PutObjectAcl for usage and error information.
9477//
9478// Returned Error Codes:
9479//   * ErrCodeNoSuchKey "NoSuchKey"
9480//   The specified key does not exist.
9481//
9482// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
9483func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
9484	req, out := c.PutObjectAclRequest(input)
9485	return out, req.Send()
9486}
9487
9488// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
9489// the ability to pass a context and additional request options.
9490//
9491// See PutObjectAcl for details on how to use this API operation.
9492//
9493// The context must be non-nil and will be used for request cancellation. If
9494// the context is nil a panic will occur. In the future the SDK may create
9495// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9496// for more information on using Contexts.
9497func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
9498	req, out := c.PutObjectAclRequest(input)
9499	req.SetContext(ctx)
9500	req.ApplyOptions(opts...)
9501	return out, req.Send()
9502}
9503
9504const opPutObjectLegalHold = "PutObjectLegalHold"
9505
9506// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
9507// client's request for the PutObjectLegalHold operation. The "output" return
9508// value will be populated with the request's response once the request completes
9509// successfully.
9510//
9511// Use "Send" method on the returned Request to send the API call to the service.
9512// the "output" return value is not valid until after Send returns without error.
9513//
9514// See PutObjectLegalHold for more information on using the PutObjectLegalHold
9515// API call, and error handling.
9516//
9517// This method is useful when you want to inject custom logic or configuration
9518// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9519//
9520//
9521//    // Example sending a request using the PutObjectLegalHoldRequest method.
9522//    req, resp := client.PutObjectLegalHoldRequest(params)
9523//
9524//    err := req.Send()
9525//    if err == nil { // resp is now filled
9526//        fmt.Println(resp)
9527//    }
9528//
9529// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
9530func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
9531	op := &request.Operation{
9532		Name:       opPutObjectLegalHold,
9533		HTTPMethod: "PUT",
9534		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
9535	}
9536
9537	if input == nil {
9538		input = &PutObjectLegalHoldInput{}
9539	}
9540
9541	output = &PutObjectLegalHoldOutput{}
9542	req = c.newRequest(op, input, output)
9543	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9544		Name: "contentMd5Handler",
9545		Fn:   checksum.AddBodyContentMD5Handler,
9546	})
9547	return
9548}
9549
9550// PutObjectLegalHold API operation for Amazon Simple Storage Service.
9551//
9552// Applies a Legal Hold configuration to the specified object. For more information,
9553// see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9554//
9555// This action is not supported by Amazon S3 on Outposts.
9556//
9557// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9558// with awserr.Error's Code and Message methods to get detailed information about
9559// the error.
9560//
9561// See the AWS API reference guide for Amazon Simple Storage Service's
9562// API operation PutObjectLegalHold for usage and error information.
9563// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
9564func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
9565	req, out := c.PutObjectLegalHoldRequest(input)
9566	return out, req.Send()
9567}
9568
9569// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
9570// the ability to pass a context and additional request options.
9571//
9572// See PutObjectLegalHold for details on how to use this API operation.
9573//
9574// The context must be non-nil and will be used for request cancellation. If
9575// the context is nil a panic will occur. In the future the SDK may create
9576// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9577// for more information on using Contexts.
9578func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
9579	req, out := c.PutObjectLegalHoldRequest(input)
9580	req.SetContext(ctx)
9581	req.ApplyOptions(opts...)
9582	return out, req.Send()
9583}
9584
9585const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
9586
9587// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
9588// client's request for the PutObjectLockConfiguration operation. The "output" return
9589// value will be populated with the request's response once the request completes
9590// successfully.
9591//
9592// Use "Send" method on the returned Request to send the API call to the service.
9593// the "output" return value is not valid until after Send returns without error.
9594//
9595// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
9596// API call, and error handling.
9597//
9598// This method is useful when you want to inject custom logic or configuration
9599// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9600//
9601//
9602//    // Example sending a request using the PutObjectLockConfigurationRequest method.
9603//    req, resp := client.PutObjectLockConfigurationRequest(params)
9604//
9605//    err := req.Send()
9606//    if err == nil { // resp is now filled
9607//        fmt.Println(resp)
9608//    }
9609//
9610// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
9611func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
9612	op := &request.Operation{
9613		Name:       opPutObjectLockConfiguration,
9614		HTTPMethod: "PUT",
9615		HTTPPath:   "/{Bucket}?object-lock",
9616	}
9617
9618	if input == nil {
9619		input = &PutObjectLockConfigurationInput{}
9620	}
9621
9622	output = &PutObjectLockConfigurationOutput{}
9623	req = c.newRequest(op, input, output)
9624	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9625		Name: "contentMd5Handler",
9626		Fn:   checksum.AddBodyContentMD5Handler,
9627	})
9628	return
9629}
9630
9631// PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
9632//
9633// Places an Object Lock configuration on the specified bucket. The rule specified
9634// in the Object Lock configuration will be applied by default to every new
9635// object placed in the specified bucket. For more information, see Locking
9636// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9637//
9638//    * The DefaultRetention settings require both a mode and a period.
9639//
9640//    * The DefaultRetention period can be either Days or Years but you must
9641//    select one. You cannot specify Days and Years at the same time.
9642//
9643//    * You can only enable Object Lock for new buckets. If you want to turn
9644//    on Object Lock for an existing bucket, contact Amazon Web Services Support.
9645//
9646// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9647// with awserr.Error's Code and Message methods to get detailed information about
9648// the error.
9649//
9650// See the AWS API reference guide for Amazon Simple Storage Service's
9651// API operation PutObjectLockConfiguration for usage and error information.
9652// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
9653func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
9654	req, out := c.PutObjectLockConfigurationRequest(input)
9655	return out, req.Send()
9656}
9657
9658// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
9659// the ability to pass a context and additional request options.
9660//
9661// See PutObjectLockConfiguration for details on how to use this API operation.
9662//
9663// The context must be non-nil and will be used for request cancellation. If
9664// the context is nil a panic will occur. In the future the SDK may create
9665// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9666// for more information on using Contexts.
9667func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
9668	req, out := c.PutObjectLockConfigurationRequest(input)
9669	req.SetContext(ctx)
9670	req.ApplyOptions(opts...)
9671	return out, req.Send()
9672}
9673
9674const opPutObjectRetention = "PutObjectRetention"
9675
9676// PutObjectRetentionRequest generates a "aws/request.Request" representing the
9677// client's request for the PutObjectRetention operation. The "output" return
9678// value will be populated with the request's response once the request completes
9679// successfully.
9680//
9681// Use "Send" method on the returned Request to send the API call to the service.
9682// the "output" return value is not valid until after Send returns without error.
9683//
9684// See PutObjectRetention for more information on using the PutObjectRetention
9685// API call, and error handling.
9686//
9687// This method is useful when you want to inject custom logic or configuration
9688// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9689//
9690//
9691//    // Example sending a request using the PutObjectRetentionRequest method.
9692//    req, resp := client.PutObjectRetentionRequest(params)
9693//
9694//    err := req.Send()
9695//    if err == nil { // resp is now filled
9696//        fmt.Println(resp)
9697//    }
9698//
9699// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
9700func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
9701	op := &request.Operation{
9702		Name:       opPutObjectRetention,
9703		HTTPMethod: "PUT",
9704		HTTPPath:   "/{Bucket}/{Key+}?retention",
9705	}
9706
9707	if input == nil {
9708		input = &PutObjectRetentionInput{}
9709	}
9710
9711	output = &PutObjectRetentionOutput{}
9712	req = c.newRequest(op, input, output)
9713	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9714		Name: "contentMd5Handler",
9715		Fn:   checksum.AddBodyContentMD5Handler,
9716	})
9717	return
9718}
9719
9720// PutObjectRetention API operation for Amazon Simple Storage Service.
9721//
9722// Places an Object Retention configuration on an object. For more information,
9723// see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9724// Users or accounts require the s3:PutObjectRetention permission in order to
9725// place an Object Retention configuration on objects. Bypassing a Governance
9726// Retention configuration requires the s3:BypassGovernanceRetention permission.
9727//
9728// This action is not supported by Amazon S3 on Outposts.
9729//
9730// Permissions
9731//
9732// When the Object Lock retention mode is set to compliance, you need s3:PutObjectRetention
9733// and s3:BypassGovernanceRetention permissions. For other requests to PutObjectRetention,
9734// only s3:PutObjectRetention permissions are required.
9735//
9736// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9737// with awserr.Error's Code and Message methods to get detailed information about
9738// the error.
9739//
9740// See the AWS API reference guide for Amazon Simple Storage Service's
9741// API operation PutObjectRetention for usage and error information.
9742// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
9743func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
9744	req, out := c.PutObjectRetentionRequest(input)
9745	return out, req.Send()
9746}
9747
9748// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
9749// the ability to pass a context and additional request options.
9750//
9751// See PutObjectRetention for details on how to use this API operation.
9752//
9753// The context must be non-nil and will be used for request cancellation. If
9754// the context is nil a panic will occur. In the future the SDK may create
9755// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9756// for more information on using Contexts.
9757func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
9758	req, out := c.PutObjectRetentionRequest(input)
9759	req.SetContext(ctx)
9760	req.ApplyOptions(opts...)
9761	return out, req.Send()
9762}
9763
9764const opPutObjectTagging = "PutObjectTagging"
9765
9766// PutObjectTaggingRequest generates a "aws/request.Request" representing the
9767// client's request for the PutObjectTagging operation. The "output" return
9768// value will be populated with the request's response once the request completes
9769// successfully.
9770//
9771// Use "Send" method on the returned Request to send the API call to the service.
9772// the "output" return value is not valid until after Send returns without error.
9773//
9774// See PutObjectTagging for more information on using the PutObjectTagging
9775// API call, and error handling.
9776//
9777// This method is useful when you want to inject custom logic or configuration
9778// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9779//
9780//
9781//    // Example sending a request using the PutObjectTaggingRequest method.
9782//    req, resp := client.PutObjectTaggingRequest(params)
9783//
9784//    err := req.Send()
9785//    if err == nil { // resp is now filled
9786//        fmt.Println(resp)
9787//    }
9788//
9789// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9790func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
9791	op := &request.Operation{
9792		Name:       opPutObjectTagging,
9793		HTTPMethod: "PUT",
9794		HTTPPath:   "/{Bucket}/{Key+}?tagging",
9795	}
9796
9797	if input == nil {
9798		input = &PutObjectTaggingInput{}
9799	}
9800
9801	output = &PutObjectTaggingOutput{}
9802	req = c.newRequest(op, input, output)
9803	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9804		Name: "contentMd5Handler",
9805		Fn:   checksum.AddBodyContentMD5Handler,
9806	})
9807	return
9808}
9809
9810// PutObjectTagging API operation for Amazon Simple Storage Service.
9811//
9812// Sets the supplied tag-set to an object that already exists in a bucket.
9813//
9814// A tag is a key-value pair. You can associate tags with an object by sending
9815// a PUT request against the tagging subresource that is associated with the
9816// object. You can retrieve tags by sending a GET request. For more information,
9817// see GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html).
9818//
9819// For tagging-related restrictions related to characters and encodings, see
9820// Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
9821// Note that Amazon S3 limits the maximum number of tags to 10 tags per object.
9822//
9823// To use this operation, you must have permission to perform the s3:PutObjectTagging
9824// action. By default, the bucket owner has this permission and can grant this
9825// permission to others.
9826//
9827// To put tags of any other version, use the versionId query parameter. You
9828// also need permission for the s3:PutObjectVersionTagging action.
9829//
9830// For information about the Amazon S3 object tagging feature, see Object Tagging
9831// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9832//
9833// Special Errors
9834//
9835//    * Code: InvalidTagError Cause: The tag provided was not a valid tag. This
9836//    error can occur if the tag did not pass input validation. For more information,
9837//    see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9838//
9839//    * Code: MalformedXMLError Cause: The XML provided does not match the schema.
9840//
9841//    * Code: OperationAbortedError Cause: A conflicting conditional action
9842//    is currently in progress against this resource. Please try again.
9843//
9844//    * Code: InternalError Cause: The service was unable to apply the provided
9845//    tag to the object.
9846//
9847// Related Resources
9848//
9849//    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
9850//
9851//    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
9852//
9853// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9854// with awserr.Error's Code and Message methods to get detailed information about
9855// the error.
9856//
9857// See the AWS API reference guide for Amazon Simple Storage Service's
9858// API operation PutObjectTagging for usage and error information.
9859// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9860func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
9861	req, out := c.PutObjectTaggingRequest(input)
9862	return out, req.Send()
9863}
9864
9865// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
9866// the ability to pass a context and additional request options.
9867//
9868// See PutObjectTagging for details on how to use this API operation.
9869//
9870// The context must be non-nil and will be used for request cancellation. If
9871// the context is nil a panic will occur. In the future the SDK may create
9872// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9873// for more information on using Contexts.
9874func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
9875	req, out := c.PutObjectTaggingRequest(input)
9876	req.SetContext(ctx)
9877	req.ApplyOptions(opts...)
9878	return out, req.Send()
9879}
9880
9881const opPutPublicAccessBlock = "PutPublicAccessBlock"
9882
9883// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
9884// client's request for the PutPublicAccessBlock operation. The "output" return
9885// value will be populated with the request's response once the request completes
9886// successfully.
9887//
9888// Use "Send" method on the returned Request to send the API call to the service.
9889// the "output" return value is not valid until after Send returns without error.
9890//
9891// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
9892// API call, and error handling.
9893//
9894// This method is useful when you want to inject custom logic or configuration
9895// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9896//
9897//
9898//    // Example sending a request using the PutPublicAccessBlockRequest method.
9899//    req, resp := client.PutPublicAccessBlockRequest(params)
9900//
9901//    err := req.Send()
9902//    if err == nil { // resp is now filled
9903//        fmt.Println(resp)
9904//    }
9905//
9906// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9907func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
9908	op := &request.Operation{
9909		Name:       opPutPublicAccessBlock,
9910		HTTPMethod: "PUT",
9911		HTTPPath:   "/{Bucket}?publicAccessBlock",
9912	}
9913
9914	if input == nil {
9915		input = &PutPublicAccessBlockInput{}
9916	}
9917
9918	output = &PutPublicAccessBlockOutput{}
9919	req = c.newRequest(op, input, output)
9920	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9921	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9922		Name: "contentMd5Handler",
9923		Fn:   checksum.AddBodyContentMD5Handler,
9924	})
9925	return
9926}
9927
9928// PutPublicAccessBlock API operation for Amazon Simple Storage Service.
9929//
9930// Creates or modifies the PublicAccessBlock configuration for an Amazon S3
9931// bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock
9932// permission. For more information about Amazon S3 permissions, see Specifying
9933// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
9934//
9935// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
9936// or an object, it checks the PublicAccessBlock configuration for both the
9937// bucket (or the bucket that contains the object) and the bucket owner's account.
9938// If the PublicAccessBlock configurations are different between the bucket
9939// and the account, Amazon S3 uses the most restrictive combination of the bucket-level
9940// and account-level settings.
9941//
9942// For more information about when Amazon S3 considers a bucket or an object
9943// 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).
9944//
9945// Related Resources
9946//
9947//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
9948//
9949//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
9950//
9951//    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
9952//
9953//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
9954//
9955// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9956// with awserr.Error's Code and Message methods to get detailed information about
9957// the error.
9958//
9959// See the AWS API reference guide for Amazon Simple Storage Service's
9960// API operation PutPublicAccessBlock for usage and error information.
9961// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9962func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
9963	req, out := c.PutPublicAccessBlockRequest(input)
9964	return out, req.Send()
9965}
9966
9967// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
9968// the ability to pass a context and additional request options.
9969//
9970// See PutPublicAccessBlock for details on how to use this API operation.
9971//
9972// The context must be non-nil and will be used for request cancellation. If
9973// the context is nil a panic will occur. In the future the SDK may create
9974// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9975// for more information on using Contexts.
9976func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
9977	req, out := c.PutPublicAccessBlockRequest(input)
9978	req.SetContext(ctx)
9979	req.ApplyOptions(opts...)
9980	return out, req.Send()
9981}
9982
9983const opRestoreObject = "RestoreObject"
9984
9985// RestoreObjectRequest generates a "aws/request.Request" representing the
9986// client's request for the RestoreObject operation. The "output" return
9987// value will be populated with the request's response once the request completes
9988// successfully.
9989//
9990// Use "Send" method on the returned Request to send the API call to the service.
9991// the "output" return value is not valid until after Send returns without error.
9992//
9993// See RestoreObject for more information on using the RestoreObject
9994// API call, and error handling.
9995//
9996// This method is useful when you want to inject custom logic or configuration
9997// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9998//
9999//
10000//    // Example sending a request using the RestoreObjectRequest method.
10001//    req, resp := client.RestoreObjectRequest(params)
10002//
10003//    err := req.Send()
10004//    if err == nil { // resp is now filled
10005//        fmt.Println(resp)
10006//    }
10007//
10008// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
10009func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
10010	op := &request.Operation{
10011		Name:       opRestoreObject,
10012		HTTPMethod: "POST",
10013		HTTPPath:   "/{Bucket}/{Key+}?restore",
10014	}
10015
10016	if input == nil {
10017		input = &RestoreObjectInput{}
10018	}
10019
10020	output = &RestoreObjectOutput{}
10021	req = c.newRequest(op, input, output)
10022	return
10023}
10024
10025// RestoreObject API operation for Amazon Simple Storage Service.
10026//
10027// Restores an archived copy of an object back into Amazon S3
10028//
10029// This action is not supported by Amazon S3 on Outposts.
10030//
10031// This action performs the following types of requests:
10032//
10033//    * select - Perform a select query on an archived object
10034//
10035//    * restore an archive - Restore an archived object
10036//
10037// To use this operation, you must have permissions to perform the s3:RestoreObject
10038// action. The bucket owner has this permission by default and can grant this
10039// permission to others. For more information about permissions, see Permissions
10040// 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)
10041// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
10042// in the Amazon S3 User Guide.
10043//
10044// Querying Archives with Select Requests
10045//
10046// You use a select type of request to perform SQL queries on archived objects.
10047// The archived objects that are being queried by the select request must be
10048// formatted as uncompressed comma-separated values (CSV) files. You can run
10049// queries and custom analytics on your archived data without having to restore
10050// your data to a hotter Amazon S3 tier. For an overview about select requests,
10051// see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
10052// in the Amazon S3 User Guide.
10053//
10054// When making a select request, do the following:
10055//
10056//    * Define an output location for the select query's output. This must be
10057//    an Amazon S3 bucket in the same Amazon Web Services Region as the bucket
10058//    that contains the archive object that is being queried. The Amazon Web
10059//    Services account that initiates the job must have permissions to write
10060//    to the S3 bucket. You can specify the storage class and encryption for
10061//    the output objects stored in the bucket. For more information about output,
10062//    see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
10063//    in the Amazon S3 User Guide. For more information about the S3 structure
10064//    in the request body, see the following: PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
10065//    Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html)
10066//    in the Amazon S3 User Guide Protecting Data Using Server-Side Encryption
10067//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
10068//    in the Amazon S3 User Guide
10069//
10070//    * Define the SQL expression for the SELECT type of restoration for your
10071//    query in the request body's SelectParameters structure. You can use expressions
10072//    like the following examples. The following expression returns all records
10073//    from the specified object. SELECT * FROM Object Assuming that you are
10074//    not using any headers for data stored in the object, you can specify columns
10075//    with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 >
10076//    100 If you have headers and you set the fileHeaderInfo in the CSV structure
10077//    in the request body to USE, you can specify headers in the query. (If
10078//    you set the fileHeaderInfo field to IGNORE, the first row is skipped for
10079//    the query.) You cannot mix ordinal positions with header column names.
10080//    SELECT s.Id, s.FirstName, s.SSN FROM S3Object s
10081//
10082// For more information about using SQL with S3 Glacier Select restore, see
10083// SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10084// in the Amazon S3 User Guide.
10085//
10086// When making a select request, you can also do the following:
10087//
10088//    * To expedite your queries, specify the Expedited tier. For more information
10089//    about tiers, see "Restoring Archives," later in this topic.
10090//
10091//    * Specify details about the data serialization format of both the input
10092//    object that is being queried and the serialization of the CSV-encoded
10093//    query results.
10094//
10095// The following are additional important facts about the select feature:
10096//
10097//    * The output results are new Amazon S3 objects. Unlike archive retrievals,
10098//    they are stored until explicitly deleted-manually or through a lifecycle
10099//    policy.
10100//
10101//    * You can issue more than one select request on the same Amazon S3 object.
10102//    Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests.
10103//
10104//    * Amazon S3 accepts a select request even if the object has already been
10105//    restored. A select request doesn’t return error response 409.
10106//
10107// Restoring objects
10108//
10109// Objects that you archive to the S3 Glacier or S3 Glacier Deep Archive storage
10110// class, and S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep
10111// Archive tiers are not accessible in real time. For objects in Archive Access
10112// or Deep Archive Access tiers you must first initiate a restore request, and
10113// then wait until the object is moved into the Frequent Access tier. For objects
10114// in S3 Glacier or S3 Glacier Deep Archive storage classes you must first initiate
10115// a restore request, and then wait until a temporary copy of the object is
10116// available. To access an archived object, you must restore the object for
10117// the duration (number of days) that you specify.
10118//
10119// To restore a specific object version, you can provide a version ID. If you
10120// don't provide a version ID, Amazon S3 restores the current version.
10121//
10122// When restoring an archived object (or using a select request), you can specify
10123// one of the following data access tier options in the Tier element of the
10124// request body:
10125//
10126//    * Expedited - Expedited retrievals allow you to quickly access your data
10127//    stored in the S3 Glacier storage class or S3 Intelligent-Tiering Archive
10128//    tier when occasional urgent requests for a subset of archives are required.
10129//    For all but the largest archived objects (250 MB+), data accessed using
10130//    Expedited retrievals is typically made available within 1–5 minutes.
10131//    Provisioned capacity ensures that retrieval capacity for Expedited retrievals
10132//    is available when you need it. Expedited retrievals and provisioned capacity
10133//    are not available for objects stored in the S3 Glacier Deep Archive storage
10134//    class or S3 Intelligent-Tiering Deep Archive tier.
10135//
10136//    * Standard - Standard retrievals allow you to access any of your archived
10137//    objects within several hours. This is the default option for retrieval
10138//    requests that do not specify the retrieval option. Standard retrievals
10139//    typically finish within 3–5 hours for objects stored in the S3 Glacier
10140//    storage class or S3 Intelligent-Tiering Archive tier. They typically finish
10141//    within 12 hours for objects stored in the S3 Glacier Deep Archive storage
10142//    class or S3 Intelligent-Tiering Deep Archive tier. Standard retrievals
10143//    are free for objects stored in S3 Intelligent-Tiering.
10144//
10145//    * Bulk - Bulk retrievals are the lowest-cost retrieval option in S3 Glacier,
10146//    enabling you to retrieve large amounts, even petabytes, of data inexpensively.
10147//    Bulk retrievals typically finish within 5–12 hours for objects stored
10148//    in the S3 Glacier storage class or S3 Intelligent-Tiering Archive tier.
10149//    They typically finish within 48 hours for objects stored in the S3 Glacier
10150//    Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier.
10151//    Bulk retrievals are free for objects stored in S3 Intelligent-Tiering.
10152//
10153// For more information about archive retrieval options and provisioned capacity
10154// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
10155// in the Amazon S3 User Guide.
10156//
10157// You can use Amazon S3 restore speed upgrade to change the restore speed to
10158// a faster speed while it is in progress. For more information, see Upgrading
10159// the speed of an in-progress restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
10160// in the Amazon S3 User Guide.
10161//
10162// To get the status of object restoration, you can send a HEAD request. Operations
10163// return the x-amz-restore header, which provides information about the restoration
10164// status, in the response. You can use Amazon S3 event notifications to notify
10165// you when a restore is initiated or completed. For more information, see Configuring
10166// Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
10167// in the Amazon S3 User Guide.
10168//
10169// After restoring an archived object, you can update the restoration period
10170// by reissuing the request with a new period. Amazon S3 updates the restoration
10171// period relative to the current time and charges only for the request-there
10172// are no data transfer charges. You cannot update the restoration period when
10173// Amazon S3 is actively processing your current restore request for the object.
10174//
10175// If your bucket has a lifecycle configuration with a rule that includes an
10176// expiration action, the object expiration overrides the life span that you
10177// specify in a restore request. For example, if you restore an object copy
10178// for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes
10179// the object in 3 days. For more information about lifecycle configuration,
10180// see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10181// and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
10182// in Amazon S3 User Guide.
10183//
10184// Responses
10185//
10186// A successful action returns either the 200 OK or 202 Accepted status code.
10187//
10188//    * If the object is not previously restored, then Amazon S3 returns 202
10189//    Accepted in the response.
10190//
10191//    * If the object is previously restored, Amazon S3 returns 200 OK in the
10192//    response.
10193//
10194// Special Errors
10195//
10196//    * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress.
10197//    (This error does not apply to SELECT type requests.) HTTP Status Code:
10198//    409 Conflict SOAP Fault Code Prefix: Client
10199//
10200//    * Code: GlacierExpeditedRetrievalNotAvailable Cause: expedited retrievals
10201//    are currently not available. Try again later. (Returned if there is insufficient
10202//    capacity to process the Expedited request. This error applies only to
10203//    Expedited retrievals and not to S3 Standard or Bulk retrievals.) HTTP
10204//    Status Code: 503 SOAP Fault Code Prefix: N/A
10205//
10206// Related Resources
10207//
10208//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10209//
10210//    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
10211//
10212//    * SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10213//    in the Amazon S3 User Guide
10214//
10215// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10216// with awserr.Error's Code and Message methods to get detailed information about
10217// the error.
10218//
10219// See the AWS API reference guide for Amazon Simple Storage Service's
10220// API operation RestoreObject for usage and error information.
10221//
10222// Returned Error Codes:
10223//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
10224//   This action is not allowed against this storage tier.
10225//
10226// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
10227func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
10228	req, out := c.RestoreObjectRequest(input)
10229	return out, req.Send()
10230}
10231
10232// RestoreObjectWithContext is the same as RestoreObject with the addition of
10233// the ability to pass a context and additional request options.
10234//
10235// See RestoreObject for details on how to use this API operation.
10236//
10237// The context must be non-nil and will be used for request cancellation. If
10238// the context is nil a panic will occur. In the future the SDK may create
10239// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10240// for more information on using Contexts.
10241func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
10242	req, out := c.RestoreObjectRequest(input)
10243	req.SetContext(ctx)
10244	req.ApplyOptions(opts...)
10245	return out, req.Send()
10246}
10247
10248const opSelectObjectContent = "SelectObjectContent"
10249
10250// SelectObjectContentRequest generates a "aws/request.Request" representing the
10251// client's request for the SelectObjectContent operation. The "output" return
10252// value will be populated with the request's response once the request completes
10253// successfully.
10254//
10255// Use "Send" method on the returned Request to send the API call to the service.
10256// the "output" return value is not valid until after Send returns without error.
10257//
10258// See SelectObjectContent for more information on using the SelectObjectContent
10259// API call, and error handling.
10260//
10261// This method is useful when you want to inject custom logic or configuration
10262// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10263//
10264//
10265//    // Example sending a request using the SelectObjectContentRequest method.
10266//    req, resp := client.SelectObjectContentRequest(params)
10267//
10268//    err := req.Send()
10269//    if err == nil { // resp is now filled
10270//        fmt.Println(resp)
10271//    }
10272//
10273// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
10274func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
10275	op := &request.Operation{
10276		Name:       opSelectObjectContent,
10277		HTTPMethod: "POST",
10278		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
10279	}
10280
10281	if input == nil {
10282		input = &SelectObjectContentInput{}
10283	}
10284
10285	output = &SelectObjectContentOutput{}
10286	req = c.newRequest(op, input, output)
10287
10288	es := NewSelectObjectContentEventStream()
10289	req.Handlers.Unmarshal.PushBack(es.setStreamCloser)
10290	output.EventStream = es
10291
10292	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
10293	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
10294	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
10295	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
10296	return
10297}
10298
10299// SelectObjectContent API operation for Amazon Simple Storage Service.
10300//
10301// This action filters the contents of an Amazon S3 object based on a simple
10302// structured query language (SQL) statement. In the request, along with the
10303// SQL expression, you must also specify a data serialization format (JSON,
10304// CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse
10305// object data into records, and returns only records that match the specified
10306// SQL expression. You must also specify the data serialization format for the
10307// response.
10308//
10309// This action is not supported by Amazon S3 on Outposts.
10310//
10311// For more information about Amazon S3 Select, see Selecting Content from Objects
10312// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
10313// in the Amazon S3 User Guide.
10314//
10315// For more information about using SQL with Amazon S3 Select, see SQL Reference
10316// for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10317// in the Amazon S3 User Guide.
10318//
10319// Permissions
10320//
10321// You must have s3:GetObject permission for this operation. Amazon S3 Select
10322// does not support anonymous access. For more information about permissions,
10323// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
10324// in the Amazon S3 User Guide.
10325//
10326// Object Data Formats
10327//
10328// You can use Amazon S3 Select to query objects that have the following format
10329// properties:
10330//
10331//    * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format.
10332//
10333//    * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.
10334//
10335//    * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2.
10336//    GZIP and BZIP2 are the only compression formats that Amazon S3 Select
10337//    supports for CSV and JSON files. Amazon S3 Select supports columnar compression
10338//    for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object
10339//    compression for Parquet objects.
10340//
10341//    * Server-side encryption - Amazon S3 Select supports querying objects
10342//    that are protected with server-side encryption. For objects that are encrypted
10343//    with customer-provided encryption keys (SSE-C), you must use HTTPS, and
10344//    you must use the headers that are documented in the GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
10345//    For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
10346//    Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
10347//    in the Amazon S3 User Guide. For objects that are encrypted with Amazon
10348//    S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS),
10349//    server-side encryption is handled transparently, so you don't need to
10350//    specify anything. For more information about server-side encryption, including
10351//    SSE-S3 and SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
10352//    in the Amazon S3 User Guide.
10353//
10354// Working with the Response Body
10355//
10356// Given the response size is unknown, Amazon S3 Select streams the response
10357// as a series of messages and includes a Transfer-Encoding header with chunked
10358// as its value in the response. For more information, see Appendix: SelectObjectContent
10359// Response (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html).
10360//
10361// GetObject Support
10362//
10363// The SelectObjectContent action does not support the following GetObject functionality.
10364// For more information, see GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
10365//
10366//    * Range: Although you can specify a scan range for an Amazon S3 Select
10367//    request (see SelectObjectContentRequest - ScanRange (https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange)
10368//    in the request parameters), you cannot specify the range of bytes of an
10369//    object to return.
10370//
10371//    * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
10372//    specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
10373//    For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
10374//    in the Amazon S3 User Guide.
10375//
10376// Special Errors
10377//
10378// For a list of special errors for this operation, see List of SELECT Object
10379// Content Error Codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList)
10380//
10381// Related Resources
10382//
10383//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
10384//
10385//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
10386//
10387//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10388//
10389// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10390// with awserr.Error's Code and Message methods to get detailed information about
10391// the error.
10392//
10393// See the AWS API reference guide for Amazon Simple Storage Service's
10394// API operation SelectObjectContent for usage and error information.
10395// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
10396func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
10397	req, out := c.SelectObjectContentRequest(input)
10398	return out, req.Send()
10399}
10400
10401// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
10402// the ability to pass a context and additional request options.
10403//
10404// See SelectObjectContent for details on how to use this API operation.
10405//
10406// The context must be non-nil and will be used for request cancellation. If
10407// the context is nil a panic will occur. In the future the SDK may create
10408// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10409// for more information on using Contexts.
10410func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
10411	req, out := c.SelectObjectContentRequest(input)
10412	req.SetContext(ctx)
10413	req.ApplyOptions(opts...)
10414	return out, req.Send()
10415}
10416
10417var _ awserr.Error
10418
10419// SelectObjectContentEventStream provides the event stream handling for the SelectObjectContent.
10420//
10421// For testing and mocking the event stream this type should be initialized via
10422// the NewSelectObjectContentEventStream constructor function. Using the functional options
10423// to pass in nested mock behavior.
10424type SelectObjectContentEventStream struct {
10425
10426	// Reader is the EventStream reader for the SelectObjectContentEventStream
10427	// events. This value is automatically set by the SDK when the API call is made
10428	// Use this member when unit testing your code with the SDK to mock out the
10429	// EventStream Reader.
10430	//
10431	// Must not be nil.
10432	Reader SelectObjectContentEventStreamReader
10433
10434	outputReader io.ReadCloser
10435
10436	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
10437	// EventStream this is the response Body. The stream will be closed when
10438	// the Close method of the EventStream is called.
10439	StreamCloser io.Closer
10440
10441	done      chan struct{}
10442	closeOnce sync.Once
10443	err       *eventstreamapi.OnceError
10444}
10445
10446// NewSelectObjectContentEventStream initializes an SelectObjectContentEventStream.
10447// This function should only be used for testing and mocking the SelectObjectContentEventStream
10448// stream within your application.
10449//
10450// The Reader member must be set before reading events from the stream.
10451//
10452// The StreamCloser member should be set to the underlying io.Closer,
10453// (e.g. http.Response.Body), that will be closed when the stream Close method
10454// is called.
10455//
10456//   es := NewSelectObjectContentEventStream(func(o *SelectObjectContentEventStream{
10457//       es.Reader = myMockStreamReader
10458//       es.StreamCloser = myMockStreamCloser
10459//   })
10460func NewSelectObjectContentEventStream(opts ...func(*SelectObjectContentEventStream)) *SelectObjectContentEventStream {
10461	es := &SelectObjectContentEventStream{
10462		done: make(chan struct{}),
10463		err:  eventstreamapi.NewOnceError(),
10464	}
10465
10466	for _, fn := range opts {
10467		fn(es)
10468	}
10469
10470	return es
10471}
10472
10473func (es *SelectObjectContentEventStream) setStreamCloser(r *request.Request) {
10474	es.StreamCloser = r.HTTPResponse.Body
10475}
10476
10477func (es *SelectObjectContentEventStream) runOnStreamPartClose(r *request.Request) {
10478	if es.done == nil {
10479		return
10480	}
10481	go es.waitStreamPartClose()
10482
10483}
10484
10485func (es *SelectObjectContentEventStream) waitStreamPartClose() {
10486	var outputErrCh <-chan struct{}
10487	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
10488		outputErrCh = v.ErrorSet()
10489	}
10490	var outputClosedCh <-chan struct{}
10491	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
10492		outputClosedCh = v.Closed()
10493	}
10494
10495	select {
10496	case <-es.done:
10497	case <-outputErrCh:
10498		es.err.SetError(es.Reader.Err())
10499		es.Close()
10500	case <-outputClosedCh:
10501		if err := es.Reader.Err(); err != nil {
10502			es.err.SetError(es.Reader.Err())
10503		}
10504		es.Close()
10505	}
10506}
10507
10508// Events returns a channel to read events from.
10509//
10510// These events are:
10511//
10512//     * ContinuationEvent
10513//     * EndEvent
10514//     * ProgressEvent
10515//     * RecordsEvent
10516//     * StatsEvent
10517//     * SelectObjectContentEventStreamUnknownEvent
10518func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
10519	return es.Reader.Events()
10520}
10521
10522func (es *SelectObjectContentEventStream) runOutputStream(r *request.Request) {
10523	var opts []func(*eventstream.Decoder)
10524	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
10525		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
10526	}
10527
10528	unmarshalerForEvent := unmarshalerForSelectObjectContentEventStreamEvent{
10529		metadata: protocol.ResponseMetadata{
10530			StatusCode: r.HTTPResponse.StatusCode,
10531			RequestID:  r.RequestID,
10532		},
10533	}.UnmarshalerForEventName
10534
10535	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
10536	eventReader := eventstreamapi.NewEventReader(decoder,
10537		protocol.HandlerPayloadUnmarshal{
10538			Unmarshalers: r.Handlers.UnmarshalStream,
10539		},
10540		unmarshalerForEvent,
10541	)
10542
10543	es.outputReader = r.HTTPResponse.Body
10544	es.Reader = newReadSelectObjectContentEventStream(eventReader)
10545}
10546
10547// Close closes the stream. This will also cause the stream to be closed.
10548// Close must be called when done using the stream API. Not calling Close
10549// may result in resource leaks.
10550//
10551// You can use the closing of the Reader's Events channel to terminate your
10552// application's read from the API's stream.
10553//
10554func (es *SelectObjectContentEventStream) Close() (err error) {
10555	es.closeOnce.Do(es.safeClose)
10556	return es.Err()
10557}
10558
10559func (es *SelectObjectContentEventStream) safeClose() {
10560	if es.done != nil {
10561		close(es.done)
10562	}
10563
10564	es.Reader.Close()
10565	if es.outputReader != nil {
10566		es.outputReader.Close()
10567	}
10568
10569	es.StreamCloser.Close()
10570}
10571
10572// Err returns any error that occurred while reading or writing EventStream
10573// Events from the service API's response. Returns nil if there were no errors.
10574func (es *SelectObjectContentEventStream) Err() error {
10575	if err := es.err.Err(); err != nil {
10576		return err
10577	}
10578	if err := es.Reader.Err(); err != nil {
10579		return err
10580	}
10581
10582	return nil
10583}
10584
10585const opUploadPart = "UploadPart"
10586
10587// UploadPartRequest generates a "aws/request.Request" representing the
10588// client's request for the UploadPart operation. The "output" return
10589// value will be populated with the request's response once the request completes
10590// successfully.
10591//
10592// Use "Send" method on the returned Request to send the API call to the service.
10593// the "output" return value is not valid until after Send returns without error.
10594//
10595// See UploadPart for more information on using the UploadPart
10596// API call, and error handling.
10597//
10598// This method is useful when you want to inject custom logic or configuration
10599// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10600//
10601//
10602//    // Example sending a request using the UploadPartRequest method.
10603//    req, resp := client.UploadPartRequest(params)
10604//
10605//    err := req.Send()
10606//    if err == nil { // resp is now filled
10607//        fmt.Println(resp)
10608//    }
10609//
10610// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
10611func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
10612	op := &request.Operation{
10613		Name:       opUploadPart,
10614		HTTPMethod: "PUT",
10615		HTTPPath:   "/{Bucket}/{Key+}",
10616	}
10617
10618	if input == nil {
10619		input = &UploadPartInput{}
10620	}
10621
10622	output = &UploadPartOutput{}
10623	req = c.newRequest(op, input, output)
10624	return
10625}
10626
10627// UploadPart API operation for Amazon Simple Storage Service.
10628//
10629// Uploads a part in a multipart upload.
10630//
10631// In this operation, you provide part data in your request. However, you have
10632// an option to specify your existing Amazon S3 object as a data source for
10633// the part you are uploading. To upload a part from an existing object, you
10634// use the UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
10635// operation.
10636//
10637// You must initiate a multipart upload (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html))
10638// before you can upload any part. In response to your initiate request, Amazon
10639// S3 returns an upload ID, a unique identifier, that you must include in your
10640// upload part request.
10641//
10642// Part numbers can be any number from 1 to 10,000, inclusive. A part number
10643// uniquely identifies a part and also defines its position within the object
10644// being created. If you upload a new part using the same part number that was
10645// used with a previous part, the previously uploaded part is overwritten. Each
10646// part must be at least 5 MB in size, except the last part. There is no size
10647// limit on the last part of your multipart upload.
10648//
10649// To ensure that data is not corrupted when traversing the network, specify
10650// the Content-MD5 header in the upload part request. Amazon S3 checks the part
10651// data against the provided MD5 value. If they do not match, Amazon S3 returns
10652// an error.
10653//
10654// If the upload request is signed with Signature Version 4, then Amazon Web
10655// Services S3 uses the x-amz-content-sha256 header as a checksum instead of
10656// Content-MD5. For more information see Authenticating Requests: Using the
10657// Authorization Header (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html).
10658//
10659// Note: After you initiate multipart upload and upload one or more parts, you
10660// must either complete or abort multipart upload in order to stop getting charged
10661// for storage of the uploaded parts. Only after you either complete or abort
10662// multipart upload, Amazon S3 frees up the parts storage and stops charging
10663// you for the parts storage.
10664//
10665// For more information on multipart uploads, go to Multipart Upload Overview
10666// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the
10667// Amazon S3 User Guide .
10668//
10669// For information on the permissions required to use the multipart upload API,
10670// go to Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
10671// in the Amazon S3 User Guide.
10672//
10673// You can optionally request server-side encryption where Amazon S3 encrypts
10674// your data as it writes it to disks in its data centers and decrypts it for
10675// you when you access it. You have the option of providing your own encryption
10676// key, or you can use the Amazon Web Services managed encryption keys. If you
10677// choose to provide your own encryption key, the request headers you provide
10678// in the request must match the headers you used in the request to initiate
10679// the upload by using CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
10680// For more information, go to Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
10681// in the Amazon S3 User Guide.
10682//
10683// Server-side encryption is supported by the S3 Multipart Upload actions. Unless
10684// you are using a customer-provided encryption key, you don't need to specify
10685// the encryption parameters in each UploadPart request. Instead, you only need
10686// to specify the server-side encryption parameters in the initial Initiate
10687// Multipart request. For more information, see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
10688//
10689// If you requested server-side encryption using a customer-provided encryption
10690// key in your initiate multipart upload request, you must provide identical
10691// encryption information in each part upload using the following headers.
10692//
10693//    * x-amz-server-side-encryption-customer-algorithm
10694//
10695//    * x-amz-server-side-encryption-customer-key
10696//
10697//    * x-amz-server-side-encryption-customer-key-MD5
10698//
10699// Special Errors
10700//
10701//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
10702//    The upload ID might be invalid, or the multipart upload might have been
10703//    aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code
10704//    Prefix: Client
10705//
10706// Related Resources
10707//
10708//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
10709//
10710//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
10711//
10712//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
10713//
10714//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
10715//
10716//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
10717//
10718// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10719// with awserr.Error's Code and Message methods to get detailed information about
10720// the error.
10721//
10722// See the AWS API reference guide for Amazon Simple Storage Service's
10723// API operation UploadPart for usage and error information.
10724// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
10725func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
10726	req, out := c.UploadPartRequest(input)
10727	return out, req.Send()
10728}
10729
10730// UploadPartWithContext is the same as UploadPart with the addition of
10731// the ability to pass a context and additional request options.
10732//
10733// See UploadPart for details on how to use this API operation.
10734//
10735// The context must be non-nil and will be used for request cancellation. If
10736// the context is nil a panic will occur. In the future the SDK may create
10737// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10738// for more information on using Contexts.
10739func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
10740	req, out := c.UploadPartRequest(input)
10741	req.SetContext(ctx)
10742	req.ApplyOptions(opts...)
10743	return out, req.Send()
10744}
10745
10746const opUploadPartCopy = "UploadPartCopy"
10747
10748// UploadPartCopyRequest generates a "aws/request.Request" representing the
10749// client's request for the UploadPartCopy operation. The "output" return
10750// value will be populated with the request's response once the request completes
10751// successfully.
10752//
10753// Use "Send" method on the returned Request to send the API call to the service.
10754// the "output" return value is not valid until after Send returns without error.
10755//
10756// See UploadPartCopy for more information on using the UploadPartCopy
10757// API call, and error handling.
10758//
10759// This method is useful when you want to inject custom logic or configuration
10760// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10761//
10762//
10763//    // Example sending a request using the UploadPartCopyRequest method.
10764//    req, resp := client.UploadPartCopyRequest(params)
10765//
10766//    err := req.Send()
10767//    if err == nil { // resp is now filled
10768//        fmt.Println(resp)
10769//    }
10770//
10771// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
10772func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
10773	op := &request.Operation{
10774		Name:       opUploadPartCopy,
10775		HTTPMethod: "PUT",
10776		HTTPPath:   "/{Bucket}/{Key+}",
10777	}
10778
10779	if input == nil {
10780		input = &UploadPartCopyInput{}
10781	}
10782
10783	output = &UploadPartCopyOutput{}
10784	req = c.newRequest(op, input, output)
10785	return
10786}
10787
10788// UploadPartCopy API operation for Amazon Simple Storage Service.
10789//
10790// Uploads a part by copying data from an existing object as data source. You
10791// specify the data source by adding the request header x-amz-copy-source in
10792// your request and a byte range by adding the request header x-amz-copy-source-range
10793// in your request.
10794//
10795// The minimum allowable part size for a multipart upload is 5 MB. For more
10796// information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html)
10797// in the Amazon S3 User Guide.
10798//
10799// Instead of using an existing object as part data, you might use the UploadPart
10800// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) action
10801// and provide data in your request.
10802//
10803// You must initiate a multipart upload before you can upload any part. In response
10804// to your initiate request. Amazon S3 returns a unique identifier, the upload
10805// ID, that you must include in your upload part request.
10806//
10807// For more information about using the UploadPartCopy operation, see the following:
10808//
10809//    * For conceptual information about multipart uploads, see Uploading Objects
10810//    Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)
10811//    in the Amazon S3 User Guide.
10812//
10813//    * For information about permissions required to use the multipart upload
10814//    API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
10815//    in the Amazon S3 User Guide.
10816//
10817//    * For information about copying objects using a single atomic action vs.
10818//    the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html)
10819//    in the Amazon S3 User Guide.
10820//
10821//    * For information about using server-side encryption with customer-provided
10822//    encryption keys with the UploadPartCopy operation, see CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
10823//    and UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html).
10824//
10825// Note the following additional considerations about the request headers x-amz-copy-source-if-match,
10826// x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and
10827// x-amz-copy-source-if-modified-since:
10828//
10829//    * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
10830//    headers are present in the request as follows: x-amz-copy-source-if-match
10831//    condition evaluates to true, and; x-amz-copy-source-if-unmodified-since
10832//    condition evaluates to false; Amazon S3 returns 200 OK and copies the
10833//    data.
10834//
10835//    * Consideration 2 - If both of the x-amz-copy-source-if-none-match and
10836//    x-amz-copy-source-if-modified-since headers are present in the request
10837//    as follows: x-amz-copy-source-if-none-match condition evaluates to false,
10838//    and; x-amz-copy-source-if-modified-since condition evaluates to true;
10839//    Amazon S3 returns 412 Precondition Failed response code.
10840//
10841// Versioning
10842//
10843// If your bucket has versioning enabled, you could have multiple versions of
10844// the same object. By default, x-amz-copy-source identifies the current version
10845// of the object to copy. If the current version is a delete marker and you
10846// don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404
10847// error, because the object does not exist. If you specify versionId in the
10848// x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns
10849// an HTTP 400 error, because you are not allowed to specify a delete marker
10850// as a version for the x-amz-copy-source.
10851//
10852// You can optionally specify a specific version of the source object to copy
10853// by adding the versionId subresource as shown in the following example:
10854//
10855// x-amz-copy-source: /bucket/object?versionId=version id
10856//
10857// Special Errors
10858//
10859//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
10860//    The upload ID might be invalid, or the multipart upload might have been
10861//    aborted or completed. HTTP Status Code: 404 Not Found
10862//
10863//    * Code: InvalidRequest Cause: The specified copy source is not supported
10864//    as a byte-range copy source. HTTP Status Code: 400 Bad Request
10865//
10866// Related Resources
10867//
10868//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
10869//
10870//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
10871//
10872//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
10873//
10874//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
10875//
10876//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
10877//
10878//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
10879//
10880// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10881// with awserr.Error's Code and Message methods to get detailed information about
10882// the error.
10883//
10884// See the AWS API reference guide for Amazon Simple Storage Service's
10885// API operation UploadPartCopy for usage and error information.
10886// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
10887func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
10888	req, out := c.UploadPartCopyRequest(input)
10889	return out, req.Send()
10890}
10891
10892// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
10893// the ability to pass a context and additional request options.
10894//
10895// See UploadPartCopy for details on how to use this API operation.
10896//
10897// The context must be non-nil and will be used for request cancellation. If
10898// the context is nil a panic will occur. In the future the SDK may create
10899// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10900// for more information on using Contexts.
10901func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
10902	req, out := c.UploadPartCopyRequest(input)
10903	req.SetContext(ctx)
10904	req.ApplyOptions(opts...)
10905	return out, req.Send()
10906}
10907
10908const opWriteGetObjectResponse = "WriteGetObjectResponse"
10909
10910// WriteGetObjectResponseRequest generates a "aws/request.Request" representing the
10911// client's request for the WriteGetObjectResponse operation. The "output" return
10912// value will be populated with the request's response once the request completes
10913// successfully.
10914//
10915// Use "Send" method on the returned Request to send the API call to the service.
10916// the "output" return value is not valid until after Send returns without error.
10917//
10918// See WriteGetObjectResponse for more information on using the WriteGetObjectResponse
10919// API call, and error handling.
10920//
10921// This method is useful when you want to inject custom logic or configuration
10922// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10923//
10924//
10925//    // Example sending a request using the WriteGetObjectResponseRequest method.
10926//    req, resp := client.WriteGetObjectResponseRequest(params)
10927//
10928//    err := req.Send()
10929//    if err == nil { // resp is now filled
10930//        fmt.Println(resp)
10931//    }
10932//
10933// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
10934func (c *S3) WriteGetObjectResponseRequest(input *WriteGetObjectResponseInput) (req *request.Request, output *WriteGetObjectResponseOutput) {
10935	op := &request.Operation{
10936		Name:       opWriteGetObjectResponse,
10937		HTTPMethod: "POST",
10938		HTTPPath:   "/WriteGetObjectResponse",
10939	}
10940
10941	if input == nil {
10942		input = &WriteGetObjectResponseInput{}
10943	}
10944
10945	output = &WriteGetObjectResponseOutput{}
10946	req = c.newRequest(op, input, output)
10947	req.Handlers.Sign.Remove(v4.SignRequestHandler)
10948	handler := v4.BuildNamedHandler("v4.CustomSignerHandler", v4.WithUnsignedPayload)
10949	req.Handlers.Sign.PushFrontNamed(handler)
10950	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
10951	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("{RequestRoute}.", input.hostLabels))
10952	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
10953	return
10954}
10955
10956// WriteGetObjectResponse API operation for Amazon Simple Storage Service.
10957//
10958// Passes transformed objects to a GetObject operation when using Object Lambda
10959// access points. For information about Object Lambda access points, see Transforming
10960// objects with Object Lambda access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html)
10961// in the Amazon S3 User Guide.
10962//
10963// This operation supports metadata that can be returned by GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html),
10964// in addition to RequestRoute, RequestToken, StatusCode, ErrorCode, and ErrorMessage.
10965// The GetObject response metadata is supported so that the WriteGetObjectResponse
10966// caller, typically an Lambda function, can provide the same metadata when
10967// it internally invokes GetObject. When WriteGetObjectResponse is called by
10968// a customer-owned Lambda function, the metadata returned to the end user GetObject
10969// call might differ from what Amazon S3 would normally return.
10970//
10971// You can include any number of metadata headers. When including a metadata
10972// header, it should be prefaced with x-amz-meta. For example, x-amz-meta-my-custom-header:
10973// MyCustomValue. The primary use case for this is to forward GetObject metadata.
10974//
10975// Amazon Web Services provides some prebuilt Lambda functions that you can
10976// use with S3 Object Lambda to detect and redact personally identifiable information
10977// (PII) and decompress S3 objects. These Lambda functions are available in
10978// the Amazon Web Services Serverless Application Repository, and can be selected
10979// through the Amazon Web Services Management Console when you create your Object
10980// Lambda access point.
10981//
10982// Example 1: PII Access Control - This Lambda function uses Amazon Comprehend,
10983// a natural language processing (NLP) service using machine learning to find
10984// insights and relationships in text. It automatically detects personally identifiable
10985// information (PII) such as names, addresses, dates, credit card numbers, and
10986// social security numbers from documents in your Amazon S3 bucket.
10987//
10988// Example 2: PII Redaction - This Lambda function uses Amazon Comprehend, a
10989// natural language processing (NLP) service using machine learning to find
10990// insights and relationships in text. It automatically redacts personally identifiable
10991// information (PII) such as names, addresses, dates, credit card numbers, and
10992// social security numbers from documents in your Amazon S3 bucket.
10993//
10994// Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression,
10995// is equipped to decompress objects stored in S3 in one of six compressed file
10996// formats including bzip2, gzip, snappy, zlib, zstandard and ZIP.
10997//
10998// For information on how to view and use these functions, see Using Amazon
10999// Web Services built Lambda functions (https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-examples.html)
11000// in the Amazon S3 User Guide.
11001//
11002// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
11003// with awserr.Error's Code and Message methods to get detailed information about
11004// the error.
11005//
11006// See the AWS API reference guide for Amazon Simple Storage Service's
11007// API operation WriteGetObjectResponse for usage and error information.
11008// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
11009func (c *S3) WriteGetObjectResponse(input *WriteGetObjectResponseInput) (*WriteGetObjectResponseOutput, error) {
11010	req, out := c.WriteGetObjectResponseRequest(input)
11011	return out, req.Send()
11012}
11013
11014// WriteGetObjectResponseWithContext is the same as WriteGetObjectResponse with the addition of
11015// the ability to pass a context and additional request options.
11016//
11017// See WriteGetObjectResponse for details on how to use this API operation.
11018//
11019// The context must be non-nil and will be used for request cancellation. If
11020// the context is nil a panic will occur. In the future the SDK may create
11021// sub-contexts for http.Requests. See https://golang.org/pkg/context/
11022// for more information on using Contexts.
11023func (c *S3) WriteGetObjectResponseWithContext(ctx aws.Context, input *WriteGetObjectResponseInput, opts ...request.Option) (*WriteGetObjectResponseOutput, error) {
11024	req, out := c.WriteGetObjectResponseRequest(input)
11025	req.SetContext(ctx)
11026	req.ApplyOptions(opts...)
11027	return out, req.Send()
11028}
11029
11030// Specifies the days since the initiation of an incomplete multipart upload
11031// that Amazon S3 will wait before permanently removing all parts of the upload.
11032// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
11033// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
11034// in the Amazon S3 User Guide.
11035type AbortIncompleteMultipartUpload struct {
11036	_ struct{} `type:"structure"`
11037
11038	// Specifies the number of days after which Amazon S3 aborts an incomplete multipart
11039	// upload.
11040	DaysAfterInitiation *int64 `type:"integer"`
11041}
11042
11043// String returns the string representation.
11044//
11045// API parameter values that are decorated as "sensitive" in the API will not
11046// be included in the string output. The member name will be present, but the
11047// value will be replaced with "sensitive".
11048func (s AbortIncompleteMultipartUpload) String() string {
11049	return awsutil.Prettify(s)
11050}
11051
11052// GoString returns the string representation.
11053//
11054// API parameter values that are decorated as "sensitive" in the API will not
11055// be included in the string output. The member name will be present, but the
11056// value will be replaced with "sensitive".
11057func (s AbortIncompleteMultipartUpload) GoString() string {
11058	return s.String()
11059}
11060
11061// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
11062func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
11063	s.DaysAfterInitiation = &v
11064	return s
11065}
11066
11067type AbortMultipartUploadInput struct {
11068	_ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"`
11069
11070	// The bucket name to which the upload was taking place.
11071	//
11072	// When using this action with an access point, you must direct requests to
11073	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
11074	// When using this action with an access point through the Amazon Web Services
11075	// SDKs, you provide the access point ARN in place of the bucket name. For more
11076	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
11077	// in the Amazon S3 User Guide.
11078	//
11079	// When using this action with Amazon S3 on Outposts, you must direct requests
11080	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
11081	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
11082	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
11083	// you provide the Outposts bucket ARN in place of the bucket name. For more
11084	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
11085	// in the Amazon S3 User Guide.
11086	//
11087	// Bucket is a required field
11088	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11089
11090	// The account ID of the expected bucket owner. If the bucket is owned by a
11091	// different account, the request will fail with an HTTP 403 (Access Denied)
11092	// error.
11093	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
11094
11095	// Key of the object for which the multipart upload was initiated.
11096	//
11097	// Key is a required field
11098	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11099
11100	// Confirms that the requester knows that they will be charged for the request.
11101	// Bucket owners need not specify this parameter in their requests. For information
11102	// about downloading objects from requester pays buckets, see Downloading Objects
11103	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11104	// in the Amazon S3 User Guide.
11105	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11106
11107	// Upload ID that identifies the multipart upload.
11108	//
11109	// UploadId is a required field
11110	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
11111}
11112
11113// String returns the string representation.
11114//
11115// API parameter values that are decorated as "sensitive" in the API will not
11116// be included in the string output. The member name will be present, but the
11117// value will be replaced with "sensitive".
11118func (s AbortMultipartUploadInput) String() string {
11119	return awsutil.Prettify(s)
11120}
11121
11122// GoString returns the string representation.
11123//
11124// API parameter values that are decorated as "sensitive" in the API will not
11125// be included in the string output. The member name will be present, but the
11126// value will be replaced with "sensitive".
11127func (s AbortMultipartUploadInput) GoString() string {
11128	return s.String()
11129}
11130
11131// Validate inspects the fields of the type to determine if they are valid.
11132func (s *AbortMultipartUploadInput) Validate() error {
11133	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
11134	if s.Bucket == nil {
11135		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11136	}
11137	if s.Bucket != nil && len(*s.Bucket) < 1 {
11138		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11139	}
11140	if s.Key == nil {
11141		invalidParams.Add(request.NewErrParamRequired("Key"))
11142	}
11143	if s.Key != nil && len(*s.Key) < 1 {
11144		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11145	}
11146	if s.UploadId == nil {
11147		invalidParams.Add(request.NewErrParamRequired("UploadId"))
11148	}
11149
11150	if invalidParams.Len() > 0 {
11151		return invalidParams
11152	}
11153	return nil
11154}
11155
11156// SetBucket sets the Bucket field's value.
11157func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
11158	s.Bucket = &v
11159	return s
11160}
11161
11162func (s *AbortMultipartUploadInput) getBucket() (v string) {
11163	if s.Bucket == nil {
11164		return v
11165	}
11166	return *s.Bucket
11167}
11168
11169// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
11170func (s *AbortMultipartUploadInput) SetExpectedBucketOwner(v string) *AbortMultipartUploadInput {
11171	s.ExpectedBucketOwner = &v
11172	return s
11173}
11174
11175// SetKey sets the Key field's value.
11176func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
11177	s.Key = &v
11178	return s
11179}
11180
11181// SetRequestPayer sets the RequestPayer field's value.
11182func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
11183	s.RequestPayer = &v
11184	return s
11185}
11186
11187// SetUploadId sets the UploadId field's value.
11188func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
11189	s.UploadId = &v
11190	return s
11191}
11192
11193func (s *AbortMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
11194	if s.Bucket == nil {
11195		return nil, fmt.Errorf("member Bucket is nil")
11196	}
11197	return parseEndpointARN(*s.Bucket)
11198}
11199
11200func (s *AbortMultipartUploadInput) hasEndpointARN() bool {
11201	if s.Bucket == nil {
11202		return false
11203	}
11204	return arn.IsARN(*s.Bucket)
11205}
11206
11207// updateArnableField updates the value of the input field that
11208// takes an ARN as an input. This method is useful to backfill
11209// the parsed resource name from ARN into the input member.
11210// It returns a pointer to a modified copy of input and an error.
11211// Note that original input is not modified.
11212func (s AbortMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
11213	if s.Bucket == nil {
11214		return nil, fmt.Errorf("member Bucket is nil")
11215	}
11216	s.Bucket = aws.String(v)
11217	return &s, nil
11218}
11219
11220type AbortMultipartUploadOutput struct {
11221	_ struct{} `type:"structure"`
11222
11223	// If present, indicates that the requester was successfully charged for the
11224	// request.
11225	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11226}
11227
11228// String returns the string representation.
11229//
11230// API parameter values that are decorated as "sensitive" in the API will not
11231// be included in the string output. The member name will be present, but the
11232// value will be replaced with "sensitive".
11233func (s AbortMultipartUploadOutput) String() string {
11234	return awsutil.Prettify(s)
11235}
11236
11237// GoString returns the string representation.
11238//
11239// API parameter values that are decorated as "sensitive" in the API will not
11240// be included in the string output. The member name will be present, but the
11241// value will be replaced with "sensitive".
11242func (s AbortMultipartUploadOutput) GoString() string {
11243	return s.String()
11244}
11245
11246// SetRequestCharged sets the RequestCharged field's value.
11247func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
11248	s.RequestCharged = &v
11249	return s
11250}
11251
11252// Configures the transfer acceleration state for an Amazon S3 bucket. For more
11253// information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
11254// in the Amazon S3 User Guide.
11255type AccelerateConfiguration struct {
11256	_ struct{} `type:"structure"`
11257
11258	// Specifies the transfer acceleration status of the bucket.
11259	Status *string `type:"string" enum:"BucketAccelerateStatus"`
11260}
11261
11262// String returns the string representation.
11263//
11264// API parameter values that are decorated as "sensitive" in the API will not
11265// be included in the string output. The member name will be present, but the
11266// value will be replaced with "sensitive".
11267func (s AccelerateConfiguration) String() string {
11268	return awsutil.Prettify(s)
11269}
11270
11271// GoString returns the string representation.
11272//
11273// API parameter values that are decorated as "sensitive" in the API will not
11274// be included in the string output. The member name will be present, but the
11275// value will be replaced with "sensitive".
11276func (s AccelerateConfiguration) GoString() string {
11277	return s.String()
11278}
11279
11280// SetStatus sets the Status field's value.
11281func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
11282	s.Status = &v
11283	return s
11284}
11285
11286// Contains the elements that set the ACL permissions for an object per grantee.
11287type AccessControlPolicy struct {
11288	_ struct{} `type:"structure"`
11289
11290	// A list of grants.
11291	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
11292
11293	// Container for the bucket owner's display name and ID.
11294	Owner *Owner `type:"structure"`
11295}
11296
11297// String returns the string representation.
11298//
11299// API parameter values that are decorated as "sensitive" in the API will not
11300// be included in the string output. The member name will be present, but the
11301// value will be replaced with "sensitive".
11302func (s AccessControlPolicy) String() string {
11303	return awsutil.Prettify(s)
11304}
11305
11306// GoString returns the string representation.
11307//
11308// API parameter values that are decorated as "sensitive" in the API will not
11309// be included in the string output. The member name will be present, but the
11310// value will be replaced with "sensitive".
11311func (s AccessControlPolicy) GoString() string {
11312	return s.String()
11313}
11314
11315// Validate inspects the fields of the type to determine if they are valid.
11316func (s *AccessControlPolicy) Validate() error {
11317	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
11318	if s.Grants != nil {
11319		for i, v := range s.Grants {
11320			if v == nil {
11321				continue
11322			}
11323			if err := v.Validate(); err != nil {
11324				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
11325			}
11326		}
11327	}
11328
11329	if invalidParams.Len() > 0 {
11330		return invalidParams
11331	}
11332	return nil
11333}
11334
11335// SetGrants sets the Grants field's value.
11336func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
11337	s.Grants = v
11338	return s
11339}
11340
11341// SetOwner sets the Owner field's value.
11342func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
11343	s.Owner = v
11344	return s
11345}
11346
11347// A container for information about access control for replicas.
11348type AccessControlTranslation struct {
11349	_ struct{} `type:"structure"`
11350
11351	// Specifies the replica ownership. For default and valid values, see PUT bucket
11352	// replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
11353	// in the Amazon S3 API Reference.
11354	//
11355	// Owner is a required field
11356	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
11357}
11358
11359// String returns the string representation.
11360//
11361// API parameter values that are decorated as "sensitive" in the API will not
11362// be included in the string output. The member name will be present, but the
11363// value will be replaced with "sensitive".
11364func (s AccessControlTranslation) String() string {
11365	return awsutil.Prettify(s)
11366}
11367
11368// GoString returns the string representation.
11369//
11370// API parameter values that are decorated as "sensitive" in the API will not
11371// be included in the string output. The member name will be present, but the
11372// value will be replaced with "sensitive".
11373func (s AccessControlTranslation) GoString() string {
11374	return s.String()
11375}
11376
11377// Validate inspects the fields of the type to determine if they are valid.
11378func (s *AccessControlTranslation) Validate() error {
11379	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
11380	if s.Owner == nil {
11381		invalidParams.Add(request.NewErrParamRequired("Owner"))
11382	}
11383
11384	if invalidParams.Len() > 0 {
11385		return invalidParams
11386	}
11387	return nil
11388}
11389
11390// SetOwner sets the Owner field's value.
11391func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
11392	s.Owner = &v
11393	return s
11394}
11395
11396// A conjunction (logical AND) of predicates, which is used in evaluating a
11397// metrics filter. The operator must have at least two predicates in any combination,
11398// and an object must match all of the predicates for the filter to apply.
11399type AnalyticsAndOperator struct {
11400	_ struct{} `type:"structure"`
11401
11402	// The prefix to use when evaluating an AND predicate: The prefix that an object
11403	// must have to be included in the metrics results.
11404	Prefix *string `type:"string"`
11405
11406	// The list of tags to use when evaluating an AND predicate.
11407	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
11408}
11409
11410// String returns the string representation.
11411//
11412// API parameter values that are decorated as "sensitive" in the API will not
11413// be included in the string output. The member name will be present, but the
11414// value will be replaced with "sensitive".
11415func (s AnalyticsAndOperator) String() string {
11416	return awsutil.Prettify(s)
11417}
11418
11419// GoString returns the string representation.
11420//
11421// API parameter values that are decorated as "sensitive" in the API will not
11422// be included in the string output. The member name will be present, but the
11423// value will be replaced with "sensitive".
11424func (s AnalyticsAndOperator) GoString() string {
11425	return s.String()
11426}
11427
11428// Validate inspects the fields of the type to determine if they are valid.
11429func (s *AnalyticsAndOperator) Validate() error {
11430	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
11431	if s.Tags != nil {
11432		for i, v := range s.Tags {
11433			if v == nil {
11434				continue
11435			}
11436			if err := v.Validate(); err != nil {
11437				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
11438			}
11439		}
11440	}
11441
11442	if invalidParams.Len() > 0 {
11443		return invalidParams
11444	}
11445	return nil
11446}
11447
11448// SetPrefix sets the Prefix field's value.
11449func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
11450	s.Prefix = &v
11451	return s
11452}
11453
11454// SetTags sets the Tags field's value.
11455func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
11456	s.Tags = v
11457	return s
11458}
11459
11460// Specifies the configuration and any analyses for the analytics filter of
11461// an Amazon S3 bucket.
11462type AnalyticsConfiguration struct {
11463	_ struct{} `type:"structure"`
11464
11465	// The filter used to describe a set of objects for analyses. A filter must
11466	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
11467	// If no filter is provided, all objects will be considered in any analysis.
11468	Filter *AnalyticsFilter `type:"structure"`
11469
11470	// The ID that identifies the analytics configuration.
11471	//
11472	// Id is a required field
11473	Id *string `type:"string" required:"true"`
11474
11475	// Contains data related to access patterns to be collected and made available
11476	// to analyze the tradeoffs between different storage classes.
11477	//
11478	// StorageClassAnalysis is a required field
11479	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
11480}
11481
11482// String returns the string representation.
11483//
11484// API parameter values that are decorated as "sensitive" in the API will not
11485// be included in the string output. The member name will be present, but the
11486// value will be replaced with "sensitive".
11487func (s AnalyticsConfiguration) String() string {
11488	return awsutil.Prettify(s)
11489}
11490
11491// GoString returns the string representation.
11492//
11493// API parameter values that are decorated as "sensitive" in the API will not
11494// be included in the string output. The member name will be present, but the
11495// value will be replaced with "sensitive".
11496func (s AnalyticsConfiguration) GoString() string {
11497	return s.String()
11498}
11499
11500// Validate inspects the fields of the type to determine if they are valid.
11501func (s *AnalyticsConfiguration) Validate() error {
11502	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
11503	if s.Id == nil {
11504		invalidParams.Add(request.NewErrParamRequired("Id"))
11505	}
11506	if s.StorageClassAnalysis == nil {
11507		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
11508	}
11509	if s.Filter != nil {
11510		if err := s.Filter.Validate(); err != nil {
11511			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
11512		}
11513	}
11514	if s.StorageClassAnalysis != nil {
11515		if err := s.StorageClassAnalysis.Validate(); err != nil {
11516			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
11517		}
11518	}
11519
11520	if invalidParams.Len() > 0 {
11521		return invalidParams
11522	}
11523	return nil
11524}
11525
11526// SetFilter sets the Filter field's value.
11527func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
11528	s.Filter = v
11529	return s
11530}
11531
11532// SetId sets the Id field's value.
11533func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
11534	s.Id = &v
11535	return s
11536}
11537
11538// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
11539func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
11540	s.StorageClassAnalysis = v
11541	return s
11542}
11543
11544// Where to publish the analytics results.
11545type AnalyticsExportDestination struct {
11546	_ struct{} `type:"structure"`
11547
11548	// A destination signifying output to an S3 bucket.
11549	//
11550	// S3BucketDestination is a required field
11551	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
11552}
11553
11554// String returns the string representation.
11555//
11556// API parameter values that are decorated as "sensitive" in the API will not
11557// be included in the string output. The member name will be present, but the
11558// value will be replaced with "sensitive".
11559func (s AnalyticsExportDestination) String() string {
11560	return awsutil.Prettify(s)
11561}
11562
11563// GoString returns the string representation.
11564//
11565// API parameter values that are decorated as "sensitive" in the API will not
11566// be included in the string output. The member name will be present, but the
11567// value will be replaced with "sensitive".
11568func (s AnalyticsExportDestination) GoString() string {
11569	return s.String()
11570}
11571
11572// Validate inspects the fields of the type to determine if they are valid.
11573func (s *AnalyticsExportDestination) Validate() error {
11574	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
11575	if s.S3BucketDestination == nil {
11576		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
11577	}
11578	if s.S3BucketDestination != nil {
11579		if err := s.S3BucketDestination.Validate(); err != nil {
11580			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
11581		}
11582	}
11583
11584	if invalidParams.Len() > 0 {
11585		return invalidParams
11586	}
11587	return nil
11588}
11589
11590// SetS3BucketDestination sets the S3BucketDestination field's value.
11591func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
11592	s.S3BucketDestination = v
11593	return s
11594}
11595
11596// The filter used to describe a set of objects for analyses. A filter must
11597// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
11598// If no filter is provided, all objects will be considered in any analysis.
11599type AnalyticsFilter struct {
11600	_ struct{} `type:"structure"`
11601
11602	// A conjunction (logical AND) of predicates, which is used in evaluating an
11603	// analytics filter. The operator must have at least two predicates.
11604	And *AnalyticsAndOperator `type:"structure"`
11605
11606	// The prefix to use when evaluating an analytics filter.
11607	Prefix *string `type:"string"`
11608
11609	// The tag to use when evaluating an analytics filter.
11610	Tag *Tag `type:"structure"`
11611}
11612
11613// String returns the string representation.
11614//
11615// API parameter values that are decorated as "sensitive" in the API will not
11616// be included in the string output. The member name will be present, but the
11617// value will be replaced with "sensitive".
11618func (s AnalyticsFilter) String() string {
11619	return awsutil.Prettify(s)
11620}
11621
11622// GoString returns the string representation.
11623//
11624// API parameter values that are decorated as "sensitive" in the API will not
11625// be included in the string output. The member name will be present, but the
11626// value will be replaced with "sensitive".
11627func (s AnalyticsFilter) GoString() string {
11628	return s.String()
11629}
11630
11631// Validate inspects the fields of the type to determine if they are valid.
11632func (s *AnalyticsFilter) Validate() error {
11633	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
11634	if s.And != nil {
11635		if err := s.And.Validate(); err != nil {
11636			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
11637		}
11638	}
11639	if s.Tag != nil {
11640		if err := s.Tag.Validate(); err != nil {
11641			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
11642		}
11643	}
11644
11645	if invalidParams.Len() > 0 {
11646		return invalidParams
11647	}
11648	return nil
11649}
11650
11651// SetAnd sets the And field's value.
11652func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
11653	s.And = v
11654	return s
11655}
11656
11657// SetPrefix sets the Prefix field's value.
11658func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
11659	s.Prefix = &v
11660	return s
11661}
11662
11663// SetTag sets the Tag field's value.
11664func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
11665	s.Tag = v
11666	return s
11667}
11668
11669// Contains information about where to publish the analytics results.
11670type AnalyticsS3BucketDestination struct {
11671	_ struct{} `type:"structure"`
11672
11673	// The Amazon Resource Name (ARN) of the bucket to which data is exported.
11674	//
11675	// Bucket is a required field
11676	Bucket *string `type:"string" required:"true"`
11677
11678	// The account ID that owns the destination S3 bucket. If no account ID is provided,
11679	// the owner is not validated before exporting data.
11680	//
11681	// Although this value is optional, we strongly recommend that you set it to
11682	// help prevent problems if the destination bucket ownership changes.
11683	BucketAccountId *string `type:"string"`
11684
11685	// Specifies the file format used when exporting data to Amazon S3.
11686	//
11687	// Format is a required field
11688	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
11689
11690	// The prefix to use when exporting data. The prefix is prepended to all results.
11691	Prefix *string `type:"string"`
11692}
11693
11694// String returns the string representation.
11695//
11696// API parameter values that are decorated as "sensitive" in the API will not
11697// be included in the string output. The member name will be present, but the
11698// value will be replaced with "sensitive".
11699func (s AnalyticsS3BucketDestination) String() string {
11700	return awsutil.Prettify(s)
11701}
11702
11703// GoString returns the string representation.
11704//
11705// API parameter values that are decorated as "sensitive" in the API will not
11706// be included in the string output. The member name will be present, but the
11707// value will be replaced with "sensitive".
11708func (s AnalyticsS3BucketDestination) GoString() string {
11709	return s.String()
11710}
11711
11712// Validate inspects the fields of the type to determine if they are valid.
11713func (s *AnalyticsS3BucketDestination) Validate() error {
11714	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
11715	if s.Bucket == nil {
11716		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11717	}
11718	if s.Format == nil {
11719		invalidParams.Add(request.NewErrParamRequired("Format"))
11720	}
11721
11722	if invalidParams.Len() > 0 {
11723		return invalidParams
11724	}
11725	return nil
11726}
11727
11728// SetBucket sets the Bucket field's value.
11729func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
11730	s.Bucket = &v
11731	return s
11732}
11733
11734func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
11735	if s.Bucket == nil {
11736		return v
11737	}
11738	return *s.Bucket
11739}
11740
11741// SetBucketAccountId sets the BucketAccountId field's value.
11742func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
11743	s.BucketAccountId = &v
11744	return s
11745}
11746
11747// SetFormat sets the Format field's value.
11748func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
11749	s.Format = &v
11750	return s
11751}
11752
11753// SetPrefix sets the Prefix field's value.
11754func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
11755	s.Prefix = &v
11756	return s
11757}
11758
11759// In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
11760// is globally unique, and the namespace is shared by all Amazon Web Services
11761// accounts.
11762type Bucket struct {
11763	_ struct{} `type:"structure"`
11764
11765	// Date the bucket was created. This date can change when making changes to
11766	// your bucket, such as editing its bucket policy.
11767	CreationDate *time.Time `type:"timestamp"`
11768
11769	// The name of the bucket.
11770	Name *string `type:"string"`
11771}
11772
11773// String returns the string representation.
11774//
11775// API parameter values that are decorated as "sensitive" in the API will not
11776// be included in the string output. The member name will be present, but the
11777// value will be replaced with "sensitive".
11778func (s Bucket) String() string {
11779	return awsutil.Prettify(s)
11780}
11781
11782// GoString returns the string representation.
11783//
11784// API parameter values that are decorated as "sensitive" in the API will not
11785// be included in the string output. The member name will be present, but the
11786// value will be replaced with "sensitive".
11787func (s Bucket) GoString() string {
11788	return s.String()
11789}
11790
11791// SetCreationDate sets the CreationDate field's value.
11792func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
11793	s.CreationDate = &v
11794	return s
11795}
11796
11797// SetName sets the Name field's value.
11798func (s *Bucket) SetName(v string) *Bucket {
11799	s.Name = &v
11800	return s
11801}
11802
11803// Specifies the lifecycle configuration for objects in an Amazon S3 bucket.
11804// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
11805// in the Amazon S3 User Guide.
11806type BucketLifecycleConfiguration struct {
11807	_ struct{} `type:"structure"`
11808
11809	// A lifecycle rule for individual objects in an Amazon S3 bucket.
11810	//
11811	// Rules is a required field
11812	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
11813}
11814
11815// String returns the string representation.
11816//
11817// API parameter values that are decorated as "sensitive" in the API will not
11818// be included in the string output. The member name will be present, but the
11819// value will be replaced with "sensitive".
11820func (s BucketLifecycleConfiguration) String() string {
11821	return awsutil.Prettify(s)
11822}
11823
11824// GoString returns the string representation.
11825//
11826// API parameter values that are decorated as "sensitive" in the API will not
11827// be included in the string output. The member name will be present, but the
11828// value will be replaced with "sensitive".
11829func (s BucketLifecycleConfiguration) GoString() string {
11830	return s.String()
11831}
11832
11833// Validate inspects the fields of the type to determine if they are valid.
11834func (s *BucketLifecycleConfiguration) Validate() error {
11835	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
11836	if s.Rules == nil {
11837		invalidParams.Add(request.NewErrParamRequired("Rules"))
11838	}
11839	if s.Rules != nil {
11840		for i, v := range s.Rules {
11841			if v == nil {
11842				continue
11843			}
11844			if err := v.Validate(); err != nil {
11845				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
11846			}
11847		}
11848	}
11849
11850	if invalidParams.Len() > 0 {
11851		return invalidParams
11852	}
11853	return nil
11854}
11855
11856// SetRules sets the Rules field's value.
11857func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
11858	s.Rules = v
11859	return s
11860}
11861
11862// Container for logging status information.
11863type BucketLoggingStatus struct {
11864	_ struct{} `type:"structure"`
11865
11866	// Describes where logs are stored and the prefix that Amazon S3 assigns to
11867	// all log object keys for a bucket. For more information, see PUT Bucket logging
11868	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
11869	// in the Amazon S3 API Reference.
11870	LoggingEnabled *LoggingEnabled `type:"structure"`
11871}
11872
11873// String returns the string representation.
11874//
11875// API parameter values that are decorated as "sensitive" in the API will not
11876// be included in the string output. The member name will be present, but the
11877// value will be replaced with "sensitive".
11878func (s BucketLoggingStatus) String() string {
11879	return awsutil.Prettify(s)
11880}
11881
11882// GoString returns the string representation.
11883//
11884// API parameter values that are decorated as "sensitive" in the API will not
11885// be included in the string output. The member name will be present, but the
11886// value will be replaced with "sensitive".
11887func (s BucketLoggingStatus) GoString() string {
11888	return s.String()
11889}
11890
11891// Validate inspects the fields of the type to determine if they are valid.
11892func (s *BucketLoggingStatus) Validate() error {
11893	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
11894	if s.LoggingEnabled != nil {
11895		if err := s.LoggingEnabled.Validate(); err != nil {
11896			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
11897		}
11898	}
11899
11900	if invalidParams.Len() > 0 {
11901		return invalidParams
11902	}
11903	return nil
11904}
11905
11906// SetLoggingEnabled sets the LoggingEnabled field's value.
11907func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
11908	s.LoggingEnabled = v
11909	return s
11910}
11911
11912// Describes the cross-origin access configuration for objects in an Amazon
11913// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
11914// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
11915// S3 User Guide.
11916type CORSConfiguration struct {
11917	_ struct{} `type:"structure"`
11918
11919	// A set of origins and methods (cross-origin access that you want to allow).
11920	// You can add up to 100 rules to the configuration.
11921	//
11922	// CORSRules is a required field
11923	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
11924}
11925
11926// String returns the string representation.
11927//
11928// API parameter values that are decorated as "sensitive" in the API will not
11929// be included in the string output. The member name will be present, but the
11930// value will be replaced with "sensitive".
11931func (s CORSConfiguration) String() string {
11932	return awsutil.Prettify(s)
11933}
11934
11935// GoString returns the string representation.
11936//
11937// API parameter values that are decorated as "sensitive" in the API will not
11938// be included in the string output. The member name will be present, but the
11939// value will be replaced with "sensitive".
11940func (s CORSConfiguration) GoString() string {
11941	return s.String()
11942}
11943
11944// Validate inspects the fields of the type to determine if they are valid.
11945func (s *CORSConfiguration) Validate() error {
11946	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
11947	if s.CORSRules == nil {
11948		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
11949	}
11950	if s.CORSRules != nil {
11951		for i, v := range s.CORSRules {
11952			if v == nil {
11953				continue
11954			}
11955			if err := v.Validate(); err != nil {
11956				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
11957			}
11958		}
11959	}
11960
11961	if invalidParams.Len() > 0 {
11962		return invalidParams
11963	}
11964	return nil
11965}
11966
11967// SetCORSRules sets the CORSRules field's value.
11968func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
11969	s.CORSRules = v
11970	return s
11971}
11972
11973// Specifies a cross-origin access rule for an Amazon S3 bucket.
11974type CORSRule struct {
11975	_ struct{} `type:"structure"`
11976
11977	// Headers that are specified in the Access-Control-Request-Headers header.
11978	// These headers are allowed in a preflight OPTIONS request. In response to
11979	// any preflight OPTIONS request, Amazon S3 returns any requested headers that
11980	// are allowed.
11981	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
11982
11983	// An HTTP method that you allow the origin to execute. Valid values are GET,
11984	// PUT, HEAD, POST, and DELETE.
11985	//
11986	// AllowedMethods is a required field
11987	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
11988
11989	// One or more origins you want customers to be able to access the bucket from.
11990	//
11991	// AllowedOrigins is a required field
11992	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
11993
11994	// One or more headers in the response that you want customers to be able to
11995	// access from their applications (for example, from a JavaScript XMLHttpRequest
11996	// object).
11997	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
11998
11999	// Unique identifier for the rule. The value cannot be longer than 255 characters.
12000	ID *string `type:"string"`
12001
12002	// The time in seconds that your browser is to cache the preflight response
12003	// for the specified resource.
12004	MaxAgeSeconds *int64 `type:"integer"`
12005}
12006
12007// String returns the string representation.
12008//
12009// API parameter values that are decorated as "sensitive" in the API will not
12010// be included in the string output. The member name will be present, but the
12011// value will be replaced with "sensitive".
12012func (s CORSRule) String() string {
12013	return awsutil.Prettify(s)
12014}
12015
12016// GoString returns the string representation.
12017//
12018// API parameter values that are decorated as "sensitive" in the API will not
12019// be included in the string output. The member name will be present, but the
12020// value will be replaced with "sensitive".
12021func (s CORSRule) GoString() string {
12022	return s.String()
12023}
12024
12025// Validate inspects the fields of the type to determine if they are valid.
12026func (s *CORSRule) Validate() error {
12027	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
12028	if s.AllowedMethods == nil {
12029		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
12030	}
12031	if s.AllowedOrigins == nil {
12032		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
12033	}
12034
12035	if invalidParams.Len() > 0 {
12036		return invalidParams
12037	}
12038	return nil
12039}
12040
12041// SetAllowedHeaders sets the AllowedHeaders field's value.
12042func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
12043	s.AllowedHeaders = v
12044	return s
12045}
12046
12047// SetAllowedMethods sets the AllowedMethods field's value.
12048func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
12049	s.AllowedMethods = v
12050	return s
12051}
12052
12053// SetAllowedOrigins sets the AllowedOrigins field's value.
12054func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
12055	s.AllowedOrigins = v
12056	return s
12057}
12058
12059// SetExposeHeaders sets the ExposeHeaders field's value.
12060func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
12061	s.ExposeHeaders = v
12062	return s
12063}
12064
12065// SetID sets the ID field's value.
12066func (s *CORSRule) SetID(v string) *CORSRule {
12067	s.ID = &v
12068	return s
12069}
12070
12071// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
12072func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
12073	s.MaxAgeSeconds = &v
12074	return s
12075}
12076
12077// Describes how an uncompressed comma-separated values (CSV)-formatted input
12078// object is formatted.
12079type CSVInput struct {
12080	_ struct{} `type:"structure"`
12081
12082	// Specifies that CSV field values may contain quoted record delimiters and
12083	// such records should be allowed. Default value is FALSE. Setting this value
12084	// to TRUE may lower performance.
12085	AllowQuotedRecordDelimiter *bool `type:"boolean"`
12086
12087	// A single character used to indicate that a row should be ignored when the
12088	// character is present at the start of that row. You can specify any character
12089	// to indicate a comment line.
12090	Comments *string `type:"string"`
12091
12092	// A single character used to separate individual fields in a record. You can
12093	// specify an arbitrary delimiter.
12094	FieldDelimiter *string `type:"string"`
12095
12096	// Describes the first line of input. Valid values are:
12097	//
12098	//    * NONE: First line is not a header.
12099	//
12100	//    * IGNORE: First line is a header, but you can't use the header values
12101	//    to indicate the column in an expression. You can use column position (such
12102	//    as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s).
12103	//
12104	//    * Use: First line is a header, and you can use the header value to identify
12105	//    a column in an expression (SELECT "name" FROM OBJECT).
12106	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
12107
12108	// A single character used for escaping when the field delimiter is part of
12109	// the value. For example, if the value is a, b, Amazon S3 wraps this field
12110	// value in quotation marks, as follows: " a , b ".
12111	//
12112	// Type: String
12113	//
12114	// Default: "
12115	//
12116	// Ancestors: CSV
12117	QuoteCharacter *string `type:"string"`
12118
12119	// A single character used for escaping the quotation mark character inside
12120	// an already escaped value. For example, the value """ a , b """ is parsed
12121	// as " a , b ".
12122	QuoteEscapeCharacter *string `type:"string"`
12123
12124	// A single character used to separate individual records in the input. Instead
12125	// of the default value, you can specify an arbitrary delimiter.
12126	RecordDelimiter *string `type:"string"`
12127}
12128
12129// String returns the string representation.
12130//
12131// API parameter values that are decorated as "sensitive" in the API will not
12132// be included in the string output. The member name will be present, but the
12133// value will be replaced with "sensitive".
12134func (s CSVInput) String() string {
12135	return awsutil.Prettify(s)
12136}
12137
12138// GoString returns the string representation.
12139//
12140// API parameter values that are decorated as "sensitive" in the API will not
12141// be included in the string output. The member name will be present, but the
12142// value will be replaced with "sensitive".
12143func (s CSVInput) GoString() string {
12144	return s.String()
12145}
12146
12147// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
12148func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
12149	s.AllowQuotedRecordDelimiter = &v
12150	return s
12151}
12152
12153// SetComments sets the Comments field's value.
12154func (s *CSVInput) SetComments(v string) *CSVInput {
12155	s.Comments = &v
12156	return s
12157}
12158
12159// SetFieldDelimiter sets the FieldDelimiter field's value.
12160func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
12161	s.FieldDelimiter = &v
12162	return s
12163}
12164
12165// SetFileHeaderInfo sets the FileHeaderInfo field's value.
12166func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
12167	s.FileHeaderInfo = &v
12168	return s
12169}
12170
12171// SetQuoteCharacter sets the QuoteCharacter field's value.
12172func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
12173	s.QuoteCharacter = &v
12174	return s
12175}
12176
12177// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
12178func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
12179	s.QuoteEscapeCharacter = &v
12180	return s
12181}
12182
12183// SetRecordDelimiter sets the RecordDelimiter field's value.
12184func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
12185	s.RecordDelimiter = &v
12186	return s
12187}
12188
12189// Describes how uncompressed comma-separated values (CSV)-formatted results
12190// are formatted.
12191type CSVOutput struct {
12192	_ struct{} `type:"structure"`
12193
12194	// The value used to separate individual fields in a record. You can specify
12195	// an arbitrary delimiter.
12196	FieldDelimiter *string `type:"string"`
12197
12198	// A single character used for escaping when the field delimiter is part of
12199	// the value. For example, if the value is a, b, Amazon S3 wraps this field
12200	// value in quotation marks, as follows: " a , b ".
12201	QuoteCharacter *string `type:"string"`
12202
12203	// The single character used for escaping the quote character inside an already
12204	// escaped value.
12205	QuoteEscapeCharacter *string `type:"string"`
12206
12207	// Indicates whether to use quotation marks around output fields.
12208	//
12209	//    * ALWAYS: Always use quotation marks for output fields.
12210	//
12211	//    * ASNEEDED: Use quotation marks for output fields when needed.
12212	QuoteFields *string `type:"string" enum:"QuoteFields"`
12213
12214	// A single character used to separate individual records in the output. Instead
12215	// of the default value, you can specify an arbitrary delimiter.
12216	RecordDelimiter *string `type:"string"`
12217}
12218
12219// String returns the string representation.
12220//
12221// API parameter values that are decorated as "sensitive" in the API will not
12222// be included in the string output. The member name will be present, but the
12223// value will be replaced with "sensitive".
12224func (s CSVOutput) String() string {
12225	return awsutil.Prettify(s)
12226}
12227
12228// GoString returns the string representation.
12229//
12230// API parameter values that are decorated as "sensitive" in the API will not
12231// be included in the string output. The member name will be present, but the
12232// value will be replaced with "sensitive".
12233func (s CSVOutput) GoString() string {
12234	return s.String()
12235}
12236
12237// SetFieldDelimiter sets the FieldDelimiter field's value.
12238func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
12239	s.FieldDelimiter = &v
12240	return s
12241}
12242
12243// SetQuoteCharacter sets the QuoteCharacter field's value.
12244func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
12245	s.QuoteCharacter = &v
12246	return s
12247}
12248
12249// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
12250func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
12251	s.QuoteEscapeCharacter = &v
12252	return s
12253}
12254
12255// SetQuoteFields sets the QuoteFields field's value.
12256func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
12257	s.QuoteFields = &v
12258	return s
12259}
12260
12261// SetRecordDelimiter sets the RecordDelimiter field's value.
12262func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
12263	s.RecordDelimiter = &v
12264	return s
12265}
12266
12267// Container for specifying the Lambda notification configuration.
12268type CloudFunctionConfiguration struct {
12269	_ struct{} `type:"structure"`
12270
12271	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
12272	// of the specified type.
12273	CloudFunction *string `type:"string"`
12274
12275	// The bucket event for which to send notifications.
12276	//
12277	// Deprecated: Event has been deprecated
12278	Event *string `deprecated:"true" type:"string" enum:"Event"`
12279
12280	// Bucket events for which to send notifications.
12281	Events []*string `locationName:"Event" type:"list" flattened:"true"`
12282
12283	// An optional unique identifier for configurations in a notification configuration.
12284	// If you don't provide one, Amazon S3 will assign an ID.
12285	Id *string `type:"string"`
12286
12287	// The role supporting the invocation of the Lambda function
12288	InvocationRole *string `type:"string"`
12289}
12290
12291// String returns the string representation.
12292//
12293// API parameter values that are decorated as "sensitive" in the API will not
12294// be included in the string output. The member name will be present, but the
12295// value will be replaced with "sensitive".
12296func (s CloudFunctionConfiguration) String() string {
12297	return awsutil.Prettify(s)
12298}
12299
12300// GoString returns the string representation.
12301//
12302// API parameter values that are decorated as "sensitive" in the API will not
12303// be included in the string output. The member name will be present, but the
12304// value will be replaced with "sensitive".
12305func (s CloudFunctionConfiguration) GoString() string {
12306	return s.String()
12307}
12308
12309// SetCloudFunction sets the CloudFunction field's value.
12310func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
12311	s.CloudFunction = &v
12312	return s
12313}
12314
12315// SetEvent sets the Event field's value.
12316func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
12317	s.Event = &v
12318	return s
12319}
12320
12321// SetEvents sets the Events field's value.
12322func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
12323	s.Events = v
12324	return s
12325}
12326
12327// SetId sets the Id field's value.
12328func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
12329	s.Id = &v
12330	return s
12331}
12332
12333// SetInvocationRole sets the InvocationRole field's value.
12334func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
12335	s.InvocationRole = &v
12336	return s
12337}
12338
12339// Container for all (if there are any) keys between Prefix and the next occurrence
12340// of the string specified by a delimiter. CommonPrefixes lists keys that act
12341// like subdirectories in the directory specified by Prefix. For example, if
12342// the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july,
12343// the common prefix is notes/summer/.
12344type CommonPrefix struct {
12345	_ struct{} `type:"structure"`
12346
12347	// Container for the specified common prefix.
12348	Prefix *string `type:"string"`
12349}
12350
12351// String returns the string representation.
12352//
12353// API parameter values that are decorated as "sensitive" in the API will not
12354// be included in the string output. The member name will be present, but the
12355// value will be replaced with "sensitive".
12356func (s CommonPrefix) String() string {
12357	return awsutil.Prettify(s)
12358}
12359
12360// GoString returns the string representation.
12361//
12362// API parameter values that are decorated as "sensitive" in the API will not
12363// be included in the string output. The member name will be present, but the
12364// value will be replaced with "sensitive".
12365func (s CommonPrefix) GoString() string {
12366	return s.String()
12367}
12368
12369// SetPrefix sets the Prefix field's value.
12370func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
12371	s.Prefix = &v
12372	return s
12373}
12374
12375type CompleteMultipartUploadInput struct {
12376	_ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"`
12377
12378	// Name of the bucket to which the multipart upload was initiated.
12379	//
12380	// When using this action with an access point, you must direct requests to
12381	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12382	// When using this action with an access point through the Amazon Web Services
12383	// SDKs, you provide the access point ARN in place of the bucket name. For more
12384	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12385	// in the Amazon S3 User Guide.
12386	//
12387	// When using this action with Amazon S3 on Outposts, you must direct requests
12388	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12389	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12390	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12391	// you provide the Outposts bucket ARN in place of the bucket name. For more
12392	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12393	// in the Amazon S3 User Guide.
12394	//
12395	// Bucket is a required field
12396	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12397
12398	// The account ID of the expected bucket owner. If the bucket is owned by a
12399	// different account, the request will fail with an HTTP 403 (Access Denied)
12400	// error.
12401	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
12402
12403	// Object key for which the multipart upload was initiated.
12404	//
12405	// Key is a required field
12406	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12407
12408	// The container for the multipart upload request information.
12409	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
12410
12411	// Confirms that the requester knows that they will be charged for the request.
12412	// Bucket owners need not specify this parameter in their requests. For information
12413	// about downloading objects from requester pays buckets, see Downloading Objects
12414	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
12415	// in the Amazon S3 User Guide.
12416	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12417
12418	// ID for the initiated multipart upload.
12419	//
12420	// UploadId is a required field
12421	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
12422}
12423
12424// String returns the string representation.
12425//
12426// API parameter values that are decorated as "sensitive" in the API will not
12427// be included in the string output. The member name will be present, but the
12428// value will be replaced with "sensitive".
12429func (s CompleteMultipartUploadInput) String() string {
12430	return awsutil.Prettify(s)
12431}
12432
12433// GoString returns the string representation.
12434//
12435// API parameter values that are decorated as "sensitive" in the API will not
12436// be included in the string output. The member name will be present, but the
12437// value will be replaced with "sensitive".
12438func (s CompleteMultipartUploadInput) GoString() string {
12439	return s.String()
12440}
12441
12442// Validate inspects the fields of the type to determine if they are valid.
12443func (s *CompleteMultipartUploadInput) Validate() error {
12444	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
12445	if s.Bucket == nil {
12446		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12447	}
12448	if s.Bucket != nil && len(*s.Bucket) < 1 {
12449		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12450	}
12451	if s.Key == nil {
12452		invalidParams.Add(request.NewErrParamRequired("Key"))
12453	}
12454	if s.Key != nil && len(*s.Key) < 1 {
12455		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12456	}
12457	if s.UploadId == nil {
12458		invalidParams.Add(request.NewErrParamRequired("UploadId"))
12459	}
12460
12461	if invalidParams.Len() > 0 {
12462		return invalidParams
12463	}
12464	return nil
12465}
12466
12467// SetBucket sets the Bucket field's value.
12468func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
12469	s.Bucket = &v
12470	return s
12471}
12472
12473func (s *CompleteMultipartUploadInput) getBucket() (v string) {
12474	if s.Bucket == nil {
12475		return v
12476	}
12477	return *s.Bucket
12478}
12479
12480// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
12481func (s *CompleteMultipartUploadInput) SetExpectedBucketOwner(v string) *CompleteMultipartUploadInput {
12482	s.ExpectedBucketOwner = &v
12483	return s
12484}
12485
12486// SetKey sets the Key field's value.
12487func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
12488	s.Key = &v
12489	return s
12490}
12491
12492// SetMultipartUpload sets the MultipartUpload field's value.
12493func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
12494	s.MultipartUpload = v
12495	return s
12496}
12497
12498// SetRequestPayer sets the RequestPayer field's value.
12499func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
12500	s.RequestPayer = &v
12501	return s
12502}
12503
12504// SetUploadId sets the UploadId field's value.
12505func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
12506	s.UploadId = &v
12507	return s
12508}
12509
12510func (s *CompleteMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
12511	if s.Bucket == nil {
12512		return nil, fmt.Errorf("member Bucket is nil")
12513	}
12514	return parseEndpointARN(*s.Bucket)
12515}
12516
12517func (s *CompleteMultipartUploadInput) hasEndpointARN() bool {
12518	if s.Bucket == nil {
12519		return false
12520	}
12521	return arn.IsARN(*s.Bucket)
12522}
12523
12524// updateArnableField updates the value of the input field that
12525// takes an ARN as an input. This method is useful to backfill
12526// the parsed resource name from ARN into the input member.
12527// It returns a pointer to a modified copy of input and an error.
12528// Note that original input is not modified.
12529func (s CompleteMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
12530	if s.Bucket == nil {
12531		return nil, fmt.Errorf("member Bucket is nil")
12532	}
12533	s.Bucket = aws.String(v)
12534	return &s, nil
12535}
12536
12537type CompleteMultipartUploadOutput struct {
12538	_ struct{} `type:"structure"`
12539
12540	// The name of the bucket that contains the newly created object. Does not return
12541	// the access point ARN or access point alias if used.
12542	//
12543	// When using this action with an access point, you must direct requests to
12544	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12545	// When using this action with an access point through the Amazon Web Services
12546	// SDKs, you provide the access point ARN in place of the bucket name. For more
12547	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12548	// in the Amazon S3 User Guide.
12549	//
12550	// When using this action with Amazon S3 on Outposts, you must direct requests
12551	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12552	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12553	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12554	// you provide the Outposts bucket ARN in place of the bucket name. For more
12555	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12556	// in the Amazon S3 User Guide.
12557	Bucket *string `type:"string"`
12558
12559	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
12560	// encryption with Amazon Web Services KMS (SSE-KMS).
12561	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
12562
12563	// Entity tag that identifies the newly created object's data. Objects with
12564	// different object data will have different entity tags. The entity tag is
12565	// an opaque string. The entity tag may or may not be an MD5 digest of the object
12566	// data. If the entity tag is not an MD5 digest of the object data, it will
12567	// contain one or more nonhexadecimal characters and/or will consist of less
12568	// than 32 or more than 32 hexadecimal digits.
12569	ETag *string `type:"string"`
12570
12571	// If the object expiration is configured, this will contain the expiration
12572	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
12573	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
12574
12575	// The object key of the newly created object.
12576	Key *string `min:"1" type:"string"`
12577
12578	// The URI that identifies the newly created object.
12579	Location *string `type:"string"`
12580
12581	// If present, indicates that the requester was successfully charged for the
12582	// request.
12583	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12584
12585	// If present, specifies the ID of the Amazon Web Services Key Management Service
12586	// (Amazon Web Services KMS) symmetric customer managed key that was used for
12587	// the object.
12588	//
12589	// SSEKMSKeyId is a sensitive parameter and its value will be
12590	// replaced with "sensitive" in string returned by CompleteMultipartUploadOutput's
12591	// String and GoString methods.
12592	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12593
12594	// If you specified server-side encryption either with an Amazon S3-managed
12595	// encryption key or an Amazon Web Services KMS key in your initiate multipart
12596	// upload request, the response includes this header. It confirms the encryption
12597	// algorithm that Amazon S3 used to encrypt the object.
12598	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12599
12600	// Version ID of the newly created object, in case the bucket has versioning
12601	// turned on.
12602	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
12603}
12604
12605// String returns the string representation.
12606//
12607// API parameter values that are decorated as "sensitive" in the API will not
12608// be included in the string output. The member name will be present, but the
12609// value will be replaced with "sensitive".
12610func (s CompleteMultipartUploadOutput) String() string {
12611	return awsutil.Prettify(s)
12612}
12613
12614// GoString returns the string representation.
12615//
12616// API parameter values that are decorated as "sensitive" in the API will not
12617// be included in the string output. The member name will be present, but the
12618// value will be replaced with "sensitive".
12619func (s CompleteMultipartUploadOutput) GoString() string {
12620	return s.String()
12621}
12622
12623// SetBucket sets the Bucket field's value.
12624func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
12625	s.Bucket = &v
12626	return s
12627}
12628
12629func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
12630	if s.Bucket == nil {
12631		return v
12632	}
12633	return *s.Bucket
12634}
12635
12636// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
12637func (s *CompleteMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CompleteMultipartUploadOutput {
12638	s.BucketKeyEnabled = &v
12639	return s
12640}
12641
12642// SetETag sets the ETag field's value.
12643func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
12644	s.ETag = &v
12645	return s
12646}
12647
12648// SetExpiration sets the Expiration field's value.
12649func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
12650	s.Expiration = &v
12651	return s
12652}
12653
12654// SetKey sets the Key field's value.
12655func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
12656	s.Key = &v
12657	return s
12658}
12659
12660// SetLocation sets the Location field's value.
12661func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
12662	s.Location = &v
12663	return s
12664}
12665
12666// SetRequestCharged sets the RequestCharged field's value.
12667func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
12668	s.RequestCharged = &v
12669	return s
12670}
12671
12672// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12673func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
12674	s.SSEKMSKeyId = &v
12675	return s
12676}
12677
12678// SetServerSideEncryption sets the ServerSideEncryption field's value.
12679func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
12680	s.ServerSideEncryption = &v
12681	return s
12682}
12683
12684// SetVersionId sets the VersionId field's value.
12685func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
12686	s.VersionId = &v
12687	return s
12688}
12689
12690// The container for the completed multipart upload details.
12691type CompletedMultipartUpload struct {
12692	_ struct{} `type:"structure"`
12693
12694	// Array of CompletedPart data types.
12695	//
12696	// If you do not supply a valid Part with your request, the service sends back
12697	// an HTTP 400 response.
12698	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
12699}
12700
12701// String returns the string representation.
12702//
12703// API parameter values that are decorated as "sensitive" in the API will not
12704// be included in the string output. The member name will be present, but the
12705// value will be replaced with "sensitive".
12706func (s CompletedMultipartUpload) String() string {
12707	return awsutil.Prettify(s)
12708}
12709
12710// GoString returns the string representation.
12711//
12712// API parameter values that are decorated as "sensitive" in the API will not
12713// be included in the string output. The member name will be present, but the
12714// value will be replaced with "sensitive".
12715func (s CompletedMultipartUpload) GoString() string {
12716	return s.String()
12717}
12718
12719// SetParts sets the Parts field's value.
12720func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
12721	s.Parts = v
12722	return s
12723}
12724
12725// Details of the parts that were uploaded.
12726type CompletedPart struct {
12727	_ struct{} `type:"structure"`
12728
12729	// Entity tag returned when the part was uploaded.
12730	ETag *string `type:"string"`
12731
12732	// Part number that identifies the part. This is a positive integer between
12733	// 1 and 10,000.
12734	PartNumber *int64 `type:"integer"`
12735}
12736
12737// String returns the string representation.
12738//
12739// API parameter values that are decorated as "sensitive" in the API will not
12740// be included in the string output. The member name will be present, but the
12741// value will be replaced with "sensitive".
12742func (s CompletedPart) String() string {
12743	return awsutil.Prettify(s)
12744}
12745
12746// GoString returns the string representation.
12747//
12748// API parameter values that are decorated as "sensitive" in the API will not
12749// be included in the string output. The member name will be present, but the
12750// value will be replaced with "sensitive".
12751func (s CompletedPart) GoString() string {
12752	return s.String()
12753}
12754
12755// SetETag sets the ETag field's value.
12756func (s *CompletedPart) SetETag(v string) *CompletedPart {
12757	s.ETag = &v
12758	return s
12759}
12760
12761// SetPartNumber sets the PartNumber field's value.
12762func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
12763	s.PartNumber = &v
12764	return s
12765}
12766
12767// A container for describing a condition that must be met for the specified
12768// redirect to apply. For example, 1. If request is for pages in the /docs folder,
12769// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
12770// redirect request to another host where you might process the error.
12771type Condition struct {
12772	_ struct{} `type:"structure"`
12773
12774	// The HTTP error code when the redirect is applied. In the event of an error,
12775	// if the error code equals this value, then the specified redirect is applied.
12776	// Required when parent element Condition is specified and sibling KeyPrefixEquals
12777	// is not specified. If both are specified, then both must be true for the redirect
12778	// to be applied.
12779	HttpErrorCodeReturnedEquals *string `type:"string"`
12780
12781	// The object key name prefix when the redirect is applied. For example, to
12782	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
12783	// To redirect request for all pages with the prefix docs/, the key prefix will
12784	// be /docs, which identifies all objects in the docs/ folder. Required when
12785	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
12786	// is not specified. If both conditions are specified, both must be true for
12787	// the redirect to be applied.
12788	//
12789	// Replacement must be made for object keys containing special characters (such
12790	// as carriage returns) when using XML requests. For more information, see XML
12791	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
12792	KeyPrefixEquals *string `type:"string"`
12793}
12794
12795// String returns the string representation.
12796//
12797// API parameter values that are decorated as "sensitive" in the API will not
12798// be included in the string output. The member name will be present, but the
12799// value will be replaced with "sensitive".
12800func (s Condition) String() string {
12801	return awsutil.Prettify(s)
12802}
12803
12804// GoString returns the string representation.
12805//
12806// API parameter values that are decorated as "sensitive" in the API will not
12807// be included in the string output. The member name will be present, but the
12808// value will be replaced with "sensitive".
12809func (s Condition) GoString() string {
12810	return s.String()
12811}
12812
12813// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
12814func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
12815	s.HttpErrorCodeReturnedEquals = &v
12816	return s
12817}
12818
12819// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
12820func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
12821	s.KeyPrefixEquals = &v
12822	return s
12823}
12824
12825type ContinuationEvent struct {
12826	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
12827}
12828
12829// String returns the string representation.
12830//
12831// API parameter values that are decorated as "sensitive" in the API will not
12832// be included in the string output. The member name will be present, but the
12833// value will be replaced with "sensitive".
12834func (s ContinuationEvent) String() string {
12835	return awsutil.Prettify(s)
12836}
12837
12838// GoString returns the string representation.
12839//
12840// API parameter values that are decorated as "sensitive" in the API will not
12841// be included in the string output. The member name will be present, but the
12842// value will be replaced with "sensitive".
12843func (s ContinuationEvent) GoString() string {
12844	return s.String()
12845}
12846
12847// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
12848func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
12849
12850// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
12851// This method is only used internally within the SDK's EventStream handling.
12852func (s *ContinuationEvent) UnmarshalEvent(
12853	payloadUnmarshaler protocol.PayloadUnmarshaler,
12854	msg eventstream.Message,
12855) error {
12856	return nil
12857}
12858
12859// MarshalEvent marshals the type into an stream event value. This method
12860// should only used internally within the SDK's EventStream handling.
12861func (s *ContinuationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
12862	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
12863	return msg, err
12864}
12865
12866type CopyObjectInput struct {
12867	_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
12868
12869	// The canned ACL to apply to the object.
12870	//
12871	// This action is not supported by Amazon S3 on Outposts.
12872	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
12873
12874	// The name of the destination bucket.
12875	//
12876	// When using this action with an access point, you must direct requests to
12877	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12878	// When using this action with an access point through the Amazon Web Services
12879	// SDKs, you provide the access point ARN in place of the bucket name. For more
12880	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12881	// in the Amazon S3 User Guide.
12882	//
12883	// When using this action with Amazon S3 on Outposts, you must direct requests
12884	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12885	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12886	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12887	// you provide the Outposts bucket ARN in place of the bucket name. For more
12888	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12889	// in the Amazon S3 User Guide.
12890	//
12891	// Bucket is a required field
12892	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12893
12894	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
12895	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
12896	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
12897	// SSE-KMS.
12898	//
12899	// Specifying this header with a COPY action doesn’t affect bucket-level settings
12900	// for S3 Bucket Key.
12901	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
12902
12903	// Specifies caching behavior along the request/reply chain.
12904	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
12905
12906	// Specifies presentational information for the object.
12907	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
12908
12909	// Specifies what content encodings have been applied to the object and thus
12910	// what decoding mechanisms must be applied to obtain the media-type referenced
12911	// by the Content-Type header field.
12912	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
12913
12914	// The language the content is in.
12915	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
12916
12917	// A standard MIME type describing the format of the object data.
12918	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
12919
12920	// Specifies the source object for the copy operation. You specify the value
12921	// in one of two formats, depending on whether you want to access the source
12922	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
12923	//
12924	//    * For objects not accessed through an access point, specify the name of
12925	//    the source bucket and the key of the source object, separated by a slash
12926	//    (/). For example, to copy the object reports/january.pdf from the bucket
12927	//    awsexamplebucket, use awsexamplebucket/reports/january.pdf. The value
12928	//    must be URL encoded.
12929	//
12930	//    * For objects accessed through access points, specify the Amazon Resource
12931	//    Name (ARN) of the object as accessed through the access point, in the
12932	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
12933	//    For example, to copy the object reports/january.pdf through access point
12934	//    my-access-point owned by account 123456789012 in Region us-west-2, use
12935	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
12936	//    The value must be URL encoded. Amazon S3 supports copy operations using
12937	//    access points only when the source and destination buckets are in the
12938	//    same Amazon Web Services Region. Alternatively, for objects accessed through
12939	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
12940	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
12941	//    For example, to copy the object reports/january.pdf through outpost my-outpost
12942	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
12943	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
12944	//    The value must be URL encoded.
12945	//
12946	// To copy a specific version of an object, append ?versionId=<version-id> to
12947	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
12948	// If you don't specify a version ID, Amazon S3 copies the latest version of
12949	// the source object.
12950	//
12951	// CopySource is a required field
12952	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
12953
12954	// Copies the object if its entity tag (ETag) matches the specified tag.
12955	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
12956
12957	// Copies the object if it has been modified since the specified time.
12958	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
12959
12960	// Copies the object if its entity tag (ETag) is different than the specified
12961	// ETag.
12962	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
12963
12964	// Copies the object if it hasn't been modified since the specified time.
12965	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
12966
12967	// Specifies the algorithm to use when decrypting the source object (for example,
12968	// AES256).
12969	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
12970
12971	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
12972	// the source object. The encryption key provided in this header must be one
12973	// that was used when the source object was created.
12974	//
12975	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
12976	// replaced with "sensitive" in string returned by CopyObjectInput's
12977	// String and GoString methods.
12978	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
12979
12980	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12981	// Amazon S3 uses this header for a message integrity check to ensure that the
12982	// encryption key was transmitted without error.
12983	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
12984
12985	// The account ID of the expected destination bucket owner. If the destination
12986	// bucket is owned by a different account, the request will fail with an HTTP
12987	// 403 (Access Denied) error.
12988	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
12989
12990	// The account ID of the expected source bucket owner. If the source bucket
12991	// is owned by a different account, the request will fail with an HTTP 403 (Access
12992	// Denied) error.
12993	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
12994
12995	// The date and time at which the object is no longer cacheable.
12996	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
12997
12998	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
12999	//
13000	// This action is not supported by Amazon S3 on Outposts.
13001	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
13002
13003	// Allows grantee to read the object data and its metadata.
13004	//
13005	// This action is not supported by Amazon S3 on Outposts.
13006	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
13007
13008	// Allows grantee to read the object ACL.
13009	//
13010	// This action is not supported by Amazon S3 on Outposts.
13011	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13012
13013	// Allows grantee to write the ACL for the applicable object.
13014	//
13015	// This action is not supported by Amazon S3 on Outposts.
13016	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13017
13018	// The key of the destination object.
13019	//
13020	// Key is a required field
13021	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13022
13023	// A map of metadata to store with the object in S3.
13024	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
13025
13026	// Specifies whether the metadata is copied from the source object or replaced
13027	// with metadata provided in the request.
13028	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
13029
13030	// Specifies whether you want to apply a Legal Hold to the copied object.
13031	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
13032
13033	// The Object Lock mode that you want to apply to the copied object.
13034	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
13035
13036	// The date and time when you want the copied object's Object Lock to expire.
13037	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
13038
13039	// Confirms that the requester knows that they will be charged for the request.
13040	// Bucket owners need not specify this parameter in their requests. For information
13041	// about downloading objects from requester pays buckets, see Downloading Objects
13042	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13043	// in the Amazon S3 User Guide.
13044	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13045
13046	// Specifies the algorithm to use to when encrypting the object (for example,
13047	// AES256).
13048	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13049
13050	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
13051	// data. This value is used to store the object and then it is discarded; Amazon
13052	// S3 does not store the encryption key. The key must be appropriate for use
13053	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
13054	// header.
13055	//
13056	// SSECustomerKey is a sensitive parameter and its value will be
13057	// replaced with "sensitive" in string returned by CopyObjectInput's
13058	// String and GoString methods.
13059	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
13060
13061	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
13062	// Amazon S3 uses this header for a message integrity check to ensure that the
13063	// encryption key was transmitted without error.
13064	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13065
13066	// Specifies the Amazon Web Services KMS Encryption Context to use for object
13067	// encryption. The value of this header is a base64-encoded UTF-8 string holding
13068	// JSON with the encryption context key-value pairs.
13069	//
13070	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13071	// replaced with "sensitive" in string returned by CopyObjectInput's
13072	// String and GoString methods.
13073	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
13074
13075	// Specifies the Amazon Web Services KMS key ID to use for object encryption.
13076	// All GET and PUT requests for an object protected by Amazon Web Services KMS
13077	// will fail if not made via SSL or using SigV4. For information about configuring
13078	// using any of the officially supported Amazon Web Services SDKs and Amazon
13079	// Web Services CLI, see Specifying the Signature Version in Request Authentication
13080	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
13081	// in the Amazon S3 User Guide.
13082	//
13083	// SSEKMSKeyId is a sensitive parameter and its value will be
13084	// replaced with "sensitive" in string returned by CopyObjectInput's
13085	// String and GoString methods.
13086	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
13087
13088	// The server-side encryption algorithm used when storing this object in Amazon
13089	// S3 (for example, AES256, aws:kms).
13090	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
13091
13092	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
13093	// objects. The STANDARD storage class provides high durability and high availability.
13094	// Depending on performance needs, you can specify a different Storage Class.
13095	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
13096	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
13097	// in the Amazon S3 User Guide.
13098	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
13099
13100	// The tag-set for the object destination object this value must be used in
13101	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
13102	// Query parameters.
13103	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
13104
13105	// Specifies whether the object tag-set are copied from the source object or
13106	// replaced with tag-set provided in the request.
13107	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
13108
13109	// If the bucket is configured as a website, redirects requests for this object
13110	// to another object in the same bucket or to an external URL. Amazon S3 stores
13111	// the value of this header in the object metadata.
13112	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
13113}
13114
13115// String returns the string representation.
13116//
13117// API parameter values that are decorated as "sensitive" in the API will not
13118// be included in the string output. The member name will be present, but the
13119// value will be replaced with "sensitive".
13120func (s CopyObjectInput) String() string {
13121	return awsutil.Prettify(s)
13122}
13123
13124// GoString returns the string representation.
13125//
13126// API parameter values that are decorated as "sensitive" in the API will not
13127// be included in the string output. The member name will be present, but the
13128// value will be replaced with "sensitive".
13129func (s CopyObjectInput) GoString() string {
13130	return s.String()
13131}
13132
13133// Validate inspects the fields of the type to determine if they are valid.
13134func (s *CopyObjectInput) Validate() error {
13135	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
13136	if s.Bucket == nil {
13137		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13138	}
13139	if s.Bucket != nil && len(*s.Bucket) < 1 {
13140		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13141	}
13142	if s.CopySource == nil {
13143		invalidParams.Add(request.NewErrParamRequired("CopySource"))
13144	}
13145	if s.Key == nil {
13146		invalidParams.Add(request.NewErrParamRequired("Key"))
13147	}
13148	if s.Key != nil && len(*s.Key) < 1 {
13149		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13150	}
13151
13152	if invalidParams.Len() > 0 {
13153		return invalidParams
13154	}
13155	return nil
13156}
13157
13158// SetACL sets the ACL field's value.
13159func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
13160	s.ACL = &v
13161	return s
13162}
13163
13164// SetBucket sets the Bucket field's value.
13165func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
13166	s.Bucket = &v
13167	return s
13168}
13169
13170func (s *CopyObjectInput) getBucket() (v string) {
13171	if s.Bucket == nil {
13172		return v
13173	}
13174	return *s.Bucket
13175}
13176
13177// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
13178func (s *CopyObjectInput) SetBucketKeyEnabled(v bool) *CopyObjectInput {
13179	s.BucketKeyEnabled = &v
13180	return s
13181}
13182
13183// SetCacheControl sets the CacheControl field's value.
13184func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
13185	s.CacheControl = &v
13186	return s
13187}
13188
13189// SetContentDisposition sets the ContentDisposition field's value.
13190func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
13191	s.ContentDisposition = &v
13192	return s
13193}
13194
13195// SetContentEncoding sets the ContentEncoding field's value.
13196func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
13197	s.ContentEncoding = &v
13198	return s
13199}
13200
13201// SetContentLanguage sets the ContentLanguage field's value.
13202func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
13203	s.ContentLanguage = &v
13204	return s
13205}
13206
13207// SetContentType sets the ContentType field's value.
13208func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
13209	s.ContentType = &v
13210	return s
13211}
13212
13213// SetCopySource sets the CopySource field's value.
13214func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
13215	s.CopySource = &v
13216	return s
13217}
13218
13219// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
13220func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
13221	s.CopySourceIfMatch = &v
13222	return s
13223}
13224
13225// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
13226func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
13227	s.CopySourceIfModifiedSince = &v
13228	return s
13229}
13230
13231// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
13232func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
13233	s.CopySourceIfNoneMatch = &v
13234	return s
13235}
13236
13237// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
13238func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
13239	s.CopySourceIfUnmodifiedSince = &v
13240	return s
13241}
13242
13243// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
13244func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
13245	s.CopySourceSSECustomerAlgorithm = &v
13246	return s
13247}
13248
13249// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
13250func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
13251	s.CopySourceSSECustomerKey = &v
13252	return s
13253}
13254
13255func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
13256	if s.CopySourceSSECustomerKey == nil {
13257		return v
13258	}
13259	return *s.CopySourceSSECustomerKey
13260}
13261
13262// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
13263func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
13264	s.CopySourceSSECustomerKeyMD5 = &v
13265	return s
13266}
13267
13268// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
13269func (s *CopyObjectInput) SetExpectedBucketOwner(v string) *CopyObjectInput {
13270	s.ExpectedBucketOwner = &v
13271	return s
13272}
13273
13274// SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
13275func (s *CopyObjectInput) SetExpectedSourceBucketOwner(v string) *CopyObjectInput {
13276	s.ExpectedSourceBucketOwner = &v
13277	return s
13278}
13279
13280// SetExpires sets the Expires field's value.
13281func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
13282	s.Expires = &v
13283	return s
13284}
13285
13286// SetGrantFullControl sets the GrantFullControl field's value.
13287func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
13288	s.GrantFullControl = &v
13289	return s
13290}
13291
13292// SetGrantRead sets the GrantRead field's value.
13293func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
13294	s.GrantRead = &v
13295	return s
13296}
13297
13298// SetGrantReadACP sets the GrantReadACP field's value.
13299func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
13300	s.GrantReadACP = &v
13301	return s
13302}
13303
13304// SetGrantWriteACP sets the GrantWriteACP field's value.
13305func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
13306	s.GrantWriteACP = &v
13307	return s
13308}
13309
13310// SetKey sets the Key field's value.
13311func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
13312	s.Key = &v
13313	return s
13314}
13315
13316// SetMetadata sets the Metadata field's value.
13317func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
13318	s.Metadata = v
13319	return s
13320}
13321
13322// SetMetadataDirective sets the MetadataDirective field's value.
13323func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
13324	s.MetadataDirective = &v
13325	return s
13326}
13327
13328// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
13329func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
13330	s.ObjectLockLegalHoldStatus = &v
13331	return s
13332}
13333
13334// SetObjectLockMode sets the ObjectLockMode field's value.
13335func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
13336	s.ObjectLockMode = &v
13337	return s
13338}
13339
13340// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
13341func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
13342	s.ObjectLockRetainUntilDate = &v
13343	return s
13344}
13345
13346// SetRequestPayer sets the RequestPayer field's value.
13347func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
13348	s.RequestPayer = &v
13349	return s
13350}
13351
13352// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
13353func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
13354	s.SSECustomerAlgorithm = &v
13355	return s
13356}
13357
13358// SetSSECustomerKey sets the SSECustomerKey field's value.
13359func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
13360	s.SSECustomerKey = &v
13361	return s
13362}
13363
13364func (s *CopyObjectInput) getSSECustomerKey() (v string) {
13365	if s.SSECustomerKey == nil {
13366		return v
13367	}
13368	return *s.SSECustomerKey
13369}
13370
13371// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
13372func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
13373	s.SSECustomerKeyMD5 = &v
13374	return s
13375}
13376
13377// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
13378func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput {
13379	s.SSEKMSEncryptionContext = &v
13380	return s
13381}
13382
13383// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
13384func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
13385	s.SSEKMSKeyId = &v
13386	return s
13387}
13388
13389// SetServerSideEncryption sets the ServerSideEncryption field's value.
13390func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
13391	s.ServerSideEncryption = &v
13392	return s
13393}
13394
13395// SetStorageClass sets the StorageClass field's value.
13396func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
13397	s.StorageClass = &v
13398	return s
13399}
13400
13401// SetTagging sets the Tagging field's value.
13402func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
13403	s.Tagging = &v
13404	return s
13405}
13406
13407// SetTaggingDirective sets the TaggingDirective field's value.
13408func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
13409	s.TaggingDirective = &v
13410	return s
13411}
13412
13413// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
13414func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
13415	s.WebsiteRedirectLocation = &v
13416	return s
13417}
13418
13419func (s *CopyObjectInput) getEndpointARN() (arn.Resource, error) {
13420	if s.Bucket == nil {
13421		return nil, fmt.Errorf("member Bucket is nil")
13422	}
13423	return parseEndpointARN(*s.Bucket)
13424}
13425
13426func (s *CopyObjectInput) hasEndpointARN() bool {
13427	if s.Bucket == nil {
13428		return false
13429	}
13430	return arn.IsARN(*s.Bucket)
13431}
13432
13433// updateArnableField updates the value of the input field that
13434// takes an ARN as an input. This method is useful to backfill
13435// the parsed resource name from ARN into the input member.
13436// It returns a pointer to a modified copy of input and an error.
13437// Note that original input is not modified.
13438func (s CopyObjectInput) updateArnableField(v string) (interface{}, error) {
13439	if s.Bucket == nil {
13440		return nil, fmt.Errorf("member Bucket is nil")
13441	}
13442	s.Bucket = aws.String(v)
13443	return &s, nil
13444}
13445
13446type CopyObjectOutput struct {
13447	_ struct{} `type:"structure" payload:"CopyObjectResult"`
13448
13449	// Indicates whether the copied object uses an S3 Bucket Key for server-side
13450	// encryption with Amazon Web Services KMS (SSE-KMS).
13451	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
13452
13453	// Container for all response elements.
13454	CopyObjectResult *CopyObjectResult `type:"structure"`
13455
13456	// Version of the copied object in the destination bucket.
13457	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
13458
13459	// If the object expiration is configured, the response includes this header.
13460	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
13461
13462	// If present, indicates that the requester was successfully charged for the
13463	// request.
13464	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
13465
13466	// If server-side encryption with a customer-provided encryption key was requested,
13467	// the response will include this header confirming the encryption algorithm
13468	// used.
13469	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13470
13471	// If server-side encryption with a customer-provided encryption key was requested,
13472	// the response will include this header to provide round-trip message integrity
13473	// verification of the customer-provided encryption key.
13474	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13475
13476	// If present, specifies the Amazon Web Services KMS Encryption Context to use
13477	// for object encryption. The value of this header is a base64-encoded UTF-8
13478	// string holding JSON with the encryption context key-value pairs.
13479	//
13480	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13481	// replaced with "sensitive" in string returned by CopyObjectOutput's
13482	// String and GoString methods.
13483	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
13484
13485	// If present, specifies the ID of the Amazon Web Services Key Management Service
13486	// (Amazon Web Services KMS) symmetric customer managed key that was used for
13487	// the object.
13488	//
13489	// SSEKMSKeyId is a sensitive parameter and its value will be
13490	// replaced with "sensitive" in string returned by CopyObjectOutput's
13491	// String and GoString methods.
13492	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
13493
13494	// The server-side encryption algorithm used when storing this object in Amazon
13495	// S3 (for example, AES256, aws:kms).
13496	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
13497
13498	// Version ID of the newly created copy.
13499	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
13500}
13501
13502// String returns the string representation.
13503//
13504// API parameter values that are decorated as "sensitive" in the API will not
13505// be included in the string output. The member name will be present, but the
13506// value will be replaced with "sensitive".
13507func (s CopyObjectOutput) String() string {
13508	return awsutil.Prettify(s)
13509}
13510
13511// GoString returns the string representation.
13512//
13513// API parameter values that are decorated as "sensitive" in the API will not
13514// be included in the string output. The member name will be present, but the
13515// value will be replaced with "sensitive".
13516func (s CopyObjectOutput) GoString() string {
13517	return s.String()
13518}
13519
13520// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
13521func (s *CopyObjectOutput) SetBucketKeyEnabled(v bool) *CopyObjectOutput {
13522	s.BucketKeyEnabled = &v
13523	return s
13524}
13525
13526// SetCopyObjectResult sets the CopyObjectResult field's value.
13527func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
13528	s.CopyObjectResult = v
13529	return s
13530}
13531
13532// SetCopySourceVersionId sets the CopySourceVersionId field's value.
13533func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
13534	s.CopySourceVersionId = &v
13535	return s
13536}
13537
13538// SetExpiration sets the Expiration field's value.
13539func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
13540	s.Expiration = &v
13541	return s
13542}
13543
13544// SetRequestCharged sets the RequestCharged field's value.
13545func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
13546	s.RequestCharged = &v
13547	return s
13548}
13549
13550// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
13551func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
13552	s.SSECustomerAlgorithm = &v
13553	return s
13554}
13555
13556// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
13557func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
13558	s.SSECustomerKeyMD5 = &v
13559	return s
13560}
13561
13562// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
13563func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput {
13564	s.SSEKMSEncryptionContext = &v
13565	return s
13566}
13567
13568// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
13569func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
13570	s.SSEKMSKeyId = &v
13571	return s
13572}
13573
13574// SetServerSideEncryption sets the ServerSideEncryption field's value.
13575func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
13576	s.ServerSideEncryption = &v
13577	return s
13578}
13579
13580// SetVersionId sets the VersionId field's value.
13581func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
13582	s.VersionId = &v
13583	return s
13584}
13585
13586// Container for all response elements.
13587type CopyObjectResult struct {
13588	_ struct{} `type:"structure"`
13589
13590	// Returns the ETag of the new object. The ETag reflects only changes to the
13591	// contents of an object, not its metadata.
13592	ETag *string `type:"string"`
13593
13594	// Creation date of the object.
13595	LastModified *time.Time `type:"timestamp"`
13596}
13597
13598// String returns the string representation.
13599//
13600// API parameter values that are decorated as "sensitive" in the API will not
13601// be included in the string output. The member name will be present, but the
13602// value will be replaced with "sensitive".
13603func (s CopyObjectResult) String() string {
13604	return awsutil.Prettify(s)
13605}
13606
13607// GoString returns the string representation.
13608//
13609// API parameter values that are decorated as "sensitive" in the API will not
13610// be included in the string output. The member name will be present, but the
13611// value will be replaced with "sensitive".
13612func (s CopyObjectResult) GoString() string {
13613	return s.String()
13614}
13615
13616// SetETag sets the ETag field's value.
13617func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
13618	s.ETag = &v
13619	return s
13620}
13621
13622// SetLastModified sets the LastModified field's value.
13623func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
13624	s.LastModified = &v
13625	return s
13626}
13627
13628// Container for all response elements.
13629type CopyPartResult struct {
13630	_ struct{} `type:"structure"`
13631
13632	// Entity tag of the object.
13633	ETag *string `type:"string"`
13634
13635	// Date and time at which the object was uploaded.
13636	LastModified *time.Time `type:"timestamp"`
13637}
13638
13639// String returns the string representation.
13640//
13641// API parameter values that are decorated as "sensitive" in the API will not
13642// be included in the string output. The member name will be present, but the
13643// value will be replaced with "sensitive".
13644func (s CopyPartResult) String() string {
13645	return awsutil.Prettify(s)
13646}
13647
13648// GoString returns the string representation.
13649//
13650// API parameter values that are decorated as "sensitive" in the API will not
13651// be included in the string output. The member name will be present, but the
13652// value will be replaced with "sensitive".
13653func (s CopyPartResult) GoString() string {
13654	return s.String()
13655}
13656
13657// SetETag sets the ETag field's value.
13658func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
13659	s.ETag = &v
13660	return s
13661}
13662
13663// SetLastModified sets the LastModified field's value.
13664func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
13665	s.LastModified = &v
13666	return s
13667}
13668
13669// The configuration information for the bucket.
13670type CreateBucketConfiguration struct {
13671	_ struct{} `type:"structure"`
13672
13673	// Specifies the Region where the bucket will be created. If you don't specify
13674	// a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
13675	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
13676}
13677
13678// String returns the string representation.
13679//
13680// API parameter values that are decorated as "sensitive" in the API will not
13681// be included in the string output. The member name will be present, but the
13682// value will be replaced with "sensitive".
13683func (s CreateBucketConfiguration) String() string {
13684	return awsutil.Prettify(s)
13685}
13686
13687// GoString returns the string representation.
13688//
13689// API parameter values that are decorated as "sensitive" in the API will not
13690// be included in the string output. The member name will be present, but the
13691// value will be replaced with "sensitive".
13692func (s CreateBucketConfiguration) GoString() string {
13693	return s.String()
13694}
13695
13696// SetLocationConstraint sets the LocationConstraint field's value.
13697func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
13698	s.LocationConstraint = &v
13699	return s
13700}
13701
13702type CreateBucketInput struct {
13703	_ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"`
13704
13705	// The canned ACL to apply to the bucket.
13706	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
13707
13708	// The name of the bucket to create.
13709	//
13710	// Bucket is a required field
13711	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13712
13713	// The configuration information for the bucket.
13714	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
13715
13716	// Allows grantee the read, write, read ACP, and write ACP permissions on the
13717	// bucket.
13718	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
13719
13720	// Allows grantee to list the objects in the bucket.
13721	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
13722
13723	// Allows grantee to read the bucket ACL.
13724	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13725
13726	// Allows grantee to create new objects in the bucket.
13727	//
13728	// For the bucket and object owners of existing objects, also allows deletions
13729	// and overwrites of those objects.
13730	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
13731
13732	// Allows grantee to write the ACL for the applicable bucket.
13733	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13734
13735	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
13736	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
13737}
13738
13739// String returns the string representation.
13740//
13741// API parameter values that are decorated as "sensitive" in the API will not
13742// be included in the string output. The member name will be present, but the
13743// value will be replaced with "sensitive".
13744func (s CreateBucketInput) String() string {
13745	return awsutil.Prettify(s)
13746}
13747
13748// GoString returns the string representation.
13749//
13750// API parameter values that are decorated as "sensitive" in the API will not
13751// be included in the string output. The member name will be present, but the
13752// value will be replaced with "sensitive".
13753func (s CreateBucketInput) GoString() string {
13754	return s.String()
13755}
13756
13757// Validate inspects the fields of the type to determine if they are valid.
13758func (s *CreateBucketInput) Validate() error {
13759	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
13760	if s.Bucket == nil {
13761		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13762	}
13763	if s.Bucket != nil && len(*s.Bucket) < 1 {
13764		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13765	}
13766
13767	if invalidParams.Len() > 0 {
13768		return invalidParams
13769	}
13770	return nil
13771}
13772
13773// SetACL sets the ACL field's value.
13774func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
13775	s.ACL = &v
13776	return s
13777}
13778
13779// SetBucket sets the Bucket field's value.
13780func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
13781	s.Bucket = &v
13782	return s
13783}
13784
13785func (s *CreateBucketInput) getBucket() (v string) {
13786	if s.Bucket == nil {
13787		return v
13788	}
13789	return *s.Bucket
13790}
13791
13792// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
13793func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
13794	s.CreateBucketConfiguration = v
13795	return s
13796}
13797
13798// SetGrantFullControl sets the GrantFullControl field's value.
13799func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
13800	s.GrantFullControl = &v
13801	return s
13802}
13803
13804// SetGrantRead sets the GrantRead field's value.
13805func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
13806	s.GrantRead = &v
13807	return s
13808}
13809
13810// SetGrantReadACP sets the GrantReadACP field's value.
13811func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
13812	s.GrantReadACP = &v
13813	return s
13814}
13815
13816// SetGrantWrite sets the GrantWrite field's value.
13817func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
13818	s.GrantWrite = &v
13819	return s
13820}
13821
13822// SetGrantWriteACP sets the GrantWriteACP field's value.
13823func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
13824	s.GrantWriteACP = &v
13825	return s
13826}
13827
13828// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
13829func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
13830	s.ObjectLockEnabledForBucket = &v
13831	return s
13832}
13833
13834type CreateBucketOutput struct {
13835	_ struct{} `type:"structure"`
13836
13837	// Specifies the Region where the bucket will be created. If you are creating
13838	// a bucket on the US East (N. Virginia) Region (us-east-1), you do not need
13839	// to specify the location.
13840	Location *string `location:"header" locationName:"Location" type:"string"`
13841}
13842
13843// String returns the string representation.
13844//
13845// API parameter values that are decorated as "sensitive" in the API will not
13846// be included in the string output. The member name will be present, but the
13847// value will be replaced with "sensitive".
13848func (s CreateBucketOutput) String() string {
13849	return awsutil.Prettify(s)
13850}
13851
13852// GoString returns the string representation.
13853//
13854// API parameter values that are decorated as "sensitive" in the API will not
13855// be included in the string output. The member name will be present, but the
13856// value will be replaced with "sensitive".
13857func (s CreateBucketOutput) GoString() string {
13858	return s.String()
13859}
13860
13861// SetLocation sets the Location field's value.
13862func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
13863	s.Location = &v
13864	return s
13865}
13866
13867type CreateMultipartUploadInput struct {
13868	_ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"`
13869
13870	// The canned ACL to apply to the object.
13871	//
13872	// This action is not supported by Amazon S3 on Outposts.
13873	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
13874
13875	// The name of the bucket to which to initiate the upload
13876	//
13877	// When using this action with an access point, you must direct requests to
13878	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
13879	// When using this action with an access point through the Amazon Web Services
13880	// SDKs, you provide the access point ARN in place of the bucket name. For more
13881	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
13882	// in the Amazon S3 User Guide.
13883	//
13884	// When using this action with Amazon S3 on Outposts, you must direct requests
13885	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
13886	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
13887	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
13888	// you provide the Outposts bucket ARN in place of the bucket name. For more
13889	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
13890	// in the Amazon S3 User Guide.
13891	//
13892	// Bucket is a required field
13893	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13894
13895	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
13896	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
13897	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
13898	// SSE-KMS.
13899	//
13900	// Specifying this header with an object action doesn’t affect bucket-level
13901	// settings for S3 Bucket Key.
13902	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
13903
13904	// Specifies caching behavior along the request/reply chain.
13905	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
13906
13907	// Specifies presentational information for the object.
13908	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
13909
13910	// Specifies what content encodings have been applied to the object and thus
13911	// what decoding mechanisms must be applied to obtain the media-type referenced
13912	// by the Content-Type header field.
13913	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
13914
13915	// The language the content is in.
13916	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
13917
13918	// A standard MIME type describing the format of the object data.
13919	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
13920
13921	// The account ID of the expected bucket owner. If the bucket is owned by a
13922	// different account, the request will fail with an HTTP 403 (Access Denied)
13923	// error.
13924	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
13925
13926	// The date and time at which the object is no longer cacheable.
13927	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
13928
13929	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
13930	//
13931	// This action is not supported by Amazon S3 on Outposts.
13932	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
13933
13934	// Allows grantee to read the object data and its metadata.
13935	//
13936	// This action is not supported by Amazon S3 on Outposts.
13937	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
13938
13939	// Allows grantee to read the object ACL.
13940	//
13941	// This action is not supported by Amazon S3 on Outposts.
13942	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13943
13944	// Allows grantee to write the ACL for the applicable object.
13945	//
13946	// This action is not supported by Amazon S3 on Outposts.
13947	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13948
13949	// Object key for which the multipart upload is to be initiated.
13950	//
13951	// Key is a required field
13952	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13953
13954	// A map of metadata to store with the object in S3.
13955	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
13956
13957	// Specifies whether you want to apply a Legal Hold to the uploaded object.
13958	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
13959
13960	// Specifies the Object Lock mode that you want to apply to the uploaded object.
13961	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
13962
13963	// Specifies the date and time when you want the Object Lock to expire.
13964	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
13965
13966	// Confirms that the requester knows that they will be charged for the request.
13967	// Bucket owners need not specify this parameter in their requests. For information
13968	// about downloading objects from requester pays buckets, see Downloading Objects
13969	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13970	// in the Amazon S3 User Guide.
13971	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13972
13973	// Specifies the algorithm to use to when encrypting the object (for example,
13974	// AES256).
13975	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13976
13977	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
13978	// data. This value is used to store the object and then it is discarded; Amazon
13979	// S3 does not store the encryption key. The key must be appropriate for use
13980	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
13981	// header.
13982	//
13983	// SSECustomerKey is a sensitive parameter and its value will be
13984	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
13985	// String and GoString methods.
13986	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
13987
13988	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
13989	// Amazon S3 uses this header for a message integrity check to ensure that the
13990	// encryption key was transmitted without error.
13991	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13992
13993	// Specifies the Amazon Web Services KMS Encryption Context to use for object
13994	// encryption. The value of this header is a base64-encoded UTF-8 string holding
13995	// JSON with the encryption context key-value pairs.
13996	//
13997	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13998	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
13999	// String and GoString methods.
14000	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
14001
14002	// Specifies the ID of the symmetric customer managed key to use for object
14003	// encryption. All GET and PUT requests for an object protected by Amazon Web
14004	// Services KMS will fail if not made via SSL or using SigV4. For information
14005	// about configuring using any of the officially supported Amazon Web Services
14006	// SDKs and Amazon Web Services CLI, see Specifying the Signature Version in
14007	// Request Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
14008	// in the Amazon S3 User Guide.
14009	//
14010	// SSEKMSKeyId is a sensitive parameter and its value will be
14011	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
14012	// String and GoString methods.
14013	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
14014
14015	// The server-side encryption algorithm used when storing this object in Amazon
14016	// S3 (for example, AES256, aws:kms).
14017	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
14018
14019	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
14020	// objects. The STANDARD storage class provides high durability and high availability.
14021	// Depending on performance needs, you can specify a different Storage Class.
14022	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
14023	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
14024	// in the Amazon S3 User Guide.
14025	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
14026
14027	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
14028	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
14029
14030	// If the bucket is configured as a website, redirects requests for this object
14031	// to another object in the same bucket or to an external URL. Amazon S3 stores
14032	// the value of this header in the object metadata.
14033	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
14034}
14035
14036// String returns the string representation.
14037//
14038// API parameter values that are decorated as "sensitive" in the API will not
14039// be included in the string output. The member name will be present, but the
14040// value will be replaced with "sensitive".
14041func (s CreateMultipartUploadInput) String() string {
14042	return awsutil.Prettify(s)
14043}
14044
14045// GoString returns the string representation.
14046//
14047// API parameter values that are decorated as "sensitive" in the API will not
14048// be included in the string output. The member name will be present, but the
14049// value will be replaced with "sensitive".
14050func (s CreateMultipartUploadInput) GoString() string {
14051	return s.String()
14052}
14053
14054// Validate inspects the fields of the type to determine if they are valid.
14055func (s *CreateMultipartUploadInput) Validate() error {
14056	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
14057	if s.Bucket == nil {
14058		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14059	}
14060	if s.Bucket != nil && len(*s.Bucket) < 1 {
14061		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14062	}
14063	if s.Key == nil {
14064		invalidParams.Add(request.NewErrParamRequired("Key"))
14065	}
14066	if s.Key != nil && len(*s.Key) < 1 {
14067		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14068	}
14069
14070	if invalidParams.Len() > 0 {
14071		return invalidParams
14072	}
14073	return nil
14074}
14075
14076// SetACL sets the ACL field's value.
14077func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
14078	s.ACL = &v
14079	return s
14080}
14081
14082// SetBucket sets the Bucket field's value.
14083func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
14084	s.Bucket = &v
14085	return s
14086}
14087
14088func (s *CreateMultipartUploadInput) getBucket() (v string) {
14089	if s.Bucket == nil {
14090		return v
14091	}
14092	return *s.Bucket
14093}
14094
14095// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
14096func (s *CreateMultipartUploadInput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadInput {
14097	s.BucketKeyEnabled = &v
14098	return s
14099}
14100
14101// SetCacheControl sets the CacheControl field's value.
14102func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
14103	s.CacheControl = &v
14104	return s
14105}
14106
14107// SetContentDisposition sets the ContentDisposition field's value.
14108func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
14109	s.ContentDisposition = &v
14110	return s
14111}
14112
14113// SetContentEncoding sets the ContentEncoding field's value.
14114func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
14115	s.ContentEncoding = &v
14116	return s
14117}
14118
14119// SetContentLanguage sets the ContentLanguage field's value.
14120func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
14121	s.ContentLanguage = &v
14122	return s
14123}
14124
14125// SetContentType sets the ContentType field's value.
14126func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
14127	s.ContentType = &v
14128	return s
14129}
14130
14131// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14132func (s *CreateMultipartUploadInput) SetExpectedBucketOwner(v string) *CreateMultipartUploadInput {
14133	s.ExpectedBucketOwner = &v
14134	return s
14135}
14136
14137// SetExpires sets the Expires field's value.
14138func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
14139	s.Expires = &v
14140	return s
14141}
14142
14143// SetGrantFullControl sets the GrantFullControl field's value.
14144func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
14145	s.GrantFullControl = &v
14146	return s
14147}
14148
14149// SetGrantRead sets the GrantRead field's value.
14150func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
14151	s.GrantRead = &v
14152	return s
14153}
14154
14155// SetGrantReadACP sets the GrantReadACP field's value.
14156func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
14157	s.GrantReadACP = &v
14158	return s
14159}
14160
14161// SetGrantWriteACP sets the GrantWriteACP field's value.
14162func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
14163	s.GrantWriteACP = &v
14164	return s
14165}
14166
14167// SetKey sets the Key field's value.
14168func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
14169	s.Key = &v
14170	return s
14171}
14172
14173// SetMetadata sets the Metadata field's value.
14174func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
14175	s.Metadata = v
14176	return s
14177}
14178
14179// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
14180func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
14181	s.ObjectLockLegalHoldStatus = &v
14182	return s
14183}
14184
14185// SetObjectLockMode sets the ObjectLockMode field's value.
14186func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
14187	s.ObjectLockMode = &v
14188	return s
14189}
14190
14191// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
14192func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
14193	s.ObjectLockRetainUntilDate = &v
14194	return s
14195}
14196
14197// SetRequestPayer sets the RequestPayer field's value.
14198func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
14199	s.RequestPayer = &v
14200	return s
14201}
14202
14203// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14204func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
14205	s.SSECustomerAlgorithm = &v
14206	return s
14207}
14208
14209// SetSSECustomerKey sets the SSECustomerKey field's value.
14210func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
14211	s.SSECustomerKey = &v
14212	return s
14213}
14214
14215func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
14216	if s.SSECustomerKey == nil {
14217		return v
14218	}
14219	return *s.SSECustomerKey
14220}
14221
14222// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14223func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
14224	s.SSECustomerKeyMD5 = &v
14225	return s
14226}
14227
14228// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
14229func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput {
14230	s.SSEKMSEncryptionContext = &v
14231	return s
14232}
14233
14234// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
14235func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
14236	s.SSEKMSKeyId = &v
14237	return s
14238}
14239
14240// SetServerSideEncryption sets the ServerSideEncryption field's value.
14241func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
14242	s.ServerSideEncryption = &v
14243	return s
14244}
14245
14246// SetStorageClass sets the StorageClass field's value.
14247func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
14248	s.StorageClass = &v
14249	return s
14250}
14251
14252// SetTagging sets the Tagging field's value.
14253func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
14254	s.Tagging = &v
14255	return s
14256}
14257
14258// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
14259func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
14260	s.WebsiteRedirectLocation = &v
14261	return s
14262}
14263
14264func (s *CreateMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
14265	if s.Bucket == nil {
14266		return nil, fmt.Errorf("member Bucket is nil")
14267	}
14268	return parseEndpointARN(*s.Bucket)
14269}
14270
14271func (s *CreateMultipartUploadInput) hasEndpointARN() bool {
14272	if s.Bucket == nil {
14273		return false
14274	}
14275	return arn.IsARN(*s.Bucket)
14276}
14277
14278// updateArnableField updates the value of the input field that
14279// takes an ARN as an input. This method is useful to backfill
14280// the parsed resource name from ARN into the input member.
14281// It returns a pointer to a modified copy of input and an error.
14282// Note that original input is not modified.
14283func (s CreateMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
14284	if s.Bucket == nil {
14285		return nil, fmt.Errorf("member Bucket is nil")
14286	}
14287	s.Bucket = aws.String(v)
14288	return &s, nil
14289}
14290
14291type CreateMultipartUploadOutput struct {
14292	_ struct{} `type:"structure"`
14293
14294	// If the bucket has a lifecycle rule configured with an action to abort incomplete
14295	// multipart uploads and the prefix in the lifecycle rule matches the object
14296	// name in the request, the response includes this header. The header indicates
14297	// when the initiated multipart upload becomes eligible for an abort operation.
14298	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
14299	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
14300	//
14301	// The response also includes the x-amz-abort-rule-id header that provides the
14302	// ID of the lifecycle configuration rule that defines this action.
14303	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
14304
14305	// This header is returned along with the x-amz-abort-date header. It identifies
14306	// the applicable lifecycle configuration rule that defines the action to abort
14307	// incomplete multipart uploads.
14308	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
14309
14310	// The name of the bucket to which the multipart upload was initiated. Does
14311	// not return the access point ARN or access point alias if used.
14312	//
14313	// When using this action with an access point, you must direct requests to
14314	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
14315	// When using this action with an access point through the Amazon Web Services
14316	// SDKs, you provide the access point ARN in place of the bucket name. For more
14317	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
14318	// in the Amazon S3 User Guide.
14319	//
14320	// When using this action with Amazon S3 on Outposts, you must direct requests
14321	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
14322	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
14323	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
14324	// you provide the Outposts bucket ARN in place of the bucket name. For more
14325	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
14326	// in the Amazon S3 User Guide.
14327	Bucket *string `locationName:"Bucket" type:"string"`
14328
14329	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
14330	// encryption with Amazon Web Services KMS (SSE-KMS).
14331	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
14332
14333	// Object key for which the multipart upload was initiated.
14334	Key *string `min:"1" type:"string"`
14335
14336	// If present, indicates that the requester was successfully charged for the
14337	// request.
14338	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14339
14340	// If server-side encryption with a customer-provided encryption key was requested,
14341	// the response will include this header confirming the encryption algorithm
14342	// used.
14343	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
14344
14345	// If server-side encryption with a customer-provided encryption key was requested,
14346	// the response will include this header to provide round-trip message integrity
14347	// verification of the customer-provided encryption key.
14348	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
14349
14350	// If present, specifies the Amazon Web Services KMS Encryption Context to use
14351	// for object encryption. The value of this header is a base64-encoded UTF-8
14352	// string holding JSON with the encryption context key-value pairs.
14353	//
14354	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
14355	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
14356	// String and GoString methods.
14357	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
14358
14359	// If present, specifies the ID of the Amazon Web Services Key Management Service
14360	// (Amazon Web Services KMS) symmetric customer managed key that was used for
14361	// the object.
14362	//
14363	// SSEKMSKeyId is a sensitive parameter and its value will be
14364	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
14365	// String and GoString methods.
14366	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
14367
14368	// The server-side encryption algorithm used when storing this object in Amazon
14369	// S3 (for example, AES256, aws:kms).
14370	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
14371
14372	// ID for the initiated multipart upload.
14373	UploadId *string `type:"string"`
14374}
14375
14376// String returns the string representation.
14377//
14378// API parameter values that are decorated as "sensitive" in the API will not
14379// be included in the string output. The member name will be present, but the
14380// value will be replaced with "sensitive".
14381func (s CreateMultipartUploadOutput) String() string {
14382	return awsutil.Prettify(s)
14383}
14384
14385// GoString returns the string representation.
14386//
14387// API parameter values that are decorated as "sensitive" in the API will not
14388// be included in the string output. The member name will be present, but the
14389// value will be replaced with "sensitive".
14390func (s CreateMultipartUploadOutput) GoString() string {
14391	return s.String()
14392}
14393
14394// SetAbortDate sets the AbortDate field's value.
14395func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
14396	s.AbortDate = &v
14397	return s
14398}
14399
14400// SetAbortRuleId sets the AbortRuleId field's value.
14401func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
14402	s.AbortRuleId = &v
14403	return s
14404}
14405
14406// SetBucket sets the Bucket field's value.
14407func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
14408	s.Bucket = &v
14409	return s
14410}
14411
14412func (s *CreateMultipartUploadOutput) getBucket() (v string) {
14413	if s.Bucket == nil {
14414		return v
14415	}
14416	return *s.Bucket
14417}
14418
14419// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
14420func (s *CreateMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadOutput {
14421	s.BucketKeyEnabled = &v
14422	return s
14423}
14424
14425// SetKey sets the Key field's value.
14426func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
14427	s.Key = &v
14428	return s
14429}
14430
14431// SetRequestCharged sets the RequestCharged field's value.
14432func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
14433	s.RequestCharged = &v
14434	return s
14435}
14436
14437// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14438func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
14439	s.SSECustomerAlgorithm = &v
14440	return s
14441}
14442
14443// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14444func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
14445	s.SSECustomerKeyMD5 = &v
14446	return s
14447}
14448
14449// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
14450func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput {
14451	s.SSEKMSEncryptionContext = &v
14452	return s
14453}
14454
14455// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
14456func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
14457	s.SSEKMSKeyId = &v
14458	return s
14459}
14460
14461// SetServerSideEncryption sets the ServerSideEncryption field's value.
14462func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
14463	s.ServerSideEncryption = &v
14464	return s
14465}
14466
14467// SetUploadId sets the UploadId field's value.
14468func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
14469	s.UploadId = &v
14470	return s
14471}
14472
14473// The container element for specifying the default Object Lock retention settings
14474// for new objects placed in the specified bucket.
14475//
14476//    * The DefaultRetention settings require both a mode and a period.
14477//
14478//    * The DefaultRetention period can be either Days or Years but you must
14479//    select one. You cannot specify Days and Years at the same time.
14480type DefaultRetention struct {
14481	_ struct{} `type:"structure"`
14482
14483	// The number of days that you want to specify for the default retention period.
14484	// Must be used with Mode.
14485	Days *int64 `type:"integer"`
14486
14487	// The default Object Lock retention mode you want to apply to new objects placed
14488	// in the specified bucket. Must be used with either Days or Years.
14489	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
14490
14491	// The number of years that you want to specify for the default retention period.
14492	// Must be used with Mode.
14493	Years *int64 `type:"integer"`
14494}
14495
14496// String returns the string representation.
14497//
14498// API parameter values that are decorated as "sensitive" in the API will not
14499// be included in the string output. The member name will be present, but the
14500// value will be replaced with "sensitive".
14501func (s DefaultRetention) String() string {
14502	return awsutil.Prettify(s)
14503}
14504
14505// GoString returns the string representation.
14506//
14507// API parameter values that are decorated as "sensitive" in the API will not
14508// be included in the string output. The member name will be present, but the
14509// value will be replaced with "sensitive".
14510func (s DefaultRetention) GoString() string {
14511	return s.String()
14512}
14513
14514// SetDays sets the Days field's value.
14515func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
14516	s.Days = &v
14517	return s
14518}
14519
14520// SetMode sets the Mode field's value.
14521func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
14522	s.Mode = &v
14523	return s
14524}
14525
14526// SetYears sets the Years field's value.
14527func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
14528	s.Years = &v
14529	return s
14530}
14531
14532// Container for the objects to delete.
14533type Delete struct {
14534	_ struct{} `type:"structure"`
14535
14536	// The objects to delete.
14537	//
14538	// Objects is a required field
14539	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
14540
14541	// Element to enable quiet mode for the request. When you add this element,
14542	// you must set its value to true.
14543	Quiet *bool `type:"boolean"`
14544}
14545
14546// String returns the string representation.
14547//
14548// API parameter values that are decorated as "sensitive" in the API will not
14549// be included in the string output. The member name will be present, but the
14550// value will be replaced with "sensitive".
14551func (s Delete) String() string {
14552	return awsutil.Prettify(s)
14553}
14554
14555// GoString returns the string representation.
14556//
14557// API parameter values that are decorated as "sensitive" in the API will not
14558// be included in the string output. The member name will be present, but the
14559// value will be replaced with "sensitive".
14560func (s Delete) GoString() string {
14561	return s.String()
14562}
14563
14564// Validate inspects the fields of the type to determine if they are valid.
14565func (s *Delete) Validate() error {
14566	invalidParams := request.ErrInvalidParams{Context: "Delete"}
14567	if s.Objects == nil {
14568		invalidParams.Add(request.NewErrParamRequired("Objects"))
14569	}
14570	if s.Objects != nil {
14571		for i, v := range s.Objects {
14572			if v == nil {
14573				continue
14574			}
14575			if err := v.Validate(); err != nil {
14576				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
14577			}
14578		}
14579	}
14580
14581	if invalidParams.Len() > 0 {
14582		return invalidParams
14583	}
14584	return nil
14585}
14586
14587// SetObjects sets the Objects field's value.
14588func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
14589	s.Objects = v
14590	return s
14591}
14592
14593// SetQuiet sets the Quiet field's value.
14594func (s *Delete) SetQuiet(v bool) *Delete {
14595	s.Quiet = &v
14596	return s
14597}
14598
14599type DeleteBucketAnalyticsConfigurationInput struct {
14600	_ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"`
14601
14602	// The name of the bucket from which an analytics configuration is deleted.
14603	//
14604	// Bucket is a required field
14605	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14606
14607	// The account ID of the expected bucket owner. If the bucket is owned by a
14608	// different account, the request will fail with an HTTP 403 (Access Denied)
14609	// error.
14610	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14611
14612	// The ID that identifies the analytics configuration.
14613	//
14614	// Id is a required field
14615	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
14616}
14617
14618// String returns the string representation.
14619//
14620// API parameter values that are decorated as "sensitive" in the API will not
14621// be included in the string output. The member name will be present, but the
14622// value will be replaced with "sensitive".
14623func (s DeleteBucketAnalyticsConfigurationInput) String() string {
14624	return awsutil.Prettify(s)
14625}
14626
14627// GoString returns the string representation.
14628//
14629// API parameter values that are decorated as "sensitive" in the API will not
14630// be included in the string output. The member name will be present, but the
14631// value will be replaced with "sensitive".
14632func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
14633	return s.String()
14634}
14635
14636// Validate inspects the fields of the type to determine if they are valid.
14637func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
14638	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
14639	if s.Bucket == nil {
14640		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14641	}
14642	if s.Bucket != nil && len(*s.Bucket) < 1 {
14643		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14644	}
14645	if s.Id == nil {
14646		invalidParams.Add(request.NewErrParamRequired("Id"))
14647	}
14648
14649	if invalidParams.Len() > 0 {
14650		return invalidParams
14651	}
14652	return nil
14653}
14654
14655// SetBucket sets the Bucket field's value.
14656func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
14657	s.Bucket = &v
14658	return s
14659}
14660
14661func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
14662	if s.Bucket == nil {
14663		return v
14664	}
14665	return *s.Bucket
14666}
14667
14668// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14669func (s *DeleteBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketAnalyticsConfigurationInput {
14670	s.ExpectedBucketOwner = &v
14671	return s
14672}
14673
14674// SetId sets the Id field's value.
14675func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
14676	s.Id = &v
14677	return s
14678}
14679
14680func (s *DeleteBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
14681	if s.Bucket == nil {
14682		return nil, fmt.Errorf("member Bucket is nil")
14683	}
14684	return parseEndpointARN(*s.Bucket)
14685}
14686
14687func (s *DeleteBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
14688	if s.Bucket == nil {
14689		return false
14690	}
14691	return arn.IsARN(*s.Bucket)
14692}
14693
14694// updateArnableField updates the value of the input field that
14695// takes an ARN as an input. This method is useful to backfill
14696// the parsed resource name from ARN into the input member.
14697// It returns a pointer to a modified copy of input and an error.
14698// Note that original input is not modified.
14699func (s DeleteBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
14700	if s.Bucket == nil {
14701		return nil, fmt.Errorf("member Bucket is nil")
14702	}
14703	s.Bucket = aws.String(v)
14704	return &s, nil
14705}
14706
14707type DeleteBucketAnalyticsConfigurationOutput struct {
14708	_ struct{} `type:"structure"`
14709}
14710
14711// String returns the string representation.
14712//
14713// API parameter values that are decorated as "sensitive" in the API will not
14714// be included in the string output. The member name will be present, but the
14715// value will be replaced with "sensitive".
14716func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
14717	return awsutil.Prettify(s)
14718}
14719
14720// GoString returns the string representation.
14721//
14722// API parameter values that are decorated as "sensitive" in the API will not
14723// be included in the string output. The member name will be present, but the
14724// value will be replaced with "sensitive".
14725func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
14726	return s.String()
14727}
14728
14729type DeleteBucketCorsInput struct {
14730	_ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"`
14731
14732	// Specifies the bucket whose cors configuration is being deleted.
14733	//
14734	// Bucket is a required field
14735	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14736
14737	// The account ID of the expected bucket owner. If the bucket is owned by a
14738	// different account, the request will fail with an HTTP 403 (Access Denied)
14739	// error.
14740	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14741}
14742
14743// String returns the string representation.
14744//
14745// API parameter values that are decorated as "sensitive" in the API will not
14746// be included in the string output. The member name will be present, but the
14747// value will be replaced with "sensitive".
14748func (s DeleteBucketCorsInput) String() string {
14749	return awsutil.Prettify(s)
14750}
14751
14752// GoString returns the string representation.
14753//
14754// API parameter values that are decorated as "sensitive" in the API will not
14755// be included in the string output. The member name will be present, but the
14756// value will be replaced with "sensitive".
14757func (s DeleteBucketCorsInput) GoString() string {
14758	return s.String()
14759}
14760
14761// Validate inspects the fields of the type to determine if they are valid.
14762func (s *DeleteBucketCorsInput) Validate() error {
14763	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
14764	if s.Bucket == nil {
14765		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14766	}
14767	if s.Bucket != nil && len(*s.Bucket) < 1 {
14768		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14769	}
14770
14771	if invalidParams.Len() > 0 {
14772		return invalidParams
14773	}
14774	return nil
14775}
14776
14777// SetBucket sets the Bucket field's value.
14778func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
14779	s.Bucket = &v
14780	return s
14781}
14782
14783func (s *DeleteBucketCorsInput) getBucket() (v string) {
14784	if s.Bucket == nil {
14785		return v
14786	}
14787	return *s.Bucket
14788}
14789
14790// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14791func (s *DeleteBucketCorsInput) SetExpectedBucketOwner(v string) *DeleteBucketCorsInput {
14792	s.ExpectedBucketOwner = &v
14793	return s
14794}
14795
14796func (s *DeleteBucketCorsInput) getEndpointARN() (arn.Resource, error) {
14797	if s.Bucket == nil {
14798		return nil, fmt.Errorf("member Bucket is nil")
14799	}
14800	return parseEndpointARN(*s.Bucket)
14801}
14802
14803func (s *DeleteBucketCorsInput) hasEndpointARN() bool {
14804	if s.Bucket == nil {
14805		return false
14806	}
14807	return arn.IsARN(*s.Bucket)
14808}
14809
14810// updateArnableField updates the value of the input field that
14811// takes an ARN as an input. This method is useful to backfill
14812// the parsed resource name from ARN into the input member.
14813// It returns a pointer to a modified copy of input and an error.
14814// Note that original input is not modified.
14815func (s DeleteBucketCorsInput) updateArnableField(v string) (interface{}, error) {
14816	if s.Bucket == nil {
14817		return nil, fmt.Errorf("member Bucket is nil")
14818	}
14819	s.Bucket = aws.String(v)
14820	return &s, nil
14821}
14822
14823type DeleteBucketCorsOutput struct {
14824	_ struct{} `type:"structure"`
14825}
14826
14827// String returns the string representation.
14828//
14829// API parameter values that are decorated as "sensitive" in the API will not
14830// be included in the string output. The member name will be present, but the
14831// value will be replaced with "sensitive".
14832func (s DeleteBucketCorsOutput) String() string {
14833	return awsutil.Prettify(s)
14834}
14835
14836// GoString returns the string representation.
14837//
14838// API parameter values that are decorated as "sensitive" in the API will not
14839// be included in the string output. The member name will be present, but the
14840// value will be replaced with "sensitive".
14841func (s DeleteBucketCorsOutput) GoString() string {
14842	return s.String()
14843}
14844
14845type DeleteBucketEncryptionInput struct {
14846	_ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"`
14847
14848	// The name of the bucket containing the server-side encryption configuration
14849	// to delete.
14850	//
14851	// Bucket is a required field
14852	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14853
14854	// The account ID of the expected bucket owner. If the bucket is owned by a
14855	// different account, the request will fail with an HTTP 403 (Access Denied)
14856	// error.
14857	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14858}
14859
14860// String returns the string representation.
14861//
14862// API parameter values that are decorated as "sensitive" in the API will not
14863// be included in the string output. The member name will be present, but the
14864// value will be replaced with "sensitive".
14865func (s DeleteBucketEncryptionInput) String() string {
14866	return awsutil.Prettify(s)
14867}
14868
14869// GoString returns the string representation.
14870//
14871// API parameter values that are decorated as "sensitive" in the API will not
14872// be included in the string output. The member name will be present, but the
14873// value will be replaced with "sensitive".
14874func (s DeleteBucketEncryptionInput) GoString() string {
14875	return s.String()
14876}
14877
14878// Validate inspects the fields of the type to determine if they are valid.
14879func (s *DeleteBucketEncryptionInput) Validate() error {
14880	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
14881	if s.Bucket == nil {
14882		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14883	}
14884	if s.Bucket != nil && len(*s.Bucket) < 1 {
14885		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14886	}
14887
14888	if invalidParams.Len() > 0 {
14889		return invalidParams
14890	}
14891	return nil
14892}
14893
14894// SetBucket sets the Bucket field's value.
14895func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
14896	s.Bucket = &v
14897	return s
14898}
14899
14900func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
14901	if s.Bucket == nil {
14902		return v
14903	}
14904	return *s.Bucket
14905}
14906
14907// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14908func (s *DeleteBucketEncryptionInput) SetExpectedBucketOwner(v string) *DeleteBucketEncryptionInput {
14909	s.ExpectedBucketOwner = &v
14910	return s
14911}
14912
14913func (s *DeleteBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
14914	if s.Bucket == nil {
14915		return nil, fmt.Errorf("member Bucket is nil")
14916	}
14917	return parseEndpointARN(*s.Bucket)
14918}
14919
14920func (s *DeleteBucketEncryptionInput) hasEndpointARN() bool {
14921	if s.Bucket == nil {
14922		return false
14923	}
14924	return arn.IsARN(*s.Bucket)
14925}
14926
14927// updateArnableField updates the value of the input field that
14928// takes an ARN as an input. This method is useful to backfill
14929// the parsed resource name from ARN into the input member.
14930// It returns a pointer to a modified copy of input and an error.
14931// Note that original input is not modified.
14932func (s DeleteBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
14933	if s.Bucket == nil {
14934		return nil, fmt.Errorf("member Bucket is nil")
14935	}
14936	s.Bucket = aws.String(v)
14937	return &s, nil
14938}
14939
14940type DeleteBucketEncryptionOutput struct {
14941	_ struct{} `type:"structure"`
14942}
14943
14944// String returns the string representation.
14945//
14946// API parameter values that are decorated as "sensitive" in the API will not
14947// be included in the string output. The member name will be present, but the
14948// value will be replaced with "sensitive".
14949func (s DeleteBucketEncryptionOutput) String() string {
14950	return awsutil.Prettify(s)
14951}
14952
14953// GoString returns the string representation.
14954//
14955// API parameter values that are decorated as "sensitive" in the API will not
14956// be included in the string output. The member name will be present, but the
14957// value will be replaced with "sensitive".
14958func (s DeleteBucketEncryptionOutput) GoString() string {
14959	return s.String()
14960}
14961
14962type DeleteBucketInput struct {
14963	_ struct{} `locationName:"DeleteBucketRequest" type:"structure"`
14964
14965	// Specifies the bucket being deleted.
14966	//
14967	// Bucket is a required field
14968	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14969
14970	// The account ID of the expected bucket owner. If the bucket is owned by a
14971	// different account, the request will fail with an HTTP 403 (Access Denied)
14972	// error.
14973	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14974}
14975
14976// String returns the string representation.
14977//
14978// API parameter values that are decorated as "sensitive" in the API will not
14979// be included in the string output. The member name will be present, but the
14980// value will be replaced with "sensitive".
14981func (s DeleteBucketInput) String() string {
14982	return awsutil.Prettify(s)
14983}
14984
14985// GoString returns the string representation.
14986//
14987// API parameter values that are decorated as "sensitive" in the API will not
14988// be included in the string output. The member name will be present, but the
14989// value will be replaced with "sensitive".
14990func (s DeleteBucketInput) GoString() string {
14991	return s.String()
14992}
14993
14994// Validate inspects the fields of the type to determine if they are valid.
14995func (s *DeleteBucketInput) Validate() error {
14996	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
14997	if s.Bucket == nil {
14998		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14999	}
15000	if s.Bucket != nil && len(*s.Bucket) < 1 {
15001		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15002	}
15003
15004	if invalidParams.Len() > 0 {
15005		return invalidParams
15006	}
15007	return nil
15008}
15009
15010// SetBucket sets the Bucket field's value.
15011func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
15012	s.Bucket = &v
15013	return s
15014}
15015
15016func (s *DeleteBucketInput) getBucket() (v string) {
15017	if s.Bucket == nil {
15018		return v
15019	}
15020	return *s.Bucket
15021}
15022
15023// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15024func (s *DeleteBucketInput) SetExpectedBucketOwner(v string) *DeleteBucketInput {
15025	s.ExpectedBucketOwner = &v
15026	return s
15027}
15028
15029func (s *DeleteBucketInput) getEndpointARN() (arn.Resource, error) {
15030	if s.Bucket == nil {
15031		return nil, fmt.Errorf("member Bucket is nil")
15032	}
15033	return parseEndpointARN(*s.Bucket)
15034}
15035
15036func (s *DeleteBucketInput) hasEndpointARN() bool {
15037	if s.Bucket == nil {
15038		return false
15039	}
15040	return arn.IsARN(*s.Bucket)
15041}
15042
15043// updateArnableField updates the value of the input field that
15044// takes an ARN as an input. This method is useful to backfill
15045// the parsed resource name from ARN into the input member.
15046// It returns a pointer to a modified copy of input and an error.
15047// Note that original input is not modified.
15048func (s DeleteBucketInput) updateArnableField(v string) (interface{}, error) {
15049	if s.Bucket == nil {
15050		return nil, fmt.Errorf("member Bucket is nil")
15051	}
15052	s.Bucket = aws.String(v)
15053	return &s, nil
15054}
15055
15056type DeleteBucketIntelligentTieringConfigurationInput struct {
15057	_ struct{} `locationName:"DeleteBucketIntelligentTieringConfigurationRequest" type:"structure"`
15058
15059	// The name of the Amazon S3 bucket whose configuration you want to modify or
15060	// retrieve.
15061	//
15062	// Bucket is a required field
15063	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15064
15065	// The ID used to identify the S3 Intelligent-Tiering configuration.
15066	//
15067	// Id is a required field
15068	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15069}
15070
15071// String returns the string representation.
15072//
15073// API parameter values that are decorated as "sensitive" in the API will not
15074// be included in the string output. The member name will be present, but the
15075// value will be replaced with "sensitive".
15076func (s DeleteBucketIntelligentTieringConfigurationInput) String() string {
15077	return awsutil.Prettify(s)
15078}
15079
15080// GoString returns the string representation.
15081//
15082// API parameter values that are decorated as "sensitive" in the API will not
15083// be included in the string output. The member name will be present, but the
15084// value will be replaced with "sensitive".
15085func (s DeleteBucketIntelligentTieringConfigurationInput) GoString() string {
15086	return s.String()
15087}
15088
15089// Validate inspects the fields of the type to determine if they are valid.
15090func (s *DeleteBucketIntelligentTieringConfigurationInput) Validate() error {
15091	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketIntelligentTieringConfigurationInput"}
15092	if s.Bucket == nil {
15093		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15094	}
15095	if s.Bucket != nil && len(*s.Bucket) < 1 {
15096		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15097	}
15098	if s.Id == nil {
15099		invalidParams.Add(request.NewErrParamRequired("Id"))
15100	}
15101
15102	if invalidParams.Len() > 0 {
15103		return invalidParams
15104	}
15105	return nil
15106}
15107
15108// SetBucket sets the Bucket field's value.
15109func (s *DeleteBucketIntelligentTieringConfigurationInput) SetBucket(v string) *DeleteBucketIntelligentTieringConfigurationInput {
15110	s.Bucket = &v
15111	return s
15112}
15113
15114func (s *DeleteBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
15115	if s.Bucket == nil {
15116		return v
15117	}
15118	return *s.Bucket
15119}
15120
15121// SetId sets the Id field's value.
15122func (s *DeleteBucketIntelligentTieringConfigurationInput) SetId(v string) *DeleteBucketIntelligentTieringConfigurationInput {
15123	s.Id = &v
15124	return s
15125}
15126
15127func (s *DeleteBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
15128	if s.Bucket == nil {
15129		return nil, fmt.Errorf("member Bucket is nil")
15130	}
15131	return parseEndpointARN(*s.Bucket)
15132}
15133
15134func (s *DeleteBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
15135	if s.Bucket == nil {
15136		return false
15137	}
15138	return arn.IsARN(*s.Bucket)
15139}
15140
15141// updateArnableField updates the value of the input field that
15142// takes an ARN as an input. This method is useful to backfill
15143// the parsed resource name from ARN into the input member.
15144// It returns a pointer to a modified copy of input and an error.
15145// Note that original input is not modified.
15146func (s DeleteBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
15147	if s.Bucket == nil {
15148		return nil, fmt.Errorf("member Bucket is nil")
15149	}
15150	s.Bucket = aws.String(v)
15151	return &s, nil
15152}
15153
15154type DeleteBucketIntelligentTieringConfigurationOutput struct {
15155	_ struct{} `type:"structure"`
15156}
15157
15158// String returns the string representation.
15159//
15160// API parameter values that are decorated as "sensitive" in the API will not
15161// be included in the string output. The member name will be present, but the
15162// value will be replaced with "sensitive".
15163func (s DeleteBucketIntelligentTieringConfigurationOutput) String() string {
15164	return awsutil.Prettify(s)
15165}
15166
15167// GoString returns the string representation.
15168//
15169// API parameter values that are decorated as "sensitive" in the API will not
15170// be included in the string output. The member name will be present, but the
15171// value will be replaced with "sensitive".
15172func (s DeleteBucketIntelligentTieringConfigurationOutput) GoString() string {
15173	return s.String()
15174}
15175
15176type DeleteBucketInventoryConfigurationInput struct {
15177	_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
15178
15179	// The name of the bucket containing the inventory configuration to delete.
15180	//
15181	// Bucket is a required field
15182	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15183
15184	// The account ID of the expected bucket owner. If the bucket is owned by a
15185	// different account, the request will fail with an HTTP 403 (Access Denied)
15186	// error.
15187	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15188
15189	// The ID used to identify the inventory configuration.
15190	//
15191	// Id is a required field
15192	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15193}
15194
15195// String returns the string representation.
15196//
15197// API parameter values that are decorated as "sensitive" in the API will not
15198// be included in the string output. The member name will be present, but the
15199// value will be replaced with "sensitive".
15200func (s DeleteBucketInventoryConfigurationInput) String() string {
15201	return awsutil.Prettify(s)
15202}
15203
15204// GoString returns the string representation.
15205//
15206// API parameter values that are decorated as "sensitive" in the API will not
15207// be included in the string output. The member name will be present, but the
15208// value will be replaced with "sensitive".
15209func (s DeleteBucketInventoryConfigurationInput) GoString() string {
15210	return s.String()
15211}
15212
15213// Validate inspects the fields of the type to determine if they are valid.
15214func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
15215	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
15216	if s.Bucket == nil {
15217		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15218	}
15219	if s.Bucket != nil && len(*s.Bucket) < 1 {
15220		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15221	}
15222	if s.Id == nil {
15223		invalidParams.Add(request.NewErrParamRequired("Id"))
15224	}
15225
15226	if invalidParams.Len() > 0 {
15227		return invalidParams
15228	}
15229	return nil
15230}
15231
15232// SetBucket sets the Bucket field's value.
15233func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
15234	s.Bucket = &v
15235	return s
15236}
15237
15238func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
15239	if s.Bucket == nil {
15240		return v
15241	}
15242	return *s.Bucket
15243}
15244
15245// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15246func (s *DeleteBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketInventoryConfigurationInput {
15247	s.ExpectedBucketOwner = &v
15248	return s
15249}
15250
15251// SetId sets the Id field's value.
15252func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
15253	s.Id = &v
15254	return s
15255}
15256
15257func (s *DeleteBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
15258	if s.Bucket == nil {
15259		return nil, fmt.Errorf("member Bucket is nil")
15260	}
15261	return parseEndpointARN(*s.Bucket)
15262}
15263
15264func (s *DeleteBucketInventoryConfigurationInput) hasEndpointARN() bool {
15265	if s.Bucket == nil {
15266		return false
15267	}
15268	return arn.IsARN(*s.Bucket)
15269}
15270
15271// updateArnableField updates the value of the input field that
15272// takes an ARN as an input. This method is useful to backfill
15273// the parsed resource name from ARN into the input member.
15274// It returns a pointer to a modified copy of input and an error.
15275// Note that original input is not modified.
15276func (s DeleteBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
15277	if s.Bucket == nil {
15278		return nil, fmt.Errorf("member Bucket is nil")
15279	}
15280	s.Bucket = aws.String(v)
15281	return &s, nil
15282}
15283
15284type DeleteBucketInventoryConfigurationOutput struct {
15285	_ struct{} `type:"structure"`
15286}
15287
15288// String returns the string representation.
15289//
15290// API parameter values that are decorated as "sensitive" in the API will not
15291// be included in the string output. The member name will be present, but the
15292// value will be replaced with "sensitive".
15293func (s DeleteBucketInventoryConfigurationOutput) String() string {
15294	return awsutil.Prettify(s)
15295}
15296
15297// GoString returns the string representation.
15298//
15299// API parameter values that are decorated as "sensitive" in the API will not
15300// be included in the string output. The member name will be present, but the
15301// value will be replaced with "sensitive".
15302func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
15303	return s.String()
15304}
15305
15306type DeleteBucketLifecycleInput struct {
15307	_ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"`
15308
15309	// The bucket name of the lifecycle to delete.
15310	//
15311	// Bucket is a required field
15312	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15313
15314	// The account ID of the expected bucket owner. If the bucket is owned by a
15315	// different account, the request will fail with an HTTP 403 (Access Denied)
15316	// error.
15317	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15318}
15319
15320// String returns the string representation.
15321//
15322// API parameter values that are decorated as "sensitive" in the API will not
15323// be included in the string output. The member name will be present, but the
15324// value will be replaced with "sensitive".
15325func (s DeleteBucketLifecycleInput) String() string {
15326	return awsutil.Prettify(s)
15327}
15328
15329// GoString returns the string representation.
15330//
15331// API parameter values that are decorated as "sensitive" in the API will not
15332// be included in the string output. The member name will be present, but the
15333// value will be replaced with "sensitive".
15334func (s DeleteBucketLifecycleInput) GoString() string {
15335	return s.String()
15336}
15337
15338// Validate inspects the fields of the type to determine if they are valid.
15339func (s *DeleteBucketLifecycleInput) Validate() error {
15340	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
15341	if s.Bucket == nil {
15342		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15343	}
15344	if s.Bucket != nil && len(*s.Bucket) < 1 {
15345		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15346	}
15347
15348	if invalidParams.Len() > 0 {
15349		return invalidParams
15350	}
15351	return nil
15352}
15353
15354// SetBucket sets the Bucket field's value.
15355func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
15356	s.Bucket = &v
15357	return s
15358}
15359
15360func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
15361	if s.Bucket == nil {
15362		return v
15363	}
15364	return *s.Bucket
15365}
15366
15367// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15368func (s *DeleteBucketLifecycleInput) SetExpectedBucketOwner(v string) *DeleteBucketLifecycleInput {
15369	s.ExpectedBucketOwner = &v
15370	return s
15371}
15372
15373func (s *DeleteBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
15374	if s.Bucket == nil {
15375		return nil, fmt.Errorf("member Bucket is nil")
15376	}
15377	return parseEndpointARN(*s.Bucket)
15378}
15379
15380func (s *DeleteBucketLifecycleInput) hasEndpointARN() bool {
15381	if s.Bucket == nil {
15382		return false
15383	}
15384	return arn.IsARN(*s.Bucket)
15385}
15386
15387// updateArnableField updates the value of the input field that
15388// takes an ARN as an input. This method is useful to backfill
15389// the parsed resource name from ARN into the input member.
15390// It returns a pointer to a modified copy of input and an error.
15391// Note that original input is not modified.
15392func (s DeleteBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
15393	if s.Bucket == nil {
15394		return nil, fmt.Errorf("member Bucket is nil")
15395	}
15396	s.Bucket = aws.String(v)
15397	return &s, nil
15398}
15399
15400type DeleteBucketLifecycleOutput struct {
15401	_ struct{} `type:"structure"`
15402}
15403
15404// String returns the string representation.
15405//
15406// API parameter values that are decorated as "sensitive" in the API will not
15407// be included in the string output. The member name will be present, but the
15408// value will be replaced with "sensitive".
15409func (s DeleteBucketLifecycleOutput) String() string {
15410	return awsutil.Prettify(s)
15411}
15412
15413// GoString returns the string representation.
15414//
15415// API parameter values that are decorated as "sensitive" in the API will not
15416// be included in the string output. The member name will be present, but the
15417// value will be replaced with "sensitive".
15418func (s DeleteBucketLifecycleOutput) GoString() string {
15419	return s.String()
15420}
15421
15422type DeleteBucketMetricsConfigurationInput struct {
15423	_ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"`
15424
15425	// The name of the bucket containing the metrics configuration to delete.
15426	//
15427	// Bucket is a required field
15428	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15429
15430	// The account ID of the expected bucket owner. If the bucket is owned by a
15431	// different account, the request will fail with an HTTP 403 (Access Denied)
15432	// error.
15433	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15434
15435	// The ID used to identify the metrics configuration.
15436	//
15437	// Id is a required field
15438	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15439}
15440
15441// String returns the string representation.
15442//
15443// API parameter values that are decorated as "sensitive" in the API will not
15444// be included in the string output. The member name will be present, but the
15445// value will be replaced with "sensitive".
15446func (s DeleteBucketMetricsConfigurationInput) String() string {
15447	return awsutil.Prettify(s)
15448}
15449
15450// GoString returns the string representation.
15451//
15452// API parameter values that are decorated as "sensitive" in the API will not
15453// be included in the string output. The member name will be present, but the
15454// value will be replaced with "sensitive".
15455func (s DeleteBucketMetricsConfigurationInput) GoString() string {
15456	return s.String()
15457}
15458
15459// Validate inspects the fields of the type to determine if they are valid.
15460func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
15461	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
15462	if s.Bucket == nil {
15463		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15464	}
15465	if s.Bucket != nil && len(*s.Bucket) < 1 {
15466		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15467	}
15468	if s.Id == nil {
15469		invalidParams.Add(request.NewErrParamRequired("Id"))
15470	}
15471
15472	if invalidParams.Len() > 0 {
15473		return invalidParams
15474	}
15475	return nil
15476}
15477
15478// SetBucket sets the Bucket field's value.
15479func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
15480	s.Bucket = &v
15481	return s
15482}
15483
15484func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
15485	if s.Bucket == nil {
15486		return v
15487	}
15488	return *s.Bucket
15489}
15490
15491// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15492func (s *DeleteBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketMetricsConfigurationInput {
15493	s.ExpectedBucketOwner = &v
15494	return s
15495}
15496
15497// SetId sets the Id field's value.
15498func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
15499	s.Id = &v
15500	return s
15501}
15502
15503func (s *DeleteBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
15504	if s.Bucket == nil {
15505		return nil, fmt.Errorf("member Bucket is nil")
15506	}
15507	return parseEndpointARN(*s.Bucket)
15508}
15509
15510func (s *DeleteBucketMetricsConfigurationInput) hasEndpointARN() bool {
15511	if s.Bucket == nil {
15512		return false
15513	}
15514	return arn.IsARN(*s.Bucket)
15515}
15516
15517// updateArnableField updates the value of the input field that
15518// takes an ARN as an input. This method is useful to backfill
15519// the parsed resource name from ARN into the input member.
15520// It returns a pointer to a modified copy of input and an error.
15521// Note that original input is not modified.
15522func (s DeleteBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
15523	if s.Bucket == nil {
15524		return nil, fmt.Errorf("member Bucket is nil")
15525	}
15526	s.Bucket = aws.String(v)
15527	return &s, nil
15528}
15529
15530type DeleteBucketMetricsConfigurationOutput struct {
15531	_ struct{} `type:"structure"`
15532}
15533
15534// String returns the string representation.
15535//
15536// API parameter values that are decorated as "sensitive" in the API will not
15537// be included in the string output. The member name will be present, but the
15538// value will be replaced with "sensitive".
15539func (s DeleteBucketMetricsConfigurationOutput) String() string {
15540	return awsutil.Prettify(s)
15541}
15542
15543// GoString returns the string representation.
15544//
15545// API parameter values that are decorated as "sensitive" in the API will not
15546// be included in the string output. The member name will be present, but the
15547// value will be replaced with "sensitive".
15548func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
15549	return s.String()
15550}
15551
15552type DeleteBucketOutput struct {
15553	_ struct{} `type:"structure"`
15554}
15555
15556// String returns the string representation.
15557//
15558// API parameter values that are decorated as "sensitive" in the API will not
15559// be included in the string output. The member name will be present, but the
15560// value will be replaced with "sensitive".
15561func (s DeleteBucketOutput) String() string {
15562	return awsutil.Prettify(s)
15563}
15564
15565// GoString returns the string representation.
15566//
15567// API parameter values that are decorated as "sensitive" in the API will not
15568// be included in the string output. The member name will be present, but the
15569// value will be replaced with "sensitive".
15570func (s DeleteBucketOutput) GoString() string {
15571	return s.String()
15572}
15573
15574type DeleteBucketOwnershipControlsInput struct {
15575	_ struct{} `locationName:"DeleteBucketOwnershipControlsRequest" type:"structure"`
15576
15577	// The Amazon S3 bucket whose OwnershipControls you want to delete.
15578	//
15579	// Bucket is a required field
15580	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15581
15582	// The account ID of the expected bucket owner. If the bucket is owned by a
15583	// different account, the request will fail with an HTTP 403 (Access Denied)
15584	// error.
15585	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15586}
15587
15588// String returns the string representation.
15589//
15590// API parameter values that are decorated as "sensitive" in the API will not
15591// be included in the string output. The member name will be present, but the
15592// value will be replaced with "sensitive".
15593func (s DeleteBucketOwnershipControlsInput) String() string {
15594	return awsutil.Prettify(s)
15595}
15596
15597// GoString returns the string representation.
15598//
15599// API parameter values that are decorated as "sensitive" in the API will not
15600// be included in the string output. The member name will be present, but the
15601// value will be replaced with "sensitive".
15602func (s DeleteBucketOwnershipControlsInput) GoString() string {
15603	return s.String()
15604}
15605
15606// Validate inspects the fields of the type to determine if they are valid.
15607func (s *DeleteBucketOwnershipControlsInput) Validate() error {
15608	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketOwnershipControlsInput"}
15609	if s.Bucket == nil {
15610		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15611	}
15612	if s.Bucket != nil && len(*s.Bucket) < 1 {
15613		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15614	}
15615
15616	if invalidParams.Len() > 0 {
15617		return invalidParams
15618	}
15619	return nil
15620}
15621
15622// SetBucket sets the Bucket field's value.
15623func (s *DeleteBucketOwnershipControlsInput) SetBucket(v string) *DeleteBucketOwnershipControlsInput {
15624	s.Bucket = &v
15625	return s
15626}
15627
15628func (s *DeleteBucketOwnershipControlsInput) getBucket() (v string) {
15629	if s.Bucket == nil {
15630		return v
15631	}
15632	return *s.Bucket
15633}
15634
15635// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15636func (s *DeleteBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *DeleteBucketOwnershipControlsInput {
15637	s.ExpectedBucketOwner = &v
15638	return s
15639}
15640
15641func (s *DeleteBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
15642	if s.Bucket == nil {
15643		return nil, fmt.Errorf("member Bucket is nil")
15644	}
15645	return parseEndpointARN(*s.Bucket)
15646}
15647
15648func (s *DeleteBucketOwnershipControlsInput) hasEndpointARN() bool {
15649	if s.Bucket == nil {
15650		return false
15651	}
15652	return arn.IsARN(*s.Bucket)
15653}
15654
15655// updateArnableField updates the value of the input field that
15656// takes an ARN as an input. This method is useful to backfill
15657// the parsed resource name from ARN into the input member.
15658// It returns a pointer to a modified copy of input and an error.
15659// Note that original input is not modified.
15660func (s DeleteBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
15661	if s.Bucket == nil {
15662		return nil, fmt.Errorf("member Bucket is nil")
15663	}
15664	s.Bucket = aws.String(v)
15665	return &s, nil
15666}
15667
15668type DeleteBucketOwnershipControlsOutput struct {
15669	_ struct{} `type:"structure"`
15670}
15671
15672// String returns the string representation.
15673//
15674// API parameter values that are decorated as "sensitive" in the API will not
15675// be included in the string output. The member name will be present, but the
15676// value will be replaced with "sensitive".
15677func (s DeleteBucketOwnershipControlsOutput) String() string {
15678	return awsutil.Prettify(s)
15679}
15680
15681// GoString returns the string representation.
15682//
15683// API parameter values that are decorated as "sensitive" in the API will not
15684// be included in the string output. The member name will be present, but the
15685// value will be replaced with "sensitive".
15686func (s DeleteBucketOwnershipControlsOutput) GoString() string {
15687	return s.String()
15688}
15689
15690type DeleteBucketPolicyInput struct {
15691	_ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"`
15692
15693	// The bucket name.
15694	//
15695	// Bucket is a required field
15696	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15697
15698	// The account ID of the expected bucket owner. If the bucket is owned by a
15699	// different account, the request will fail with an HTTP 403 (Access Denied)
15700	// error.
15701	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15702}
15703
15704// String returns the string representation.
15705//
15706// API parameter values that are decorated as "sensitive" in the API will not
15707// be included in the string output. The member name will be present, but the
15708// value will be replaced with "sensitive".
15709func (s DeleteBucketPolicyInput) String() string {
15710	return awsutil.Prettify(s)
15711}
15712
15713// GoString returns the string representation.
15714//
15715// API parameter values that are decorated as "sensitive" in the API will not
15716// be included in the string output. The member name will be present, but the
15717// value will be replaced with "sensitive".
15718func (s DeleteBucketPolicyInput) GoString() string {
15719	return s.String()
15720}
15721
15722// Validate inspects the fields of the type to determine if they are valid.
15723func (s *DeleteBucketPolicyInput) Validate() error {
15724	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
15725	if s.Bucket == nil {
15726		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15727	}
15728	if s.Bucket != nil && len(*s.Bucket) < 1 {
15729		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15730	}
15731
15732	if invalidParams.Len() > 0 {
15733		return invalidParams
15734	}
15735	return nil
15736}
15737
15738// SetBucket sets the Bucket field's value.
15739func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
15740	s.Bucket = &v
15741	return s
15742}
15743
15744func (s *DeleteBucketPolicyInput) getBucket() (v string) {
15745	if s.Bucket == nil {
15746		return v
15747	}
15748	return *s.Bucket
15749}
15750
15751// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15752func (s *DeleteBucketPolicyInput) SetExpectedBucketOwner(v string) *DeleteBucketPolicyInput {
15753	s.ExpectedBucketOwner = &v
15754	return s
15755}
15756
15757func (s *DeleteBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
15758	if s.Bucket == nil {
15759		return nil, fmt.Errorf("member Bucket is nil")
15760	}
15761	return parseEndpointARN(*s.Bucket)
15762}
15763
15764func (s *DeleteBucketPolicyInput) hasEndpointARN() bool {
15765	if s.Bucket == nil {
15766		return false
15767	}
15768	return arn.IsARN(*s.Bucket)
15769}
15770
15771// updateArnableField updates the value of the input field that
15772// takes an ARN as an input. This method is useful to backfill
15773// the parsed resource name from ARN into the input member.
15774// It returns a pointer to a modified copy of input and an error.
15775// Note that original input is not modified.
15776func (s DeleteBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
15777	if s.Bucket == nil {
15778		return nil, fmt.Errorf("member Bucket is nil")
15779	}
15780	s.Bucket = aws.String(v)
15781	return &s, nil
15782}
15783
15784type DeleteBucketPolicyOutput struct {
15785	_ struct{} `type:"structure"`
15786}
15787
15788// String returns the string representation.
15789//
15790// API parameter values that are decorated as "sensitive" in the API will not
15791// be included in the string output. The member name will be present, but the
15792// value will be replaced with "sensitive".
15793func (s DeleteBucketPolicyOutput) String() string {
15794	return awsutil.Prettify(s)
15795}
15796
15797// GoString returns the string representation.
15798//
15799// API parameter values that are decorated as "sensitive" in the API will not
15800// be included in the string output. The member name will be present, but the
15801// value will be replaced with "sensitive".
15802func (s DeleteBucketPolicyOutput) GoString() string {
15803	return s.String()
15804}
15805
15806type DeleteBucketReplicationInput struct {
15807	_ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"`
15808
15809	// The bucket name.
15810	//
15811	// Bucket is a required field
15812	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15813
15814	// The account ID of the expected bucket owner. If the bucket is owned by a
15815	// different account, the request will fail with an HTTP 403 (Access Denied)
15816	// error.
15817	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15818}
15819
15820// String returns the string representation.
15821//
15822// API parameter values that are decorated as "sensitive" in the API will not
15823// be included in the string output. The member name will be present, but the
15824// value will be replaced with "sensitive".
15825func (s DeleteBucketReplicationInput) String() string {
15826	return awsutil.Prettify(s)
15827}
15828
15829// GoString returns the string representation.
15830//
15831// API parameter values that are decorated as "sensitive" in the API will not
15832// be included in the string output. The member name will be present, but the
15833// value will be replaced with "sensitive".
15834func (s DeleteBucketReplicationInput) GoString() string {
15835	return s.String()
15836}
15837
15838// Validate inspects the fields of the type to determine if they are valid.
15839func (s *DeleteBucketReplicationInput) Validate() error {
15840	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
15841	if s.Bucket == nil {
15842		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15843	}
15844	if s.Bucket != nil && len(*s.Bucket) < 1 {
15845		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15846	}
15847
15848	if invalidParams.Len() > 0 {
15849		return invalidParams
15850	}
15851	return nil
15852}
15853
15854// SetBucket sets the Bucket field's value.
15855func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
15856	s.Bucket = &v
15857	return s
15858}
15859
15860func (s *DeleteBucketReplicationInput) getBucket() (v string) {
15861	if s.Bucket == nil {
15862		return v
15863	}
15864	return *s.Bucket
15865}
15866
15867// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15868func (s *DeleteBucketReplicationInput) SetExpectedBucketOwner(v string) *DeleteBucketReplicationInput {
15869	s.ExpectedBucketOwner = &v
15870	return s
15871}
15872
15873func (s *DeleteBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
15874	if s.Bucket == nil {
15875		return nil, fmt.Errorf("member Bucket is nil")
15876	}
15877	return parseEndpointARN(*s.Bucket)
15878}
15879
15880func (s *DeleteBucketReplicationInput) hasEndpointARN() bool {
15881	if s.Bucket == nil {
15882		return false
15883	}
15884	return arn.IsARN(*s.Bucket)
15885}
15886
15887// updateArnableField updates the value of the input field that
15888// takes an ARN as an input. This method is useful to backfill
15889// the parsed resource name from ARN into the input member.
15890// It returns a pointer to a modified copy of input and an error.
15891// Note that original input is not modified.
15892func (s DeleteBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
15893	if s.Bucket == nil {
15894		return nil, fmt.Errorf("member Bucket is nil")
15895	}
15896	s.Bucket = aws.String(v)
15897	return &s, nil
15898}
15899
15900type DeleteBucketReplicationOutput struct {
15901	_ struct{} `type:"structure"`
15902}
15903
15904// String returns the string representation.
15905//
15906// API parameter values that are decorated as "sensitive" in the API will not
15907// be included in the string output. The member name will be present, but the
15908// value will be replaced with "sensitive".
15909func (s DeleteBucketReplicationOutput) String() string {
15910	return awsutil.Prettify(s)
15911}
15912
15913// GoString returns the string representation.
15914//
15915// API parameter values that are decorated as "sensitive" in the API will not
15916// be included in the string output. The member name will be present, but the
15917// value will be replaced with "sensitive".
15918func (s DeleteBucketReplicationOutput) GoString() string {
15919	return s.String()
15920}
15921
15922type DeleteBucketTaggingInput struct {
15923	_ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"`
15924
15925	// The bucket that has the tag set to be removed.
15926	//
15927	// Bucket is a required field
15928	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15929
15930	// The account ID of the expected bucket owner. If the bucket is owned by a
15931	// different account, the request will fail with an HTTP 403 (Access Denied)
15932	// error.
15933	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15934}
15935
15936// String returns the string representation.
15937//
15938// API parameter values that are decorated as "sensitive" in the API will not
15939// be included in the string output. The member name will be present, but the
15940// value will be replaced with "sensitive".
15941func (s DeleteBucketTaggingInput) String() string {
15942	return awsutil.Prettify(s)
15943}
15944
15945// GoString returns the string representation.
15946//
15947// API parameter values that are decorated as "sensitive" in the API will not
15948// be included in the string output. The member name will be present, but the
15949// value will be replaced with "sensitive".
15950func (s DeleteBucketTaggingInput) GoString() string {
15951	return s.String()
15952}
15953
15954// Validate inspects the fields of the type to determine if they are valid.
15955func (s *DeleteBucketTaggingInput) Validate() error {
15956	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
15957	if s.Bucket == nil {
15958		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15959	}
15960	if s.Bucket != nil && len(*s.Bucket) < 1 {
15961		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15962	}
15963
15964	if invalidParams.Len() > 0 {
15965		return invalidParams
15966	}
15967	return nil
15968}
15969
15970// SetBucket sets the Bucket field's value.
15971func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
15972	s.Bucket = &v
15973	return s
15974}
15975
15976func (s *DeleteBucketTaggingInput) getBucket() (v string) {
15977	if s.Bucket == nil {
15978		return v
15979	}
15980	return *s.Bucket
15981}
15982
15983// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15984func (s *DeleteBucketTaggingInput) SetExpectedBucketOwner(v string) *DeleteBucketTaggingInput {
15985	s.ExpectedBucketOwner = &v
15986	return s
15987}
15988
15989func (s *DeleteBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
15990	if s.Bucket == nil {
15991		return nil, fmt.Errorf("member Bucket is nil")
15992	}
15993	return parseEndpointARN(*s.Bucket)
15994}
15995
15996func (s *DeleteBucketTaggingInput) hasEndpointARN() bool {
15997	if s.Bucket == nil {
15998		return false
15999	}
16000	return arn.IsARN(*s.Bucket)
16001}
16002
16003// updateArnableField updates the value of the input field that
16004// takes an ARN as an input. This method is useful to backfill
16005// the parsed resource name from ARN into the input member.
16006// It returns a pointer to a modified copy of input and an error.
16007// Note that original input is not modified.
16008func (s DeleteBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
16009	if s.Bucket == nil {
16010		return nil, fmt.Errorf("member Bucket is nil")
16011	}
16012	s.Bucket = aws.String(v)
16013	return &s, nil
16014}
16015
16016type DeleteBucketTaggingOutput struct {
16017	_ struct{} `type:"structure"`
16018}
16019
16020// String returns the string representation.
16021//
16022// API parameter values that are decorated as "sensitive" in the API will not
16023// be included in the string output. The member name will be present, but the
16024// value will be replaced with "sensitive".
16025func (s DeleteBucketTaggingOutput) String() string {
16026	return awsutil.Prettify(s)
16027}
16028
16029// GoString returns the string representation.
16030//
16031// API parameter values that are decorated as "sensitive" in the API will not
16032// be included in the string output. The member name will be present, but the
16033// value will be replaced with "sensitive".
16034func (s DeleteBucketTaggingOutput) GoString() string {
16035	return s.String()
16036}
16037
16038type DeleteBucketWebsiteInput struct {
16039	_ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"`
16040
16041	// The bucket name for which you want to remove the website configuration.
16042	//
16043	// Bucket is a required field
16044	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16045
16046	// The account ID of the expected bucket owner. If the bucket is owned by a
16047	// different account, the request will fail with an HTTP 403 (Access Denied)
16048	// error.
16049	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16050}
16051
16052// String returns the string representation.
16053//
16054// API parameter values that are decorated as "sensitive" in the API will not
16055// be included in the string output. The member name will be present, but the
16056// value will be replaced with "sensitive".
16057func (s DeleteBucketWebsiteInput) String() string {
16058	return awsutil.Prettify(s)
16059}
16060
16061// GoString returns the string representation.
16062//
16063// API parameter values that are decorated as "sensitive" in the API will not
16064// be included in the string output. The member name will be present, but the
16065// value will be replaced with "sensitive".
16066func (s DeleteBucketWebsiteInput) GoString() string {
16067	return s.String()
16068}
16069
16070// Validate inspects the fields of the type to determine if they are valid.
16071func (s *DeleteBucketWebsiteInput) Validate() error {
16072	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
16073	if s.Bucket == nil {
16074		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16075	}
16076	if s.Bucket != nil && len(*s.Bucket) < 1 {
16077		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16078	}
16079
16080	if invalidParams.Len() > 0 {
16081		return invalidParams
16082	}
16083	return nil
16084}
16085
16086// SetBucket sets the Bucket field's value.
16087func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
16088	s.Bucket = &v
16089	return s
16090}
16091
16092func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
16093	if s.Bucket == nil {
16094		return v
16095	}
16096	return *s.Bucket
16097}
16098
16099// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16100func (s *DeleteBucketWebsiteInput) SetExpectedBucketOwner(v string) *DeleteBucketWebsiteInput {
16101	s.ExpectedBucketOwner = &v
16102	return s
16103}
16104
16105func (s *DeleteBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
16106	if s.Bucket == nil {
16107		return nil, fmt.Errorf("member Bucket is nil")
16108	}
16109	return parseEndpointARN(*s.Bucket)
16110}
16111
16112func (s *DeleteBucketWebsiteInput) hasEndpointARN() bool {
16113	if s.Bucket == nil {
16114		return false
16115	}
16116	return arn.IsARN(*s.Bucket)
16117}
16118
16119// updateArnableField updates the value of the input field that
16120// takes an ARN as an input. This method is useful to backfill
16121// the parsed resource name from ARN into the input member.
16122// It returns a pointer to a modified copy of input and an error.
16123// Note that original input is not modified.
16124func (s DeleteBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
16125	if s.Bucket == nil {
16126		return nil, fmt.Errorf("member Bucket is nil")
16127	}
16128	s.Bucket = aws.String(v)
16129	return &s, nil
16130}
16131
16132type DeleteBucketWebsiteOutput struct {
16133	_ struct{} `type:"structure"`
16134}
16135
16136// String returns the string representation.
16137//
16138// API parameter values that are decorated as "sensitive" in the API will not
16139// be included in the string output. The member name will be present, but the
16140// value will be replaced with "sensitive".
16141func (s DeleteBucketWebsiteOutput) String() string {
16142	return awsutil.Prettify(s)
16143}
16144
16145// GoString returns the string representation.
16146//
16147// API parameter values that are decorated as "sensitive" in the API will not
16148// be included in the string output. The member name will be present, but the
16149// value will be replaced with "sensitive".
16150func (s DeleteBucketWebsiteOutput) GoString() string {
16151	return s.String()
16152}
16153
16154// Information about the delete marker.
16155type DeleteMarkerEntry struct {
16156	_ struct{} `type:"structure"`
16157
16158	// Specifies whether the object is (true) or is not (false) the latest version
16159	// of an object.
16160	IsLatest *bool `type:"boolean"`
16161
16162	// The object key.
16163	Key *string `min:"1" type:"string"`
16164
16165	// Date and time the object was last modified.
16166	LastModified *time.Time `type:"timestamp"`
16167
16168	// The account that created the delete marker.>
16169	Owner *Owner `type:"structure"`
16170
16171	// Version ID of an object.
16172	VersionId *string `type:"string"`
16173}
16174
16175// String returns the string representation.
16176//
16177// API parameter values that are decorated as "sensitive" in the API will not
16178// be included in the string output. The member name will be present, but the
16179// value will be replaced with "sensitive".
16180func (s DeleteMarkerEntry) String() string {
16181	return awsutil.Prettify(s)
16182}
16183
16184// GoString returns the string representation.
16185//
16186// API parameter values that are decorated as "sensitive" in the API will not
16187// be included in the string output. The member name will be present, but the
16188// value will be replaced with "sensitive".
16189func (s DeleteMarkerEntry) GoString() string {
16190	return s.String()
16191}
16192
16193// SetIsLatest sets the IsLatest field's value.
16194func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
16195	s.IsLatest = &v
16196	return s
16197}
16198
16199// SetKey sets the Key field's value.
16200func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
16201	s.Key = &v
16202	return s
16203}
16204
16205// SetLastModified sets the LastModified field's value.
16206func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
16207	s.LastModified = &v
16208	return s
16209}
16210
16211// SetOwner sets the Owner field's value.
16212func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
16213	s.Owner = v
16214	return s
16215}
16216
16217// SetVersionId sets the VersionId field's value.
16218func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
16219	s.VersionId = &v
16220	return s
16221}
16222
16223// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
16224// in your replication configuration, you must also include a DeleteMarkerReplication
16225// element. If your Filter includes a Tag element, the DeleteMarkerReplication
16226// Status must be set to Disabled, because Amazon S3 does not support replicating
16227// delete markers for tag-based rules. For an example configuration, see Basic
16228// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
16229//
16230// For more information about delete marker replication, see Basic Rule Configuration
16231// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
16232//
16233// If you are using an earlier version of the replication configuration, Amazon
16234// S3 handles replication of delete markers differently. For more information,
16235// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
16236type DeleteMarkerReplication struct {
16237	_ struct{} `type:"structure"`
16238
16239	// Indicates whether to replicate delete markers.
16240	//
16241	// Indicates whether to replicate delete markers.
16242	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
16243}
16244
16245// String returns the string representation.
16246//
16247// API parameter values that are decorated as "sensitive" in the API will not
16248// be included in the string output. The member name will be present, but the
16249// value will be replaced with "sensitive".
16250func (s DeleteMarkerReplication) String() string {
16251	return awsutil.Prettify(s)
16252}
16253
16254// GoString returns the string representation.
16255//
16256// API parameter values that are decorated as "sensitive" in the API will not
16257// be included in the string output. The member name will be present, but the
16258// value will be replaced with "sensitive".
16259func (s DeleteMarkerReplication) GoString() string {
16260	return s.String()
16261}
16262
16263// SetStatus sets the Status field's value.
16264func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
16265	s.Status = &v
16266	return s
16267}
16268
16269type DeleteObjectInput struct {
16270	_ struct{} `locationName:"DeleteObjectRequest" type:"structure"`
16271
16272	// The bucket name of the bucket containing the object.
16273	//
16274	// When using this action with an access point, you must direct requests to
16275	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16276	// When using this action with an access point through the Amazon Web Services
16277	// SDKs, you provide the access point ARN in place of the bucket name. For more
16278	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16279	// in the Amazon S3 User Guide.
16280	//
16281	// When using this action with Amazon S3 on Outposts, you must direct requests
16282	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16283	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16284	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16285	// you provide the Outposts bucket ARN in place of the bucket name. For more
16286	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16287	// in the Amazon S3 User Guide.
16288	//
16289	// Bucket is a required field
16290	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16291
16292	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
16293	// to process this operation. To use this header, you must have the s3:PutBucketPublicAccessBlock
16294	// permission.
16295	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
16296
16297	// The account ID of the expected bucket owner. If the bucket is owned by a
16298	// different account, the request will fail with an HTTP 403 (Access Denied)
16299	// error.
16300	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16301
16302	// Key name of the object to delete.
16303	//
16304	// Key is a required field
16305	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16306
16307	// The concatenation of the authentication device's serial number, a space,
16308	// and the value that is displayed on your authentication device. Required to
16309	// permanently delete a versioned object if versioning is configured with MFA
16310	// delete enabled.
16311	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
16312
16313	// Confirms that the requester knows that they will be charged for the request.
16314	// Bucket owners need not specify this parameter in their requests. For information
16315	// about downloading objects from requester pays buckets, see Downloading Objects
16316	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
16317	// in the Amazon S3 User Guide.
16318	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16319
16320	// VersionId used to reference a specific version of the object.
16321	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
16322}
16323
16324// String returns the string representation.
16325//
16326// API parameter values that are decorated as "sensitive" in the API will not
16327// be included in the string output. The member name will be present, but the
16328// value will be replaced with "sensitive".
16329func (s DeleteObjectInput) String() string {
16330	return awsutil.Prettify(s)
16331}
16332
16333// GoString returns the string representation.
16334//
16335// API parameter values that are decorated as "sensitive" in the API will not
16336// be included in the string output. The member name will be present, but the
16337// value will be replaced with "sensitive".
16338func (s DeleteObjectInput) GoString() string {
16339	return s.String()
16340}
16341
16342// Validate inspects the fields of the type to determine if they are valid.
16343func (s *DeleteObjectInput) Validate() error {
16344	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
16345	if s.Bucket == nil {
16346		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16347	}
16348	if s.Bucket != nil && len(*s.Bucket) < 1 {
16349		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16350	}
16351	if s.Key == nil {
16352		invalidParams.Add(request.NewErrParamRequired("Key"))
16353	}
16354	if s.Key != nil && len(*s.Key) < 1 {
16355		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16356	}
16357
16358	if invalidParams.Len() > 0 {
16359		return invalidParams
16360	}
16361	return nil
16362}
16363
16364// SetBucket sets the Bucket field's value.
16365func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
16366	s.Bucket = &v
16367	return s
16368}
16369
16370func (s *DeleteObjectInput) getBucket() (v string) {
16371	if s.Bucket == nil {
16372		return v
16373	}
16374	return *s.Bucket
16375}
16376
16377// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
16378func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
16379	s.BypassGovernanceRetention = &v
16380	return s
16381}
16382
16383// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16384func (s *DeleteObjectInput) SetExpectedBucketOwner(v string) *DeleteObjectInput {
16385	s.ExpectedBucketOwner = &v
16386	return s
16387}
16388
16389// SetKey sets the Key field's value.
16390func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
16391	s.Key = &v
16392	return s
16393}
16394
16395// SetMFA sets the MFA field's value.
16396func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
16397	s.MFA = &v
16398	return s
16399}
16400
16401// SetRequestPayer sets the RequestPayer field's value.
16402func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
16403	s.RequestPayer = &v
16404	return s
16405}
16406
16407// SetVersionId sets the VersionId field's value.
16408func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
16409	s.VersionId = &v
16410	return s
16411}
16412
16413func (s *DeleteObjectInput) getEndpointARN() (arn.Resource, error) {
16414	if s.Bucket == nil {
16415		return nil, fmt.Errorf("member Bucket is nil")
16416	}
16417	return parseEndpointARN(*s.Bucket)
16418}
16419
16420func (s *DeleteObjectInput) hasEndpointARN() bool {
16421	if s.Bucket == nil {
16422		return false
16423	}
16424	return arn.IsARN(*s.Bucket)
16425}
16426
16427// updateArnableField updates the value of the input field that
16428// takes an ARN as an input. This method is useful to backfill
16429// the parsed resource name from ARN into the input member.
16430// It returns a pointer to a modified copy of input and an error.
16431// Note that original input is not modified.
16432func (s DeleteObjectInput) updateArnableField(v string) (interface{}, error) {
16433	if s.Bucket == nil {
16434		return nil, fmt.Errorf("member Bucket is nil")
16435	}
16436	s.Bucket = aws.String(v)
16437	return &s, nil
16438}
16439
16440type DeleteObjectOutput struct {
16441	_ struct{} `type:"structure"`
16442
16443	// Specifies whether the versioned object that was permanently deleted was (true)
16444	// or was not (false) a delete marker.
16445	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
16446
16447	// If present, indicates that the requester was successfully charged for the
16448	// request.
16449	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
16450
16451	// Returns the version ID of the delete marker created as a result of the DELETE
16452	// operation.
16453	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
16454}
16455
16456// String returns the string representation.
16457//
16458// API parameter values that are decorated as "sensitive" in the API will not
16459// be included in the string output. The member name will be present, but the
16460// value will be replaced with "sensitive".
16461func (s DeleteObjectOutput) String() string {
16462	return awsutil.Prettify(s)
16463}
16464
16465// GoString returns the string representation.
16466//
16467// API parameter values that are decorated as "sensitive" in the API will not
16468// be included in the string output. The member name will be present, but the
16469// value will be replaced with "sensitive".
16470func (s DeleteObjectOutput) GoString() string {
16471	return s.String()
16472}
16473
16474// SetDeleteMarker sets the DeleteMarker field's value.
16475func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
16476	s.DeleteMarker = &v
16477	return s
16478}
16479
16480// SetRequestCharged sets the RequestCharged field's value.
16481func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
16482	s.RequestCharged = &v
16483	return s
16484}
16485
16486// SetVersionId sets the VersionId field's value.
16487func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
16488	s.VersionId = &v
16489	return s
16490}
16491
16492type DeleteObjectTaggingInput struct {
16493	_ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"`
16494
16495	// The bucket name containing the objects from which to remove the tags.
16496	//
16497	// When using this action with an access point, you must direct requests to
16498	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16499	// When using this action with an access point through the Amazon Web Services
16500	// SDKs, you provide the access point ARN in place of the bucket name. For more
16501	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16502	// in the Amazon S3 User Guide.
16503	//
16504	// When using this action with Amazon S3 on Outposts, you must direct requests
16505	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16506	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16507	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16508	// you provide the Outposts bucket ARN in place of the bucket name. For more
16509	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16510	// in the Amazon S3 User Guide.
16511	//
16512	// Bucket is a required field
16513	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16514
16515	// The account ID of the expected bucket owner. If the bucket is owned by a
16516	// different account, the request will fail with an HTTP 403 (Access Denied)
16517	// error.
16518	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16519
16520	// The key that identifies the object in the bucket from which to remove all
16521	// tags.
16522	//
16523	// Key is a required field
16524	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16525
16526	// The versionId of the object that the tag-set will be removed from.
16527	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
16528}
16529
16530// String returns the string representation.
16531//
16532// API parameter values that are decorated as "sensitive" in the API will not
16533// be included in the string output. The member name will be present, but the
16534// value will be replaced with "sensitive".
16535func (s DeleteObjectTaggingInput) String() string {
16536	return awsutil.Prettify(s)
16537}
16538
16539// GoString returns the string representation.
16540//
16541// API parameter values that are decorated as "sensitive" in the API will not
16542// be included in the string output. The member name will be present, but the
16543// value will be replaced with "sensitive".
16544func (s DeleteObjectTaggingInput) GoString() string {
16545	return s.String()
16546}
16547
16548// Validate inspects the fields of the type to determine if they are valid.
16549func (s *DeleteObjectTaggingInput) Validate() error {
16550	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
16551	if s.Bucket == nil {
16552		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16553	}
16554	if s.Bucket != nil && len(*s.Bucket) < 1 {
16555		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16556	}
16557	if s.Key == nil {
16558		invalidParams.Add(request.NewErrParamRequired("Key"))
16559	}
16560	if s.Key != nil && len(*s.Key) < 1 {
16561		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16562	}
16563
16564	if invalidParams.Len() > 0 {
16565		return invalidParams
16566	}
16567	return nil
16568}
16569
16570// SetBucket sets the Bucket field's value.
16571func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
16572	s.Bucket = &v
16573	return s
16574}
16575
16576func (s *DeleteObjectTaggingInput) getBucket() (v string) {
16577	if s.Bucket == nil {
16578		return v
16579	}
16580	return *s.Bucket
16581}
16582
16583// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16584func (s *DeleteObjectTaggingInput) SetExpectedBucketOwner(v string) *DeleteObjectTaggingInput {
16585	s.ExpectedBucketOwner = &v
16586	return s
16587}
16588
16589// SetKey sets the Key field's value.
16590func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
16591	s.Key = &v
16592	return s
16593}
16594
16595// SetVersionId sets the VersionId field's value.
16596func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
16597	s.VersionId = &v
16598	return s
16599}
16600
16601func (s *DeleteObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
16602	if s.Bucket == nil {
16603		return nil, fmt.Errorf("member Bucket is nil")
16604	}
16605	return parseEndpointARN(*s.Bucket)
16606}
16607
16608func (s *DeleteObjectTaggingInput) hasEndpointARN() bool {
16609	if s.Bucket == nil {
16610		return false
16611	}
16612	return arn.IsARN(*s.Bucket)
16613}
16614
16615// updateArnableField updates the value of the input field that
16616// takes an ARN as an input. This method is useful to backfill
16617// the parsed resource name from ARN into the input member.
16618// It returns a pointer to a modified copy of input and an error.
16619// Note that original input is not modified.
16620func (s DeleteObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
16621	if s.Bucket == nil {
16622		return nil, fmt.Errorf("member Bucket is nil")
16623	}
16624	s.Bucket = aws.String(v)
16625	return &s, nil
16626}
16627
16628type DeleteObjectTaggingOutput struct {
16629	_ struct{} `type:"structure"`
16630
16631	// The versionId of the object the tag-set was removed from.
16632	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
16633}
16634
16635// String returns the string representation.
16636//
16637// API parameter values that are decorated as "sensitive" in the API will not
16638// be included in the string output. The member name will be present, but the
16639// value will be replaced with "sensitive".
16640func (s DeleteObjectTaggingOutput) String() string {
16641	return awsutil.Prettify(s)
16642}
16643
16644// GoString returns the string representation.
16645//
16646// API parameter values that are decorated as "sensitive" in the API will not
16647// be included in the string output. The member name will be present, but the
16648// value will be replaced with "sensitive".
16649func (s DeleteObjectTaggingOutput) GoString() string {
16650	return s.String()
16651}
16652
16653// SetVersionId sets the VersionId field's value.
16654func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
16655	s.VersionId = &v
16656	return s
16657}
16658
16659type DeleteObjectsInput struct {
16660	_ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"`
16661
16662	// The bucket name containing the objects to delete.
16663	//
16664	// When using this action with an access point, you must direct requests to
16665	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16666	// When using this action with an access point through the Amazon Web Services
16667	// SDKs, you provide the access point ARN in place of the bucket name. For more
16668	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16669	// in the Amazon S3 User Guide.
16670	//
16671	// When using this action with Amazon S3 on Outposts, you must direct requests
16672	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16673	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16674	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16675	// you provide the Outposts bucket ARN in place of the bucket name. For more
16676	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16677	// in the Amazon S3 User Guide.
16678	//
16679	// Bucket is a required field
16680	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16681
16682	// Specifies whether you want to delete this object even if it has a Governance-type
16683	// Object Lock in place. To use this header, you must have the s3:PutBucketPublicAccessBlock
16684	// permission.
16685	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
16686
16687	// Container for the request.
16688	//
16689	// Delete is a required field
16690	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16691
16692	// The account ID of the expected bucket owner. If the bucket is owned by a
16693	// different account, the request will fail with an HTTP 403 (Access Denied)
16694	// error.
16695	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16696
16697	// The concatenation of the authentication device's serial number, a space,
16698	// and the value that is displayed on your authentication device. Required to
16699	// permanently delete a versioned object if versioning is configured with MFA
16700	// delete enabled.
16701	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
16702
16703	// Confirms that the requester knows that they will be charged for the request.
16704	// Bucket owners need not specify this parameter in their requests. For information
16705	// about downloading objects from requester pays buckets, see Downloading Objects
16706	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
16707	// in the Amazon S3 User Guide.
16708	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16709}
16710
16711// String returns the string representation.
16712//
16713// API parameter values that are decorated as "sensitive" in the API will not
16714// be included in the string output. The member name will be present, but the
16715// value will be replaced with "sensitive".
16716func (s DeleteObjectsInput) String() string {
16717	return awsutil.Prettify(s)
16718}
16719
16720// GoString returns the string representation.
16721//
16722// API parameter values that are decorated as "sensitive" in the API will not
16723// be included in the string output. The member name will be present, but the
16724// value will be replaced with "sensitive".
16725func (s DeleteObjectsInput) GoString() string {
16726	return s.String()
16727}
16728
16729// Validate inspects the fields of the type to determine if they are valid.
16730func (s *DeleteObjectsInput) Validate() error {
16731	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
16732	if s.Bucket == nil {
16733		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16734	}
16735	if s.Bucket != nil && len(*s.Bucket) < 1 {
16736		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16737	}
16738	if s.Delete == nil {
16739		invalidParams.Add(request.NewErrParamRequired("Delete"))
16740	}
16741	if s.Delete != nil {
16742		if err := s.Delete.Validate(); err != nil {
16743			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
16744		}
16745	}
16746
16747	if invalidParams.Len() > 0 {
16748		return invalidParams
16749	}
16750	return nil
16751}
16752
16753// SetBucket sets the Bucket field's value.
16754func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
16755	s.Bucket = &v
16756	return s
16757}
16758
16759func (s *DeleteObjectsInput) getBucket() (v string) {
16760	if s.Bucket == nil {
16761		return v
16762	}
16763	return *s.Bucket
16764}
16765
16766// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
16767func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
16768	s.BypassGovernanceRetention = &v
16769	return s
16770}
16771
16772// SetDelete sets the Delete field's value.
16773func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
16774	s.Delete = v
16775	return s
16776}
16777
16778// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16779func (s *DeleteObjectsInput) SetExpectedBucketOwner(v string) *DeleteObjectsInput {
16780	s.ExpectedBucketOwner = &v
16781	return s
16782}
16783
16784// SetMFA sets the MFA field's value.
16785func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
16786	s.MFA = &v
16787	return s
16788}
16789
16790// SetRequestPayer sets the RequestPayer field's value.
16791func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
16792	s.RequestPayer = &v
16793	return s
16794}
16795
16796func (s *DeleteObjectsInput) getEndpointARN() (arn.Resource, error) {
16797	if s.Bucket == nil {
16798		return nil, fmt.Errorf("member Bucket is nil")
16799	}
16800	return parseEndpointARN(*s.Bucket)
16801}
16802
16803func (s *DeleteObjectsInput) hasEndpointARN() bool {
16804	if s.Bucket == nil {
16805		return false
16806	}
16807	return arn.IsARN(*s.Bucket)
16808}
16809
16810// updateArnableField updates the value of the input field that
16811// takes an ARN as an input. This method is useful to backfill
16812// the parsed resource name from ARN into the input member.
16813// It returns a pointer to a modified copy of input and an error.
16814// Note that original input is not modified.
16815func (s DeleteObjectsInput) updateArnableField(v string) (interface{}, error) {
16816	if s.Bucket == nil {
16817		return nil, fmt.Errorf("member Bucket is nil")
16818	}
16819	s.Bucket = aws.String(v)
16820	return &s, nil
16821}
16822
16823type DeleteObjectsOutput struct {
16824	_ struct{} `type:"structure"`
16825
16826	// Container element for a successful delete. It identifies the object that
16827	// was successfully deleted.
16828	Deleted []*DeletedObject `type:"list" flattened:"true"`
16829
16830	// Container for a failed delete action that describes the object that Amazon
16831	// S3 attempted to delete and the error it encountered.
16832	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
16833
16834	// If present, indicates that the requester was successfully charged for the
16835	// request.
16836	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
16837}
16838
16839// String returns the string representation.
16840//
16841// API parameter values that are decorated as "sensitive" in the API will not
16842// be included in the string output. The member name will be present, but the
16843// value will be replaced with "sensitive".
16844func (s DeleteObjectsOutput) String() string {
16845	return awsutil.Prettify(s)
16846}
16847
16848// GoString returns the string representation.
16849//
16850// API parameter values that are decorated as "sensitive" in the API will not
16851// be included in the string output. The member name will be present, but the
16852// value will be replaced with "sensitive".
16853func (s DeleteObjectsOutput) GoString() string {
16854	return s.String()
16855}
16856
16857// SetDeleted sets the Deleted field's value.
16858func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
16859	s.Deleted = v
16860	return s
16861}
16862
16863// SetErrors sets the Errors field's value.
16864func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
16865	s.Errors = v
16866	return s
16867}
16868
16869// SetRequestCharged sets the RequestCharged field's value.
16870func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
16871	s.RequestCharged = &v
16872	return s
16873}
16874
16875type DeletePublicAccessBlockInput struct {
16876	_ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"`
16877
16878	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
16879	//
16880	// Bucket is a required field
16881	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16882
16883	// The account ID of the expected bucket owner. If the bucket is owned by a
16884	// different account, the request will fail with an HTTP 403 (Access Denied)
16885	// error.
16886	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16887}
16888
16889// String returns the string representation.
16890//
16891// API parameter values that are decorated as "sensitive" in the API will not
16892// be included in the string output. The member name will be present, but the
16893// value will be replaced with "sensitive".
16894func (s DeletePublicAccessBlockInput) String() string {
16895	return awsutil.Prettify(s)
16896}
16897
16898// GoString returns the string representation.
16899//
16900// API parameter values that are decorated as "sensitive" in the API will not
16901// be included in the string output. The member name will be present, but the
16902// value will be replaced with "sensitive".
16903func (s DeletePublicAccessBlockInput) GoString() string {
16904	return s.String()
16905}
16906
16907// Validate inspects the fields of the type to determine if they are valid.
16908func (s *DeletePublicAccessBlockInput) Validate() error {
16909	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
16910	if s.Bucket == nil {
16911		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16912	}
16913	if s.Bucket != nil && len(*s.Bucket) < 1 {
16914		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16915	}
16916
16917	if invalidParams.Len() > 0 {
16918		return invalidParams
16919	}
16920	return nil
16921}
16922
16923// SetBucket sets the Bucket field's value.
16924func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
16925	s.Bucket = &v
16926	return s
16927}
16928
16929func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
16930	if s.Bucket == nil {
16931		return v
16932	}
16933	return *s.Bucket
16934}
16935
16936// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16937func (s *DeletePublicAccessBlockInput) SetExpectedBucketOwner(v string) *DeletePublicAccessBlockInput {
16938	s.ExpectedBucketOwner = &v
16939	return s
16940}
16941
16942func (s *DeletePublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
16943	if s.Bucket == nil {
16944		return nil, fmt.Errorf("member Bucket is nil")
16945	}
16946	return parseEndpointARN(*s.Bucket)
16947}
16948
16949func (s *DeletePublicAccessBlockInput) hasEndpointARN() bool {
16950	if s.Bucket == nil {
16951		return false
16952	}
16953	return arn.IsARN(*s.Bucket)
16954}
16955
16956// updateArnableField updates the value of the input field that
16957// takes an ARN as an input. This method is useful to backfill
16958// the parsed resource name from ARN into the input member.
16959// It returns a pointer to a modified copy of input and an error.
16960// Note that original input is not modified.
16961func (s DeletePublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
16962	if s.Bucket == nil {
16963		return nil, fmt.Errorf("member Bucket is nil")
16964	}
16965	s.Bucket = aws.String(v)
16966	return &s, nil
16967}
16968
16969type DeletePublicAccessBlockOutput struct {
16970	_ struct{} `type:"structure"`
16971}
16972
16973// String returns the string representation.
16974//
16975// API parameter values that are decorated as "sensitive" in the API will not
16976// be included in the string output. The member name will be present, but the
16977// value will be replaced with "sensitive".
16978func (s DeletePublicAccessBlockOutput) String() string {
16979	return awsutil.Prettify(s)
16980}
16981
16982// GoString returns the string representation.
16983//
16984// API parameter values that are decorated as "sensitive" in the API will not
16985// be included in the string output. The member name will be present, but the
16986// value will be replaced with "sensitive".
16987func (s DeletePublicAccessBlockOutput) GoString() string {
16988	return s.String()
16989}
16990
16991// Information about the deleted object.
16992type DeletedObject struct {
16993	_ struct{} `type:"structure"`
16994
16995	// Specifies whether the versioned object that was permanently deleted was (true)
16996	// or was not (false) a delete marker. In a simple DELETE, this header indicates
16997	// whether (true) or not (false) a delete marker was created.
16998	DeleteMarker *bool `type:"boolean"`
16999
17000	// The version ID of the delete marker created as a result of the DELETE operation.
17001	// If you delete a specific object version, the value returned by this header
17002	// is the version ID of the object version deleted.
17003	DeleteMarkerVersionId *string `type:"string"`
17004
17005	// The name of the deleted object.
17006	Key *string `min:"1" type:"string"`
17007
17008	// The version ID of the deleted object.
17009	VersionId *string `type:"string"`
17010}
17011
17012// String returns the string representation.
17013//
17014// API parameter values that are decorated as "sensitive" in the API will not
17015// be included in the string output. The member name will be present, but the
17016// value will be replaced with "sensitive".
17017func (s DeletedObject) String() string {
17018	return awsutil.Prettify(s)
17019}
17020
17021// GoString returns the string representation.
17022//
17023// API parameter values that are decorated as "sensitive" in the API will not
17024// be included in the string output. The member name will be present, but the
17025// value will be replaced with "sensitive".
17026func (s DeletedObject) GoString() string {
17027	return s.String()
17028}
17029
17030// SetDeleteMarker sets the DeleteMarker field's value.
17031func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
17032	s.DeleteMarker = &v
17033	return s
17034}
17035
17036// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
17037func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
17038	s.DeleteMarkerVersionId = &v
17039	return s
17040}
17041
17042// SetKey sets the Key field's value.
17043func (s *DeletedObject) SetKey(v string) *DeletedObject {
17044	s.Key = &v
17045	return s
17046}
17047
17048// SetVersionId sets the VersionId field's value.
17049func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
17050	s.VersionId = &v
17051	return s
17052}
17053
17054// Specifies information about where to publish analysis or configuration results
17055// for an Amazon S3 bucket and S3 Replication Time Control (S3 RTC).
17056type Destination struct {
17057	_ struct{} `type:"structure"`
17058
17059	// Specify this only in a cross-account scenario (where source and destination
17060	// bucket owners are not the same), and you want to change replica ownership
17061	// to the Amazon Web Services account that owns the destination bucket. If this
17062	// is not specified in the replication configuration, the replicas are owned
17063	// by same Amazon Web Services account that owns the source object.
17064	AccessControlTranslation *AccessControlTranslation `type:"structure"`
17065
17066	// Destination bucket owner account ID. In a cross-account scenario, if you
17067	// direct Amazon S3 to change replica ownership to the Amazon Web Services account
17068	// that owns the destination bucket by specifying the AccessControlTranslation
17069	// property, this is the account ID of the destination bucket owner. For more
17070	// information, see Replication Additional Configuration: Changing the Replica
17071	// Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html)
17072	// in the Amazon S3 User Guide.
17073	Account *string `type:"string"`
17074
17075	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
17076	// store the results.
17077	//
17078	// Bucket is a required field
17079	Bucket *string `type:"string" required:"true"`
17080
17081	// A container that provides information about encryption. If SourceSelectionCriteria
17082	// is specified, you must specify this element.
17083	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
17084
17085	// A container specifying replication metrics-related settings enabling replication
17086	// metrics and events.
17087	Metrics *Metrics `type:"structure"`
17088
17089	// A container specifying S3 Replication Time Control (S3 RTC), including whether
17090	// S3 RTC is enabled and the time when all objects and operations on objects
17091	// must be replicated. Must be specified together with a Metrics block.
17092	ReplicationTime *ReplicationTime `type:"structure"`
17093
17094	// The storage class to use when replicating objects, such as S3 Standard or
17095	// reduced redundancy. By default, Amazon S3 uses the storage class of the source
17096	// object to create the object replica.
17097	//
17098	// For valid values, see the StorageClass element of the PUT Bucket replication
17099	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
17100	// action in the Amazon S3 API Reference.
17101	StorageClass *string `type:"string" enum:"StorageClass"`
17102}
17103
17104// String returns the string representation.
17105//
17106// API parameter values that are decorated as "sensitive" in the API will not
17107// be included in the string output. The member name will be present, but the
17108// value will be replaced with "sensitive".
17109func (s Destination) String() string {
17110	return awsutil.Prettify(s)
17111}
17112
17113// GoString returns the string representation.
17114//
17115// API parameter values that are decorated as "sensitive" in the API will not
17116// be included in the string output. The member name will be present, but the
17117// value will be replaced with "sensitive".
17118func (s Destination) GoString() string {
17119	return s.String()
17120}
17121
17122// Validate inspects the fields of the type to determine if they are valid.
17123func (s *Destination) Validate() error {
17124	invalidParams := request.ErrInvalidParams{Context: "Destination"}
17125	if s.Bucket == nil {
17126		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17127	}
17128	if s.AccessControlTranslation != nil {
17129		if err := s.AccessControlTranslation.Validate(); err != nil {
17130			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
17131		}
17132	}
17133	if s.Metrics != nil {
17134		if err := s.Metrics.Validate(); err != nil {
17135			invalidParams.AddNested("Metrics", err.(request.ErrInvalidParams))
17136		}
17137	}
17138	if s.ReplicationTime != nil {
17139		if err := s.ReplicationTime.Validate(); err != nil {
17140			invalidParams.AddNested("ReplicationTime", err.(request.ErrInvalidParams))
17141		}
17142	}
17143
17144	if invalidParams.Len() > 0 {
17145		return invalidParams
17146	}
17147	return nil
17148}
17149
17150// SetAccessControlTranslation sets the AccessControlTranslation field's value.
17151func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
17152	s.AccessControlTranslation = v
17153	return s
17154}
17155
17156// SetAccount sets the Account field's value.
17157func (s *Destination) SetAccount(v string) *Destination {
17158	s.Account = &v
17159	return s
17160}
17161
17162// SetBucket sets the Bucket field's value.
17163func (s *Destination) SetBucket(v string) *Destination {
17164	s.Bucket = &v
17165	return s
17166}
17167
17168func (s *Destination) getBucket() (v string) {
17169	if s.Bucket == nil {
17170		return v
17171	}
17172	return *s.Bucket
17173}
17174
17175// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
17176func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
17177	s.EncryptionConfiguration = v
17178	return s
17179}
17180
17181// SetMetrics sets the Metrics field's value.
17182func (s *Destination) SetMetrics(v *Metrics) *Destination {
17183	s.Metrics = v
17184	return s
17185}
17186
17187// SetReplicationTime sets the ReplicationTime field's value.
17188func (s *Destination) SetReplicationTime(v *ReplicationTime) *Destination {
17189	s.ReplicationTime = v
17190	return s
17191}
17192
17193// SetStorageClass sets the StorageClass field's value.
17194func (s *Destination) SetStorageClass(v string) *Destination {
17195	s.StorageClass = &v
17196	return s
17197}
17198
17199// Contains the type of server-side encryption used.
17200type Encryption struct {
17201	_ struct{} `type:"structure"`
17202
17203	// The server-side encryption algorithm used when storing job results in Amazon
17204	// S3 (for example, AES256, aws:kms).
17205	//
17206	// EncryptionType is a required field
17207	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
17208
17209	// If the encryption type is aws:kms, this optional value can be used to specify
17210	// the encryption context for the restore results.
17211	KMSContext *string `type:"string"`
17212
17213	// If the encryption type is aws:kms, this optional value specifies the ID of
17214	// the symmetric customer managed key to use for encryption of job results.
17215	// Amazon S3 only supports symmetric keys. For more information, see Using symmetric
17216	// and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
17217	// in the Amazon Web Services Key Management Service Developer Guide.
17218	//
17219	// KMSKeyId is a sensitive parameter and its value will be
17220	// replaced with "sensitive" in string returned by Encryption's
17221	// String and GoString methods.
17222	KMSKeyId *string `type:"string" sensitive:"true"`
17223}
17224
17225// String returns the string representation.
17226//
17227// API parameter values that are decorated as "sensitive" in the API will not
17228// be included in the string output. The member name will be present, but the
17229// value will be replaced with "sensitive".
17230func (s Encryption) String() string {
17231	return awsutil.Prettify(s)
17232}
17233
17234// GoString returns the string representation.
17235//
17236// API parameter values that are decorated as "sensitive" in the API will not
17237// be included in the string output. The member name will be present, but the
17238// value will be replaced with "sensitive".
17239func (s Encryption) GoString() string {
17240	return s.String()
17241}
17242
17243// Validate inspects the fields of the type to determine if they are valid.
17244func (s *Encryption) Validate() error {
17245	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
17246	if s.EncryptionType == nil {
17247		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
17248	}
17249
17250	if invalidParams.Len() > 0 {
17251		return invalidParams
17252	}
17253	return nil
17254}
17255
17256// SetEncryptionType sets the EncryptionType field's value.
17257func (s *Encryption) SetEncryptionType(v string) *Encryption {
17258	s.EncryptionType = &v
17259	return s
17260}
17261
17262// SetKMSContext sets the KMSContext field's value.
17263func (s *Encryption) SetKMSContext(v string) *Encryption {
17264	s.KMSContext = &v
17265	return s
17266}
17267
17268// SetKMSKeyId sets the KMSKeyId field's value.
17269func (s *Encryption) SetKMSKeyId(v string) *Encryption {
17270	s.KMSKeyId = &v
17271	return s
17272}
17273
17274// Specifies encryption-related information for an Amazon S3 bucket that is
17275// a destination for replicated objects.
17276type EncryptionConfiguration struct {
17277	_ struct{} `type:"structure"`
17278
17279	// Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web
17280	// Services KMS key stored in Amazon Web Services Key Management Service (KMS)
17281	// for the destination bucket. Amazon S3 uses this key to encrypt replica objects.
17282	// Amazon S3 only supports symmetric, customer managed KMS keys. For more information,
17283	// see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
17284	// in the Amazon Web Services Key Management Service Developer Guide.
17285	ReplicaKmsKeyID *string `type:"string"`
17286}
17287
17288// String returns the string representation.
17289//
17290// API parameter values that are decorated as "sensitive" in the API will not
17291// be included in the string output. The member name will be present, but the
17292// value will be replaced with "sensitive".
17293func (s EncryptionConfiguration) String() string {
17294	return awsutil.Prettify(s)
17295}
17296
17297// GoString returns the string representation.
17298//
17299// API parameter values that are decorated as "sensitive" in the API will not
17300// be included in the string output. The member name will be present, but the
17301// value will be replaced with "sensitive".
17302func (s EncryptionConfiguration) GoString() string {
17303	return s.String()
17304}
17305
17306// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
17307func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
17308	s.ReplicaKmsKeyID = &v
17309	return s
17310}
17311
17312// A message that indicates the request is complete and no more messages will
17313// be sent. You should not assume that the request is complete until the client
17314// receives an EndEvent.
17315type EndEvent struct {
17316	_ struct{} `locationName:"EndEvent" type:"structure"`
17317}
17318
17319// String returns the string representation.
17320//
17321// API parameter values that are decorated as "sensitive" in the API will not
17322// be included in the string output. The member name will be present, but the
17323// value will be replaced with "sensitive".
17324func (s EndEvent) String() string {
17325	return awsutil.Prettify(s)
17326}
17327
17328// GoString returns the string representation.
17329//
17330// API parameter values that are decorated as "sensitive" in the API will not
17331// be included in the string output. The member name will be present, but the
17332// value will be replaced with "sensitive".
17333func (s EndEvent) GoString() string {
17334	return s.String()
17335}
17336
17337// The EndEvent is and event in the SelectObjectContentEventStream group of events.
17338func (s *EndEvent) eventSelectObjectContentEventStream() {}
17339
17340// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
17341// This method is only used internally within the SDK's EventStream handling.
17342func (s *EndEvent) UnmarshalEvent(
17343	payloadUnmarshaler protocol.PayloadUnmarshaler,
17344	msg eventstream.Message,
17345) error {
17346	return nil
17347}
17348
17349// MarshalEvent marshals the type into an stream event value. This method
17350// should only used internally within the SDK's EventStream handling.
17351func (s *EndEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
17352	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
17353	return msg, err
17354}
17355
17356// Container for all error elements.
17357type Error struct {
17358	_ struct{} `type:"structure"`
17359
17360	// The error code is a string that uniquely identifies an error condition. It
17361	// is meant to be read and understood by programs that detect and handle errors
17362	// by type.
17363	//
17364	// Amazon S3 error codes
17365	//
17366	//    * Code: AccessDenied Description: Access Denied HTTP Status Code: 403
17367	//    Forbidden SOAP Fault Code Prefix: Client
17368	//
17369	//    * Code: AccountProblem Description: There is a problem with your Amazon
17370	//    Web Services account that prevents the action from completing successfully.
17371	//    Contact Amazon Web Services Support for further assistance. HTTP Status
17372	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
17373	//
17374	//    * Code: AllAccessDisabled Description: All access to this Amazon S3 resource
17375	//    has been disabled. Contact Amazon Web Services Support for further assistance.
17376	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17377	//
17378	//    * Code: AmbiguousGrantByEmailAddress Description: The email address you
17379	//    provided is associated with more than one account. HTTP Status Code: 400
17380	//    Bad Request SOAP Fault Code Prefix: Client
17381	//
17382	//    * Code: AuthorizationHeaderMalformed Description: The authorization header
17383	//    you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status
17384	//    Code: N/A
17385	//
17386	//    * Code: BadDigest Description: The Content-MD5 you specified did not match
17387	//    what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17388	//    Client
17389	//
17390	//    * Code: BucketAlreadyExists Description: The requested bucket name is
17391	//    not available. The bucket namespace is shared by all users of the system.
17392	//    Please select a different name and try again. HTTP Status Code: 409 Conflict
17393	//    SOAP Fault Code Prefix: Client
17394	//
17395	//    * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create
17396	//    already exists, and you own it. Amazon S3 returns this error in all Amazon
17397	//    Web Services Regions except in the North Virginia Region. For legacy compatibility,
17398	//    if you re-create an existing bucket that you already own in the North
17399	//    Virginia Region, Amazon S3 returns 200 OK and resets the bucket access
17400	//    control lists (ACLs). Code: 409 Conflict (in all Regions except the North
17401	//    Virginia Region) SOAP Fault Code Prefix: Client
17402	//
17403	//    * Code: BucketNotEmpty Description: The bucket you tried to delete is
17404	//    not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
17405	//
17406	//    * Code: CredentialsNotSupported Description: This request does not support
17407	//    credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17408	//    Client
17409	//
17410	//    * Code: CrossLocationLoggingProhibited Description: Cross-location logging
17411	//    not allowed. Buckets in one geographic location cannot log information
17412	//    to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP
17413	//    Fault Code Prefix: Client
17414	//
17415	//    * Code: EntityTooSmall Description: Your proposed upload is smaller than
17416	//    the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP
17417	//    Fault Code Prefix: Client
17418	//
17419	//    * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum
17420	//    allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code
17421	//    Prefix: Client
17422	//
17423	//    * Code: ExpiredToken Description: The provided token has expired. HTTP
17424	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17425	//
17426	//    * Code: IllegalVersioningConfigurationException Description: Indicates
17427	//    that the versioning configuration specified in the request is invalid.
17428	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17429	//
17430	//    * Code: IncompleteBody Description: You did not provide the number of
17431	//    bytes specified by the Content-Length HTTP header HTTP Status Code: 400
17432	//    Bad Request SOAP Fault Code Prefix: Client
17433	//
17434	//    * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires
17435	//    exactly one file upload per request. HTTP Status Code: 400 Bad Request
17436	//    SOAP Fault Code Prefix: Client
17437	//
17438	//    * Code: InlineDataTooLarge Description: Inline data exceeds the maximum
17439	//    allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17440	//    Client
17441	//
17442	//    * Code: InternalError Description: We encountered an internal error. Please
17443	//    try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code
17444	//    Prefix: Server
17445	//
17446	//    * Code: InvalidAccessKeyId Description: The Amazon Web Services access
17447	//    key ID you provided does not exist in our records. HTTP Status Code: 403
17448	//    Forbidden SOAP Fault Code Prefix: Client
17449	//
17450	//    * Code: InvalidAddressingHeader Description: You must specify the Anonymous
17451	//    role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
17452	//
17453	//    * Code: InvalidArgument Description: Invalid Argument HTTP Status Code:
17454	//    400 Bad Request SOAP Fault Code Prefix: Client
17455	//
17456	//    * Code: InvalidBucketName Description: The specified bucket is not valid.
17457	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17458	//
17459	//    * Code: InvalidBucketState Description: The request is not valid with
17460	//    the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault
17461	//    Code Prefix: Client
17462	//
17463	//    * Code: InvalidDigest Description: The Content-MD5 you specified is not
17464	//    valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17465	//
17466	//    * Code: InvalidEncryptionAlgorithmError Description: The encryption request
17467	//    you specified is not valid. The valid value is AES256. HTTP Status Code:
17468	//    400 Bad Request SOAP Fault Code Prefix: Client
17469	//
17470	//    * Code: InvalidLocationConstraint Description: The specified location
17471	//    constraint is not valid. For more information about Regions, see How to
17472	//    Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
17473	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17474	//
17475	//    * Code: InvalidObjectState Description: The action is not valid for the
17476	//    current state of the object. HTTP Status Code: 403 Forbidden SOAP Fault
17477	//    Code Prefix: Client
17478	//
17479	//    * Code: InvalidPart Description: One or more of the specified parts could
17480	//    not be found. The part might not have been uploaded, or the specified
17481	//    entity tag might not have matched the part's entity tag. HTTP Status Code:
17482	//    400 Bad Request SOAP Fault Code Prefix: Client
17483	//
17484	//    * Code: InvalidPartOrder Description: The list of parts was not in ascending
17485	//    order. Parts list must be specified in order by part number. HTTP Status
17486	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17487	//
17488	//    * Code: InvalidPayer Description: All access to this object has been disabled.
17489	//    Please contact Amazon Web Services Support for further assistance. HTTP
17490	//    Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17491	//
17492	//    * Code: InvalidPolicyDocument Description: The content of the form does
17493	//    not meet the conditions specified in the policy document. HTTP Status
17494	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17495	//
17496	//    * Code: InvalidRange Description: The requested range cannot be satisfied.
17497	//    HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code
17498	//    Prefix: Client
17499	//
17500	//    * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP
17501	//    Status Code: 400 Bad Request Code: N/A
17502	//
17503	//    * Code: InvalidRequest Description: SOAP requests must be made over an
17504	//    HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17505	//    Client
17506	//
17507	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17508	//    not supported for buckets with non-DNS compliant names. HTTP Status Code:
17509	//    400 Bad Request Code: N/A
17510	//
17511	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17512	//    not supported for buckets with periods (.) in their names. HTTP Status
17513	//    Code: 400 Bad Request Code: N/A
17514	//
17515	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint
17516	//    only supports virtual style requests. HTTP Status Code: 400 Bad Request
17517	//    Code: N/A
17518	//
17519	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not
17520	//    configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
17521	//
17522	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled
17523	//    on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
17524	//
17525	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17526	//    not supported on this bucket. Contact Amazon Web Services Support for
17527	//    more information. HTTP Status Code: 400 Bad Request Code: N/A
17528	//
17529	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot
17530	//    be enabled on this bucket. Contact Amazon Web Services Support for more
17531	//    information. HTTP Status Code: 400 Bad Request Code: N/A
17532	//
17533	//    * Code: InvalidSecurity Description: The provided security credentials
17534	//    are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix:
17535	//    Client
17536	//
17537	//    * Code: InvalidSOAPRequest Description: The SOAP request body is invalid.
17538	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17539	//
17540	//    * Code: InvalidStorageClass Description: The storage class you specified
17541	//    is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17542	//    Client
17543	//
17544	//    * Code: InvalidTargetBucketForLogging Description: The target bucket for
17545	//    logging does not exist, is not owned by you, or does not have the appropriate
17546	//    grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP
17547	//    Fault Code Prefix: Client
17548	//
17549	//    * Code: InvalidToken Description: The provided token is malformed or otherwise
17550	//    invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17551	//
17552	//    * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP
17553	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17554	//
17555	//    * Code: KeyTooLongError Description: Your key is too long. HTTP Status
17556	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17557	//
17558	//    * Code: MalformedACLError Description: The XML you provided was not well-formed
17559	//    or did not validate against our published schema. HTTP Status Code: 400
17560	//    Bad Request SOAP Fault Code Prefix: Client
17561	//
17562	//    * Code: MalformedPOSTRequest Description: The body of your POST request
17563	//    is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request
17564	//    SOAP Fault Code Prefix: Client
17565	//
17566	//    * Code: MalformedXML Description: This happens when the user sends malformed
17567	//    XML (XML that doesn't conform to the published XSD) for the configuration.
17568	//    The error message is, "The XML you provided was not well-formed or did
17569	//    not validate against our published schema." HTTP Status Code: 400 Bad
17570	//    Request SOAP Fault Code Prefix: Client
17571	//
17572	//    * Code: MaxMessageLengthExceeded Description: Your request was too big.
17573	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17574	//
17575	//    * Code: MaxPostPreDataLengthExceededError Description: Your POST request
17576	//    fields preceding the upload file were too large. HTTP Status Code: 400
17577	//    Bad Request SOAP Fault Code Prefix: Client
17578	//
17579	//    * Code: MetadataTooLarge Description: Your metadata headers exceed the
17580	//    maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP
17581	//    Fault Code Prefix: Client
17582	//
17583	//    * Code: MethodNotAllowed Description: The specified method is not allowed
17584	//    against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault
17585	//    Code Prefix: Client
17586	//
17587	//    * Code: MissingAttachment Description: A SOAP attachment was expected,
17588	//    but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
17589	//
17590	//    * Code: MissingContentLength Description: You must provide the Content-Length
17591	//    HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix:
17592	//    Client
17593	//
17594	//    * Code: MissingRequestBodyError Description: This happens when the user
17595	//    sends an empty XML document as a request. The error message is, "Request
17596	//    body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17597	//    Client
17598	//
17599	//    * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing
17600	//    a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code
17601	//    Prefix: Client
17602	//
17603	//    * Code: MissingSecurityHeader Description: Your request is missing a required
17604	//    header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17605	//
17606	//    * Code: NoLoggingStatusForKey Description: There is no such thing as a
17607	//    logging status subresource for a key. HTTP Status Code: 400 Bad Request
17608	//    SOAP Fault Code Prefix: Client
17609	//
17610	//    * Code: NoSuchBucket Description: The specified bucket does not exist.
17611	//    HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client
17612	//
17613	//    * Code: NoSuchBucketPolicy Description: The specified bucket does not
17614	//    have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code
17615	//    Prefix: Client
17616	//
17617	//    * Code: NoSuchKey Description: The specified key does not exist. HTTP
17618	//    Status Code: 404 Not Found SOAP Fault Code Prefix: Client
17619	//
17620	//    * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration
17621	//    does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix:
17622	//    Client
17623	//
17624	//    * Code: NoSuchUpload Description: The specified multipart upload does
17625	//    not exist. The upload ID might be invalid, or the multipart upload might
17626	//    have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault
17627	//    Code Prefix: Client
17628	//
17629	//    * Code: NoSuchVersion Description: Indicates that the version ID specified
17630	//    in the request does not match an existing version. HTTP Status Code: 404
17631	//    Not Found SOAP Fault Code Prefix: Client
17632	//
17633	//    * Code: NotImplemented Description: A header you provided implies functionality
17634	//    that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault
17635	//    Code Prefix: Server
17636	//
17637	//    * Code: NotSignedUp Description: Your account is not signed up for the
17638	//    Amazon S3 service. You must sign up before you can use Amazon S3. You
17639	//    can sign up at the following URL: Amazon S3 (http://aws.amazon.com/s3)
17640	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17641	//
17642	//    * Code: OperationAborted Description: A conflicting conditional action
17643	//    is currently in progress against this resource. Try again. HTTP Status
17644	//    Code: 409 Conflict SOAP Fault Code Prefix: Client
17645	//
17646	//    * Code: PermanentRedirect Description: The bucket you are attempting to
17647	//    access must be addressed using the specified endpoint. Send all future
17648	//    requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP
17649	//    Fault Code Prefix: Client
17650	//
17651	//    * Code: PreconditionFailed Description: At least one of the preconditions
17652	//    you specified did not hold. HTTP Status Code: 412 Precondition Failed
17653	//    SOAP Fault Code Prefix: Client
17654	//
17655	//    * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307
17656	//    Moved Temporarily SOAP Fault Code Prefix: Client
17657	//
17658	//    * Code: RestoreAlreadyInProgress Description: Object restore is already
17659	//    in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
17660	//
17661	//    * Code: RequestIsNotMultiPartContent Description: Bucket POST must be
17662	//    of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request
17663	//    SOAP Fault Code Prefix: Client
17664	//
17665	//    * Code: RequestTimeout Description: Your socket connection to the server
17666	//    was not read from or written to within the timeout period. HTTP Status
17667	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17668	//
17669	//    * Code: RequestTimeTooSkewed Description: The difference between the request
17670	//    time and the server's time is too large. HTTP Status Code: 403 Forbidden
17671	//    SOAP Fault Code Prefix: Client
17672	//
17673	//    * Code: RequestTorrentOfBucketError Description: Requesting the torrent
17674	//    file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP
17675	//    Fault Code Prefix: Client
17676	//
17677	//    * Code: SignatureDoesNotMatch Description: The request signature we calculated
17678	//    does not match the signature you provided. Check your Amazon Web Services
17679	//    secret access key and signing method. For more information, see REST Authentication
17680	//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
17681	//    and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html)
17682	//    for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17683	//
17684	//    * Code: ServiceUnavailable Description: Reduce your request rate. HTTP
17685	//    Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server
17686	//
17687	//    * Code: SlowDown Description: Reduce your request rate. HTTP Status Code:
17688	//    503 Slow Down SOAP Fault Code Prefix: Server
17689	//
17690	//    * Code: TemporaryRedirect Description: You are being redirected to the
17691	//    bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP
17692	//    Fault Code Prefix: Client
17693	//
17694	//    * Code: TokenRefreshRequired Description: The provided token must be refreshed.
17695	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17696	//
17697	//    * Code: TooManyBuckets Description: You have attempted to create more
17698	//    buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code
17699	//    Prefix: Client
17700	//
17701	//    * Code: UnexpectedContent Description: This request does not support content.
17702	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17703	//
17704	//    * Code: UnresolvableGrantByEmailAddress Description: The email address
17705	//    you provided does not match any account on record. HTTP Status Code: 400
17706	//    Bad Request SOAP Fault Code Prefix: Client
17707	//
17708	//    * Code: UserKeyMustBeSpecified Description: The bucket POST must contain
17709	//    the specified field name. If it is specified, check the order of the fields.
17710	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17711	Code *string `type:"string"`
17712
17713	// The error key.
17714	Key *string `min:"1" type:"string"`
17715
17716	// The error message contains a generic description of the error condition in
17717	// English. It is intended for a human audience. Simple programs display the
17718	// message directly to the end user if they encounter an error condition they
17719	// don't know how or don't care to handle. Sophisticated programs with more
17720	// exhaustive error handling and proper internationalization are more likely
17721	// to ignore the error message.
17722	Message *string `type:"string"`
17723
17724	// The version ID of the error.
17725	VersionId *string `type:"string"`
17726}
17727
17728// String returns the string representation.
17729//
17730// API parameter values that are decorated as "sensitive" in the API will not
17731// be included in the string output. The member name will be present, but the
17732// value will be replaced with "sensitive".
17733func (s Error) String() string {
17734	return awsutil.Prettify(s)
17735}
17736
17737// GoString returns the string representation.
17738//
17739// API parameter values that are decorated as "sensitive" in the API will not
17740// be included in the string output. The member name will be present, but the
17741// value will be replaced with "sensitive".
17742func (s Error) GoString() string {
17743	return s.String()
17744}
17745
17746// SetCode sets the Code field's value.
17747func (s *Error) SetCode(v string) *Error {
17748	s.Code = &v
17749	return s
17750}
17751
17752// SetKey sets the Key field's value.
17753func (s *Error) SetKey(v string) *Error {
17754	s.Key = &v
17755	return s
17756}
17757
17758// SetMessage sets the Message field's value.
17759func (s *Error) SetMessage(v string) *Error {
17760	s.Message = &v
17761	return s
17762}
17763
17764// SetVersionId sets the VersionId field's value.
17765func (s *Error) SetVersionId(v string) *Error {
17766	s.VersionId = &v
17767	return s
17768}
17769
17770// The error information.
17771type ErrorDocument struct {
17772	_ struct{} `type:"structure"`
17773
17774	// The object key name to use when a 4XX class error occurs.
17775	//
17776	// Replacement must be made for object keys containing special characters (such
17777	// as carriage returns) when using XML requests. For more information, see XML
17778	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
17779	//
17780	// Key is a required field
17781	Key *string `min:"1" type:"string" required:"true"`
17782}
17783
17784// String returns the string representation.
17785//
17786// API parameter values that are decorated as "sensitive" in the API will not
17787// be included in the string output. The member name will be present, but the
17788// value will be replaced with "sensitive".
17789func (s ErrorDocument) String() string {
17790	return awsutil.Prettify(s)
17791}
17792
17793// GoString returns the string representation.
17794//
17795// API parameter values that are decorated as "sensitive" in the API will not
17796// be included in the string output. The member name will be present, but the
17797// value will be replaced with "sensitive".
17798func (s ErrorDocument) GoString() string {
17799	return s.String()
17800}
17801
17802// Validate inspects the fields of the type to determine if they are valid.
17803func (s *ErrorDocument) Validate() error {
17804	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
17805	if s.Key == nil {
17806		invalidParams.Add(request.NewErrParamRequired("Key"))
17807	}
17808	if s.Key != nil && len(*s.Key) < 1 {
17809		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17810	}
17811
17812	if invalidParams.Len() > 0 {
17813		return invalidParams
17814	}
17815	return nil
17816}
17817
17818// SetKey sets the Key field's value.
17819func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
17820	s.Key = &v
17821	return s
17822}
17823
17824// Optional configuration to replicate existing source bucket objects. For more
17825// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
17826// in the Amazon S3 User Guide.
17827type ExistingObjectReplication struct {
17828	_ struct{} `type:"structure"`
17829
17830	// Status is a required field
17831	Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"`
17832}
17833
17834// String returns the string representation.
17835//
17836// API parameter values that are decorated as "sensitive" in the API will not
17837// be included in the string output. The member name will be present, but the
17838// value will be replaced with "sensitive".
17839func (s ExistingObjectReplication) String() string {
17840	return awsutil.Prettify(s)
17841}
17842
17843// GoString returns the string representation.
17844//
17845// API parameter values that are decorated as "sensitive" in the API will not
17846// be included in the string output. The member name will be present, but the
17847// value will be replaced with "sensitive".
17848func (s ExistingObjectReplication) GoString() string {
17849	return s.String()
17850}
17851
17852// Validate inspects the fields of the type to determine if they are valid.
17853func (s *ExistingObjectReplication) Validate() error {
17854	invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"}
17855	if s.Status == nil {
17856		invalidParams.Add(request.NewErrParamRequired("Status"))
17857	}
17858
17859	if invalidParams.Len() > 0 {
17860		return invalidParams
17861	}
17862	return nil
17863}
17864
17865// SetStatus sets the Status field's value.
17866func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication {
17867	s.Status = &v
17868	return s
17869}
17870
17871// Specifies the Amazon S3 object key name to filter on and whether to filter
17872// on the suffix or prefix of the key name.
17873type FilterRule struct {
17874	_ struct{} `type:"structure"`
17875
17876	// The object key name prefix or suffix identifying one or more objects to which
17877	// the filtering rule applies. The maximum length is 1,024 characters. Overlapping
17878	// prefixes and suffixes are not supported. For more information, see Configuring
17879	// Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
17880	// in the Amazon S3 User Guide.
17881	Name *string `type:"string" enum:"FilterRuleName"`
17882
17883	// The value that the filter searches for in object key names.
17884	Value *string `type:"string"`
17885}
17886
17887// String returns the string representation.
17888//
17889// API parameter values that are decorated as "sensitive" in the API will not
17890// be included in the string output. The member name will be present, but the
17891// value will be replaced with "sensitive".
17892func (s FilterRule) String() string {
17893	return awsutil.Prettify(s)
17894}
17895
17896// GoString returns the string representation.
17897//
17898// API parameter values that are decorated as "sensitive" in the API will not
17899// be included in the string output. The member name will be present, but the
17900// value will be replaced with "sensitive".
17901func (s FilterRule) GoString() string {
17902	return s.String()
17903}
17904
17905// SetName sets the Name field's value.
17906func (s *FilterRule) SetName(v string) *FilterRule {
17907	s.Name = &v
17908	return s
17909}
17910
17911// SetValue sets the Value field's value.
17912func (s *FilterRule) SetValue(v string) *FilterRule {
17913	s.Value = &v
17914	return s
17915}
17916
17917type GetBucketAccelerateConfigurationInput struct {
17918	_ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"`
17919
17920	// The name of the bucket for which the accelerate configuration is retrieved.
17921	//
17922	// Bucket is a required field
17923	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17924
17925	// The account ID of the expected bucket owner. If the bucket is owned by a
17926	// different account, the request will fail with an HTTP 403 (Access Denied)
17927	// error.
17928	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
17929}
17930
17931// String returns the string representation.
17932//
17933// API parameter values that are decorated as "sensitive" in the API will not
17934// be included in the string output. The member name will be present, but the
17935// value will be replaced with "sensitive".
17936func (s GetBucketAccelerateConfigurationInput) String() string {
17937	return awsutil.Prettify(s)
17938}
17939
17940// GoString returns the string representation.
17941//
17942// API parameter values that are decorated as "sensitive" in the API will not
17943// be included in the string output. The member name will be present, but the
17944// value will be replaced with "sensitive".
17945func (s GetBucketAccelerateConfigurationInput) GoString() string {
17946	return s.String()
17947}
17948
17949// Validate inspects the fields of the type to determine if they are valid.
17950func (s *GetBucketAccelerateConfigurationInput) Validate() error {
17951	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
17952	if s.Bucket == nil {
17953		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17954	}
17955	if s.Bucket != nil && len(*s.Bucket) < 1 {
17956		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17957	}
17958
17959	if invalidParams.Len() > 0 {
17960		return invalidParams
17961	}
17962	return nil
17963}
17964
17965// SetBucket sets the Bucket field's value.
17966func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
17967	s.Bucket = &v
17968	return s
17969}
17970
17971func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
17972	if s.Bucket == nil {
17973		return v
17974	}
17975	return *s.Bucket
17976}
17977
17978// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
17979func (s *GetBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAccelerateConfigurationInput {
17980	s.ExpectedBucketOwner = &v
17981	return s
17982}
17983
17984func (s *GetBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
17985	if s.Bucket == nil {
17986		return nil, fmt.Errorf("member Bucket is nil")
17987	}
17988	return parseEndpointARN(*s.Bucket)
17989}
17990
17991func (s *GetBucketAccelerateConfigurationInput) hasEndpointARN() bool {
17992	if s.Bucket == nil {
17993		return false
17994	}
17995	return arn.IsARN(*s.Bucket)
17996}
17997
17998// updateArnableField updates the value of the input field that
17999// takes an ARN as an input. This method is useful to backfill
18000// the parsed resource name from ARN into the input member.
18001// It returns a pointer to a modified copy of input and an error.
18002// Note that original input is not modified.
18003func (s GetBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
18004	if s.Bucket == nil {
18005		return nil, fmt.Errorf("member Bucket is nil")
18006	}
18007	s.Bucket = aws.String(v)
18008	return &s, nil
18009}
18010
18011type GetBucketAccelerateConfigurationOutput struct {
18012	_ struct{} `type:"structure"`
18013
18014	// The accelerate configuration of the bucket.
18015	Status *string `type:"string" enum:"BucketAccelerateStatus"`
18016}
18017
18018// String returns the string representation.
18019//
18020// API parameter values that are decorated as "sensitive" in the API will not
18021// be included in the string output. The member name will be present, but the
18022// value will be replaced with "sensitive".
18023func (s GetBucketAccelerateConfigurationOutput) String() string {
18024	return awsutil.Prettify(s)
18025}
18026
18027// GoString returns the string representation.
18028//
18029// API parameter values that are decorated as "sensitive" in the API will not
18030// be included in the string output. The member name will be present, but the
18031// value will be replaced with "sensitive".
18032func (s GetBucketAccelerateConfigurationOutput) GoString() string {
18033	return s.String()
18034}
18035
18036// SetStatus sets the Status field's value.
18037func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
18038	s.Status = &v
18039	return s
18040}
18041
18042type GetBucketAclInput struct {
18043	_ struct{} `locationName:"GetBucketAclRequest" type:"structure"`
18044
18045	// Specifies the S3 bucket whose ACL is being requested.
18046	//
18047	// Bucket is a required field
18048	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18049
18050	// The account ID of the expected bucket owner. If the bucket is owned by a
18051	// different account, the request will fail with an HTTP 403 (Access Denied)
18052	// error.
18053	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18054}
18055
18056// String returns the string representation.
18057//
18058// API parameter values that are decorated as "sensitive" in the API will not
18059// be included in the string output. The member name will be present, but the
18060// value will be replaced with "sensitive".
18061func (s GetBucketAclInput) String() string {
18062	return awsutil.Prettify(s)
18063}
18064
18065// GoString returns the string representation.
18066//
18067// API parameter values that are decorated as "sensitive" in the API will not
18068// be included in the string output. The member name will be present, but the
18069// value will be replaced with "sensitive".
18070func (s GetBucketAclInput) GoString() string {
18071	return s.String()
18072}
18073
18074// Validate inspects the fields of the type to determine if they are valid.
18075func (s *GetBucketAclInput) Validate() error {
18076	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
18077	if s.Bucket == nil {
18078		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18079	}
18080	if s.Bucket != nil && len(*s.Bucket) < 1 {
18081		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18082	}
18083
18084	if invalidParams.Len() > 0 {
18085		return invalidParams
18086	}
18087	return nil
18088}
18089
18090// SetBucket sets the Bucket field's value.
18091func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
18092	s.Bucket = &v
18093	return s
18094}
18095
18096func (s *GetBucketAclInput) getBucket() (v string) {
18097	if s.Bucket == nil {
18098		return v
18099	}
18100	return *s.Bucket
18101}
18102
18103// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18104func (s *GetBucketAclInput) SetExpectedBucketOwner(v string) *GetBucketAclInput {
18105	s.ExpectedBucketOwner = &v
18106	return s
18107}
18108
18109func (s *GetBucketAclInput) getEndpointARN() (arn.Resource, error) {
18110	if s.Bucket == nil {
18111		return nil, fmt.Errorf("member Bucket is nil")
18112	}
18113	return parseEndpointARN(*s.Bucket)
18114}
18115
18116func (s *GetBucketAclInput) hasEndpointARN() bool {
18117	if s.Bucket == nil {
18118		return false
18119	}
18120	return arn.IsARN(*s.Bucket)
18121}
18122
18123// updateArnableField updates the value of the input field that
18124// takes an ARN as an input. This method is useful to backfill
18125// the parsed resource name from ARN into the input member.
18126// It returns a pointer to a modified copy of input and an error.
18127// Note that original input is not modified.
18128func (s GetBucketAclInput) updateArnableField(v string) (interface{}, error) {
18129	if s.Bucket == nil {
18130		return nil, fmt.Errorf("member Bucket is nil")
18131	}
18132	s.Bucket = aws.String(v)
18133	return &s, nil
18134}
18135
18136type GetBucketAclOutput struct {
18137	_ struct{} `type:"structure"`
18138
18139	// A list of grants.
18140	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
18141
18142	// Container for the bucket owner's display name and ID.
18143	Owner *Owner `type:"structure"`
18144}
18145
18146// String returns the string representation.
18147//
18148// API parameter values that are decorated as "sensitive" in the API will not
18149// be included in the string output. The member name will be present, but the
18150// value will be replaced with "sensitive".
18151func (s GetBucketAclOutput) String() string {
18152	return awsutil.Prettify(s)
18153}
18154
18155// GoString returns the string representation.
18156//
18157// API parameter values that are decorated as "sensitive" in the API will not
18158// be included in the string output. The member name will be present, but the
18159// value will be replaced with "sensitive".
18160func (s GetBucketAclOutput) GoString() string {
18161	return s.String()
18162}
18163
18164// SetGrants sets the Grants field's value.
18165func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
18166	s.Grants = v
18167	return s
18168}
18169
18170// SetOwner sets the Owner field's value.
18171func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
18172	s.Owner = v
18173	return s
18174}
18175
18176type GetBucketAnalyticsConfigurationInput struct {
18177	_ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"`
18178
18179	// The name of the bucket from which an analytics configuration is retrieved.
18180	//
18181	// Bucket is a required field
18182	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18183
18184	// The account ID of the expected bucket owner. If the bucket is owned by a
18185	// different account, the request will fail with an HTTP 403 (Access Denied)
18186	// error.
18187	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18188
18189	// The ID that identifies the analytics configuration.
18190	//
18191	// Id is a required field
18192	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18193}
18194
18195// String returns the string representation.
18196//
18197// API parameter values that are decorated as "sensitive" in the API will not
18198// be included in the string output. The member name will be present, but the
18199// value will be replaced with "sensitive".
18200func (s GetBucketAnalyticsConfigurationInput) String() string {
18201	return awsutil.Prettify(s)
18202}
18203
18204// GoString returns the string representation.
18205//
18206// API parameter values that are decorated as "sensitive" in the API will not
18207// be included in the string output. The member name will be present, but the
18208// value will be replaced with "sensitive".
18209func (s GetBucketAnalyticsConfigurationInput) GoString() string {
18210	return s.String()
18211}
18212
18213// Validate inspects the fields of the type to determine if they are valid.
18214func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
18215	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
18216	if s.Bucket == nil {
18217		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18218	}
18219	if s.Bucket != nil && len(*s.Bucket) < 1 {
18220		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18221	}
18222	if s.Id == nil {
18223		invalidParams.Add(request.NewErrParamRequired("Id"))
18224	}
18225
18226	if invalidParams.Len() > 0 {
18227		return invalidParams
18228	}
18229	return nil
18230}
18231
18232// SetBucket sets the Bucket field's value.
18233func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
18234	s.Bucket = &v
18235	return s
18236}
18237
18238func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
18239	if s.Bucket == nil {
18240		return v
18241	}
18242	return *s.Bucket
18243}
18244
18245// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18246func (s *GetBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAnalyticsConfigurationInput {
18247	s.ExpectedBucketOwner = &v
18248	return s
18249}
18250
18251// SetId sets the Id field's value.
18252func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
18253	s.Id = &v
18254	return s
18255}
18256
18257func (s *GetBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
18258	if s.Bucket == nil {
18259		return nil, fmt.Errorf("member Bucket is nil")
18260	}
18261	return parseEndpointARN(*s.Bucket)
18262}
18263
18264func (s *GetBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
18265	if s.Bucket == nil {
18266		return false
18267	}
18268	return arn.IsARN(*s.Bucket)
18269}
18270
18271// updateArnableField updates the value of the input field that
18272// takes an ARN as an input. This method is useful to backfill
18273// the parsed resource name from ARN into the input member.
18274// It returns a pointer to a modified copy of input and an error.
18275// Note that original input is not modified.
18276func (s GetBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
18277	if s.Bucket == nil {
18278		return nil, fmt.Errorf("member Bucket is nil")
18279	}
18280	s.Bucket = aws.String(v)
18281	return &s, nil
18282}
18283
18284type GetBucketAnalyticsConfigurationOutput struct {
18285	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
18286
18287	// The configuration and any analyses for the analytics filter.
18288	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
18289}
18290
18291// String returns the string representation.
18292//
18293// API parameter values that are decorated as "sensitive" in the API will not
18294// be included in the string output. The member name will be present, but the
18295// value will be replaced with "sensitive".
18296func (s GetBucketAnalyticsConfigurationOutput) String() string {
18297	return awsutil.Prettify(s)
18298}
18299
18300// GoString returns the string representation.
18301//
18302// API parameter values that are decorated as "sensitive" in the API will not
18303// be included in the string output. The member name will be present, but the
18304// value will be replaced with "sensitive".
18305func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
18306	return s.String()
18307}
18308
18309// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
18310func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
18311	s.AnalyticsConfiguration = v
18312	return s
18313}
18314
18315type GetBucketCorsInput struct {
18316	_ struct{} `locationName:"GetBucketCorsRequest" type:"structure"`
18317
18318	// The bucket name for which to get the cors configuration.
18319	//
18320	// Bucket is a required field
18321	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18322
18323	// The account ID of the expected bucket owner. If the bucket is owned by a
18324	// different account, the request will fail with an HTTP 403 (Access Denied)
18325	// error.
18326	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18327}
18328
18329// String returns the string representation.
18330//
18331// API parameter values that are decorated as "sensitive" in the API will not
18332// be included in the string output. The member name will be present, but the
18333// value will be replaced with "sensitive".
18334func (s GetBucketCorsInput) String() string {
18335	return awsutil.Prettify(s)
18336}
18337
18338// GoString returns the string representation.
18339//
18340// API parameter values that are decorated as "sensitive" in the API will not
18341// be included in the string output. The member name will be present, but the
18342// value will be replaced with "sensitive".
18343func (s GetBucketCorsInput) GoString() string {
18344	return s.String()
18345}
18346
18347// Validate inspects the fields of the type to determine if they are valid.
18348func (s *GetBucketCorsInput) Validate() error {
18349	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
18350	if s.Bucket == nil {
18351		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18352	}
18353	if s.Bucket != nil && len(*s.Bucket) < 1 {
18354		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18355	}
18356
18357	if invalidParams.Len() > 0 {
18358		return invalidParams
18359	}
18360	return nil
18361}
18362
18363// SetBucket sets the Bucket field's value.
18364func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
18365	s.Bucket = &v
18366	return s
18367}
18368
18369func (s *GetBucketCorsInput) getBucket() (v string) {
18370	if s.Bucket == nil {
18371		return v
18372	}
18373	return *s.Bucket
18374}
18375
18376// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18377func (s *GetBucketCorsInput) SetExpectedBucketOwner(v string) *GetBucketCorsInput {
18378	s.ExpectedBucketOwner = &v
18379	return s
18380}
18381
18382func (s *GetBucketCorsInput) getEndpointARN() (arn.Resource, error) {
18383	if s.Bucket == nil {
18384		return nil, fmt.Errorf("member Bucket is nil")
18385	}
18386	return parseEndpointARN(*s.Bucket)
18387}
18388
18389func (s *GetBucketCorsInput) hasEndpointARN() bool {
18390	if s.Bucket == nil {
18391		return false
18392	}
18393	return arn.IsARN(*s.Bucket)
18394}
18395
18396// updateArnableField updates the value of the input field that
18397// takes an ARN as an input. This method is useful to backfill
18398// the parsed resource name from ARN into the input member.
18399// It returns a pointer to a modified copy of input and an error.
18400// Note that original input is not modified.
18401func (s GetBucketCorsInput) updateArnableField(v string) (interface{}, error) {
18402	if s.Bucket == nil {
18403		return nil, fmt.Errorf("member Bucket is nil")
18404	}
18405	s.Bucket = aws.String(v)
18406	return &s, nil
18407}
18408
18409type GetBucketCorsOutput struct {
18410	_ struct{} `type:"structure"`
18411
18412	// A set of origins and methods (cross-origin access that you want to allow).
18413	// You can add up to 100 rules to the configuration.
18414	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
18415}
18416
18417// String returns the string representation.
18418//
18419// API parameter values that are decorated as "sensitive" in the API will not
18420// be included in the string output. The member name will be present, but the
18421// value will be replaced with "sensitive".
18422func (s GetBucketCorsOutput) String() string {
18423	return awsutil.Prettify(s)
18424}
18425
18426// GoString returns the string representation.
18427//
18428// API parameter values that are decorated as "sensitive" in the API will not
18429// be included in the string output. The member name will be present, but the
18430// value will be replaced with "sensitive".
18431func (s GetBucketCorsOutput) GoString() string {
18432	return s.String()
18433}
18434
18435// SetCORSRules sets the CORSRules field's value.
18436func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
18437	s.CORSRules = v
18438	return s
18439}
18440
18441type GetBucketEncryptionInput struct {
18442	_ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"`
18443
18444	// The name of the bucket from which the server-side encryption configuration
18445	// is retrieved.
18446	//
18447	// Bucket is a required field
18448	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18449
18450	// The account ID of the expected bucket owner. If the bucket is owned by a
18451	// different account, the request will fail with an HTTP 403 (Access Denied)
18452	// error.
18453	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18454}
18455
18456// String returns the string representation.
18457//
18458// API parameter values that are decorated as "sensitive" in the API will not
18459// be included in the string output. The member name will be present, but the
18460// value will be replaced with "sensitive".
18461func (s GetBucketEncryptionInput) String() string {
18462	return awsutil.Prettify(s)
18463}
18464
18465// GoString returns the string representation.
18466//
18467// API parameter values that are decorated as "sensitive" in the API will not
18468// be included in the string output. The member name will be present, but the
18469// value will be replaced with "sensitive".
18470func (s GetBucketEncryptionInput) GoString() string {
18471	return s.String()
18472}
18473
18474// Validate inspects the fields of the type to determine if they are valid.
18475func (s *GetBucketEncryptionInput) Validate() error {
18476	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
18477	if s.Bucket == nil {
18478		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18479	}
18480	if s.Bucket != nil && len(*s.Bucket) < 1 {
18481		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18482	}
18483
18484	if invalidParams.Len() > 0 {
18485		return invalidParams
18486	}
18487	return nil
18488}
18489
18490// SetBucket sets the Bucket field's value.
18491func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
18492	s.Bucket = &v
18493	return s
18494}
18495
18496func (s *GetBucketEncryptionInput) getBucket() (v string) {
18497	if s.Bucket == nil {
18498		return v
18499	}
18500	return *s.Bucket
18501}
18502
18503// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18504func (s *GetBucketEncryptionInput) SetExpectedBucketOwner(v string) *GetBucketEncryptionInput {
18505	s.ExpectedBucketOwner = &v
18506	return s
18507}
18508
18509func (s *GetBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
18510	if s.Bucket == nil {
18511		return nil, fmt.Errorf("member Bucket is nil")
18512	}
18513	return parseEndpointARN(*s.Bucket)
18514}
18515
18516func (s *GetBucketEncryptionInput) hasEndpointARN() bool {
18517	if s.Bucket == nil {
18518		return false
18519	}
18520	return arn.IsARN(*s.Bucket)
18521}
18522
18523// updateArnableField updates the value of the input field that
18524// takes an ARN as an input. This method is useful to backfill
18525// the parsed resource name from ARN into the input member.
18526// It returns a pointer to a modified copy of input and an error.
18527// Note that original input is not modified.
18528func (s GetBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
18529	if s.Bucket == nil {
18530		return nil, fmt.Errorf("member Bucket is nil")
18531	}
18532	s.Bucket = aws.String(v)
18533	return &s, nil
18534}
18535
18536type GetBucketEncryptionOutput struct {
18537	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
18538
18539	// Specifies the default server-side-encryption configuration.
18540	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
18541}
18542
18543// String returns the string representation.
18544//
18545// API parameter values that are decorated as "sensitive" in the API will not
18546// be included in the string output. The member name will be present, but the
18547// value will be replaced with "sensitive".
18548func (s GetBucketEncryptionOutput) String() string {
18549	return awsutil.Prettify(s)
18550}
18551
18552// GoString returns the string representation.
18553//
18554// API parameter values that are decorated as "sensitive" in the API will not
18555// be included in the string output. The member name will be present, but the
18556// value will be replaced with "sensitive".
18557func (s GetBucketEncryptionOutput) GoString() string {
18558	return s.String()
18559}
18560
18561// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
18562func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
18563	s.ServerSideEncryptionConfiguration = v
18564	return s
18565}
18566
18567type GetBucketIntelligentTieringConfigurationInput struct {
18568	_ struct{} `locationName:"GetBucketIntelligentTieringConfigurationRequest" type:"structure"`
18569
18570	// The name of the Amazon S3 bucket whose configuration you want to modify or
18571	// retrieve.
18572	//
18573	// Bucket is a required field
18574	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18575
18576	// The ID used to identify the S3 Intelligent-Tiering configuration.
18577	//
18578	// Id is a required field
18579	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18580}
18581
18582// String returns the string representation.
18583//
18584// API parameter values that are decorated as "sensitive" in the API will not
18585// be included in the string output. The member name will be present, but the
18586// value will be replaced with "sensitive".
18587func (s GetBucketIntelligentTieringConfigurationInput) String() string {
18588	return awsutil.Prettify(s)
18589}
18590
18591// GoString returns the string representation.
18592//
18593// API parameter values that are decorated as "sensitive" in the API will not
18594// be included in the string output. The member name will be present, but the
18595// value will be replaced with "sensitive".
18596func (s GetBucketIntelligentTieringConfigurationInput) GoString() string {
18597	return s.String()
18598}
18599
18600// Validate inspects the fields of the type to determine if they are valid.
18601func (s *GetBucketIntelligentTieringConfigurationInput) Validate() error {
18602	invalidParams := request.ErrInvalidParams{Context: "GetBucketIntelligentTieringConfigurationInput"}
18603	if s.Bucket == nil {
18604		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18605	}
18606	if s.Bucket != nil && len(*s.Bucket) < 1 {
18607		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18608	}
18609	if s.Id == nil {
18610		invalidParams.Add(request.NewErrParamRequired("Id"))
18611	}
18612
18613	if invalidParams.Len() > 0 {
18614		return invalidParams
18615	}
18616	return nil
18617}
18618
18619// SetBucket sets the Bucket field's value.
18620func (s *GetBucketIntelligentTieringConfigurationInput) SetBucket(v string) *GetBucketIntelligentTieringConfigurationInput {
18621	s.Bucket = &v
18622	return s
18623}
18624
18625func (s *GetBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
18626	if s.Bucket == nil {
18627		return v
18628	}
18629	return *s.Bucket
18630}
18631
18632// SetId sets the Id field's value.
18633func (s *GetBucketIntelligentTieringConfigurationInput) SetId(v string) *GetBucketIntelligentTieringConfigurationInput {
18634	s.Id = &v
18635	return s
18636}
18637
18638func (s *GetBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
18639	if s.Bucket == nil {
18640		return nil, fmt.Errorf("member Bucket is nil")
18641	}
18642	return parseEndpointARN(*s.Bucket)
18643}
18644
18645func (s *GetBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
18646	if s.Bucket == nil {
18647		return false
18648	}
18649	return arn.IsARN(*s.Bucket)
18650}
18651
18652// updateArnableField updates the value of the input field that
18653// takes an ARN as an input. This method is useful to backfill
18654// the parsed resource name from ARN into the input member.
18655// It returns a pointer to a modified copy of input and an error.
18656// Note that original input is not modified.
18657func (s GetBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
18658	if s.Bucket == nil {
18659		return nil, fmt.Errorf("member Bucket is nil")
18660	}
18661	s.Bucket = aws.String(v)
18662	return &s, nil
18663}
18664
18665type GetBucketIntelligentTieringConfigurationOutput struct {
18666	_ struct{} `type:"structure" payload:"IntelligentTieringConfiguration"`
18667
18668	// Container for S3 Intelligent-Tiering configuration.
18669	IntelligentTieringConfiguration *IntelligentTieringConfiguration `type:"structure"`
18670}
18671
18672// String returns the string representation.
18673//
18674// API parameter values that are decorated as "sensitive" in the API will not
18675// be included in the string output. The member name will be present, but the
18676// value will be replaced with "sensitive".
18677func (s GetBucketIntelligentTieringConfigurationOutput) String() string {
18678	return awsutil.Prettify(s)
18679}
18680
18681// GoString returns the string representation.
18682//
18683// API parameter values that are decorated as "sensitive" in the API will not
18684// be included in the string output. The member name will be present, but the
18685// value will be replaced with "sensitive".
18686func (s GetBucketIntelligentTieringConfigurationOutput) GoString() string {
18687	return s.String()
18688}
18689
18690// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
18691func (s *GetBucketIntelligentTieringConfigurationOutput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *GetBucketIntelligentTieringConfigurationOutput {
18692	s.IntelligentTieringConfiguration = v
18693	return s
18694}
18695
18696type GetBucketInventoryConfigurationInput struct {
18697	_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
18698
18699	// The name of the bucket containing the inventory configuration to retrieve.
18700	//
18701	// Bucket is a required field
18702	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18703
18704	// The account ID of the expected bucket owner. If the bucket is owned by a
18705	// different account, the request will fail with an HTTP 403 (Access Denied)
18706	// error.
18707	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18708
18709	// The ID used to identify the inventory configuration.
18710	//
18711	// Id is a required field
18712	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18713}
18714
18715// String returns the string representation.
18716//
18717// API parameter values that are decorated as "sensitive" in the API will not
18718// be included in the string output. The member name will be present, but the
18719// value will be replaced with "sensitive".
18720func (s GetBucketInventoryConfigurationInput) String() string {
18721	return awsutil.Prettify(s)
18722}
18723
18724// GoString returns the string representation.
18725//
18726// API parameter values that are decorated as "sensitive" in the API will not
18727// be included in the string output. The member name will be present, but the
18728// value will be replaced with "sensitive".
18729func (s GetBucketInventoryConfigurationInput) GoString() string {
18730	return s.String()
18731}
18732
18733// Validate inspects the fields of the type to determine if they are valid.
18734func (s *GetBucketInventoryConfigurationInput) Validate() error {
18735	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
18736	if s.Bucket == nil {
18737		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18738	}
18739	if s.Bucket != nil && len(*s.Bucket) < 1 {
18740		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18741	}
18742	if s.Id == nil {
18743		invalidParams.Add(request.NewErrParamRequired("Id"))
18744	}
18745
18746	if invalidParams.Len() > 0 {
18747		return invalidParams
18748	}
18749	return nil
18750}
18751
18752// SetBucket sets the Bucket field's value.
18753func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
18754	s.Bucket = &v
18755	return s
18756}
18757
18758func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
18759	if s.Bucket == nil {
18760		return v
18761	}
18762	return *s.Bucket
18763}
18764
18765// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18766func (s *GetBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketInventoryConfigurationInput {
18767	s.ExpectedBucketOwner = &v
18768	return s
18769}
18770
18771// SetId sets the Id field's value.
18772func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
18773	s.Id = &v
18774	return s
18775}
18776
18777func (s *GetBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
18778	if s.Bucket == nil {
18779		return nil, fmt.Errorf("member Bucket is nil")
18780	}
18781	return parseEndpointARN(*s.Bucket)
18782}
18783
18784func (s *GetBucketInventoryConfigurationInput) hasEndpointARN() bool {
18785	if s.Bucket == nil {
18786		return false
18787	}
18788	return arn.IsARN(*s.Bucket)
18789}
18790
18791// updateArnableField updates the value of the input field that
18792// takes an ARN as an input. This method is useful to backfill
18793// the parsed resource name from ARN into the input member.
18794// It returns a pointer to a modified copy of input and an error.
18795// Note that original input is not modified.
18796func (s GetBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
18797	if s.Bucket == nil {
18798		return nil, fmt.Errorf("member Bucket is nil")
18799	}
18800	s.Bucket = aws.String(v)
18801	return &s, nil
18802}
18803
18804type GetBucketInventoryConfigurationOutput struct {
18805	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
18806
18807	// Specifies the inventory configuration.
18808	InventoryConfiguration *InventoryConfiguration `type:"structure"`
18809}
18810
18811// String returns the string representation.
18812//
18813// API parameter values that are decorated as "sensitive" in the API will not
18814// be included in the string output. The member name will be present, but the
18815// value will be replaced with "sensitive".
18816func (s GetBucketInventoryConfigurationOutput) String() string {
18817	return awsutil.Prettify(s)
18818}
18819
18820// GoString returns the string representation.
18821//
18822// API parameter values that are decorated as "sensitive" in the API will not
18823// be included in the string output. The member name will be present, but the
18824// value will be replaced with "sensitive".
18825func (s GetBucketInventoryConfigurationOutput) GoString() string {
18826	return s.String()
18827}
18828
18829// SetInventoryConfiguration sets the InventoryConfiguration field's value.
18830func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
18831	s.InventoryConfiguration = v
18832	return s
18833}
18834
18835type GetBucketLifecycleConfigurationInput struct {
18836	_ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"`
18837
18838	// The name of the bucket for which to get the lifecycle information.
18839	//
18840	// Bucket is a required field
18841	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18842
18843	// The account ID of the expected bucket owner. If the bucket is owned by a
18844	// different account, the request will fail with an HTTP 403 (Access Denied)
18845	// error.
18846	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18847}
18848
18849// String returns the string representation.
18850//
18851// API parameter values that are decorated as "sensitive" in the API will not
18852// be included in the string output. The member name will be present, but the
18853// value will be replaced with "sensitive".
18854func (s GetBucketLifecycleConfigurationInput) String() string {
18855	return awsutil.Prettify(s)
18856}
18857
18858// GoString returns the string representation.
18859//
18860// API parameter values that are decorated as "sensitive" in the API will not
18861// be included in the string output. The member name will be present, but the
18862// value will be replaced with "sensitive".
18863func (s GetBucketLifecycleConfigurationInput) GoString() string {
18864	return s.String()
18865}
18866
18867// Validate inspects the fields of the type to determine if they are valid.
18868func (s *GetBucketLifecycleConfigurationInput) Validate() error {
18869	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
18870	if s.Bucket == nil {
18871		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18872	}
18873	if s.Bucket != nil && len(*s.Bucket) < 1 {
18874		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18875	}
18876
18877	if invalidParams.Len() > 0 {
18878		return invalidParams
18879	}
18880	return nil
18881}
18882
18883// SetBucket sets the Bucket field's value.
18884func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
18885	s.Bucket = &v
18886	return s
18887}
18888
18889func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
18890	if s.Bucket == nil {
18891		return v
18892	}
18893	return *s.Bucket
18894}
18895
18896// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18897func (s *GetBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleConfigurationInput {
18898	s.ExpectedBucketOwner = &v
18899	return s
18900}
18901
18902func (s *GetBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
18903	if s.Bucket == nil {
18904		return nil, fmt.Errorf("member Bucket is nil")
18905	}
18906	return parseEndpointARN(*s.Bucket)
18907}
18908
18909func (s *GetBucketLifecycleConfigurationInput) hasEndpointARN() bool {
18910	if s.Bucket == nil {
18911		return false
18912	}
18913	return arn.IsARN(*s.Bucket)
18914}
18915
18916// updateArnableField updates the value of the input field that
18917// takes an ARN as an input. This method is useful to backfill
18918// the parsed resource name from ARN into the input member.
18919// It returns a pointer to a modified copy of input and an error.
18920// Note that original input is not modified.
18921func (s GetBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
18922	if s.Bucket == nil {
18923		return nil, fmt.Errorf("member Bucket is nil")
18924	}
18925	s.Bucket = aws.String(v)
18926	return &s, nil
18927}
18928
18929type GetBucketLifecycleConfigurationOutput struct {
18930	_ struct{} `type:"structure"`
18931
18932	// Container for a lifecycle rule.
18933	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
18934}
18935
18936// String returns the string representation.
18937//
18938// API parameter values that are decorated as "sensitive" in the API will not
18939// be included in the string output. The member name will be present, but the
18940// value will be replaced with "sensitive".
18941func (s GetBucketLifecycleConfigurationOutput) String() string {
18942	return awsutil.Prettify(s)
18943}
18944
18945// GoString returns the string representation.
18946//
18947// API parameter values that are decorated as "sensitive" in the API will not
18948// be included in the string output. The member name will be present, but the
18949// value will be replaced with "sensitive".
18950func (s GetBucketLifecycleConfigurationOutput) GoString() string {
18951	return s.String()
18952}
18953
18954// SetRules sets the Rules field's value.
18955func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
18956	s.Rules = v
18957	return s
18958}
18959
18960type GetBucketLifecycleInput struct {
18961	_ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"`
18962
18963	// The name of the bucket for which to get the lifecycle information.
18964	//
18965	// Bucket is a required field
18966	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18967
18968	// The account ID of the expected bucket owner. If the bucket is owned by a
18969	// different account, the request will fail with an HTTP 403 (Access Denied)
18970	// error.
18971	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18972}
18973
18974// String returns the string representation.
18975//
18976// API parameter values that are decorated as "sensitive" in the API will not
18977// be included in the string output. The member name will be present, but the
18978// value will be replaced with "sensitive".
18979func (s GetBucketLifecycleInput) String() string {
18980	return awsutil.Prettify(s)
18981}
18982
18983// GoString returns the string representation.
18984//
18985// API parameter values that are decorated as "sensitive" in the API will not
18986// be included in the string output. The member name will be present, but the
18987// value will be replaced with "sensitive".
18988func (s GetBucketLifecycleInput) GoString() string {
18989	return s.String()
18990}
18991
18992// Validate inspects the fields of the type to determine if they are valid.
18993func (s *GetBucketLifecycleInput) Validate() error {
18994	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
18995	if s.Bucket == nil {
18996		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18997	}
18998	if s.Bucket != nil && len(*s.Bucket) < 1 {
18999		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19000	}
19001
19002	if invalidParams.Len() > 0 {
19003		return invalidParams
19004	}
19005	return nil
19006}
19007
19008// SetBucket sets the Bucket field's value.
19009func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
19010	s.Bucket = &v
19011	return s
19012}
19013
19014func (s *GetBucketLifecycleInput) getBucket() (v string) {
19015	if s.Bucket == nil {
19016		return v
19017	}
19018	return *s.Bucket
19019}
19020
19021// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19022func (s *GetBucketLifecycleInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleInput {
19023	s.ExpectedBucketOwner = &v
19024	return s
19025}
19026
19027func (s *GetBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
19028	if s.Bucket == nil {
19029		return nil, fmt.Errorf("member Bucket is nil")
19030	}
19031	return parseEndpointARN(*s.Bucket)
19032}
19033
19034func (s *GetBucketLifecycleInput) hasEndpointARN() bool {
19035	if s.Bucket == nil {
19036		return false
19037	}
19038	return arn.IsARN(*s.Bucket)
19039}
19040
19041// updateArnableField updates the value of the input field that
19042// takes an ARN as an input. This method is useful to backfill
19043// the parsed resource name from ARN into the input member.
19044// It returns a pointer to a modified copy of input and an error.
19045// Note that original input is not modified.
19046func (s GetBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
19047	if s.Bucket == nil {
19048		return nil, fmt.Errorf("member Bucket is nil")
19049	}
19050	s.Bucket = aws.String(v)
19051	return &s, nil
19052}
19053
19054type GetBucketLifecycleOutput struct {
19055	_ struct{} `type:"structure"`
19056
19057	// Container for a lifecycle rule.
19058	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
19059}
19060
19061// String returns the string representation.
19062//
19063// API parameter values that are decorated as "sensitive" in the API will not
19064// be included in the string output. The member name will be present, but the
19065// value will be replaced with "sensitive".
19066func (s GetBucketLifecycleOutput) String() string {
19067	return awsutil.Prettify(s)
19068}
19069
19070// GoString returns the string representation.
19071//
19072// API parameter values that are decorated as "sensitive" in the API will not
19073// be included in the string output. The member name will be present, but the
19074// value will be replaced with "sensitive".
19075func (s GetBucketLifecycleOutput) GoString() string {
19076	return s.String()
19077}
19078
19079// SetRules sets the Rules field's value.
19080func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
19081	s.Rules = v
19082	return s
19083}
19084
19085type GetBucketLocationInput struct {
19086	_ struct{} `locationName:"GetBucketLocationRequest" type:"structure"`
19087
19088	// The name of the bucket for which to get the location.
19089	//
19090	// Bucket is a required field
19091	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19092
19093	// The account ID of the expected bucket owner. If the bucket is owned by a
19094	// different account, the request will fail with an HTTP 403 (Access Denied)
19095	// error.
19096	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19097}
19098
19099// String returns the string representation.
19100//
19101// API parameter values that are decorated as "sensitive" in the API will not
19102// be included in the string output. The member name will be present, but the
19103// value will be replaced with "sensitive".
19104func (s GetBucketLocationInput) String() string {
19105	return awsutil.Prettify(s)
19106}
19107
19108// GoString returns the string representation.
19109//
19110// API parameter values that are decorated as "sensitive" in the API will not
19111// be included in the string output. The member name will be present, but the
19112// value will be replaced with "sensitive".
19113func (s GetBucketLocationInput) GoString() string {
19114	return s.String()
19115}
19116
19117// Validate inspects the fields of the type to determine if they are valid.
19118func (s *GetBucketLocationInput) Validate() error {
19119	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
19120	if s.Bucket == nil {
19121		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19122	}
19123	if s.Bucket != nil && len(*s.Bucket) < 1 {
19124		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19125	}
19126
19127	if invalidParams.Len() > 0 {
19128		return invalidParams
19129	}
19130	return nil
19131}
19132
19133// SetBucket sets the Bucket field's value.
19134func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
19135	s.Bucket = &v
19136	return s
19137}
19138
19139func (s *GetBucketLocationInput) getBucket() (v string) {
19140	if s.Bucket == nil {
19141		return v
19142	}
19143	return *s.Bucket
19144}
19145
19146// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19147func (s *GetBucketLocationInput) SetExpectedBucketOwner(v string) *GetBucketLocationInput {
19148	s.ExpectedBucketOwner = &v
19149	return s
19150}
19151
19152func (s *GetBucketLocationInput) getEndpointARN() (arn.Resource, error) {
19153	if s.Bucket == nil {
19154		return nil, fmt.Errorf("member Bucket is nil")
19155	}
19156	return parseEndpointARN(*s.Bucket)
19157}
19158
19159func (s *GetBucketLocationInput) hasEndpointARN() bool {
19160	if s.Bucket == nil {
19161		return false
19162	}
19163	return arn.IsARN(*s.Bucket)
19164}
19165
19166// updateArnableField updates the value of the input field that
19167// takes an ARN as an input. This method is useful to backfill
19168// the parsed resource name from ARN into the input member.
19169// It returns a pointer to a modified copy of input and an error.
19170// Note that original input is not modified.
19171func (s GetBucketLocationInput) updateArnableField(v string) (interface{}, error) {
19172	if s.Bucket == nil {
19173		return nil, fmt.Errorf("member Bucket is nil")
19174	}
19175	s.Bucket = aws.String(v)
19176	return &s, nil
19177}
19178
19179type GetBucketLocationOutput struct {
19180	_ struct{} `type:"structure"`
19181
19182	// Specifies the Region where the bucket resides. For a list of all the Amazon
19183	// S3 supported location constraints by Region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).
19184	// Buckets in Region us-east-1 have a LocationConstraint of null.
19185	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
19186}
19187
19188// String returns the string representation.
19189//
19190// API parameter values that are decorated as "sensitive" in the API will not
19191// be included in the string output. The member name will be present, but the
19192// value will be replaced with "sensitive".
19193func (s GetBucketLocationOutput) String() string {
19194	return awsutil.Prettify(s)
19195}
19196
19197// GoString returns the string representation.
19198//
19199// API parameter values that are decorated as "sensitive" in the API will not
19200// be included in the string output. The member name will be present, but the
19201// value will be replaced with "sensitive".
19202func (s GetBucketLocationOutput) GoString() string {
19203	return s.String()
19204}
19205
19206// SetLocationConstraint sets the LocationConstraint field's value.
19207func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
19208	s.LocationConstraint = &v
19209	return s
19210}
19211
19212type GetBucketLoggingInput struct {
19213	_ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"`
19214
19215	// The bucket name for which to get the logging information.
19216	//
19217	// Bucket is a required field
19218	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19219
19220	// The account ID of the expected bucket owner. If the bucket is owned by a
19221	// different account, the request will fail with an HTTP 403 (Access Denied)
19222	// error.
19223	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19224}
19225
19226// String returns the string representation.
19227//
19228// API parameter values that are decorated as "sensitive" in the API will not
19229// be included in the string output. The member name will be present, but the
19230// value will be replaced with "sensitive".
19231func (s GetBucketLoggingInput) String() string {
19232	return awsutil.Prettify(s)
19233}
19234
19235// GoString returns the string representation.
19236//
19237// API parameter values that are decorated as "sensitive" in the API will not
19238// be included in the string output. The member name will be present, but the
19239// value will be replaced with "sensitive".
19240func (s GetBucketLoggingInput) GoString() string {
19241	return s.String()
19242}
19243
19244// Validate inspects the fields of the type to determine if they are valid.
19245func (s *GetBucketLoggingInput) Validate() error {
19246	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
19247	if s.Bucket == nil {
19248		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19249	}
19250	if s.Bucket != nil && len(*s.Bucket) < 1 {
19251		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19252	}
19253
19254	if invalidParams.Len() > 0 {
19255		return invalidParams
19256	}
19257	return nil
19258}
19259
19260// SetBucket sets the Bucket field's value.
19261func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
19262	s.Bucket = &v
19263	return s
19264}
19265
19266func (s *GetBucketLoggingInput) getBucket() (v string) {
19267	if s.Bucket == nil {
19268		return v
19269	}
19270	return *s.Bucket
19271}
19272
19273// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19274func (s *GetBucketLoggingInput) SetExpectedBucketOwner(v string) *GetBucketLoggingInput {
19275	s.ExpectedBucketOwner = &v
19276	return s
19277}
19278
19279func (s *GetBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
19280	if s.Bucket == nil {
19281		return nil, fmt.Errorf("member Bucket is nil")
19282	}
19283	return parseEndpointARN(*s.Bucket)
19284}
19285
19286func (s *GetBucketLoggingInput) hasEndpointARN() bool {
19287	if s.Bucket == nil {
19288		return false
19289	}
19290	return arn.IsARN(*s.Bucket)
19291}
19292
19293// updateArnableField updates the value of the input field that
19294// takes an ARN as an input. This method is useful to backfill
19295// the parsed resource name from ARN into the input member.
19296// It returns a pointer to a modified copy of input and an error.
19297// Note that original input is not modified.
19298func (s GetBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
19299	if s.Bucket == nil {
19300		return nil, fmt.Errorf("member Bucket is nil")
19301	}
19302	s.Bucket = aws.String(v)
19303	return &s, nil
19304}
19305
19306type GetBucketLoggingOutput struct {
19307	_ struct{} `type:"structure"`
19308
19309	// Describes where logs are stored and the prefix that Amazon S3 assigns to
19310	// all log object keys for a bucket. For more information, see PUT Bucket logging
19311	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
19312	// in the Amazon S3 API Reference.
19313	LoggingEnabled *LoggingEnabled `type:"structure"`
19314}
19315
19316// String returns the string representation.
19317//
19318// API parameter values that are decorated as "sensitive" in the API will not
19319// be included in the string output. The member name will be present, but the
19320// value will be replaced with "sensitive".
19321func (s GetBucketLoggingOutput) String() string {
19322	return awsutil.Prettify(s)
19323}
19324
19325// GoString returns the string representation.
19326//
19327// API parameter values that are decorated as "sensitive" in the API will not
19328// be included in the string output. The member name will be present, but the
19329// value will be replaced with "sensitive".
19330func (s GetBucketLoggingOutput) GoString() string {
19331	return s.String()
19332}
19333
19334// SetLoggingEnabled sets the LoggingEnabled field's value.
19335func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
19336	s.LoggingEnabled = v
19337	return s
19338}
19339
19340type GetBucketMetricsConfigurationInput struct {
19341	_ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"`
19342
19343	// The name of the bucket containing the metrics configuration to retrieve.
19344	//
19345	// Bucket is a required field
19346	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19347
19348	// The account ID of the expected bucket owner. If the bucket is owned by a
19349	// different account, the request will fail with an HTTP 403 (Access Denied)
19350	// error.
19351	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19352
19353	// The ID used to identify the metrics configuration.
19354	//
19355	// Id is a required field
19356	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
19357}
19358
19359// String returns the string representation.
19360//
19361// API parameter values that are decorated as "sensitive" in the API will not
19362// be included in the string output. The member name will be present, but the
19363// value will be replaced with "sensitive".
19364func (s GetBucketMetricsConfigurationInput) String() string {
19365	return awsutil.Prettify(s)
19366}
19367
19368// GoString returns the string representation.
19369//
19370// API parameter values that are decorated as "sensitive" in the API will not
19371// be included in the string output. The member name will be present, but the
19372// value will be replaced with "sensitive".
19373func (s GetBucketMetricsConfigurationInput) GoString() string {
19374	return s.String()
19375}
19376
19377// Validate inspects the fields of the type to determine if they are valid.
19378func (s *GetBucketMetricsConfigurationInput) Validate() error {
19379	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
19380	if s.Bucket == nil {
19381		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19382	}
19383	if s.Bucket != nil && len(*s.Bucket) < 1 {
19384		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19385	}
19386	if s.Id == nil {
19387		invalidParams.Add(request.NewErrParamRequired("Id"))
19388	}
19389
19390	if invalidParams.Len() > 0 {
19391		return invalidParams
19392	}
19393	return nil
19394}
19395
19396// SetBucket sets the Bucket field's value.
19397func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
19398	s.Bucket = &v
19399	return s
19400}
19401
19402func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
19403	if s.Bucket == nil {
19404		return v
19405	}
19406	return *s.Bucket
19407}
19408
19409// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19410func (s *GetBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketMetricsConfigurationInput {
19411	s.ExpectedBucketOwner = &v
19412	return s
19413}
19414
19415// SetId sets the Id field's value.
19416func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
19417	s.Id = &v
19418	return s
19419}
19420
19421func (s *GetBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
19422	if s.Bucket == nil {
19423		return nil, fmt.Errorf("member Bucket is nil")
19424	}
19425	return parseEndpointARN(*s.Bucket)
19426}
19427
19428func (s *GetBucketMetricsConfigurationInput) hasEndpointARN() bool {
19429	if s.Bucket == nil {
19430		return false
19431	}
19432	return arn.IsARN(*s.Bucket)
19433}
19434
19435// updateArnableField updates the value of the input field that
19436// takes an ARN as an input. This method is useful to backfill
19437// the parsed resource name from ARN into the input member.
19438// It returns a pointer to a modified copy of input and an error.
19439// Note that original input is not modified.
19440func (s GetBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
19441	if s.Bucket == nil {
19442		return nil, fmt.Errorf("member Bucket is nil")
19443	}
19444	s.Bucket = aws.String(v)
19445	return &s, nil
19446}
19447
19448type GetBucketMetricsConfigurationOutput struct {
19449	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
19450
19451	// Specifies the metrics configuration.
19452	MetricsConfiguration *MetricsConfiguration `type:"structure"`
19453}
19454
19455// String returns the string representation.
19456//
19457// API parameter values that are decorated as "sensitive" in the API will not
19458// be included in the string output. The member name will be present, but the
19459// value will be replaced with "sensitive".
19460func (s GetBucketMetricsConfigurationOutput) String() string {
19461	return awsutil.Prettify(s)
19462}
19463
19464// GoString returns the string representation.
19465//
19466// API parameter values that are decorated as "sensitive" in the API will not
19467// be included in the string output. The member name will be present, but the
19468// value will be replaced with "sensitive".
19469func (s GetBucketMetricsConfigurationOutput) GoString() string {
19470	return s.String()
19471}
19472
19473// SetMetricsConfiguration sets the MetricsConfiguration field's value.
19474func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
19475	s.MetricsConfiguration = v
19476	return s
19477}
19478
19479type GetBucketNotificationConfigurationRequest struct {
19480	_ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"`
19481
19482	// The name of the bucket for which to get the notification configuration.
19483	//
19484	// Bucket is a required field
19485	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19486
19487	// The account ID of the expected bucket owner. If the bucket is owned by a
19488	// different account, the request will fail with an HTTP 403 (Access Denied)
19489	// error.
19490	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19491}
19492
19493// String returns the string representation.
19494//
19495// API parameter values that are decorated as "sensitive" in the API will not
19496// be included in the string output. The member name will be present, but the
19497// value will be replaced with "sensitive".
19498func (s GetBucketNotificationConfigurationRequest) String() string {
19499	return awsutil.Prettify(s)
19500}
19501
19502// GoString returns the string representation.
19503//
19504// API parameter values that are decorated as "sensitive" in the API will not
19505// be included in the string output. The member name will be present, but the
19506// value will be replaced with "sensitive".
19507func (s GetBucketNotificationConfigurationRequest) GoString() string {
19508	return s.String()
19509}
19510
19511// Validate inspects the fields of the type to determine if they are valid.
19512func (s *GetBucketNotificationConfigurationRequest) Validate() error {
19513	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
19514	if s.Bucket == nil {
19515		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19516	}
19517	if s.Bucket != nil && len(*s.Bucket) < 1 {
19518		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19519	}
19520
19521	if invalidParams.Len() > 0 {
19522		return invalidParams
19523	}
19524	return nil
19525}
19526
19527// SetBucket sets the Bucket field's value.
19528func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
19529	s.Bucket = &v
19530	return s
19531}
19532
19533func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
19534	if s.Bucket == nil {
19535		return v
19536	}
19537	return *s.Bucket
19538}
19539
19540// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19541func (s *GetBucketNotificationConfigurationRequest) SetExpectedBucketOwner(v string) *GetBucketNotificationConfigurationRequest {
19542	s.ExpectedBucketOwner = &v
19543	return s
19544}
19545
19546func (s *GetBucketNotificationConfigurationRequest) getEndpointARN() (arn.Resource, error) {
19547	if s.Bucket == nil {
19548		return nil, fmt.Errorf("member Bucket is nil")
19549	}
19550	return parseEndpointARN(*s.Bucket)
19551}
19552
19553func (s *GetBucketNotificationConfigurationRequest) hasEndpointARN() bool {
19554	if s.Bucket == nil {
19555		return false
19556	}
19557	return arn.IsARN(*s.Bucket)
19558}
19559
19560// updateArnableField updates the value of the input field that
19561// takes an ARN as an input. This method is useful to backfill
19562// the parsed resource name from ARN into the input member.
19563// It returns a pointer to a modified copy of input and an error.
19564// Note that original input is not modified.
19565func (s GetBucketNotificationConfigurationRequest) updateArnableField(v string) (interface{}, error) {
19566	if s.Bucket == nil {
19567		return nil, fmt.Errorf("member Bucket is nil")
19568	}
19569	s.Bucket = aws.String(v)
19570	return &s, nil
19571}
19572
19573type GetBucketOwnershipControlsInput struct {
19574	_ struct{} `locationName:"GetBucketOwnershipControlsRequest" type:"structure"`
19575
19576	// The name of the Amazon S3 bucket whose OwnershipControls you want to retrieve.
19577	//
19578	// Bucket is a required field
19579	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19580
19581	// The account ID of the expected bucket owner. If the bucket is owned by a
19582	// different account, the request will fail with an HTTP 403 (Access Denied)
19583	// error.
19584	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19585}
19586
19587// String returns the string representation.
19588//
19589// API parameter values that are decorated as "sensitive" in the API will not
19590// be included in the string output. The member name will be present, but the
19591// value will be replaced with "sensitive".
19592func (s GetBucketOwnershipControlsInput) String() string {
19593	return awsutil.Prettify(s)
19594}
19595
19596// GoString returns the string representation.
19597//
19598// API parameter values that are decorated as "sensitive" in the API will not
19599// be included in the string output. The member name will be present, but the
19600// value will be replaced with "sensitive".
19601func (s GetBucketOwnershipControlsInput) GoString() string {
19602	return s.String()
19603}
19604
19605// Validate inspects the fields of the type to determine if they are valid.
19606func (s *GetBucketOwnershipControlsInput) Validate() error {
19607	invalidParams := request.ErrInvalidParams{Context: "GetBucketOwnershipControlsInput"}
19608	if s.Bucket == nil {
19609		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19610	}
19611	if s.Bucket != nil && len(*s.Bucket) < 1 {
19612		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19613	}
19614
19615	if invalidParams.Len() > 0 {
19616		return invalidParams
19617	}
19618	return nil
19619}
19620
19621// SetBucket sets the Bucket field's value.
19622func (s *GetBucketOwnershipControlsInput) SetBucket(v string) *GetBucketOwnershipControlsInput {
19623	s.Bucket = &v
19624	return s
19625}
19626
19627func (s *GetBucketOwnershipControlsInput) getBucket() (v string) {
19628	if s.Bucket == nil {
19629		return v
19630	}
19631	return *s.Bucket
19632}
19633
19634// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19635func (s *GetBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *GetBucketOwnershipControlsInput {
19636	s.ExpectedBucketOwner = &v
19637	return s
19638}
19639
19640func (s *GetBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
19641	if s.Bucket == nil {
19642		return nil, fmt.Errorf("member Bucket is nil")
19643	}
19644	return parseEndpointARN(*s.Bucket)
19645}
19646
19647func (s *GetBucketOwnershipControlsInput) hasEndpointARN() bool {
19648	if s.Bucket == nil {
19649		return false
19650	}
19651	return arn.IsARN(*s.Bucket)
19652}
19653
19654// updateArnableField updates the value of the input field that
19655// takes an ARN as an input. This method is useful to backfill
19656// the parsed resource name from ARN into the input member.
19657// It returns a pointer to a modified copy of input and an error.
19658// Note that original input is not modified.
19659func (s GetBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
19660	if s.Bucket == nil {
19661		return nil, fmt.Errorf("member Bucket is nil")
19662	}
19663	s.Bucket = aws.String(v)
19664	return &s, nil
19665}
19666
19667type GetBucketOwnershipControlsOutput struct {
19668	_ struct{} `type:"structure" payload:"OwnershipControls"`
19669
19670	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) currently in
19671	// effect for this Amazon S3 bucket.
19672	OwnershipControls *OwnershipControls `type:"structure"`
19673}
19674
19675// String returns the string representation.
19676//
19677// API parameter values that are decorated as "sensitive" in the API will not
19678// be included in the string output. The member name will be present, but the
19679// value will be replaced with "sensitive".
19680func (s GetBucketOwnershipControlsOutput) String() string {
19681	return awsutil.Prettify(s)
19682}
19683
19684// GoString returns the string representation.
19685//
19686// API parameter values that are decorated as "sensitive" in the API will not
19687// be included in the string output. The member name will be present, but the
19688// value will be replaced with "sensitive".
19689func (s GetBucketOwnershipControlsOutput) GoString() string {
19690	return s.String()
19691}
19692
19693// SetOwnershipControls sets the OwnershipControls field's value.
19694func (s *GetBucketOwnershipControlsOutput) SetOwnershipControls(v *OwnershipControls) *GetBucketOwnershipControlsOutput {
19695	s.OwnershipControls = v
19696	return s
19697}
19698
19699type GetBucketPolicyInput struct {
19700	_ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"`
19701
19702	// The bucket name for which to get the bucket policy.
19703	//
19704	// Bucket is a required field
19705	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19706
19707	// The account ID of the expected bucket owner. If the bucket is owned by a
19708	// different account, the request will fail with an HTTP 403 (Access Denied)
19709	// error.
19710	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19711}
19712
19713// String returns the string representation.
19714//
19715// API parameter values that are decorated as "sensitive" in the API will not
19716// be included in the string output. The member name will be present, but the
19717// value will be replaced with "sensitive".
19718func (s GetBucketPolicyInput) String() string {
19719	return awsutil.Prettify(s)
19720}
19721
19722// GoString returns the string representation.
19723//
19724// API parameter values that are decorated as "sensitive" in the API will not
19725// be included in the string output. The member name will be present, but the
19726// value will be replaced with "sensitive".
19727func (s GetBucketPolicyInput) GoString() string {
19728	return s.String()
19729}
19730
19731// Validate inspects the fields of the type to determine if they are valid.
19732func (s *GetBucketPolicyInput) Validate() error {
19733	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
19734	if s.Bucket == nil {
19735		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19736	}
19737	if s.Bucket != nil && len(*s.Bucket) < 1 {
19738		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19739	}
19740
19741	if invalidParams.Len() > 0 {
19742		return invalidParams
19743	}
19744	return nil
19745}
19746
19747// SetBucket sets the Bucket field's value.
19748func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
19749	s.Bucket = &v
19750	return s
19751}
19752
19753func (s *GetBucketPolicyInput) getBucket() (v string) {
19754	if s.Bucket == nil {
19755		return v
19756	}
19757	return *s.Bucket
19758}
19759
19760// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19761func (s *GetBucketPolicyInput) SetExpectedBucketOwner(v string) *GetBucketPolicyInput {
19762	s.ExpectedBucketOwner = &v
19763	return s
19764}
19765
19766func (s *GetBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
19767	if s.Bucket == nil {
19768		return nil, fmt.Errorf("member Bucket is nil")
19769	}
19770	return parseEndpointARN(*s.Bucket)
19771}
19772
19773func (s *GetBucketPolicyInput) hasEndpointARN() bool {
19774	if s.Bucket == nil {
19775		return false
19776	}
19777	return arn.IsARN(*s.Bucket)
19778}
19779
19780// updateArnableField updates the value of the input field that
19781// takes an ARN as an input. This method is useful to backfill
19782// the parsed resource name from ARN into the input member.
19783// It returns a pointer to a modified copy of input and an error.
19784// Note that original input is not modified.
19785func (s GetBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
19786	if s.Bucket == nil {
19787		return nil, fmt.Errorf("member Bucket is nil")
19788	}
19789	s.Bucket = aws.String(v)
19790	return &s, nil
19791}
19792
19793type GetBucketPolicyOutput struct {
19794	_ struct{} `type:"structure" payload:"Policy"`
19795
19796	// The bucket policy as a JSON document.
19797	Policy *string `type:"string"`
19798}
19799
19800// String returns the string representation.
19801//
19802// API parameter values that are decorated as "sensitive" in the API will not
19803// be included in the string output. The member name will be present, but the
19804// value will be replaced with "sensitive".
19805func (s GetBucketPolicyOutput) String() string {
19806	return awsutil.Prettify(s)
19807}
19808
19809// GoString returns the string representation.
19810//
19811// API parameter values that are decorated as "sensitive" in the API will not
19812// be included in the string output. The member name will be present, but the
19813// value will be replaced with "sensitive".
19814func (s GetBucketPolicyOutput) GoString() string {
19815	return s.String()
19816}
19817
19818// SetPolicy sets the Policy field's value.
19819func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
19820	s.Policy = &v
19821	return s
19822}
19823
19824type GetBucketPolicyStatusInput struct {
19825	_ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"`
19826
19827	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
19828	//
19829	// Bucket is a required field
19830	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19831
19832	// The account ID of the expected bucket owner. If the bucket is owned by a
19833	// different account, the request will fail with an HTTP 403 (Access Denied)
19834	// error.
19835	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19836}
19837
19838// String returns the string representation.
19839//
19840// API parameter values that are decorated as "sensitive" in the API will not
19841// be included in the string output. The member name will be present, but the
19842// value will be replaced with "sensitive".
19843func (s GetBucketPolicyStatusInput) String() string {
19844	return awsutil.Prettify(s)
19845}
19846
19847// GoString returns the string representation.
19848//
19849// API parameter values that are decorated as "sensitive" in the API will not
19850// be included in the string output. The member name will be present, but the
19851// value will be replaced with "sensitive".
19852func (s GetBucketPolicyStatusInput) GoString() string {
19853	return s.String()
19854}
19855
19856// Validate inspects the fields of the type to determine if they are valid.
19857func (s *GetBucketPolicyStatusInput) Validate() error {
19858	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
19859	if s.Bucket == nil {
19860		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19861	}
19862	if s.Bucket != nil && len(*s.Bucket) < 1 {
19863		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19864	}
19865
19866	if invalidParams.Len() > 0 {
19867		return invalidParams
19868	}
19869	return nil
19870}
19871
19872// SetBucket sets the Bucket field's value.
19873func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
19874	s.Bucket = &v
19875	return s
19876}
19877
19878func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
19879	if s.Bucket == nil {
19880		return v
19881	}
19882	return *s.Bucket
19883}
19884
19885// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19886func (s *GetBucketPolicyStatusInput) SetExpectedBucketOwner(v string) *GetBucketPolicyStatusInput {
19887	s.ExpectedBucketOwner = &v
19888	return s
19889}
19890
19891func (s *GetBucketPolicyStatusInput) getEndpointARN() (arn.Resource, error) {
19892	if s.Bucket == nil {
19893		return nil, fmt.Errorf("member Bucket is nil")
19894	}
19895	return parseEndpointARN(*s.Bucket)
19896}
19897
19898func (s *GetBucketPolicyStatusInput) hasEndpointARN() bool {
19899	if s.Bucket == nil {
19900		return false
19901	}
19902	return arn.IsARN(*s.Bucket)
19903}
19904
19905// updateArnableField updates the value of the input field that
19906// takes an ARN as an input. This method is useful to backfill
19907// the parsed resource name from ARN into the input member.
19908// It returns a pointer to a modified copy of input and an error.
19909// Note that original input is not modified.
19910func (s GetBucketPolicyStatusInput) updateArnableField(v string) (interface{}, error) {
19911	if s.Bucket == nil {
19912		return nil, fmt.Errorf("member Bucket is nil")
19913	}
19914	s.Bucket = aws.String(v)
19915	return &s, nil
19916}
19917
19918type GetBucketPolicyStatusOutput struct {
19919	_ struct{} `type:"structure" payload:"PolicyStatus"`
19920
19921	// The policy status for the specified bucket.
19922	PolicyStatus *PolicyStatus `type:"structure"`
19923}
19924
19925// String returns the string representation.
19926//
19927// API parameter values that are decorated as "sensitive" in the API will not
19928// be included in the string output. The member name will be present, but the
19929// value will be replaced with "sensitive".
19930func (s GetBucketPolicyStatusOutput) String() string {
19931	return awsutil.Prettify(s)
19932}
19933
19934// GoString returns the string representation.
19935//
19936// API parameter values that are decorated as "sensitive" in the API will not
19937// be included in the string output. The member name will be present, but the
19938// value will be replaced with "sensitive".
19939func (s GetBucketPolicyStatusOutput) GoString() string {
19940	return s.String()
19941}
19942
19943// SetPolicyStatus sets the PolicyStatus field's value.
19944func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
19945	s.PolicyStatus = v
19946	return s
19947}
19948
19949type GetBucketReplicationInput struct {
19950	_ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"`
19951
19952	// The bucket name for which to get the replication information.
19953	//
19954	// Bucket is a required field
19955	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19956
19957	// The account ID of the expected bucket owner. If the bucket is owned by a
19958	// different account, the request will fail with an HTTP 403 (Access Denied)
19959	// error.
19960	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19961}
19962
19963// String returns the string representation.
19964//
19965// API parameter values that are decorated as "sensitive" in the API will not
19966// be included in the string output. The member name will be present, but the
19967// value will be replaced with "sensitive".
19968func (s GetBucketReplicationInput) String() string {
19969	return awsutil.Prettify(s)
19970}
19971
19972// GoString returns the string representation.
19973//
19974// API parameter values that are decorated as "sensitive" in the API will not
19975// be included in the string output. The member name will be present, but the
19976// value will be replaced with "sensitive".
19977func (s GetBucketReplicationInput) GoString() string {
19978	return s.String()
19979}
19980
19981// Validate inspects the fields of the type to determine if they are valid.
19982func (s *GetBucketReplicationInput) Validate() error {
19983	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
19984	if s.Bucket == nil {
19985		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19986	}
19987	if s.Bucket != nil && len(*s.Bucket) < 1 {
19988		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19989	}
19990
19991	if invalidParams.Len() > 0 {
19992		return invalidParams
19993	}
19994	return nil
19995}
19996
19997// SetBucket sets the Bucket field's value.
19998func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
19999	s.Bucket = &v
20000	return s
20001}
20002
20003func (s *GetBucketReplicationInput) getBucket() (v string) {
20004	if s.Bucket == nil {
20005		return v
20006	}
20007	return *s.Bucket
20008}
20009
20010// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20011func (s *GetBucketReplicationInput) SetExpectedBucketOwner(v string) *GetBucketReplicationInput {
20012	s.ExpectedBucketOwner = &v
20013	return s
20014}
20015
20016func (s *GetBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
20017	if s.Bucket == nil {
20018		return nil, fmt.Errorf("member Bucket is nil")
20019	}
20020	return parseEndpointARN(*s.Bucket)
20021}
20022
20023func (s *GetBucketReplicationInput) hasEndpointARN() bool {
20024	if s.Bucket == nil {
20025		return false
20026	}
20027	return arn.IsARN(*s.Bucket)
20028}
20029
20030// updateArnableField updates the value of the input field that
20031// takes an ARN as an input. This method is useful to backfill
20032// the parsed resource name from ARN into the input member.
20033// It returns a pointer to a modified copy of input and an error.
20034// Note that original input is not modified.
20035func (s GetBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
20036	if s.Bucket == nil {
20037		return nil, fmt.Errorf("member Bucket is nil")
20038	}
20039	s.Bucket = aws.String(v)
20040	return &s, nil
20041}
20042
20043type GetBucketReplicationOutput struct {
20044	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
20045
20046	// A container for replication rules. You can add up to 1,000 rules. The maximum
20047	// size of a replication configuration is 2 MB.
20048	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
20049}
20050
20051// String returns the string representation.
20052//
20053// API parameter values that are decorated as "sensitive" in the API will not
20054// be included in the string output. The member name will be present, but the
20055// value will be replaced with "sensitive".
20056func (s GetBucketReplicationOutput) String() string {
20057	return awsutil.Prettify(s)
20058}
20059
20060// GoString returns the string representation.
20061//
20062// API parameter values that are decorated as "sensitive" in the API will not
20063// be included in the string output. The member name will be present, but the
20064// value will be replaced with "sensitive".
20065func (s GetBucketReplicationOutput) GoString() string {
20066	return s.String()
20067}
20068
20069// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
20070func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
20071	s.ReplicationConfiguration = v
20072	return s
20073}
20074
20075type GetBucketRequestPaymentInput struct {
20076	_ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"`
20077
20078	// The name of the bucket for which to get the payment request configuration
20079	//
20080	// Bucket is a required field
20081	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20082
20083	// The account ID of the expected bucket owner. If the bucket is owned by a
20084	// different account, the request will fail with an HTTP 403 (Access Denied)
20085	// error.
20086	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20087}
20088
20089// String returns the string representation.
20090//
20091// API parameter values that are decorated as "sensitive" in the API will not
20092// be included in the string output. The member name will be present, but the
20093// value will be replaced with "sensitive".
20094func (s GetBucketRequestPaymentInput) String() string {
20095	return awsutil.Prettify(s)
20096}
20097
20098// GoString returns the string representation.
20099//
20100// API parameter values that are decorated as "sensitive" in the API will not
20101// be included in the string output. The member name will be present, but the
20102// value will be replaced with "sensitive".
20103func (s GetBucketRequestPaymentInput) GoString() string {
20104	return s.String()
20105}
20106
20107// Validate inspects the fields of the type to determine if they are valid.
20108func (s *GetBucketRequestPaymentInput) Validate() error {
20109	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
20110	if s.Bucket == nil {
20111		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20112	}
20113	if s.Bucket != nil && len(*s.Bucket) < 1 {
20114		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20115	}
20116
20117	if invalidParams.Len() > 0 {
20118		return invalidParams
20119	}
20120	return nil
20121}
20122
20123// SetBucket sets the Bucket field's value.
20124func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
20125	s.Bucket = &v
20126	return s
20127}
20128
20129func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
20130	if s.Bucket == nil {
20131		return v
20132	}
20133	return *s.Bucket
20134}
20135
20136// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20137func (s *GetBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *GetBucketRequestPaymentInput {
20138	s.ExpectedBucketOwner = &v
20139	return s
20140}
20141
20142func (s *GetBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
20143	if s.Bucket == nil {
20144		return nil, fmt.Errorf("member Bucket is nil")
20145	}
20146	return parseEndpointARN(*s.Bucket)
20147}
20148
20149func (s *GetBucketRequestPaymentInput) hasEndpointARN() bool {
20150	if s.Bucket == nil {
20151		return false
20152	}
20153	return arn.IsARN(*s.Bucket)
20154}
20155
20156// updateArnableField updates the value of the input field that
20157// takes an ARN as an input. This method is useful to backfill
20158// the parsed resource name from ARN into the input member.
20159// It returns a pointer to a modified copy of input and an error.
20160// Note that original input is not modified.
20161func (s GetBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
20162	if s.Bucket == nil {
20163		return nil, fmt.Errorf("member Bucket is nil")
20164	}
20165	s.Bucket = aws.String(v)
20166	return &s, nil
20167}
20168
20169type GetBucketRequestPaymentOutput struct {
20170	_ struct{} `type:"structure"`
20171
20172	// Specifies who pays for the download and request fees.
20173	Payer *string `type:"string" enum:"Payer"`
20174}
20175
20176// String returns the string representation.
20177//
20178// API parameter values that are decorated as "sensitive" in the API will not
20179// be included in the string output. The member name will be present, but the
20180// value will be replaced with "sensitive".
20181func (s GetBucketRequestPaymentOutput) String() string {
20182	return awsutil.Prettify(s)
20183}
20184
20185// GoString returns the string representation.
20186//
20187// API parameter values that are decorated as "sensitive" in the API will not
20188// be included in the string output. The member name will be present, but the
20189// value will be replaced with "sensitive".
20190func (s GetBucketRequestPaymentOutput) GoString() string {
20191	return s.String()
20192}
20193
20194// SetPayer sets the Payer field's value.
20195func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
20196	s.Payer = &v
20197	return s
20198}
20199
20200type GetBucketTaggingInput struct {
20201	_ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"`
20202
20203	// The name of the bucket for which to get the tagging information.
20204	//
20205	// Bucket is a required field
20206	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20207
20208	// The account ID of the expected bucket owner. If the bucket is owned by a
20209	// different account, the request will fail with an HTTP 403 (Access Denied)
20210	// error.
20211	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20212}
20213
20214// String returns the string representation.
20215//
20216// API parameter values that are decorated as "sensitive" in the API will not
20217// be included in the string output. The member name will be present, but the
20218// value will be replaced with "sensitive".
20219func (s GetBucketTaggingInput) String() string {
20220	return awsutil.Prettify(s)
20221}
20222
20223// GoString returns the string representation.
20224//
20225// API parameter values that are decorated as "sensitive" in the API will not
20226// be included in the string output. The member name will be present, but the
20227// value will be replaced with "sensitive".
20228func (s GetBucketTaggingInput) GoString() string {
20229	return s.String()
20230}
20231
20232// Validate inspects the fields of the type to determine if they are valid.
20233func (s *GetBucketTaggingInput) Validate() error {
20234	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
20235	if s.Bucket == nil {
20236		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20237	}
20238	if s.Bucket != nil && len(*s.Bucket) < 1 {
20239		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20240	}
20241
20242	if invalidParams.Len() > 0 {
20243		return invalidParams
20244	}
20245	return nil
20246}
20247
20248// SetBucket sets the Bucket field's value.
20249func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
20250	s.Bucket = &v
20251	return s
20252}
20253
20254func (s *GetBucketTaggingInput) getBucket() (v string) {
20255	if s.Bucket == nil {
20256		return v
20257	}
20258	return *s.Bucket
20259}
20260
20261// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20262func (s *GetBucketTaggingInput) SetExpectedBucketOwner(v string) *GetBucketTaggingInput {
20263	s.ExpectedBucketOwner = &v
20264	return s
20265}
20266
20267func (s *GetBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
20268	if s.Bucket == nil {
20269		return nil, fmt.Errorf("member Bucket is nil")
20270	}
20271	return parseEndpointARN(*s.Bucket)
20272}
20273
20274func (s *GetBucketTaggingInput) hasEndpointARN() bool {
20275	if s.Bucket == nil {
20276		return false
20277	}
20278	return arn.IsARN(*s.Bucket)
20279}
20280
20281// updateArnableField updates the value of the input field that
20282// takes an ARN as an input. This method is useful to backfill
20283// the parsed resource name from ARN into the input member.
20284// It returns a pointer to a modified copy of input and an error.
20285// Note that original input is not modified.
20286func (s GetBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
20287	if s.Bucket == nil {
20288		return nil, fmt.Errorf("member Bucket is nil")
20289	}
20290	s.Bucket = aws.String(v)
20291	return &s, nil
20292}
20293
20294type GetBucketTaggingOutput struct {
20295	_ struct{} `type:"structure"`
20296
20297	// Contains the tag set.
20298	//
20299	// TagSet is a required field
20300	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
20301}
20302
20303// String returns the string representation.
20304//
20305// API parameter values that are decorated as "sensitive" in the API will not
20306// be included in the string output. The member name will be present, but the
20307// value will be replaced with "sensitive".
20308func (s GetBucketTaggingOutput) String() string {
20309	return awsutil.Prettify(s)
20310}
20311
20312// GoString returns the string representation.
20313//
20314// API parameter values that are decorated as "sensitive" in the API will not
20315// be included in the string output. The member name will be present, but the
20316// value will be replaced with "sensitive".
20317func (s GetBucketTaggingOutput) GoString() string {
20318	return s.String()
20319}
20320
20321// SetTagSet sets the TagSet field's value.
20322func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
20323	s.TagSet = v
20324	return s
20325}
20326
20327type GetBucketVersioningInput struct {
20328	_ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"`
20329
20330	// The name of the bucket for which to get the versioning information.
20331	//
20332	// Bucket is a required field
20333	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20334
20335	// The account ID of the expected bucket owner. If the bucket is owned by a
20336	// different account, the request will fail with an HTTP 403 (Access Denied)
20337	// error.
20338	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20339}
20340
20341// String returns the string representation.
20342//
20343// API parameter values that are decorated as "sensitive" in the API will not
20344// be included in the string output. The member name will be present, but the
20345// value will be replaced with "sensitive".
20346func (s GetBucketVersioningInput) String() string {
20347	return awsutil.Prettify(s)
20348}
20349
20350// GoString returns the string representation.
20351//
20352// API parameter values that are decorated as "sensitive" in the API will not
20353// be included in the string output. The member name will be present, but the
20354// value will be replaced with "sensitive".
20355func (s GetBucketVersioningInput) GoString() string {
20356	return s.String()
20357}
20358
20359// Validate inspects the fields of the type to determine if they are valid.
20360func (s *GetBucketVersioningInput) Validate() error {
20361	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
20362	if s.Bucket == nil {
20363		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20364	}
20365	if s.Bucket != nil && len(*s.Bucket) < 1 {
20366		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20367	}
20368
20369	if invalidParams.Len() > 0 {
20370		return invalidParams
20371	}
20372	return nil
20373}
20374
20375// SetBucket sets the Bucket field's value.
20376func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
20377	s.Bucket = &v
20378	return s
20379}
20380
20381func (s *GetBucketVersioningInput) getBucket() (v string) {
20382	if s.Bucket == nil {
20383		return v
20384	}
20385	return *s.Bucket
20386}
20387
20388// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20389func (s *GetBucketVersioningInput) SetExpectedBucketOwner(v string) *GetBucketVersioningInput {
20390	s.ExpectedBucketOwner = &v
20391	return s
20392}
20393
20394func (s *GetBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
20395	if s.Bucket == nil {
20396		return nil, fmt.Errorf("member Bucket is nil")
20397	}
20398	return parseEndpointARN(*s.Bucket)
20399}
20400
20401func (s *GetBucketVersioningInput) hasEndpointARN() bool {
20402	if s.Bucket == nil {
20403		return false
20404	}
20405	return arn.IsARN(*s.Bucket)
20406}
20407
20408// updateArnableField updates the value of the input field that
20409// takes an ARN as an input. This method is useful to backfill
20410// the parsed resource name from ARN into the input member.
20411// It returns a pointer to a modified copy of input and an error.
20412// Note that original input is not modified.
20413func (s GetBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
20414	if s.Bucket == nil {
20415		return nil, fmt.Errorf("member Bucket is nil")
20416	}
20417	s.Bucket = aws.String(v)
20418	return &s, nil
20419}
20420
20421type GetBucketVersioningOutput struct {
20422	_ struct{} `type:"structure"`
20423
20424	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
20425	// This element is only returned if the bucket has been configured with MFA
20426	// delete. If the bucket has never been so configured, this element is not returned.
20427	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
20428
20429	// The versioning state of the bucket.
20430	Status *string `type:"string" enum:"BucketVersioningStatus"`
20431}
20432
20433// String returns the string representation.
20434//
20435// API parameter values that are decorated as "sensitive" in the API will not
20436// be included in the string output. The member name will be present, but the
20437// value will be replaced with "sensitive".
20438func (s GetBucketVersioningOutput) String() string {
20439	return awsutil.Prettify(s)
20440}
20441
20442// GoString returns the string representation.
20443//
20444// API parameter values that are decorated as "sensitive" in the API will not
20445// be included in the string output. The member name will be present, but the
20446// value will be replaced with "sensitive".
20447func (s GetBucketVersioningOutput) GoString() string {
20448	return s.String()
20449}
20450
20451// SetMFADelete sets the MFADelete field's value.
20452func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
20453	s.MFADelete = &v
20454	return s
20455}
20456
20457// SetStatus sets the Status field's value.
20458func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
20459	s.Status = &v
20460	return s
20461}
20462
20463type GetBucketWebsiteInput struct {
20464	_ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"`
20465
20466	// The bucket name for which to get the website configuration.
20467	//
20468	// Bucket is a required field
20469	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20470
20471	// The account ID of the expected bucket owner. If the bucket is owned by a
20472	// different account, the request will fail with an HTTP 403 (Access Denied)
20473	// error.
20474	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20475}
20476
20477// String returns the string representation.
20478//
20479// API parameter values that are decorated as "sensitive" in the API will not
20480// be included in the string output. The member name will be present, but the
20481// value will be replaced with "sensitive".
20482func (s GetBucketWebsiteInput) String() string {
20483	return awsutil.Prettify(s)
20484}
20485
20486// GoString returns the string representation.
20487//
20488// API parameter values that are decorated as "sensitive" in the API will not
20489// be included in the string output. The member name will be present, but the
20490// value will be replaced with "sensitive".
20491func (s GetBucketWebsiteInput) GoString() string {
20492	return s.String()
20493}
20494
20495// Validate inspects the fields of the type to determine if they are valid.
20496func (s *GetBucketWebsiteInput) Validate() error {
20497	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
20498	if s.Bucket == nil {
20499		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20500	}
20501	if s.Bucket != nil && len(*s.Bucket) < 1 {
20502		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20503	}
20504
20505	if invalidParams.Len() > 0 {
20506		return invalidParams
20507	}
20508	return nil
20509}
20510
20511// SetBucket sets the Bucket field's value.
20512func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
20513	s.Bucket = &v
20514	return s
20515}
20516
20517func (s *GetBucketWebsiteInput) getBucket() (v string) {
20518	if s.Bucket == nil {
20519		return v
20520	}
20521	return *s.Bucket
20522}
20523
20524// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20525func (s *GetBucketWebsiteInput) SetExpectedBucketOwner(v string) *GetBucketWebsiteInput {
20526	s.ExpectedBucketOwner = &v
20527	return s
20528}
20529
20530func (s *GetBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
20531	if s.Bucket == nil {
20532		return nil, fmt.Errorf("member Bucket is nil")
20533	}
20534	return parseEndpointARN(*s.Bucket)
20535}
20536
20537func (s *GetBucketWebsiteInput) hasEndpointARN() bool {
20538	if s.Bucket == nil {
20539		return false
20540	}
20541	return arn.IsARN(*s.Bucket)
20542}
20543
20544// updateArnableField updates the value of the input field that
20545// takes an ARN as an input. This method is useful to backfill
20546// the parsed resource name from ARN into the input member.
20547// It returns a pointer to a modified copy of input and an error.
20548// Note that original input is not modified.
20549func (s GetBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
20550	if s.Bucket == nil {
20551		return nil, fmt.Errorf("member Bucket is nil")
20552	}
20553	s.Bucket = aws.String(v)
20554	return &s, nil
20555}
20556
20557type GetBucketWebsiteOutput struct {
20558	_ struct{} `type:"structure"`
20559
20560	// The object key name of the website error document to use for 4XX class errors.
20561	ErrorDocument *ErrorDocument `type:"structure"`
20562
20563	// The name of the index document for the website (for example index.html).
20564	IndexDocument *IndexDocument `type:"structure"`
20565
20566	// Specifies the redirect behavior of all requests to a website endpoint of
20567	// an Amazon S3 bucket.
20568	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
20569
20570	// Rules that define when a redirect is applied and the redirect behavior.
20571	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
20572}
20573
20574// String returns the string representation.
20575//
20576// API parameter values that are decorated as "sensitive" in the API will not
20577// be included in the string output. The member name will be present, but the
20578// value will be replaced with "sensitive".
20579func (s GetBucketWebsiteOutput) String() string {
20580	return awsutil.Prettify(s)
20581}
20582
20583// GoString returns the string representation.
20584//
20585// API parameter values that are decorated as "sensitive" in the API will not
20586// be included in the string output. The member name will be present, but the
20587// value will be replaced with "sensitive".
20588func (s GetBucketWebsiteOutput) GoString() string {
20589	return s.String()
20590}
20591
20592// SetErrorDocument sets the ErrorDocument field's value.
20593func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
20594	s.ErrorDocument = v
20595	return s
20596}
20597
20598// SetIndexDocument sets the IndexDocument field's value.
20599func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
20600	s.IndexDocument = v
20601	return s
20602}
20603
20604// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
20605func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
20606	s.RedirectAllRequestsTo = v
20607	return s
20608}
20609
20610// SetRoutingRules sets the RoutingRules field's value.
20611func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
20612	s.RoutingRules = v
20613	return s
20614}
20615
20616type GetObjectAclInput struct {
20617	_ struct{} `locationName:"GetObjectAclRequest" type:"structure"`
20618
20619	// The bucket name that contains the object for which to get the ACL information.
20620	//
20621	// When using this action with an access point, you must direct requests to
20622	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20623	// When using this action with an access point through the Amazon Web Services
20624	// SDKs, you provide the access point ARN in place of the bucket name. For more
20625	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
20626	// in the Amazon S3 User Guide.
20627	//
20628	// Bucket is a required field
20629	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20630
20631	// The account ID of the expected bucket owner. If the bucket is owned by a
20632	// different account, the request will fail with an HTTP 403 (Access Denied)
20633	// error.
20634	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20635
20636	// The key of the object for which to get the ACL information.
20637	//
20638	// Key is a required field
20639	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20640
20641	// Confirms that the requester knows that they will be charged for the request.
20642	// Bucket owners need not specify this parameter in their requests. For information
20643	// about downloading objects from requester pays buckets, see Downloading Objects
20644	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
20645	// in the Amazon S3 User Guide.
20646	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20647
20648	// VersionId used to reference a specific version of the object.
20649	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20650}
20651
20652// String returns the string representation.
20653//
20654// API parameter values that are decorated as "sensitive" in the API will not
20655// be included in the string output. The member name will be present, but the
20656// value will be replaced with "sensitive".
20657func (s GetObjectAclInput) String() string {
20658	return awsutil.Prettify(s)
20659}
20660
20661// GoString returns the string representation.
20662//
20663// API parameter values that are decorated as "sensitive" in the API will not
20664// be included in the string output. The member name will be present, but the
20665// value will be replaced with "sensitive".
20666func (s GetObjectAclInput) GoString() string {
20667	return s.String()
20668}
20669
20670// Validate inspects the fields of the type to determine if they are valid.
20671func (s *GetObjectAclInput) Validate() error {
20672	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
20673	if s.Bucket == nil {
20674		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20675	}
20676	if s.Bucket != nil && len(*s.Bucket) < 1 {
20677		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20678	}
20679	if s.Key == nil {
20680		invalidParams.Add(request.NewErrParamRequired("Key"))
20681	}
20682	if s.Key != nil && len(*s.Key) < 1 {
20683		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20684	}
20685
20686	if invalidParams.Len() > 0 {
20687		return invalidParams
20688	}
20689	return nil
20690}
20691
20692// SetBucket sets the Bucket field's value.
20693func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
20694	s.Bucket = &v
20695	return s
20696}
20697
20698func (s *GetObjectAclInput) getBucket() (v string) {
20699	if s.Bucket == nil {
20700		return v
20701	}
20702	return *s.Bucket
20703}
20704
20705// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20706func (s *GetObjectAclInput) SetExpectedBucketOwner(v string) *GetObjectAclInput {
20707	s.ExpectedBucketOwner = &v
20708	return s
20709}
20710
20711// SetKey sets the Key field's value.
20712func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
20713	s.Key = &v
20714	return s
20715}
20716
20717// SetRequestPayer sets the RequestPayer field's value.
20718func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
20719	s.RequestPayer = &v
20720	return s
20721}
20722
20723// SetVersionId sets the VersionId field's value.
20724func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
20725	s.VersionId = &v
20726	return s
20727}
20728
20729func (s *GetObjectAclInput) getEndpointARN() (arn.Resource, error) {
20730	if s.Bucket == nil {
20731		return nil, fmt.Errorf("member Bucket is nil")
20732	}
20733	return parseEndpointARN(*s.Bucket)
20734}
20735
20736func (s *GetObjectAclInput) hasEndpointARN() bool {
20737	if s.Bucket == nil {
20738		return false
20739	}
20740	return arn.IsARN(*s.Bucket)
20741}
20742
20743// updateArnableField updates the value of the input field that
20744// takes an ARN as an input. This method is useful to backfill
20745// the parsed resource name from ARN into the input member.
20746// It returns a pointer to a modified copy of input and an error.
20747// Note that original input is not modified.
20748func (s GetObjectAclInput) updateArnableField(v string) (interface{}, error) {
20749	if s.Bucket == nil {
20750		return nil, fmt.Errorf("member Bucket is nil")
20751	}
20752	s.Bucket = aws.String(v)
20753	return &s, nil
20754}
20755
20756type GetObjectAclOutput struct {
20757	_ struct{} `type:"structure"`
20758
20759	// A list of grants.
20760	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
20761
20762	// Container for the bucket owner's display name and ID.
20763	Owner *Owner `type:"structure"`
20764
20765	// If present, indicates that the requester was successfully charged for the
20766	// request.
20767	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20768}
20769
20770// String returns the string representation.
20771//
20772// API parameter values that are decorated as "sensitive" in the API will not
20773// be included in the string output. The member name will be present, but the
20774// value will be replaced with "sensitive".
20775func (s GetObjectAclOutput) String() string {
20776	return awsutil.Prettify(s)
20777}
20778
20779// GoString returns the string representation.
20780//
20781// API parameter values that are decorated as "sensitive" in the API will not
20782// be included in the string output. The member name will be present, but the
20783// value will be replaced with "sensitive".
20784func (s GetObjectAclOutput) GoString() string {
20785	return s.String()
20786}
20787
20788// SetGrants sets the Grants field's value.
20789func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
20790	s.Grants = v
20791	return s
20792}
20793
20794// SetOwner sets the Owner field's value.
20795func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
20796	s.Owner = v
20797	return s
20798}
20799
20800// SetRequestCharged sets the RequestCharged field's value.
20801func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
20802	s.RequestCharged = &v
20803	return s
20804}
20805
20806type GetObjectInput struct {
20807	_ struct{} `locationName:"GetObjectRequest" type:"structure"`
20808
20809	// The bucket name containing the object.
20810	//
20811	// When using this action with an access point, you must direct requests to
20812	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20813	// When using this action with an access point through the Amazon Web Services
20814	// SDKs, you provide the access point ARN in place of the bucket name. For more
20815	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
20816	// in the Amazon S3 User Guide.
20817	//
20818	// When using an Object Lambda access point the hostname takes the form AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com.
20819	//
20820	// When using this action with Amazon S3 on Outposts, you must direct requests
20821	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
20822	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
20823	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
20824	// you provide the Outposts bucket ARN in place of the bucket name. For more
20825	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
20826	// in the Amazon S3 User Guide.
20827	//
20828	// Bucket is a required field
20829	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20830
20831	// The account ID of the expected bucket owner. If the bucket is owned by a
20832	// different account, the request will fail with an HTTP 403 (Access Denied)
20833	// error.
20834	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20835
20836	// Return the object only if its entity tag (ETag) is the same as the one specified,
20837	// otherwise return a 412 (precondition failed).
20838	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
20839
20840	// Return the object only if it has been modified since the specified time,
20841	// otherwise return a 304 (not modified).
20842	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
20843
20844	// Return the object only if its entity tag (ETag) is different from the one
20845	// specified, otherwise return a 304 (not modified).
20846	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
20847
20848	// Return the object only if it has not been modified since the specified time,
20849	// otherwise return a 412 (precondition failed).
20850	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
20851
20852	// Key of the object to get.
20853	//
20854	// Key is a required field
20855	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20856
20857	// Part number of the object being read. This is a positive integer between
20858	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
20859	// Useful for downloading just a part of an object.
20860	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
20861
20862	// Downloads the specified range bytes of an object. For more information about
20863	// the HTTP Range header, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
20864	// (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
20865	//
20866	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
20867	Range *string `location:"header" locationName:"Range" type:"string"`
20868
20869	// Confirms that the requester knows that they will be charged for the request.
20870	// Bucket owners need not specify this parameter in their requests. For information
20871	// about downloading objects from requester pays buckets, see Downloading Objects
20872	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
20873	// in the Amazon S3 User Guide.
20874	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20875
20876	// Sets the Cache-Control header of the response.
20877	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
20878
20879	// Sets the Content-Disposition header of the response
20880	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
20881
20882	// Sets the Content-Encoding header of the response.
20883	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
20884
20885	// Sets the Content-Language header of the response.
20886	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
20887
20888	// Sets the Content-Type header of the response.
20889	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
20890
20891	// Sets the Expires header of the response.
20892	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"`
20893
20894	// Specifies the algorithm to use to when decrypting the object (for example,
20895	// AES256).
20896	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
20897
20898	// Specifies the customer-provided encryption key for Amazon S3 used to encrypt
20899	// the data. This value is used to decrypt the object when recovering it and
20900	// must match the one used when storing the data. The key must be appropriate
20901	// for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
20902	// header.
20903	//
20904	// SSECustomerKey is a sensitive parameter and its value will be
20905	// replaced with "sensitive" in string returned by GetObjectInput's
20906	// String and GoString methods.
20907	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
20908
20909	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
20910	// Amazon S3 uses this header for a message integrity check to ensure that the
20911	// encryption key was transmitted without error.
20912	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
20913
20914	// VersionId used to reference a specific version of the object.
20915	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20916}
20917
20918// String returns the string representation.
20919//
20920// API parameter values that are decorated as "sensitive" in the API will not
20921// be included in the string output. The member name will be present, but the
20922// value will be replaced with "sensitive".
20923func (s GetObjectInput) String() string {
20924	return awsutil.Prettify(s)
20925}
20926
20927// GoString returns the string representation.
20928//
20929// API parameter values that are decorated as "sensitive" in the API will not
20930// be included in the string output. The member name will be present, but the
20931// value will be replaced with "sensitive".
20932func (s GetObjectInput) GoString() string {
20933	return s.String()
20934}
20935
20936// Validate inspects the fields of the type to determine if they are valid.
20937func (s *GetObjectInput) Validate() error {
20938	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
20939	if s.Bucket == nil {
20940		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20941	}
20942	if s.Bucket != nil && len(*s.Bucket) < 1 {
20943		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20944	}
20945	if s.Key == nil {
20946		invalidParams.Add(request.NewErrParamRequired("Key"))
20947	}
20948	if s.Key != nil && len(*s.Key) < 1 {
20949		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20950	}
20951
20952	if invalidParams.Len() > 0 {
20953		return invalidParams
20954	}
20955	return nil
20956}
20957
20958// SetBucket sets the Bucket field's value.
20959func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
20960	s.Bucket = &v
20961	return s
20962}
20963
20964func (s *GetObjectInput) getBucket() (v string) {
20965	if s.Bucket == nil {
20966		return v
20967	}
20968	return *s.Bucket
20969}
20970
20971// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20972func (s *GetObjectInput) SetExpectedBucketOwner(v string) *GetObjectInput {
20973	s.ExpectedBucketOwner = &v
20974	return s
20975}
20976
20977// SetIfMatch sets the IfMatch field's value.
20978func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
20979	s.IfMatch = &v
20980	return s
20981}
20982
20983// SetIfModifiedSince sets the IfModifiedSince field's value.
20984func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
20985	s.IfModifiedSince = &v
20986	return s
20987}
20988
20989// SetIfNoneMatch sets the IfNoneMatch field's value.
20990func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
20991	s.IfNoneMatch = &v
20992	return s
20993}
20994
20995// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
20996func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
20997	s.IfUnmodifiedSince = &v
20998	return s
20999}
21000
21001// SetKey sets the Key field's value.
21002func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
21003	s.Key = &v
21004	return s
21005}
21006
21007// SetPartNumber sets the PartNumber field's value.
21008func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
21009	s.PartNumber = &v
21010	return s
21011}
21012
21013// SetRange sets the Range field's value.
21014func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
21015	s.Range = &v
21016	return s
21017}
21018
21019// SetRequestPayer sets the RequestPayer field's value.
21020func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
21021	s.RequestPayer = &v
21022	return s
21023}
21024
21025// SetResponseCacheControl sets the ResponseCacheControl field's value.
21026func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
21027	s.ResponseCacheControl = &v
21028	return s
21029}
21030
21031// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
21032func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
21033	s.ResponseContentDisposition = &v
21034	return s
21035}
21036
21037// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
21038func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
21039	s.ResponseContentEncoding = &v
21040	return s
21041}
21042
21043// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
21044func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
21045	s.ResponseContentLanguage = &v
21046	return s
21047}
21048
21049// SetResponseContentType sets the ResponseContentType field's value.
21050func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
21051	s.ResponseContentType = &v
21052	return s
21053}
21054
21055// SetResponseExpires sets the ResponseExpires field's value.
21056func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
21057	s.ResponseExpires = &v
21058	return s
21059}
21060
21061// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21062func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
21063	s.SSECustomerAlgorithm = &v
21064	return s
21065}
21066
21067// SetSSECustomerKey sets the SSECustomerKey field's value.
21068func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
21069	s.SSECustomerKey = &v
21070	return s
21071}
21072
21073func (s *GetObjectInput) getSSECustomerKey() (v string) {
21074	if s.SSECustomerKey == nil {
21075		return v
21076	}
21077	return *s.SSECustomerKey
21078}
21079
21080// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21081func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
21082	s.SSECustomerKeyMD5 = &v
21083	return s
21084}
21085
21086// SetVersionId sets the VersionId field's value.
21087func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
21088	s.VersionId = &v
21089	return s
21090}
21091
21092func (s *GetObjectInput) getEndpointARN() (arn.Resource, error) {
21093	if s.Bucket == nil {
21094		return nil, fmt.Errorf("member Bucket is nil")
21095	}
21096	return parseEndpointARN(*s.Bucket)
21097}
21098
21099func (s *GetObjectInput) hasEndpointARN() bool {
21100	if s.Bucket == nil {
21101		return false
21102	}
21103	return arn.IsARN(*s.Bucket)
21104}
21105
21106// updateArnableField updates the value of the input field that
21107// takes an ARN as an input. This method is useful to backfill
21108// the parsed resource name from ARN into the input member.
21109// It returns a pointer to a modified copy of input and an error.
21110// Note that original input is not modified.
21111func (s GetObjectInput) updateArnableField(v string) (interface{}, error) {
21112	if s.Bucket == nil {
21113		return nil, fmt.Errorf("member Bucket is nil")
21114	}
21115	s.Bucket = aws.String(v)
21116	return &s, nil
21117}
21118
21119type GetObjectLegalHoldInput struct {
21120	_ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"`
21121
21122	// The bucket name containing the object whose Legal Hold status you want to
21123	// retrieve.
21124	//
21125	// When using this action with an access point, you must direct requests to
21126	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21127	// When using this action with an access point through the Amazon Web Services
21128	// SDKs, you provide the access point ARN in place of the bucket name. For more
21129	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21130	// in the Amazon S3 User Guide.
21131	//
21132	// Bucket is a required field
21133	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21134
21135	// The account ID of the expected bucket owner. If the bucket is owned by a
21136	// different account, the request will fail with an HTTP 403 (Access Denied)
21137	// error.
21138	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21139
21140	// The key name for the object whose Legal Hold status you want to retrieve.
21141	//
21142	// Key is a required field
21143	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21144
21145	// Confirms that the requester knows that they will be charged for the request.
21146	// Bucket owners need not specify this parameter in their requests. For information
21147	// about downloading objects from requester pays buckets, see Downloading Objects
21148	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21149	// in the Amazon S3 User Guide.
21150	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21151
21152	// The version ID of the object whose Legal Hold status you want to retrieve.
21153	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21154}
21155
21156// String returns the string representation.
21157//
21158// API parameter values that are decorated as "sensitive" in the API will not
21159// be included in the string output. The member name will be present, but the
21160// value will be replaced with "sensitive".
21161func (s GetObjectLegalHoldInput) String() string {
21162	return awsutil.Prettify(s)
21163}
21164
21165// GoString returns the string representation.
21166//
21167// API parameter values that are decorated as "sensitive" in the API will not
21168// be included in the string output. The member name will be present, but the
21169// value will be replaced with "sensitive".
21170func (s GetObjectLegalHoldInput) GoString() string {
21171	return s.String()
21172}
21173
21174// Validate inspects the fields of the type to determine if they are valid.
21175func (s *GetObjectLegalHoldInput) Validate() error {
21176	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
21177	if s.Bucket == nil {
21178		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21179	}
21180	if s.Bucket != nil && len(*s.Bucket) < 1 {
21181		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21182	}
21183	if s.Key == nil {
21184		invalidParams.Add(request.NewErrParamRequired("Key"))
21185	}
21186	if s.Key != nil && len(*s.Key) < 1 {
21187		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21188	}
21189
21190	if invalidParams.Len() > 0 {
21191		return invalidParams
21192	}
21193	return nil
21194}
21195
21196// SetBucket sets the Bucket field's value.
21197func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
21198	s.Bucket = &v
21199	return s
21200}
21201
21202func (s *GetObjectLegalHoldInput) getBucket() (v string) {
21203	if s.Bucket == nil {
21204		return v
21205	}
21206	return *s.Bucket
21207}
21208
21209// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21210func (s *GetObjectLegalHoldInput) SetExpectedBucketOwner(v string) *GetObjectLegalHoldInput {
21211	s.ExpectedBucketOwner = &v
21212	return s
21213}
21214
21215// SetKey sets the Key field's value.
21216func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
21217	s.Key = &v
21218	return s
21219}
21220
21221// SetRequestPayer sets the RequestPayer field's value.
21222func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
21223	s.RequestPayer = &v
21224	return s
21225}
21226
21227// SetVersionId sets the VersionId field's value.
21228func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
21229	s.VersionId = &v
21230	return s
21231}
21232
21233func (s *GetObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
21234	if s.Bucket == nil {
21235		return nil, fmt.Errorf("member Bucket is nil")
21236	}
21237	return parseEndpointARN(*s.Bucket)
21238}
21239
21240func (s *GetObjectLegalHoldInput) hasEndpointARN() bool {
21241	if s.Bucket == nil {
21242		return false
21243	}
21244	return arn.IsARN(*s.Bucket)
21245}
21246
21247// updateArnableField updates the value of the input field that
21248// takes an ARN as an input. This method is useful to backfill
21249// the parsed resource name from ARN into the input member.
21250// It returns a pointer to a modified copy of input and an error.
21251// Note that original input is not modified.
21252func (s GetObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
21253	if s.Bucket == nil {
21254		return nil, fmt.Errorf("member Bucket is nil")
21255	}
21256	s.Bucket = aws.String(v)
21257	return &s, nil
21258}
21259
21260type GetObjectLegalHoldOutput struct {
21261	_ struct{} `type:"structure" payload:"LegalHold"`
21262
21263	// The current Legal Hold status for the specified object.
21264	LegalHold *ObjectLockLegalHold `type:"structure"`
21265}
21266
21267// String returns the string representation.
21268//
21269// API parameter values that are decorated as "sensitive" in the API will not
21270// be included in the string output. The member name will be present, but the
21271// value will be replaced with "sensitive".
21272func (s GetObjectLegalHoldOutput) String() string {
21273	return awsutil.Prettify(s)
21274}
21275
21276// GoString returns the string representation.
21277//
21278// API parameter values that are decorated as "sensitive" in the API will not
21279// be included in the string output. The member name will be present, but the
21280// value will be replaced with "sensitive".
21281func (s GetObjectLegalHoldOutput) GoString() string {
21282	return s.String()
21283}
21284
21285// SetLegalHold sets the LegalHold field's value.
21286func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
21287	s.LegalHold = v
21288	return s
21289}
21290
21291type GetObjectLockConfigurationInput struct {
21292	_ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"`
21293
21294	// The bucket whose Object Lock configuration you want to retrieve.
21295	//
21296	// When using this action with an access point, you must direct requests to
21297	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21298	// When using this action with an access point through the Amazon Web Services
21299	// SDKs, you provide the access point ARN in place of the bucket name. For more
21300	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21301	// in the Amazon S3 User Guide.
21302	//
21303	// Bucket is a required field
21304	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21305
21306	// The account ID of the expected bucket owner. If the bucket is owned by a
21307	// different account, the request will fail with an HTTP 403 (Access Denied)
21308	// error.
21309	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21310}
21311
21312// String returns the string representation.
21313//
21314// API parameter values that are decorated as "sensitive" in the API will not
21315// be included in the string output. The member name will be present, but the
21316// value will be replaced with "sensitive".
21317func (s GetObjectLockConfigurationInput) String() string {
21318	return awsutil.Prettify(s)
21319}
21320
21321// GoString returns the string representation.
21322//
21323// API parameter values that are decorated as "sensitive" in the API will not
21324// be included in the string output. The member name will be present, but the
21325// value will be replaced with "sensitive".
21326func (s GetObjectLockConfigurationInput) GoString() string {
21327	return s.String()
21328}
21329
21330// Validate inspects the fields of the type to determine if they are valid.
21331func (s *GetObjectLockConfigurationInput) Validate() error {
21332	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
21333	if s.Bucket == nil {
21334		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21335	}
21336	if s.Bucket != nil && len(*s.Bucket) < 1 {
21337		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21338	}
21339
21340	if invalidParams.Len() > 0 {
21341		return invalidParams
21342	}
21343	return nil
21344}
21345
21346// SetBucket sets the Bucket field's value.
21347func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
21348	s.Bucket = &v
21349	return s
21350}
21351
21352func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
21353	if s.Bucket == nil {
21354		return v
21355	}
21356	return *s.Bucket
21357}
21358
21359// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21360func (s *GetObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *GetObjectLockConfigurationInput {
21361	s.ExpectedBucketOwner = &v
21362	return s
21363}
21364
21365func (s *GetObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
21366	if s.Bucket == nil {
21367		return nil, fmt.Errorf("member Bucket is nil")
21368	}
21369	return parseEndpointARN(*s.Bucket)
21370}
21371
21372func (s *GetObjectLockConfigurationInput) hasEndpointARN() bool {
21373	if s.Bucket == nil {
21374		return false
21375	}
21376	return arn.IsARN(*s.Bucket)
21377}
21378
21379// updateArnableField updates the value of the input field that
21380// takes an ARN as an input. This method is useful to backfill
21381// the parsed resource name from ARN into the input member.
21382// It returns a pointer to a modified copy of input and an error.
21383// Note that original input is not modified.
21384func (s GetObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
21385	if s.Bucket == nil {
21386		return nil, fmt.Errorf("member Bucket is nil")
21387	}
21388	s.Bucket = aws.String(v)
21389	return &s, nil
21390}
21391
21392type GetObjectLockConfigurationOutput struct {
21393	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
21394
21395	// The specified bucket's Object Lock configuration.
21396	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
21397}
21398
21399// String returns the string representation.
21400//
21401// API parameter values that are decorated as "sensitive" in the API will not
21402// be included in the string output. The member name will be present, but the
21403// value will be replaced with "sensitive".
21404func (s GetObjectLockConfigurationOutput) String() string {
21405	return awsutil.Prettify(s)
21406}
21407
21408// GoString returns the string representation.
21409//
21410// API parameter values that are decorated as "sensitive" in the API will not
21411// be included in the string output. The member name will be present, but the
21412// value will be replaced with "sensitive".
21413func (s GetObjectLockConfigurationOutput) GoString() string {
21414	return s.String()
21415}
21416
21417// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
21418func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
21419	s.ObjectLockConfiguration = v
21420	return s
21421}
21422
21423type GetObjectOutput struct {
21424	_ struct{} `type:"structure" payload:"Body"`
21425
21426	// Indicates that a range of bytes was specified.
21427	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
21428
21429	// Object data.
21430	Body io.ReadCloser `type:"blob"`
21431
21432	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
21433	// with Amazon Web Services KMS (SSE-KMS).
21434	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
21435
21436	// Specifies caching behavior along the request/reply chain.
21437	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
21438
21439	// Specifies presentational information for the object.
21440	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
21441
21442	// Specifies what content encodings have been applied to the object and thus
21443	// what decoding mechanisms must be applied to obtain the media-type referenced
21444	// by the Content-Type header field.
21445	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
21446
21447	// The language the content is in.
21448	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
21449
21450	// Size of the body in bytes.
21451	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
21452
21453	// The portion of the object returned in the response.
21454	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
21455
21456	// A standard MIME type describing the format of the object data.
21457	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
21458
21459	// Specifies whether the object retrieved was (true) or was not (false) a Delete
21460	// Marker. If false, this response header does not appear in the response.
21461	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
21462
21463	// An ETag is an opaque identifier assigned by a web server to a specific version
21464	// of a resource found at a URL.
21465	ETag *string `location:"header" locationName:"ETag" type:"string"`
21466
21467	// If the object expiration is configured (see PUT Bucket lifecycle), the response
21468	// includes this header. It includes the expiry-date and rule-id key-value pairs
21469	// providing object expiration information. The value of the rule-id is URL
21470	// encoded.
21471	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
21472
21473	// The date and time at which the object is no longer cacheable.
21474	Expires *string `location:"header" locationName:"Expires" type:"string"`
21475
21476	// Creation date of the object.
21477	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
21478
21479	// A map of metadata to store with the object in S3.
21480	//
21481	// By default unmarshaled keys are written as a map keys in following canonicalized format:
21482	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
21483	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
21484	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
21485
21486	// This is set to the number of metadata entries not returned in x-amz-meta
21487	// headers. This can happen if you create metadata using an API like SOAP that
21488	// supports more flexible metadata than the REST API. For example, using SOAP,
21489	// you can create metadata whose values are not legal HTTP headers.
21490	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
21491
21492	// Indicates whether this object has an active legal hold. This field is only
21493	// returned if you have permission to view an object's legal hold status.
21494	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
21495
21496	// The Object Lock mode currently in place for this object.
21497	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
21498
21499	// The date and time when this object's Object Lock will expire.
21500	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
21501
21502	// The count of parts this object has.
21503	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
21504
21505	// Amazon S3 can return this if your request involves a bucket that is either
21506	// a source or destination in a replication rule.
21507	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
21508
21509	// If present, indicates that the requester was successfully charged for the
21510	// request.
21511	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21512
21513	// Provides information about object restoration action and expiration time
21514	// of the restored object copy.
21515	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
21516
21517	// If server-side encryption with a customer-provided encryption key was requested,
21518	// the response will include this header confirming the encryption algorithm
21519	// used.
21520	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
21521
21522	// If server-side encryption with a customer-provided encryption key was requested,
21523	// the response will include this header to provide round-trip message integrity
21524	// verification of the customer-provided encryption key.
21525	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21526
21527	// If present, specifies the ID of the Amazon Web Services Key Management Service
21528	// (Amazon Web Services KMS) symmetric customer managed key that was used for
21529	// the object.
21530	//
21531	// SSEKMSKeyId is a sensitive parameter and its value will be
21532	// replaced with "sensitive" in string returned by GetObjectOutput's
21533	// String and GoString methods.
21534	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
21535
21536	// The server-side encryption algorithm used when storing this object in Amazon
21537	// S3 (for example, AES256, aws:kms).
21538	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
21539
21540	// Provides storage class information of the object. Amazon S3 returns this
21541	// header for all objects except for S3 Standard storage class objects.
21542	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
21543
21544	// The number of tags, if any, on the object.
21545	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
21546
21547	// Version of the object.
21548	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
21549
21550	// If the bucket is configured as a website, redirects requests for this object
21551	// to another object in the same bucket or to an external URL. Amazon S3 stores
21552	// the value of this header in the object metadata.
21553	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
21554}
21555
21556// String returns the string representation.
21557//
21558// API parameter values that are decorated as "sensitive" in the API will not
21559// be included in the string output. The member name will be present, but the
21560// value will be replaced with "sensitive".
21561func (s GetObjectOutput) String() string {
21562	return awsutil.Prettify(s)
21563}
21564
21565// GoString returns the string representation.
21566//
21567// API parameter values that are decorated as "sensitive" in the API will not
21568// be included in the string output. The member name will be present, but the
21569// value will be replaced with "sensitive".
21570func (s GetObjectOutput) GoString() string {
21571	return s.String()
21572}
21573
21574// SetAcceptRanges sets the AcceptRanges field's value.
21575func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
21576	s.AcceptRanges = &v
21577	return s
21578}
21579
21580// SetBody sets the Body field's value.
21581func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
21582	s.Body = v
21583	return s
21584}
21585
21586// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
21587func (s *GetObjectOutput) SetBucketKeyEnabled(v bool) *GetObjectOutput {
21588	s.BucketKeyEnabled = &v
21589	return s
21590}
21591
21592// SetCacheControl sets the CacheControl field's value.
21593func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
21594	s.CacheControl = &v
21595	return s
21596}
21597
21598// SetContentDisposition sets the ContentDisposition field's value.
21599func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
21600	s.ContentDisposition = &v
21601	return s
21602}
21603
21604// SetContentEncoding sets the ContentEncoding field's value.
21605func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
21606	s.ContentEncoding = &v
21607	return s
21608}
21609
21610// SetContentLanguage sets the ContentLanguage field's value.
21611func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
21612	s.ContentLanguage = &v
21613	return s
21614}
21615
21616// SetContentLength sets the ContentLength field's value.
21617func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
21618	s.ContentLength = &v
21619	return s
21620}
21621
21622// SetContentRange sets the ContentRange field's value.
21623func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
21624	s.ContentRange = &v
21625	return s
21626}
21627
21628// SetContentType sets the ContentType field's value.
21629func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
21630	s.ContentType = &v
21631	return s
21632}
21633
21634// SetDeleteMarker sets the DeleteMarker field's value.
21635func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
21636	s.DeleteMarker = &v
21637	return s
21638}
21639
21640// SetETag sets the ETag field's value.
21641func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
21642	s.ETag = &v
21643	return s
21644}
21645
21646// SetExpiration sets the Expiration field's value.
21647func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
21648	s.Expiration = &v
21649	return s
21650}
21651
21652// SetExpires sets the Expires field's value.
21653func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
21654	s.Expires = &v
21655	return s
21656}
21657
21658// SetLastModified sets the LastModified field's value.
21659func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
21660	s.LastModified = &v
21661	return s
21662}
21663
21664// SetMetadata sets the Metadata field's value.
21665func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
21666	s.Metadata = v
21667	return s
21668}
21669
21670// SetMissingMeta sets the MissingMeta field's value.
21671func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
21672	s.MissingMeta = &v
21673	return s
21674}
21675
21676// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
21677func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
21678	s.ObjectLockLegalHoldStatus = &v
21679	return s
21680}
21681
21682// SetObjectLockMode sets the ObjectLockMode field's value.
21683func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
21684	s.ObjectLockMode = &v
21685	return s
21686}
21687
21688// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
21689func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
21690	s.ObjectLockRetainUntilDate = &v
21691	return s
21692}
21693
21694// SetPartsCount sets the PartsCount field's value.
21695func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
21696	s.PartsCount = &v
21697	return s
21698}
21699
21700// SetReplicationStatus sets the ReplicationStatus field's value.
21701func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
21702	s.ReplicationStatus = &v
21703	return s
21704}
21705
21706// SetRequestCharged sets the RequestCharged field's value.
21707func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
21708	s.RequestCharged = &v
21709	return s
21710}
21711
21712// SetRestore sets the Restore field's value.
21713func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
21714	s.Restore = &v
21715	return s
21716}
21717
21718// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21719func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
21720	s.SSECustomerAlgorithm = &v
21721	return s
21722}
21723
21724// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21725func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
21726	s.SSECustomerKeyMD5 = &v
21727	return s
21728}
21729
21730// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
21731func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
21732	s.SSEKMSKeyId = &v
21733	return s
21734}
21735
21736// SetServerSideEncryption sets the ServerSideEncryption field's value.
21737func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
21738	s.ServerSideEncryption = &v
21739	return s
21740}
21741
21742// SetStorageClass sets the StorageClass field's value.
21743func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
21744	s.StorageClass = &v
21745	return s
21746}
21747
21748// SetTagCount sets the TagCount field's value.
21749func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
21750	s.TagCount = &v
21751	return s
21752}
21753
21754// SetVersionId sets the VersionId field's value.
21755func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
21756	s.VersionId = &v
21757	return s
21758}
21759
21760// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
21761func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
21762	s.WebsiteRedirectLocation = &v
21763	return s
21764}
21765
21766type GetObjectRetentionInput struct {
21767	_ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"`
21768
21769	// The bucket name containing the object whose retention settings you want to
21770	// retrieve.
21771	//
21772	// When using this action with an access point, you must direct requests to
21773	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21774	// When using this action with an access point through the Amazon Web Services
21775	// SDKs, you provide the access point ARN in place of the bucket name. For more
21776	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21777	// in the Amazon S3 User Guide.
21778	//
21779	// Bucket is a required field
21780	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21781
21782	// The account ID of the expected bucket owner. If the bucket is owned by a
21783	// different account, the request will fail with an HTTP 403 (Access Denied)
21784	// error.
21785	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21786
21787	// The key name for the object whose retention settings you want to retrieve.
21788	//
21789	// Key is a required field
21790	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21791
21792	// Confirms that the requester knows that they will be charged for the request.
21793	// Bucket owners need not specify this parameter in their requests. For information
21794	// about downloading objects from requester pays buckets, see Downloading Objects
21795	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21796	// in the Amazon S3 User Guide.
21797	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21798
21799	// The version ID for the object whose retention settings you want to retrieve.
21800	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21801}
21802
21803// String returns the string representation.
21804//
21805// API parameter values that are decorated as "sensitive" in the API will not
21806// be included in the string output. The member name will be present, but the
21807// value will be replaced with "sensitive".
21808func (s GetObjectRetentionInput) String() string {
21809	return awsutil.Prettify(s)
21810}
21811
21812// GoString returns the string representation.
21813//
21814// API parameter values that are decorated as "sensitive" in the API will not
21815// be included in the string output. The member name will be present, but the
21816// value will be replaced with "sensitive".
21817func (s GetObjectRetentionInput) GoString() string {
21818	return s.String()
21819}
21820
21821// Validate inspects the fields of the type to determine if they are valid.
21822func (s *GetObjectRetentionInput) Validate() error {
21823	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
21824	if s.Bucket == nil {
21825		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21826	}
21827	if s.Bucket != nil && len(*s.Bucket) < 1 {
21828		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21829	}
21830	if s.Key == nil {
21831		invalidParams.Add(request.NewErrParamRequired("Key"))
21832	}
21833	if s.Key != nil && len(*s.Key) < 1 {
21834		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21835	}
21836
21837	if invalidParams.Len() > 0 {
21838		return invalidParams
21839	}
21840	return nil
21841}
21842
21843// SetBucket sets the Bucket field's value.
21844func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
21845	s.Bucket = &v
21846	return s
21847}
21848
21849func (s *GetObjectRetentionInput) getBucket() (v string) {
21850	if s.Bucket == nil {
21851		return v
21852	}
21853	return *s.Bucket
21854}
21855
21856// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21857func (s *GetObjectRetentionInput) SetExpectedBucketOwner(v string) *GetObjectRetentionInput {
21858	s.ExpectedBucketOwner = &v
21859	return s
21860}
21861
21862// SetKey sets the Key field's value.
21863func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
21864	s.Key = &v
21865	return s
21866}
21867
21868// SetRequestPayer sets the RequestPayer field's value.
21869func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
21870	s.RequestPayer = &v
21871	return s
21872}
21873
21874// SetVersionId sets the VersionId field's value.
21875func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
21876	s.VersionId = &v
21877	return s
21878}
21879
21880func (s *GetObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
21881	if s.Bucket == nil {
21882		return nil, fmt.Errorf("member Bucket is nil")
21883	}
21884	return parseEndpointARN(*s.Bucket)
21885}
21886
21887func (s *GetObjectRetentionInput) hasEndpointARN() bool {
21888	if s.Bucket == nil {
21889		return false
21890	}
21891	return arn.IsARN(*s.Bucket)
21892}
21893
21894// updateArnableField updates the value of the input field that
21895// takes an ARN as an input. This method is useful to backfill
21896// the parsed resource name from ARN into the input member.
21897// It returns a pointer to a modified copy of input and an error.
21898// Note that original input is not modified.
21899func (s GetObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
21900	if s.Bucket == nil {
21901		return nil, fmt.Errorf("member Bucket is nil")
21902	}
21903	s.Bucket = aws.String(v)
21904	return &s, nil
21905}
21906
21907type GetObjectRetentionOutput struct {
21908	_ struct{} `type:"structure" payload:"Retention"`
21909
21910	// The container element for an object's retention settings.
21911	Retention *ObjectLockRetention `type:"structure"`
21912}
21913
21914// String returns the string representation.
21915//
21916// API parameter values that are decorated as "sensitive" in the API will not
21917// be included in the string output. The member name will be present, but the
21918// value will be replaced with "sensitive".
21919func (s GetObjectRetentionOutput) String() string {
21920	return awsutil.Prettify(s)
21921}
21922
21923// GoString returns the string representation.
21924//
21925// API parameter values that are decorated as "sensitive" in the API will not
21926// be included in the string output. The member name will be present, but the
21927// value will be replaced with "sensitive".
21928func (s GetObjectRetentionOutput) GoString() string {
21929	return s.String()
21930}
21931
21932// SetRetention sets the Retention field's value.
21933func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
21934	s.Retention = v
21935	return s
21936}
21937
21938type GetObjectTaggingInput struct {
21939	_ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"`
21940
21941	// The bucket name containing the object for which to get the tagging information.
21942	//
21943	// When using this action with an access point, you must direct requests to
21944	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21945	// When using this action with an access point through the Amazon Web Services
21946	// SDKs, you provide the access point ARN in place of the bucket name. For more
21947	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21948	// in the Amazon S3 User Guide.
21949	//
21950	// When using this action with Amazon S3 on Outposts, you must direct requests
21951	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
21952	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
21953	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
21954	// you provide the Outposts bucket ARN in place of the bucket name. For more
21955	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
21956	// in the Amazon S3 User Guide.
21957	//
21958	// Bucket is a required field
21959	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21960
21961	// The account ID of the expected bucket owner. If the bucket is owned by a
21962	// different account, the request will fail with an HTTP 403 (Access Denied)
21963	// error.
21964	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21965
21966	// Object key for which to get the tagging information.
21967	//
21968	// Key is a required field
21969	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21970
21971	// Confirms that the requester knows that they will be charged for the request.
21972	// Bucket owners need not specify this parameter in their requests. For information
21973	// about downloading objects from requester pays buckets, see Downloading Objects
21974	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21975	// in the Amazon S3 User Guide.
21976	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21977
21978	// The versionId of the object for which to get the tagging information.
21979	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21980}
21981
21982// String returns the string representation.
21983//
21984// API parameter values that are decorated as "sensitive" in the API will not
21985// be included in the string output. The member name will be present, but the
21986// value will be replaced with "sensitive".
21987func (s GetObjectTaggingInput) String() string {
21988	return awsutil.Prettify(s)
21989}
21990
21991// GoString returns the string representation.
21992//
21993// API parameter values that are decorated as "sensitive" in the API will not
21994// be included in the string output. The member name will be present, but the
21995// value will be replaced with "sensitive".
21996func (s GetObjectTaggingInput) GoString() string {
21997	return s.String()
21998}
21999
22000// Validate inspects the fields of the type to determine if they are valid.
22001func (s *GetObjectTaggingInput) Validate() error {
22002	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
22003	if s.Bucket == nil {
22004		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22005	}
22006	if s.Bucket != nil && len(*s.Bucket) < 1 {
22007		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22008	}
22009	if s.Key == nil {
22010		invalidParams.Add(request.NewErrParamRequired("Key"))
22011	}
22012	if s.Key != nil && len(*s.Key) < 1 {
22013		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22014	}
22015
22016	if invalidParams.Len() > 0 {
22017		return invalidParams
22018	}
22019	return nil
22020}
22021
22022// SetBucket sets the Bucket field's value.
22023func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
22024	s.Bucket = &v
22025	return s
22026}
22027
22028func (s *GetObjectTaggingInput) getBucket() (v string) {
22029	if s.Bucket == nil {
22030		return v
22031	}
22032	return *s.Bucket
22033}
22034
22035// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22036func (s *GetObjectTaggingInput) SetExpectedBucketOwner(v string) *GetObjectTaggingInput {
22037	s.ExpectedBucketOwner = &v
22038	return s
22039}
22040
22041// SetKey sets the Key field's value.
22042func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
22043	s.Key = &v
22044	return s
22045}
22046
22047// SetRequestPayer sets the RequestPayer field's value.
22048func (s *GetObjectTaggingInput) SetRequestPayer(v string) *GetObjectTaggingInput {
22049	s.RequestPayer = &v
22050	return s
22051}
22052
22053// SetVersionId sets the VersionId field's value.
22054func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
22055	s.VersionId = &v
22056	return s
22057}
22058
22059func (s *GetObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
22060	if s.Bucket == nil {
22061		return nil, fmt.Errorf("member Bucket is nil")
22062	}
22063	return parseEndpointARN(*s.Bucket)
22064}
22065
22066func (s *GetObjectTaggingInput) hasEndpointARN() bool {
22067	if s.Bucket == nil {
22068		return false
22069	}
22070	return arn.IsARN(*s.Bucket)
22071}
22072
22073// updateArnableField updates the value of the input field that
22074// takes an ARN as an input. This method is useful to backfill
22075// the parsed resource name from ARN into the input member.
22076// It returns a pointer to a modified copy of input and an error.
22077// Note that original input is not modified.
22078func (s GetObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
22079	if s.Bucket == nil {
22080		return nil, fmt.Errorf("member Bucket is nil")
22081	}
22082	s.Bucket = aws.String(v)
22083	return &s, nil
22084}
22085
22086type GetObjectTaggingOutput struct {
22087	_ struct{} `type:"structure"`
22088
22089	// Contains the tag set.
22090	//
22091	// TagSet is a required field
22092	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
22093
22094	// The versionId of the object for which you got the tagging information.
22095	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
22096}
22097
22098// String returns the string representation.
22099//
22100// API parameter values that are decorated as "sensitive" in the API will not
22101// be included in the string output. The member name will be present, but the
22102// value will be replaced with "sensitive".
22103func (s GetObjectTaggingOutput) String() string {
22104	return awsutil.Prettify(s)
22105}
22106
22107// GoString returns the string representation.
22108//
22109// API parameter values that are decorated as "sensitive" in the API will not
22110// be included in the string output. The member name will be present, but the
22111// value will be replaced with "sensitive".
22112func (s GetObjectTaggingOutput) GoString() string {
22113	return s.String()
22114}
22115
22116// SetTagSet sets the TagSet field's value.
22117func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
22118	s.TagSet = v
22119	return s
22120}
22121
22122// SetVersionId sets the VersionId field's value.
22123func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
22124	s.VersionId = &v
22125	return s
22126}
22127
22128type GetObjectTorrentInput struct {
22129	_ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"`
22130
22131	// The name of the bucket containing the object for which to get the torrent
22132	// files.
22133	//
22134	// Bucket is a required field
22135	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22136
22137	// The account ID of the expected bucket owner. If the bucket is owned by a
22138	// different account, the request will fail with an HTTP 403 (Access Denied)
22139	// error.
22140	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22141
22142	// The object key for which to get the information.
22143	//
22144	// Key is a required field
22145	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
22146
22147	// Confirms that the requester knows that they will be charged for the request.
22148	// Bucket owners need not specify this parameter in their requests. For information
22149	// about downloading objects from requester pays buckets, see Downloading Objects
22150	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
22151	// in the Amazon S3 User Guide.
22152	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
22153}
22154
22155// String returns the string representation.
22156//
22157// API parameter values that are decorated as "sensitive" in the API will not
22158// be included in the string output. The member name will be present, but the
22159// value will be replaced with "sensitive".
22160func (s GetObjectTorrentInput) String() string {
22161	return awsutil.Prettify(s)
22162}
22163
22164// GoString returns the string representation.
22165//
22166// API parameter values that are decorated as "sensitive" in the API will not
22167// be included in the string output. The member name will be present, but the
22168// value will be replaced with "sensitive".
22169func (s GetObjectTorrentInput) GoString() string {
22170	return s.String()
22171}
22172
22173// Validate inspects the fields of the type to determine if they are valid.
22174func (s *GetObjectTorrentInput) Validate() error {
22175	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
22176	if s.Bucket == nil {
22177		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22178	}
22179	if s.Bucket != nil && len(*s.Bucket) < 1 {
22180		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22181	}
22182	if s.Key == nil {
22183		invalidParams.Add(request.NewErrParamRequired("Key"))
22184	}
22185	if s.Key != nil && len(*s.Key) < 1 {
22186		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22187	}
22188
22189	if invalidParams.Len() > 0 {
22190		return invalidParams
22191	}
22192	return nil
22193}
22194
22195// SetBucket sets the Bucket field's value.
22196func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
22197	s.Bucket = &v
22198	return s
22199}
22200
22201func (s *GetObjectTorrentInput) getBucket() (v string) {
22202	if s.Bucket == nil {
22203		return v
22204	}
22205	return *s.Bucket
22206}
22207
22208// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22209func (s *GetObjectTorrentInput) SetExpectedBucketOwner(v string) *GetObjectTorrentInput {
22210	s.ExpectedBucketOwner = &v
22211	return s
22212}
22213
22214// SetKey sets the Key field's value.
22215func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
22216	s.Key = &v
22217	return s
22218}
22219
22220// SetRequestPayer sets the RequestPayer field's value.
22221func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
22222	s.RequestPayer = &v
22223	return s
22224}
22225
22226func (s *GetObjectTorrentInput) getEndpointARN() (arn.Resource, error) {
22227	if s.Bucket == nil {
22228		return nil, fmt.Errorf("member Bucket is nil")
22229	}
22230	return parseEndpointARN(*s.Bucket)
22231}
22232
22233func (s *GetObjectTorrentInput) hasEndpointARN() bool {
22234	if s.Bucket == nil {
22235		return false
22236	}
22237	return arn.IsARN(*s.Bucket)
22238}
22239
22240// updateArnableField updates the value of the input field that
22241// takes an ARN as an input. This method is useful to backfill
22242// the parsed resource name from ARN into the input member.
22243// It returns a pointer to a modified copy of input and an error.
22244// Note that original input is not modified.
22245func (s GetObjectTorrentInput) updateArnableField(v string) (interface{}, error) {
22246	if s.Bucket == nil {
22247		return nil, fmt.Errorf("member Bucket is nil")
22248	}
22249	s.Bucket = aws.String(v)
22250	return &s, nil
22251}
22252
22253type GetObjectTorrentOutput struct {
22254	_ struct{} `type:"structure" payload:"Body"`
22255
22256	// A Bencoded dictionary as defined by the BitTorrent specification
22257	Body io.ReadCloser `type:"blob"`
22258
22259	// If present, indicates that the requester was successfully charged for the
22260	// request.
22261	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
22262}
22263
22264// String returns the string representation.
22265//
22266// API parameter values that are decorated as "sensitive" in the API will not
22267// be included in the string output. The member name will be present, but the
22268// value will be replaced with "sensitive".
22269func (s GetObjectTorrentOutput) String() string {
22270	return awsutil.Prettify(s)
22271}
22272
22273// GoString returns the string representation.
22274//
22275// API parameter values that are decorated as "sensitive" in the API will not
22276// be included in the string output. The member name will be present, but the
22277// value will be replaced with "sensitive".
22278func (s GetObjectTorrentOutput) GoString() string {
22279	return s.String()
22280}
22281
22282// SetBody sets the Body field's value.
22283func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
22284	s.Body = v
22285	return s
22286}
22287
22288// SetRequestCharged sets the RequestCharged field's value.
22289func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
22290	s.RequestCharged = &v
22291	return s
22292}
22293
22294type GetPublicAccessBlockInput struct {
22295	_ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"`
22296
22297	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
22298	// want to retrieve.
22299	//
22300	// Bucket is a required field
22301	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22302
22303	// The account ID of the expected bucket owner. If the bucket is owned by a
22304	// different account, the request will fail with an HTTP 403 (Access Denied)
22305	// error.
22306	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22307}
22308
22309// String returns the string representation.
22310//
22311// API parameter values that are decorated as "sensitive" in the API will not
22312// be included in the string output. The member name will be present, but the
22313// value will be replaced with "sensitive".
22314func (s GetPublicAccessBlockInput) String() string {
22315	return awsutil.Prettify(s)
22316}
22317
22318// GoString returns the string representation.
22319//
22320// API parameter values that are decorated as "sensitive" in the API will not
22321// be included in the string output. The member name will be present, but the
22322// value will be replaced with "sensitive".
22323func (s GetPublicAccessBlockInput) GoString() string {
22324	return s.String()
22325}
22326
22327// Validate inspects the fields of the type to determine if they are valid.
22328func (s *GetPublicAccessBlockInput) Validate() error {
22329	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
22330	if s.Bucket == nil {
22331		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22332	}
22333	if s.Bucket != nil && len(*s.Bucket) < 1 {
22334		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22335	}
22336
22337	if invalidParams.Len() > 0 {
22338		return invalidParams
22339	}
22340	return nil
22341}
22342
22343// SetBucket sets the Bucket field's value.
22344func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
22345	s.Bucket = &v
22346	return s
22347}
22348
22349func (s *GetPublicAccessBlockInput) getBucket() (v string) {
22350	if s.Bucket == nil {
22351		return v
22352	}
22353	return *s.Bucket
22354}
22355
22356// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22357func (s *GetPublicAccessBlockInput) SetExpectedBucketOwner(v string) *GetPublicAccessBlockInput {
22358	s.ExpectedBucketOwner = &v
22359	return s
22360}
22361
22362func (s *GetPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
22363	if s.Bucket == nil {
22364		return nil, fmt.Errorf("member Bucket is nil")
22365	}
22366	return parseEndpointARN(*s.Bucket)
22367}
22368
22369func (s *GetPublicAccessBlockInput) hasEndpointARN() bool {
22370	if s.Bucket == nil {
22371		return false
22372	}
22373	return arn.IsARN(*s.Bucket)
22374}
22375
22376// updateArnableField updates the value of the input field that
22377// takes an ARN as an input. This method is useful to backfill
22378// the parsed resource name from ARN into the input member.
22379// It returns a pointer to a modified copy of input and an error.
22380// Note that original input is not modified.
22381func (s GetPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
22382	if s.Bucket == nil {
22383		return nil, fmt.Errorf("member Bucket is nil")
22384	}
22385	s.Bucket = aws.String(v)
22386	return &s, nil
22387}
22388
22389type GetPublicAccessBlockOutput struct {
22390	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
22391
22392	// The PublicAccessBlock configuration currently in effect for this Amazon S3
22393	// bucket.
22394	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
22395}
22396
22397// String returns the string representation.
22398//
22399// API parameter values that are decorated as "sensitive" in the API will not
22400// be included in the string output. The member name will be present, but the
22401// value will be replaced with "sensitive".
22402func (s GetPublicAccessBlockOutput) String() string {
22403	return awsutil.Prettify(s)
22404}
22405
22406// GoString returns the string representation.
22407//
22408// API parameter values that are decorated as "sensitive" in the API will not
22409// be included in the string output. The member name will be present, but the
22410// value will be replaced with "sensitive".
22411func (s GetPublicAccessBlockOutput) GoString() string {
22412	return s.String()
22413}
22414
22415// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
22416func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
22417	s.PublicAccessBlockConfiguration = v
22418	return s
22419}
22420
22421// Container for S3 Glacier job parameters.
22422type GlacierJobParameters struct {
22423	_ struct{} `type:"structure"`
22424
22425	// Retrieval tier at which the restore will be processed.
22426	//
22427	// Tier is a required field
22428	Tier *string `type:"string" required:"true" enum:"Tier"`
22429}
22430
22431// String returns the string representation.
22432//
22433// API parameter values that are decorated as "sensitive" in the API will not
22434// be included in the string output. The member name will be present, but the
22435// value will be replaced with "sensitive".
22436func (s GlacierJobParameters) String() string {
22437	return awsutil.Prettify(s)
22438}
22439
22440// GoString returns the string representation.
22441//
22442// API parameter values that are decorated as "sensitive" in the API will not
22443// be included in the string output. The member name will be present, but the
22444// value will be replaced with "sensitive".
22445func (s GlacierJobParameters) GoString() string {
22446	return s.String()
22447}
22448
22449// Validate inspects the fields of the type to determine if they are valid.
22450func (s *GlacierJobParameters) Validate() error {
22451	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
22452	if s.Tier == nil {
22453		invalidParams.Add(request.NewErrParamRequired("Tier"))
22454	}
22455
22456	if invalidParams.Len() > 0 {
22457		return invalidParams
22458	}
22459	return nil
22460}
22461
22462// SetTier sets the Tier field's value.
22463func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
22464	s.Tier = &v
22465	return s
22466}
22467
22468// Container for grant information.
22469type Grant struct {
22470	_ struct{} `type:"structure"`
22471
22472	// The person being granted permissions.
22473	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
22474
22475	// Specifies the permission given to the grantee.
22476	Permission *string `type:"string" enum:"Permission"`
22477}
22478
22479// String returns the string representation.
22480//
22481// API parameter values that are decorated as "sensitive" in the API will not
22482// be included in the string output. The member name will be present, but the
22483// value will be replaced with "sensitive".
22484func (s Grant) String() string {
22485	return awsutil.Prettify(s)
22486}
22487
22488// GoString returns the string representation.
22489//
22490// API parameter values that are decorated as "sensitive" in the API will not
22491// be included in the string output. The member name will be present, but the
22492// value will be replaced with "sensitive".
22493func (s Grant) GoString() string {
22494	return s.String()
22495}
22496
22497// Validate inspects the fields of the type to determine if they are valid.
22498func (s *Grant) Validate() error {
22499	invalidParams := request.ErrInvalidParams{Context: "Grant"}
22500	if s.Grantee != nil {
22501		if err := s.Grantee.Validate(); err != nil {
22502			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
22503		}
22504	}
22505
22506	if invalidParams.Len() > 0 {
22507		return invalidParams
22508	}
22509	return nil
22510}
22511
22512// SetGrantee sets the Grantee field's value.
22513func (s *Grant) SetGrantee(v *Grantee) *Grant {
22514	s.Grantee = v
22515	return s
22516}
22517
22518// SetPermission sets the Permission field's value.
22519func (s *Grant) SetPermission(v string) *Grant {
22520	s.Permission = &v
22521	return s
22522}
22523
22524// Container for the person being granted permissions.
22525type Grantee struct {
22526	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
22527
22528	// Screen name of the grantee.
22529	DisplayName *string `type:"string"`
22530
22531	// Email address of the grantee.
22532	//
22533	// Using email addresses to specify a grantee is only supported in the following
22534	// Amazon Web Services Regions:
22535	//
22536	//    * US East (N. Virginia)
22537	//
22538	//    * US West (N. California)
22539	//
22540	//    * US West (Oregon)
22541	//
22542	//    * Asia Pacific (Singapore)
22543	//
22544	//    * Asia Pacific (Sydney)
22545	//
22546	//    * Asia Pacific (Tokyo)
22547	//
22548	//    * Europe (Ireland)
22549	//
22550	//    * South America (São Paulo)
22551	//
22552	// For a list of all the Amazon S3 supported Regions and endpoints, see Regions
22553	// and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
22554	// in the Amazon Web Services General Reference.
22555	EmailAddress *string `type:"string"`
22556
22557	// The canonical user ID of the grantee.
22558	ID *string `type:"string"`
22559
22560	// Type of grantee
22561	//
22562	// Type is a required field
22563	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
22564
22565	// URI of the grantee group.
22566	URI *string `type:"string"`
22567}
22568
22569// String returns the string representation.
22570//
22571// API parameter values that are decorated as "sensitive" in the API will not
22572// be included in the string output. The member name will be present, but the
22573// value will be replaced with "sensitive".
22574func (s Grantee) String() string {
22575	return awsutil.Prettify(s)
22576}
22577
22578// GoString returns the string representation.
22579//
22580// API parameter values that are decorated as "sensitive" in the API will not
22581// be included in the string output. The member name will be present, but the
22582// value will be replaced with "sensitive".
22583func (s Grantee) GoString() string {
22584	return s.String()
22585}
22586
22587// Validate inspects the fields of the type to determine if they are valid.
22588func (s *Grantee) Validate() error {
22589	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
22590	if s.Type == nil {
22591		invalidParams.Add(request.NewErrParamRequired("Type"))
22592	}
22593
22594	if invalidParams.Len() > 0 {
22595		return invalidParams
22596	}
22597	return nil
22598}
22599
22600// SetDisplayName sets the DisplayName field's value.
22601func (s *Grantee) SetDisplayName(v string) *Grantee {
22602	s.DisplayName = &v
22603	return s
22604}
22605
22606// SetEmailAddress sets the EmailAddress field's value.
22607func (s *Grantee) SetEmailAddress(v string) *Grantee {
22608	s.EmailAddress = &v
22609	return s
22610}
22611
22612// SetID sets the ID field's value.
22613func (s *Grantee) SetID(v string) *Grantee {
22614	s.ID = &v
22615	return s
22616}
22617
22618// SetType sets the Type field's value.
22619func (s *Grantee) SetType(v string) *Grantee {
22620	s.Type = &v
22621	return s
22622}
22623
22624// SetURI sets the URI field's value.
22625func (s *Grantee) SetURI(v string) *Grantee {
22626	s.URI = &v
22627	return s
22628}
22629
22630type HeadBucketInput struct {
22631	_ struct{} `locationName:"HeadBucketRequest" type:"structure"`
22632
22633	// The bucket name.
22634	//
22635	// When using this action with an access point, you must direct requests to
22636	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
22637	// When using this action with an access point through the Amazon Web Services
22638	// SDKs, you provide the access point ARN in place of the bucket name. For more
22639	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
22640	// in the Amazon S3 User Guide.
22641	//
22642	// When using this action with Amazon S3 on Outposts, you must direct requests
22643	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
22644	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
22645	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
22646	// you provide the Outposts bucket ARN in place of the bucket name. For more
22647	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
22648	// in the Amazon S3 User Guide.
22649	//
22650	// Bucket is a required field
22651	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22652
22653	// The account ID of the expected bucket owner. If the bucket is owned by a
22654	// different account, the request will fail with an HTTP 403 (Access Denied)
22655	// error.
22656	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22657}
22658
22659// String returns the string representation.
22660//
22661// API parameter values that are decorated as "sensitive" in the API will not
22662// be included in the string output. The member name will be present, but the
22663// value will be replaced with "sensitive".
22664func (s HeadBucketInput) String() string {
22665	return awsutil.Prettify(s)
22666}
22667
22668// GoString returns the string representation.
22669//
22670// API parameter values that are decorated as "sensitive" in the API will not
22671// be included in the string output. The member name will be present, but the
22672// value will be replaced with "sensitive".
22673func (s HeadBucketInput) GoString() string {
22674	return s.String()
22675}
22676
22677// Validate inspects the fields of the type to determine if they are valid.
22678func (s *HeadBucketInput) Validate() error {
22679	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
22680	if s.Bucket == nil {
22681		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22682	}
22683	if s.Bucket != nil && len(*s.Bucket) < 1 {
22684		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22685	}
22686
22687	if invalidParams.Len() > 0 {
22688		return invalidParams
22689	}
22690	return nil
22691}
22692
22693// SetBucket sets the Bucket field's value.
22694func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
22695	s.Bucket = &v
22696	return s
22697}
22698
22699func (s *HeadBucketInput) getBucket() (v string) {
22700	if s.Bucket == nil {
22701		return v
22702	}
22703	return *s.Bucket
22704}
22705
22706// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22707func (s *HeadBucketInput) SetExpectedBucketOwner(v string) *HeadBucketInput {
22708	s.ExpectedBucketOwner = &v
22709	return s
22710}
22711
22712func (s *HeadBucketInput) getEndpointARN() (arn.Resource, error) {
22713	if s.Bucket == nil {
22714		return nil, fmt.Errorf("member Bucket is nil")
22715	}
22716	return parseEndpointARN(*s.Bucket)
22717}
22718
22719func (s *HeadBucketInput) hasEndpointARN() bool {
22720	if s.Bucket == nil {
22721		return false
22722	}
22723	return arn.IsARN(*s.Bucket)
22724}
22725
22726// updateArnableField updates the value of the input field that
22727// takes an ARN as an input. This method is useful to backfill
22728// the parsed resource name from ARN into the input member.
22729// It returns a pointer to a modified copy of input and an error.
22730// Note that original input is not modified.
22731func (s HeadBucketInput) updateArnableField(v string) (interface{}, error) {
22732	if s.Bucket == nil {
22733		return nil, fmt.Errorf("member Bucket is nil")
22734	}
22735	s.Bucket = aws.String(v)
22736	return &s, nil
22737}
22738
22739type HeadBucketOutput struct {
22740	_ struct{} `type:"structure"`
22741}
22742
22743// String returns the string representation.
22744//
22745// API parameter values that are decorated as "sensitive" in the API will not
22746// be included in the string output. The member name will be present, but the
22747// value will be replaced with "sensitive".
22748func (s HeadBucketOutput) String() string {
22749	return awsutil.Prettify(s)
22750}
22751
22752// GoString returns the string representation.
22753//
22754// API parameter values that are decorated as "sensitive" in the API will not
22755// be included in the string output. The member name will be present, but the
22756// value will be replaced with "sensitive".
22757func (s HeadBucketOutput) GoString() string {
22758	return s.String()
22759}
22760
22761type HeadObjectInput struct {
22762	_ struct{} `locationName:"HeadObjectRequest" type:"structure"`
22763
22764	// The name of the bucket containing the object.
22765	//
22766	// When using this action with an access point, you must direct requests to
22767	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
22768	// When using this action with an access point through the Amazon Web Services
22769	// SDKs, you provide the access point ARN in place of the bucket name. For more
22770	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
22771	// in the Amazon S3 User Guide.
22772	//
22773	// When using this action with Amazon S3 on Outposts, you must direct requests
22774	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
22775	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
22776	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
22777	// you provide the Outposts bucket ARN in place of the bucket name. For more
22778	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
22779	// in the Amazon S3 User Guide.
22780	//
22781	// Bucket is a required field
22782	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22783
22784	// The account ID of the expected bucket owner. If the bucket is owned by a
22785	// different account, the request will fail with an HTTP 403 (Access Denied)
22786	// error.
22787	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22788
22789	// Return the object only if its entity tag (ETag) is the same as the one specified,
22790	// otherwise return a 412 (precondition failed).
22791	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
22792
22793	// Return the object only if it has been modified since the specified time,
22794	// otherwise return a 304 (not modified).
22795	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
22796
22797	// Return the object only if its entity tag (ETag) is different from the one
22798	// specified, otherwise return a 304 (not modified).
22799	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
22800
22801	// Return the object only if it has not been modified since the specified time,
22802	// otherwise return a 412 (precondition failed).
22803	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
22804
22805	// The object key.
22806	//
22807	// Key is a required field
22808	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
22809
22810	// Part number of the object being read. This is a positive integer between
22811	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
22812	// Useful querying about the size of the part and the number of parts in this
22813	// object.
22814	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
22815
22816	// Downloads the specified range bytes of an object. For more information about
22817	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
22818	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
22819	//
22820	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
22821	Range *string `location:"header" locationName:"Range" type:"string"`
22822
22823	// Confirms that the requester knows that they will be charged for the request.
22824	// Bucket owners need not specify this parameter in their requests. For information
22825	// about downloading objects from requester pays buckets, see Downloading Objects
22826	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
22827	// in the Amazon S3 User Guide.
22828	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
22829
22830	// Specifies the algorithm to use to when encrypting the object (for example,
22831	// AES256).
22832	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
22833
22834	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
22835	// data. This value is used to store the object and then it is discarded; Amazon
22836	// S3 does not store the encryption key. The key must be appropriate for use
22837	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
22838	// header.
22839	//
22840	// SSECustomerKey is a sensitive parameter and its value will be
22841	// replaced with "sensitive" in string returned by HeadObjectInput's
22842	// String and GoString methods.
22843	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
22844
22845	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
22846	// Amazon S3 uses this header for a message integrity check to ensure that the
22847	// encryption key was transmitted without error.
22848	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
22849
22850	// VersionId used to reference a specific version of the object.
22851	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
22852}
22853
22854// String returns the string representation.
22855//
22856// API parameter values that are decorated as "sensitive" in the API will not
22857// be included in the string output. The member name will be present, but the
22858// value will be replaced with "sensitive".
22859func (s HeadObjectInput) String() string {
22860	return awsutil.Prettify(s)
22861}
22862
22863// GoString returns the string representation.
22864//
22865// API parameter values that are decorated as "sensitive" in the API will not
22866// be included in the string output. The member name will be present, but the
22867// value will be replaced with "sensitive".
22868func (s HeadObjectInput) GoString() string {
22869	return s.String()
22870}
22871
22872// Validate inspects the fields of the type to determine if they are valid.
22873func (s *HeadObjectInput) Validate() error {
22874	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
22875	if s.Bucket == nil {
22876		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22877	}
22878	if s.Bucket != nil && len(*s.Bucket) < 1 {
22879		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22880	}
22881	if s.Key == nil {
22882		invalidParams.Add(request.NewErrParamRequired("Key"))
22883	}
22884	if s.Key != nil && len(*s.Key) < 1 {
22885		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22886	}
22887
22888	if invalidParams.Len() > 0 {
22889		return invalidParams
22890	}
22891	return nil
22892}
22893
22894// SetBucket sets the Bucket field's value.
22895func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
22896	s.Bucket = &v
22897	return s
22898}
22899
22900func (s *HeadObjectInput) getBucket() (v string) {
22901	if s.Bucket == nil {
22902		return v
22903	}
22904	return *s.Bucket
22905}
22906
22907// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22908func (s *HeadObjectInput) SetExpectedBucketOwner(v string) *HeadObjectInput {
22909	s.ExpectedBucketOwner = &v
22910	return s
22911}
22912
22913// SetIfMatch sets the IfMatch field's value.
22914func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
22915	s.IfMatch = &v
22916	return s
22917}
22918
22919// SetIfModifiedSince sets the IfModifiedSince field's value.
22920func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
22921	s.IfModifiedSince = &v
22922	return s
22923}
22924
22925// SetIfNoneMatch sets the IfNoneMatch field's value.
22926func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
22927	s.IfNoneMatch = &v
22928	return s
22929}
22930
22931// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
22932func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
22933	s.IfUnmodifiedSince = &v
22934	return s
22935}
22936
22937// SetKey sets the Key field's value.
22938func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
22939	s.Key = &v
22940	return s
22941}
22942
22943// SetPartNumber sets the PartNumber field's value.
22944func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
22945	s.PartNumber = &v
22946	return s
22947}
22948
22949// SetRange sets the Range field's value.
22950func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
22951	s.Range = &v
22952	return s
22953}
22954
22955// SetRequestPayer sets the RequestPayer field's value.
22956func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
22957	s.RequestPayer = &v
22958	return s
22959}
22960
22961// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
22962func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
22963	s.SSECustomerAlgorithm = &v
22964	return s
22965}
22966
22967// SetSSECustomerKey sets the SSECustomerKey field's value.
22968func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
22969	s.SSECustomerKey = &v
22970	return s
22971}
22972
22973func (s *HeadObjectInput) getSSECustomerKey() (v string) {
22974	if s.SSECustomerKey == nil {
22975		return v
22976	}
22977	return *s.SSECustomerKey
22978}
22979
22980// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
22981func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
22982	s.SSECustomerKeyMD5 = &v
22983	return s
22984}
22985
22986// SetVersionId sets the VersionId field's value.
22987func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
22988	s.VersionId = &v
22989	return s
22990}
22991
22992func (s *HeadObjectInput) getEndpointARN() (arn.Resource, error) {
22993	if s.Bucket == nil {
22994		return nil, fmt.Errorf("member Bucket is nil")
22995	}
22996	return parseEndpointARN(*s.Bucket)
22997}
22998
22999func (s *HeadObjectInput) hasEndpointARN() bool {
23000	if s.Bucket == nil {
23001		return false
23002	}
23003	return arn.IsARN(*s.Bucket)
23004}
23005
23006// updateArnableField updates the value of the input field that
23007// takes an ARN as an input. This method is useful to backfill
23008// the parsed resource name from ARN into the input member.
23009// It returns a pointer to a modified copy of input and an error.
23010// Note that original input is not modified.
23011func (s HeadObjectInput) updateArnableField(v string) (interface{}, error) {
23012	if s.Bucket == nil {
23013		return nil, fmt.Errorf("member Bucket is nil")
23014	}
23015	s.Bucket = aws.String(v)
23016	return &s, nil
23017}
23018
23019type HeadObjectOutput struct {
23020	_ struct{} `type:"structure"`
23021
23022	// Indicates that a range of bytes was specified.
23023	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
23024
23025	// The archive state of the head object.
23026	ArchiveStatus *string `location:"header" locationName:"x-amz-archive-status" type:"string" enum:"ArchiveStatus"`
23027
23028	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
23029	// with Amazon Web Services KMS (SSE-KMS).
23030	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
23031
23032	// Specifies caching behavior along the request/reply chain.
23033	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
23034
23035	// Specifies presentational information for the object.
23036	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
23037
23038	// Specifies what content encodings have been applied to the object and thus
23039	// what decoding mechanisms must be applied to obtain the media-type referenced
23040	// by the Content-Type header field.
23041	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
23042
23043	// The language the content is in.
23044	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
23045
23046	// Size of the body in bytes.
23047	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
23048
23049	// A standard MIME type describing the format of the object data.
23050	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
23051
23052	// Specifies whether the object retrieved was (true) or was not (false) a Delete
23053	// Marker. If false, this response header does not appear in the response.
23054	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
23055
23056	// An ETag is an opaque identifier assigned by a web server to a specific version
23057	// of a resource found at a URL.
23058	ETag *string `location:"header" locationName:"ETag" type:"string"`
23059
23060	// If the object expiration is configured (see PUT Bucket lifecycle), the response
23061	// includes this header. It includes the expiry-date and rule-id key-value pairs
23062	// providing object expiration information. The value of the rule-id is URL
23063	// encoded.
23064	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
23065
23066	// The date and time at which the object is no longer cacheable.
23067	Expires *string `location:"header" locationName:"Expires" type:"string"`
23068
23069	// Creation date of the object.
23070	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
23071
23072	// A map of metadata to store with the object in S3.
23073	//
23074	// By default unmarshaled keys are written as a map keys in following canonicalized format:
23075	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
23076	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
23077	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
23078
23079	// This is set to the number of metadata entries not returned in x-amz-meta
23080	// headers. This can happen if you create metadata using an API like SOAP that
23081	// supports more flexible metadata than the REST API. For example, using SOAP,
23082	// you can create metadata whose values are not legal HTTP headers.
23083	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
23084
23085	// Specifies whether a legal hold is in effect for this object. This header
23086	// is only returned if the requester has the s3:GetObjectLegalHold permission.
23087	// This header is not returned if the specified version of this object has never
23088	// had a legal hold applied. For more information about S3 Object Lock, see
23089	// Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
23090	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
23091
23092	// The Object Lock mode, if any, that's in effect for this object. This header
23093	// is only returned if the requester has the s3:GetObjectRetention permission.
23094	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
23095	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
23096
23097	// The date and time when the Object Lock retention period expires. This header
23098	// is only returned if the requester has the s3:GetObjectRetention permission.
23099	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
23100
23101	// The count of parts this object has.
23102	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
23103
23104	// Amazon S3 can return this header if your request involves a bucket that is
23105	// either a source or a destination in a replication rule.
23106	//
23107	// In replication, you have a source bucket on which you configure replication
23108	// and destination bucket or buckets where Amazon S3 stores object replicas.
23109	// When you request an object (GetObject) or object metadata (HeadObject) from
23110	// these buckets, Amazon S3 will return the x-amz-replication-status header
23111	// in the response as follows:
23112	//
23113	//    * If requesting an object from the source bucket — Amazon S3 will return
23114	//    the x-amz-replication-status header if the object in your request is eligible
23115	//    for replication. For example, suppose that in your replication configuration,
23116	//    you specify object prefix TaxDocs requesting Amazon S3 to replicate objects
23117	//    with key prefix TaxDocs. Any objects you upload with this key name prefix,
23118	//    for example TaxDocs/document1.pdf, are eligible for replication. For any
23119	//    object request with this key name prefix, Amazon S3 will return the x-amz-replication-status
23120	//    header with value PENDING, COMPLETED or FAILED indicating object replication
23121	//    status.
23122	//
23123	//    * If requesting an object from a destination bucket — Amazon S3 will
23124	//    return the x-amz-replication-status header with value REPLICA if the object
23125	//    in your request is a replica that Amazon S3 created and there is no replica
23126	//    modification replication in progress.
23127	//
23128	//    * When replicating objects to multiple destination buckets the x-amz-replication-status
23129	//    header acts differently. The header of the source object will only return
23130	//    a value of COMPLETED when replication is successful to all destinations.
23131	//    The header will remain at value PENDING until replication has completed
23132	//    for all destinations. If one or more destinations fails replication the
23133	//    header will return FAILED.
23134	//
23135	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
23136	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
23137
23138	// If present, indicates that the requester was successfully charged for the
23139	// request.
23140	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
23141
23142	// If the object is an archived object (an object whose storage class is GLACIER),
23143	// the response includes this header if either the archive restoration is in
23144	// progress (see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
23145	// or an archive copy is already restored.
23146	//
23147	// If an archive copy is already restored, the header value indicates when Amazon
23148	// S3 is scheduled to delete the object copy. For example:
23149	//
23150	// x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00
23151	// GMT"
23152	//
23153	// If the object restoration is in progress, the header returns the value ongoing-request="true".
23154	//
23155	// For more information about archiving objects, see Transitioning Objects:
23156	// General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations).
23157	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
23158
23159	// If server-side encryption with a customer-provided encryption key was requested,
23160	// the response will include this header confirming the encryption algorithm
23161	// used.
23162	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
23163
23164	// If server-side encryption with a customer-provided encryption key was requested,
23165	// the response will include this header to provide round-trip message integrity
23166	// verification of the customer-provided encryption key.
23167	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
23168
23169	// If present, specifies the ID of the Amazon Web Services Key Management Service
23170	// (Amazon Web Services KMS) symmetric customer managed key that was used for
23171	// the object.
23172	//
23173	// SSEKMSKeyId is a sensitive parameter and its value will be
23174	// replaced with "sensitive" in string returned by HeadObjectOutput's
23175	// String and GoString methods.
23176	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
23177
23178	// If the object is stored using server-side encryption either with an Amazon
23179	// Web Services KMS key or an Amazon S3-managed encryption key, the response
23180	// includes this header with the value of the server-side encryption algorithm
23181	// used when storing this object in Amazon S3 (for example, AES256, aws:kms).
23182	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
23183
23184	// Provides storage class information of the object. Amazon S3 returns this
23185	// header for all objects except for S3 Standard storage class objects.
23186	//
23187	// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
23188	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
23189
23190	// Version of the object.
23191	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
23192
23193	// If the bucket is configured as a website, redirects requests for this object
23194	// to another object in the same bucket or to an external URL. Amazon S3 stores
23195	// the value of this header in the object metadata.
23196	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
23197}
23198
23199// String returns the string representation.
23200//
23201// API parameter values that are decorated as "sensitive" in the API will not
23202// be included in the string output. The member name will be present, but the
23203// value will be replaced with "sensitive".
23204func (s HeadObjectOutput) String() string {
23205	return awsutil.Prettify(s)
23206}
23207
23208// GoString returns the string representation.
23209//
23210// API parameter values that are decorated as "sensitive" in the API will not
23211// be included in the string output. The member name will be present, but the
23212// value will be replaced with "sensitive".
23213func (s HeadObjectOutput) GoString() string {
23214	return s.String()
23215}
23216
23217// SetAcceptRanges sets the AcceptRanges field's value.
23218func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
23219	s.AcceptRanges = &v
23220	return s
23221}
23222
23223// SetArchiveStatus sets the ArchiveStatus field's value.
23224func (s *HeadObjectOutput) SetArchiveStatus(v string) *HeadObjectOutput {
23225	s.ArchiveStatus = &v
23226	return s
23227}
23228
23229// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
23230func (s *HeadObjectOutput) SetBucketKeyEnabled(v bool) *HeadObjectOutput {
23231	s.BucketKeyEnabled = &v
23232	return s
23233}
23234
23235// SetCacheControl sets the CacheControl field's value.
23236func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
23237	s.CacheControl = &v
23238	return s
23239}
23240
23241// SetContentDisposition sets the ContentDisposition field's value.
23242func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
23243	s.ContentDisposition = &v
23244	return s
23245}
23246
23247// SetContentEncoding sets the ContentEncoding field's value.
23248func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
23249	s.ContentEncoding = &v
23250	return s
23251}
23252
23253// SetContentLanguage sets the ContentLanguage field's value.
23254func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
23255	s.ContentLanguage = &v
23256	return s
23257}
23258
23259// SetContentLength sets the ContentLength field's value.
23260func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
23261	s.ContentLength = &v
23262	return s
23263}
23264
23265// SetContentType sets the ContentType field's value.
23266func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
23267	s.ContentType = &v
23268	return s
23269}
23270
23271// SetDeleteMarker sets the DeleteMarker field's value.
23272func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
23273	s.DeleteMarker = &v
23274	return s
23275}
23276
23277// SetETag sets the ETag field's value.
23278func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
23279	s.ETag = &v
23280	return s
23281}
23282
23283// SetExpiration sets the Expiration field's value.
23284func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
23285	s.Expiration = &v
23286	return s
23287}
23288
23289// SetExpires sets the Expires field's value.
23290func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
23291	s.Expires = &v
23292	return s
23293}
23294
23295// SetLastModified sets the LastModified field's value.
23296func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
23297	s.LastModified = &v
23298	return s
23299}
23300
23301// SetMetadata sets the Metadata field's value.
23302func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
23303	s.Metadata = v
23304	return s
23305}
23306
23307// SetMissingMeta sets the MissingMeta field's value.
23308func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
23309	s.MissingMeta = &v
23310	return s
23311}
23312
23313// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
23314func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
23315	s.ObjectLockLegalHoldStatus = &v
23316	return s
23317}
23318
23319// SetObjectLockMode sets the ObjectLockMode field's value.
23320func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
23321	s.ObjectLockMode = &v
23322	return s
23323}
23324
23325// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
23326func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
23327	s.ObjectLockRetainUntilDate = &v
23328	return s
23329}
23330
23331// SetPartsCount sets the PartsCount field's value.
23332func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
23333	s.PartsCount = &v
23334	return s
23335}
23336
23337// SetReplicationStatus sets the ReplicationStatus field's value.
23338func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
23339	s.ReplicationStatus = &v
23340	return s
23341}
23342
23343// SetRequestCharged sets the RequestCharged field's value.
23344func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
23345	s.RequestCharged = &v
23346	return s
23347}
23348
23349// SetRestore sets the Restore field's value.
23350func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
23351	s.Restore = &v
23352	return s
23353}
23354
23355// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
23356func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
23357	s.SSECustomerAlgorithm = &v
23358	return s
23359}
23360
23361// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
23362func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
23363	s.SSECustomerKeyMD5 = &v
23364	return s
23365}
23366
23367// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
23368func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
23369	s.SSEKMSKeyId = &v
23370	return s
23371}
23372
23373// SetServerSideEncryption sets the ServerSideEncryption field's value.
23374func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
23375	s.ServerSideEncryption = &v
23376	return s
23377}
23378
23379// SetStorageClass sets the StorageClass field's value.
23380func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
23381	s.StorageClass = &v
23382	return s
23383}
23384
23385// SetVersionId sets the VersionId field's value.
23386func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
23387	s.VersionId = &v
23388	return s
23389}
23390
23391// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
23392func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
23393	s.WebsiteRedirectLocation = &v
23394	return s
23395}
23396
23397// Container for the Suffix element.
23398type IndexDocument struct {
23399	_ struct{} `type:"structure"`
23400
23401	// A suffix that is appended to a request that is for a directory on the website
23402	// endpoint (for example,if the suffix is index.html and you make a request
23403	// to samplebucket/images/ the data that is returned will be for the object
23404	// with the key name images/index.html) The suffix must not be empty and must
23405	// not include a slash character.
23406	//
23407	// Replacement must be made for object keys containing special characters (such
23408	// as carriage returns) when using XML requests. For more information, see XML
23409	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
23410	//
23411	// Suffix is a required field
23412	Suffix *string `type:"string" required:"true"`
23413}
23414
23415// String returns the string representation.
23416//
23417// API parameter values that are decorated as "sensitive" in the API will not
23418// be included in the string output. The member name will be present, but the
23419// value will be replaced with "sensitive".
23420func (s IndexDocument) String() string {
23421	return awsutil.Prettify(s)
23422}
23423
23424// GoString returns the string representation.
23425//
23426// API parameter values that are decorated as "sensitive" in the API will not
23427// be included in the string output. The member name will be present, but the
23428// value will be replaced with "sensitive".
23429func (s IndexDocument) GoString() string {
23430	return s.String()
23431}
23432
23433// Validate inspects the fields of the type to determine if they are valid.
23434func (s *IndexDocument) Validate() error {
23435	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
23436	if s.Suffix == nil {
23437		invalidParams.Add(request.NewErrParamRequired("Suffix"))
23438	}
23439
23440	if invalidParams.Len() > 0 {
23441		return invalidParams
23442	}
23443	return nil
23444}
23445
23446// SetSuffix sets the Suffix field's value.
23447func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
23448	s.Suffix = &v
23449	return s
23450}
23451
23452// Container element that identifies who initiated the multipart upload.
23453type Initiator struct {
23454	_ struct{} `type:"structure"`
23455
23456	// Name of the Principal.
23457	DisplayName *string `type:"string"`
23458
23459	// If the principal is an Amazon Web Services account, it provides the Canonical
23460	// User ID. If the principal is an IAM User, it provides a user ARN value.
23461	ID *string `type:"string"`
23462}
23463
23464// String returns the string representation.
23465//
23466// API parameter values that are decorated as "sensitive" in the API will not
23467// be included in the string output. The member name will be present, but the
23468// value will be replaced with "sensitive".
23469func (s Initiator) String() string {
23470	return awsutil.Prettify(s)
23471}
23472
23473// GoString returns the string representation.
23474//
23475// API parameter values that are decorated as "sensitive" in the API will not
23476// be included in the string output. The member name will be present, but the
23477// value will be replaced with "sensitive".
23478func (s Initiator) GoString() string {
23479	return s.String()
23480}
23481
23482// SetDisplayName sets the DisplayName field's value.
23483func (s *Initiator) SetDisplayName(v string) *Initiator {
23484	s.DisplayName = &v
23485	return s
23486}
23487
23488// SetID sets the ID field's value.
23489func (s *Initiator) SetID(v string) *Initiator {
23490	s.ID = &v
23491	return s
23492}
23493
23494// Describes the serialization format of the object.
23495type InputSerialization struct {
23496	_ struct{} `type:"structure"`
23497
23498	// Describes the serialization of a CSV-encoded object.
23499	CSV *CSVInput `type:"structure"`
23500
23501	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
23502	// Value: NONE.
23503	CompressionType *string `type:"string" enum:"CompressionType"`
23504
23505	// Specifies JSON as object's input serialization format.
23506	JSON *JSONInput `type:"structure"`
23507
23508	// Specifies Parquet as object's input serialization format.
23509	Parquet *ParquetInput `type:"structure"`
23510}
23511
23512// String returns the string representation.
23513//
23514// API parameter values that are decorated as "sensitive" in the API will not
23515// be included in the string output. The member name will be present, but the
23516// value will be replaced with "sensitive".
23517func (s InputSerialization) String() string {
23518	return awsutil.Prettify(s)
23519}
23520
23521// GoString returns the string representation.
23522//
23523// API parameter values that are decorated as "sensitive" in the API will not
23524// be included in the string output. The member name will be present, but the
23525// value will be replaced with "sensitive".
23526func (s InputSerialization) GoString() string {
23527	return s.String()
23528}
23529
23530// SetCSV sets the CSV field's value.
23531func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
23532	s.CSV = v
23533	return s
23534}
23535
23536// SetCompressionType sets the CompressionType field's value.
23537func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
23538	s.CompressionType = &v
23539	return s
23540}
23541
23542// SetJSON sets the JSON field's value.
23543func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
23544	s.JSON = v
23545	return s
23546}
23547
23548// SetParquet sets the Parquet field's value.
23549func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
23550	s.Parquet = v
23551	return s
23552}
23553
23554// A container for specifying S3 Intelligent-Tiering filters. The filters determine
23555// the subset of objects to which the rule applies.
23556type IntelligentTieringAndOperator struct {
23557	_ struct{} `type:"structure"`
23558
23559	// An object key name prefix that identifies the subset of objects to which
23560	// the configuration applies.
23561	Prefix *string `type:"string"`
23562
23563	// All of these tags must exist in the object's tag set in order for the configuration
23564	// to apply.
23565	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
23566}
23567
23568// String returns the string representation.
23569//
23570// API parameter values that are decorated as "sensitive" in the API will not
23571// be included in the string output. The member name will be present, but the
23572// value will be replaced with "sensitive".
23573func (s IntelligentTieringAndOperator) String() string {
23574	return awsutil.Prettify(s)
23575}
23576
23577// GoString returns the string representation.
23578//
23579// API parameter values that are decorated as "sensitive" in the API will not
23580// be included in the string output. The member name will be present, but the
23581// value will be replaced with "sensitive".
23582func (s IntelligentTieringAndOperator) GoString() string {
23583	return s.String()
23584}
23585
23586// Validate inspects the fields of the type to determine if they are valid.
23587func (s *IntelligentTieringAndOperator) Validate() error {
23588	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringAndOperator"}
23589	if s.Tags != nil {
23590		for i, v := range s.Tags {
23591			if v == nil {
23592				continue
23593			}
23594			if err := v.Validate(); err != nil {
23595				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
23596			}
23597		}
23598	}
23599
23600	if invalidParams.Len() > 0 {
23601		return invalidParams
23602	}
23603	return nil
23604}
23605
23606// SetPrefix sets the Prefix field's value.
23607func (s *IntelligentTieringAndOperator) SetPrefix(v string) *IntelligentTieringAndOperator {
23608	s.Prefix = &v
23609	return s
23610}
23611
23612// SetTags sets the Tags field's value.
23613func (s *IntelligentTieringAndOperator) SetTags(v []*Tag) *IntelligentTieringAndOperator {
23614	s.Tags = v
23615	return s
23616}
23617
23618// Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.
23619//
23620// For information about the S3 Intelligent-Tiering storage class, see Storage
23621// class for automatically optimizing frequently and infrequently accessed objects
23622// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
23623type IntelligentTieringConfiguration struct {
23624	_ struct{} `type:"structure"`
23625
23626	// Specifies a bucket filter. The configuration only includes objects that meet
23627	// the filter's criteria.
23628	Filter *IntelligentTieringFilter `type:"structure"`
23629
23630	// The ID used to identify the S3 Intelligent-Tiering configuration.
23631	//
23632	// Id is a required field
23633	Id *string `type:"string" required:"true"`
23634
23635	// Specifies the status of the configuration.
23636	//
23637	// Status is a required field
23638	Status *string `type:"string" required:"true" enum:"IntelligentTieringStatus"`
23639
23640	// Specifies the S3 Intelligent-Tiering storage class tier of the configuration.
23641	//
23642	// Tierings is a required field
23643	Tierings []*Tiering `locationName:"Tiering" type:"list" flattened:"true" required:"true"`
23644}
23645
23646// String returns the string representation.
23647//
23648// API parameter values that are decorated as "sensitive" in the API will not
23649// be included in the string output. The member name will be present, but the
23650// value will be replaced with "sensitive".
23651func (s IntelligentTieringConfiguration) String() string {
23652	return awsutil.Prettify(s)
23653}
23654
23655// GoString returns the string representation.
23656//
23657// API parameter values that are decorated as "sensitive" in the API will not
23658// be included in the string output. The member name will be present, but the
23659// value will be replaced with "sensitive".
23660func (s IntelligentTieringConfiguration) GoString() string {
23661	return s.String()
23662}
23663
23664// Validate inspects the fields of the type to determine if they are valid.
23665func (s *IntelligentTieringConfiguration) Validate() error {
23666	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringConfiguration"}
23667	if s.Id == nil {
23668		invalidParams.Add(request.NewErrParamRequired("Id"))
23669	}
23670	if s.Status == nil {
23671		invalidParams.Add(request.NewErrParamRequired("Status"))
23672	}
23673	if s.Tierings == nil {
23674		invalidParams.Add(request.NewErrParamRequired("Tierings"))
23675	}
23676	if s.Filter != nil {
23677		if err := s.Filter.Validate(); err != nil {
23678			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
23679		}
23680	}
23681	if s.Tierings != nil {
23682		for i, v := range s.Tierings {
23683			if v == nil {
23684				continue
23685			}
23686			if err := v.Validate(); err != nil {
23687				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tierings", i), err.(request.ErrInvalidParams))
23688			}
23689		}
23690	}
23691
23692	if invalidParams.Len() > 0 {
23693		return invalidParams
23694	}
23695	return nil
23696}
23697
23698// SetFilter sets the Filter field's value.
23699func (s *IntelligentTieringConfiguration) SetFilter(v *IntelligentTieringFilter) *IntelligentTieringConfiguration {
23700	s.Filter = v
23701	return s
23702}
23703
23704// SetId sets the Id field's value.
23705func (s *IntelligentTieringConfiguration) SetId(v string) *IntelligentTieringConfiguration {
23706	s.Id = &v
23707	return s
23708}
23709
23710// SetStatus sets the Status field's value.
23711func (s *IntelligentTieringConfiguration) SetStatus(v string) *IntelligentTieringConfiguration {
23712	s.Status = &v
23713	return s
23714}
23715
23716// SetTierings sets the Tierings field's value.
23717func (s *IntelligentTieringConfiguration) SetTierings(v []*Tiering) *IntelligentTieringConfiguration {
23718	s.Tierings = v
23719	return s
23720}
23721
23722// The Filter is used to identify objects that the S3 Intelligent-Tiering configuration
23723// applies to.
23724type IntelligentTieringFilter struct {
23725	_ struct{} `type:"structure"`
23726
23727	// A conjunction (logical AND) of predicates, which is used in evaluating a
23728	// metrics filter. The operator must have at least two predicates, and an object
23729	// must match all of the predicates in order for the filter to apply.
23730	And *IntelligentTieringAndOperator `type:"structure"`
23731
23732	// An object key name prefix that identifies the subset of objects to which
23733	// the rule applies.
23734	//
23735	// Replacement must be made for object keys containing special characters (such
23736	// as carriage returns) when using XML requests. For more information, see XML
23737	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
23738	Prefix *string `type:"string"`
23739
23740	// A container of a key value name pair.
23741	Tag *Tag `type:"structure"`
23742}
23743
23744// String returns the string representation.
23745//
23746// API parameter values that are decorated as "sensitive" in the API will not
23747// be included in the string output. The member name will be present, but the
23748// value will be replaced with "sensitive".
23749func (s IntelligentTieringFilter) String() string {
23750	return awsutil.Prettify(s)
23751}
23752
23753// GoString returns the string representation.
23754//
23755// API parameter values that are decorated as "sensitive" in the API will not
23756// be included in the string output. The member name will be present, but the
23757// value will be replaced with "sensitive".
23758func (s IntelligentTieringFilter) GoString() string {
23759	return s.String()
23760}
23761
23762// Validate inspects the fields of the type to determine if they are valid.
23763func (s *IntelligentTieringFilter) Validate() error {
23764	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringFilter"}
23765	if s.And != nil {
23766		if err := s.And.Validate(); err != nil {
23767			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
23768		}
23769	}
23770	if s.Tag != nil {
23771		if err := s.Tag.Validate(); err != nil {
23772			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
23773		}
23774	}
23775
23776	if invalidParams.Len() > 0 {
23777		return invalidParams
23778	}
23779	return nil
23780}
23781
23782// SetAnd sets the And field's value.
23783func (s *IntelligentTieringFilter) SetAnd(v *IntelligentTieringAndOperator) *IntelligentTieringFilter {
23784	s.And = v
23785	return s
23786}
23787
23788// SetPrefix sets the Prefix field's value.
23789func (s *IntelligentTieringFilter) SetPrefix(v string) *IntelligentTieringFilter {
23790	s.Prefix = &v
23791	return s
23792}
23793
23794// SetTag sets the Tag field's value.
23795func (s *IntelligentTieringFilter) SetTag(v *Tag) *IntelligentTieringFilter {
23796	s.Tag = v
23797	return s
23798}
23799
23800// Specifies the inventory configuration for an Amazon S3 bucket. For more information,
23801// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
23802// in the Amazon S3 API Reference.
23803type InventoryConfiguration struct {
23804	_ struct{} `type:"structure"`
23805
23806	// Contains information about where to publish the inventory results.
23807	//
23808	// Destination is a required field
23809	Destination *InventoryDestination `type:"structure" required:"true"`
23810
23811	// Specifies an inventory filter. The inventory only includes objects that meet
23812	// the filter's criteria.
23813	Filter *InventoryFilter `type:"structure"`
23814
23815	// The ID used to identify the inventory configuration.
23816	//
23817	// Id is a required field
23818	Id *string `type:"string" required:"true"`
23819
23820	// Object versions to include in the inventory list. If set to All, the list
23821	// includes all the object versions, which adds the version-related fields VersionId,
23822	// IsLatest, and DeleteMarker to the list. If set to Current, the list does
23823	// not contain these version-related fields.
23824	//
23825	// IncludedObjectVersions is a required field
23826	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
23827
23828	// Specifies whether the inventory is enabled or disabled. If set to True, an
23829	// inventory list is generated. If set to False, no inventory list is generated.
23830	//
23831	// IsEnabled is a required field
23832	IsEnabled *bool `type:"boolean" required:"true"`
23833
23834	// Contains the optional fields that are included in the inventory results.
23835	OptionalFields []*string `locationNameList:"Field" type:"list"`
23836
23837	// Specifies the schedule for generating inventory results.
23838	//
23839	// Schedule is a required field
23840	Schedule *InventorySchedule `type:"structure" required:"true"`
23841}
23842
23843// String returns the string representation.
23844//
23845// API parameter values that are decorated as "sensitive" in the API will not
23846// be included in the string output. The member name will be present, but the
23847// value will be replaced with "sensitive".
23848func (s InventoryConfiguration) String() string {
23849	return awsutil.Prettify(s)
23850}
23851
23852// GoString returns the string representation.
23853//
23854// API parameter values that are decorated as "sensitive" in the API will not
23855// be included in the string output. The member name will be present, but the
23856// value will be replaced with "sensitive".
23857func (s InventoryConfiguration) GoString() string {
23858	return s.String()
23859}
23860
23861// Validate inspects the fields of the type to determine if they are valid.
23862func (s *InventoryConfiguration) Validate() error {
23863	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
23864	if s.Destination == nil {
23865		invalidParams.Add(request.NewErrParamRequired("Destination"))
23866	}
23867	if s.Id == nil {
23868		invalidParams.Add(request.NewErrParamRequired("Id"))
23869	}
23870	if s.IncludedObjectVersions == nil {
23871		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
23872	}
23873	if s.IsEnabled == nil {
23874		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
23875	}
23876	if s.Schedule == nil {
23877		invalidParams.Add(request.NewErrParamRequired("Schedule"))
23878	}
23879	if s.Destination != nil {
23880		if err := s.Destination.Validate(); err != nil {
23881			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
23882		}
23883	}
23884	if s.Filter != nil {
23885		if err := s.Filter.Validate(); err != nil {
23886			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
23887		}
23888	}
23889	if s.Schedule != nil {
23890		if err := s.Schedule.Validate(); err != nil {
23891			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
23892		}
23893	}
23894
23895	if invalidParams.Len() > 0 {
23896		return invalidParams
23897	}
23898	return nil
23899}
23900
23901// SetDestination sets the Destination field's value.
23902func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
23903	s.Destination = v
23904	return s
23905}
23906
23907// SetFilter sets the Filter field's value.
23908func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
23909	s.Filter = v
23910	return s
23911}
23912
23913// SetId sets the Id field's value.
23914func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
23915	s.Id = &v
23916	return s
23917}
23918
23919// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
23920func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
23921	s.IncludedObjectVersions = &v
23922	return s
23923}
23924
23925// SetIsEnabled sets the IsEnabled field's value.
23926func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
23927	s.IsEnabled = &v
23928	return s
23929}
23930
23931// SetOptionalFields sets the OptionalFields field's value.
23932func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
23933	s.OptionalFields = v
23934	return s
23935}
23936
23937// SetSchedule sets the Schedule field's value.
23938func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
23939	s.Schedule = v
23940	return s
23941}
23942
23943// Specifies the inventory configuration for an Amazon S3 bucket.
23944type InventoryDestination struct {
23945	_ struct{} `type:"structure"`
23946
23947	// Contains the bucket name, file format, bucket owner (optional), and prefix
23948	// (optional) where inventory results are published.
23949	//
23950	// S3BucketDestination is a required field
23951	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
23952}
23953
23954// String returns the string representation.
23955//
23956// API parameter values that are decorated as "sensitive" in the API will not
23957// be included in the string output. The member name will be present, but the
23958// value will be replaced with "sensitive".
23959func (s InventoryDestination) String() string {
23960	return awsutil.Prettify(s)
23961}
23962
23963// GoString returns the string representation.
23964//
23965// API parameter values that are decorated as "sensitive" in the API will not
23966// be included in the string output. The member name will be present, but the
23967// value will be replaced with "sensitive".
23968func (s InventoryDestination) GoString() string {
23969	return s.String()
23970}
23971
23972// Validate inspects the fields of the type to determine if they are valid.
23973func (s *InventoryDestination) Validate() error {
23974	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
23975	if s.S3BucketDestination == nil {
23976		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
23977	}
23978	if s.S3BucketDestination != nil {
23979		if err := s.S3BucketDestination.Validate(); err != nil {
23980			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
23981		}
23982	}
23983
23984	if invalidParams.Len() > 0 {
23985		return invalidParams
23986	}
23987	return nil
23988}
23989
23990// SetS3BucketDestination sets the S3BucketDestination field's value.
23991func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
23992	s.S3BucketDestination = v
23993	return s
23994}
23995
23996// Contains the type of server-side encryption used to encrypt the inventory
23997// results.
23998type InventoryEncryption struct {
23999	_ struct{} `type:"structure"`
24000
24001	// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
24002	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
24003
24004	// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
24005	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
24006}
24007
24008// String returns the string representation.
24009//
24010// API parameter values that are decorated as "sensitive" in the API will not
24011// be included in the string output. The member name will be present, but the
24012// value will be replaced with "sensitive".
24013func (s InventoryEncryption) String() string {
24014	return awsutil.Prettify(s)
24015}
24016
24017// GoString returns the string representation.
24018//
24019// API parameter values that are decorated as "sensitive" in the API will not
24020// be included in the string output. The member name will be present, but the
24021// value will be replaced with "sensitive".
24022func (s InventoryEncryption) GoString() string {
24023	return s.String()
24024}
24025
24026// Validate inspects the fields of the type to determine if they are valid.
24027func (s *InventoryEncryption) Validate() error {
24028	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
24029	if s.SSEKMS != nil {
24030		if err := s.SSEKMS.Validate(); err != nil {
24031			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
24032		}
24033	}
24034
24035	if invalidParams.Len() > 0 {
24036		return invalidParams
24037	}
24038	return nil
24039}
24040
24041// SetSSEKMS sets the SSEKMS field's value.
24042func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
24043	s.SSEKMS = v
24044	return s
24045}
24046
24047// SetSSES3 sets the SSES3 field's value.
24048func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
24049	s.SSES3 = v
24050	return s
24051}
24052
24053// Specifies an inventory filter. The inventory only includes objects that meet
24054// the filter's criteria.
24055type InventoryFilter struct {
24056	_ struct{} `type:"structure"`
24057
24058	// The prefix that an object must have to be included in the inventory results.
24059	//
24060	// Prefix is a required field
24061	Prefix *string `type:"string" required:"true"`
24062}
24063
24064// String returns the string representation.
24065//
24066// API parameter values that are decorated as "sensitive" in the API will not
24067// be included in the string output. The member name will be present, but the
24068// value will be replaced with "sensitive".
24069func (s InventoryFilter) String() string {
24070	return awsutil.Prettify(s)
24071}
24072
24073// GoString returns the string representation.
24074//
24075// API parameter values that are decorated as "sensitive" in the API will not
24076// be included in the string output. The member name will be present, but the
24077// value will be replaced with "sensitive".
24078func (s InventoryFilter) GoString() string {
24079	return s.String()
24080}
24081
24082// Validate inspects the fields of the type to determine if they are valid.
24083func (s *InventoryFilter) Validate() error {
24084	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
24085	if s.Prefix == nil {
24086		invalidParams.Add(request.NewErrParamRequired("Prefix"))
24087	}
24088
24089	if invalidParams.Len() > 0 {
24090		return invalidParams
24091	}
24092	return nil
24093}
24094
24095// SetPrefix sets the Prefix field's value.
24096func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
24097	s.Prefix = &v
24098	return s
24099}
24100
24101// Contains the bucket name, file format, bucket owner (optional), and prefix
24102// (optional) where inventory results are published.
24103type InventoryS3BucketDestination struct {
24104	_ struct{} `type:"structure"`
24105
24106	// The account ID that owns the destination S3 bucket. If no account ID is provided,
24107	// the owner is not validated before exporting data.
24108	//
24109	// Although this value is optional, we strongly recommend that you set it to
24110	// help prevent problems if the destination bucket ownership changes.
24111	AccountId *string `type:"string"`
24112
24113	// The Amazon Resource Name (ARN) of the bucket where inventory results will
24114	// be published.
24115	//
24116	// Bucket is a required field
24117	Bucket *string `type:"string" required:"true"`
24118
24119	// Contains the type of server-side encryption used to encrypt the inventory
24120	// results.
24121	Encryption *InventoryEncryption `type:"structure"`
24122
24123	// Specifies the output format of the inventory results.
24124	//
24125	// Format is a required field
24126	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
24127
24128	// The prefix that is prepended to all inventory results.
24129	Prefix *string `type:"string"`
24130}
24131
24132// String returns the string representation.
24133//
24134// API parameter values that are decorated as "sensitive" in the API will not
24135// be included in the string output. The member name will be present, but the
24136// value will be replaced with "sensitive".
24137func (s InventoryS3BucketDestination) String() string {
24138	return awsutil.Prettify(s)
24139}
24140
24141// GoString returns the string representation.
24142//
24143// API parameter values that are decorated as "sensitive" in the API will not
24144// be included in the string output. The member name will be present, but the
24145// value will be replaced with "sensitive".
24146func (s InventoryS3BucketDestination) GoString() string {
24147	return s.String()
24148}
24149
24150// Validate inspects the fields of the type to determine if they are valid.
24151func (s *InventoryS3BucketDestination) Validate() error {
24152	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
24153	if s.Bucket == nil {
24154		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24155	}
24156	if s.Format == nil {
24157		invalidParams.Add(request.NewErrParamRequired("Format"))
24158	}
24159	if s.Encryption != nil {
24160		if err := s.Encryption.Validate(); err != nil {
24161			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
24162		}
24163	}
24164
24165	if invalidParams.Len() > 0 {
24166		return invalidParams
24167	}
24168	return nil
24169}
24170
24171// SetAccountId sets the AccountId field's value.
24172func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
24173	s.AccountId = &v
24174	return s
24175}
24176
24177// SetBucket sets the Bucket field's value.
24178func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
24179	s.Bucket = &v
24180	return s
24181}
24182
24183func (s *InventoryS3BucketDestination) getBucket() (v string) {
24184	if s.Bucket == nil {
24185		return v
24186	}
24187	return *s.Bucket
24188}
24189
24190// SetEncryption sets the Encryption field's value.
24191func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
24192	s.Encryption = v
24193	return s
24194}
24195
24196// SetFormat sets the Format field's value.
24197func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
24198	s.Format = &v
24199	return s
24200}
24201
24202// SetPrefix sets the Prefix field's value.
24203func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
24204	s.Prefix = &v
24205	return s
24206}
24207
24208// Specifies the schedule for generating inventory results.
24209type InventorySchedule struct {
24210	_ struct{} `type:"structure"`
24211
24212	// Specifies how frequently inventory results are produced.
24213	//
24214	// Frequency is a required field
24215	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
24216}
24217
24218// String returns the string representation.
24219//
24220// API parameter values that are decorated as "sensitive" in the API will not
24221// be included in the string output. The member name will be present, but the
24222// value will be replaced with "sensitive".
24223func (s InventorySchedule) String() string {
24224	return awsutil.Prettify(s)
24225}
24226
24227// GoString returns the string representation.
24228//
24229// API parameter values that are decorated as "sensitive" in the API will not
24230// be included in the string output. The member name will be present, but the
24231// value will be replaced with "sensitive".
24232func (s InventorySchedule) GoString() string {
24233	return s.String()
24234}
24235
24236// Validate inspects the fields of the type to determine if they are valid.
24237func (s *InventorySchedule) Validate() error {
24238	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
24239	if s.Frequency == nil {
24240		invalidParams.Add(request.NewErrParamRequired("Frequency"))
24241	}
24242
24243	if invalidParams.Len() > 0 {
24244		return invalidParams
24245	}
24246	return nil
24247}
24248
24249// SetFrequency sets the Frequency field's value.
24250func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
24251	s.Frequency = &v
24252	return s
24253}
24254
24255// Specifies JSON as object's input serialization format.
24256type JSONInput struct {
24257	_ struct{} `type:"structure"`
24258
24259	// The type of JSON. Valid values: Document, Lines.
24260	Type *string `type:"string" enum:"JSONType"`
24261}
24262
24263// String returns the string representation.
24264//
24265// API parameter values that are decorated as "sensitive" in the API will not
24266// be included in the string output. The member name will be present, but the
24267// value will be replaced with "sensitive".
24268func (s JSONInput) String() string {
24269	return awsutil.Prettify(s)
24270}
24271
24272// GoString returns the string representation.
24273//
24274// API parameter values that are decorated as "sensitive" in the API will not
24275// be included in the string output. The member name will be present, but the
24276// value will be replaced with "sensitive".
24277func (s JSONInput) GoString() string {
24278	return s.String()
24279}
24280
24281// SetType sets the Type field's value.
24282func (s *JSONInput) SetType(v string) *JSONInput {
24283	s.Type = &v
24284	return s
24285}
24286
24287// Specifies JSON as request's output serialization format.
24288type JSONOutput struct {
24289	_ struct{} `type:"structure"`
24290
24291	// The value used to separate individual records in the output. If no value
24292	// is specified, Amazon S3 uses a newline character ('\n').
24293	RecordDelimiter *string `type:"string"`
24294}
24295
24296// String returns the string representation.
24297//
24298// API parameter values that are decorated as "sensitive" in the API will not
24299// be included in the string output. The member name will be present, but the
24300// value will be replaced with "sensitive".
24301func (s JSONOutput) String() string {
24302	return awsutil.Prettify(s)
24303}
24304
24305// GoString returns the string representation.
24306//
24307// API parameter values that are decorated as "sensitive" in the API will not
24308// be included in the string output. The member name will be present, but the
24309// value will be replaced with "sensitive".
24310func (s JSONOutput) GoString() string {
24311	return s.String()
24312}
24313
24314// SetRecordDelimiter sets the RecordDelimiter field's value.
24315func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
24316	s.RecordDelimiter = &v
24317	return s
24318}
24319
24320// A container for object key name prefix and suffix filtering rules.
24321type KeyFilter struct {
24322	_ struct{} `type:"structure"`
24323
24324	// A list of containers for the key-value pair that defines the criteria for
24325	// the filter rule.
24326	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
24327}
24328
24329// String returns the string representation.
24330//
24331// API parameter values that are decorated as "sensitive" in the API will not
24332// be included in the string output. The member name will be present, but the
24333// value will be replaced with "sensitive".
24334func (s KeyFilter) String() string {
24335	return awsutil.Prettify(s)
24336}
24337
24338// GoString returns the string representation.
24339//
24340// API parameter values that are decorated as "sensitive" in the API will not
24341// be included in the string output. The member name will be present, but the
24342// value will be replaced with "sensitive".
24343func (s KeyFilter) GoString() string {
24344	return s.String()
24345}
24346
24347// SetFilterRules sets the FilterRules field's value.
24348func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
24349	s.FilterRules = v
24350	return s
24351}
24352
24353// A container for specifying the configuration for Lambda notifications.
24354type LambdaFunctionConfiguration struct {
24355	_ struct{} `type:"structure"`
24356
24357	// The Amazon S3 bucket event for which to invoke the Lambda function. For more
24358	// information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
24359	// in the Amazon S3 User Guide.
24360	//
24361	// Events is a required field
24362	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
24363
24364	// Specifies object key name filtering rules. For information about key name
24365	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
24366	// in the Amazon S3 User Guide.
24367	Filter *NotificationConfigurationFilter `type:"structure"`
24368
24369	// An optional unique identifier for configurations in a notification configuration.
24370	// If you don't provide one, Amazon S3 will assign an ID.
24371	Id *string `type:"string"`
24372
24373	// The Amazon Resource Name (ARN) of the Lambda function that Amazon S3 invokes
24374	// when the specified event type occurs.
24375	//
24376	// LambdaFunctionArn is a required field
24377	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
24378}
24379
24380// String returns the string representation.
24381//
24382// API parameter values that are decorated as "sensitive" in the API will not
24383// be included in the string output. The member name will be present, but the
24384// value will be replaced with "sensitive".
24385func (s LambdaFunctionConfiguration) String() string {
24386	return awsutil.Prettify(s)
24387}
24388
24389// GoString returns the string representation.
24390//
24391// API parameter values that are decorated as "sensitive" in the API will not
24392// be included in the string output. The member name will be present, but the
24393// value will be replaced with "sensitive".
24394func (s LambdaFunctionConfiguration) GoString() string {
24395	return s.String()
24396}
24397
24398// Validate inspects the fields of the type to determine if they are valid.
24399func (s *LambdaFunctionConfiguration) Validate() error {
24400	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
24401	if s.Events == nil {
24402		invalidParams.Add(request.NewErrParamRequired("Events"))
24403	}
24404	if s.LambdaFunctionArn == nil {
24405		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
24406	}
24407
24408	if invalidParams.Len() > 0 {
24409		return invalidParams
24410	}
24411	return nil
24412}
24413
24414// SetEvents sets the Events field's value.
24415func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
24416	s.Events = v
24417	return s
24418}
24419
24420// SetFilter sets the Filter field's value.
24421func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
24422	s.Filter = v
24423	return s
24424}
24425
24426// SetId sets the Id field's value.
24427func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
24428	s.Id = &v
24429	return s
24430}
24431
24432// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
24433func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
24434	s.LambdaFunctionArn = &v
24435	return s
24436}
24437
24438// Container for lifecycle rules. You can add as many as 1000 rules.
24439type LifecycleConfiguration struct {
24440	_ struct{} `type:"structure"`
24441
24442	// Specifies lifecycle configuration rules for an Amazon S3 bucket.
24443	//
24444	// Rules is a required field
24445	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
24446}
24447
24448// String returns the string representation.
24449//
24450// API parameter values that are decorated as "sensitive" in the API will not
24451// be included in the string output. The member name will be present, but the
24452// value will be replaced with "sensitive".
24453func (s LifecycleConfiguration) String() string {
24454	return awsutil.Prettify(s)
24455}
24456
24457// GoString returns the string representation.
24458//
24459// API parameter values that are decorated as "sensitive" in the API will not
24460// be included in the string output. The member name will be present, but the
24461// value will be replaced with "sensitive".
24462func (s LifecycleConfiguration) GoString() string {
24463	return s.String()
24464}
24465
24466// Validate inspects the fields of the type to determine if they are valid.
24467func (s *LifecycleConfiguration) Validate() error {
24468	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
24469	if s.Rules == nil {
24470		invalidParams.Add(request.NewErrParamRequired("Rules"))
24471	}
24472	if s.Rules != nil {
24473		for i, v := range s.Rules {
24474			if v == nil {
24475				continue
24476			}
24477			if err := v.Validate(); err != nil {
24478				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
24479			}
24480		}
24481	}
24482
24483	if invalidParams.Len() > 0 {
24484		return invalidParams
24485	}
24486	return nil
24487}
24488
24489// SetRules sets the Rules field's value.
24490func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
24491	s.Rules = v
24492	return s
24493}
24494
24495// Container for the expiration for the lifecycle of the object.
24496type LifecycleExpiration struct {
24497	_ struct{} `type:"structure"`
24498
24499	// Indicates at what date the object is to be moved or deleted. Should be in
24500	// GMT ISO 8601 Format.
24501	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
24502
24503	// Indicates the lifetime, in days, of the objects that are subject to the rule.
24504	// The value must be a non-zero positive integer.
24505	Days *int64 `type:"integer"`
24506
24507	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
24508	// versions. If set to true, the delete marker will be expired; if set to false
24509	// the policy takes no action. This cannot be specified with Days or Date in
24510	// a Lifecycle Expiration Policy.
24511	ExpiredObjectDeleteMarker *bool `type:"boolean"`
24512}
24513
24514// String returns the string representation.
24515//
24516// API parameter values that are decorated as "sensitive" in the API will not
24517// be included in the string output. The member name will be present, but the
24518// value will be replaced with "sensitive".
24519func (s LifecycleExpiration) String() string {
24520	return awsutil.Prettify(s)
24521}
24522
24523// GoString returns the string representation.
24524//
24525// API parameter values that are decorated as "sensitive" in the API will not
24526// be included in the string output. The member name will be present, but the
24527// value will be replaced with "sensitive".
24528func (s LifecycleExpiration) GoString() string {
24529	return s.String()
24530}
24531
24532// SetDate sets the Date field's value.
24533func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
24534	s.Date = &v
24535	return s
24536}
24537
24538// SetDays sets the Days field's value.
24539func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
24540	s.Days = &v
24541	return s
24542}
24543
24544// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
24545func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
24546	s.ExpiredObjectDeleteMarker = &v
24547	return s
24548}
24549
24550// A lifecycle rule for individual objects in an Amazon S3 bucket.
24551type LifecycleRule struct {
24552	_ struct{} `type:"structure"`
24553
24554	// Specifies the days since the initiation of an incomplete multipart upload
24555	// that Amazon S3 will wait before permanently removing all parts of the upload.
24556	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
24557	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
24558	// in the Amazon S3 User Guide.
24559	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
24560
24561	// Specifies the expiration for the lifecycle of the object in the form of date,
24562	// days and, whether the object has a delete marker.
24563	Expiration *LifecycleExpiration `type:"structure"`
24564
24565	// The Filter is used to identify objects that a Lifecycle Rule applies to.
24566	// A Filter must have exactly one of Prefix, Tag, or And specified. Filter is
24567	// required if the LifecycleRule does not containt a Prefix element.
24568	Filter *LifecycleRuleFilter `type:"structure"`
24569
24570	// Unique identifier for the rule. The value cannot be longer than 255 characters.
24571	ID *string `type:"string"`
24572
24573	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
24574	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
24575	// configuration action on a bucket that has versioning enabled (or suspended)
24576	// to request that Amazon S3 delete noncurrent object versions at a specific
24577	// period in the object's lifetime.
24578	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
24579
24580	// Specifies the transition rule for the lifecycle rule that describes when
24581	// noncurrent objects transition to a specific storage class. If your bucket
24582	// is versioning-enabled (or versioning is suspended), you can set this action
24583	// to request that Amazon S3 transition noncurrent object versions to a specific
24584	// storage class at a set period in the object's lifetime.
24585	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
24586
24587	// Prefix identifying one or more objects to which the rule applies. This is
24588	// no longer used; use Filter instead.
24589	//
24590	// Replacement must be made for object keys containing special characters (such
24591	// as carriage returns) when using XML requests. For more information, see XML
24592	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
24593	//
24594	// Deprecated: Prefix has been deprecated
24595	Prefix *string `deprecated:"true" type:"string"`
24596
24597	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
24598	// is not currently being applied.
24599	//
24600	// Status is a required field
24601	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
24602
24603	// Specifies when an Amazon S3 object transitions to a specified storage class.
24604	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
24605}
24606
24607// String returns the string representation.
24608//
24609// API parameter values that are decorated as "sensitive" in the API will not
24610// be included in the string output. The member name will be present, but the
24611// value will be replaced with "sensitive".
24612func (s LifecycleRule) String() string {
24613	return awsutil.Prettify(s)
24614}
24615
24616// GoString returns the string representation.
24617//
24618// API parameter values that are decorated as "sensitive" in the API will not
24619// be included in the string output. The member name will be present, but the
24620// value will be replaced with "sensitive".
24621func (s LifecycleRule) GoString() string {
24622	return s.String()
24623}
24624
24625// Validate inspects the fields of the type to determine if they are valid.
24626func (s *LifecycleRule) Validate() error {
24627	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
24628	if s.Status == nil {
24629		invalidParams.Add(request.NewErrParamRequired("Status"))
24630	}
24631	if s.Filter != nil {
24632		if err := s.Filter.Validate(); err != nil {
24633			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
24634		}
24635	}
24636
24637	if invalidParams.Len() > 0 {
24638		return invalidParams
24639	}
24640	return nil
24641}
24642
24643// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
24644func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
24645	s.AbortIncompleteMultipartUpload = v
24646	return s
24647}
24648
24649// SetExpiration sets the Expiration field's value.
24650func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
24651	s.Expiration = v
24652	return s
24653}
24654
24655// SetFilter sets the Filter field's value.
24656func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
24657	s.Filter = v
24658	return s
24659}
24660
24661// SetID sets the ID field's value.
24662func (s *LifecycleRule) SetID(v string) *LifecycleRule {
24663	s.ID = &v
24664	return s
24665}
24666
24667// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
24668func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
24669	s.NoncurrentVersionExpiration = v
24670	return s
24671}
24672
24673// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
24674func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
24675	s.NoncurrentVersionTransitions = v
24676	return s
24677}
24678
24679// SetPrefix sets the Prefix field's value.
24680func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
24681	s.Prefix = &v
24682	return s
24683}
24684
24685// SetStatus sets the Status field's value.
24686func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
24687	s.Status = &v
24688	return s
24689}
24690
24691// SetTransitions sets the Transitions field's value.
24692func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
24693	s.Transitions = v
24694	return s
24695}
24696
24697// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
24698// more predicates. The Lifecycle Rule will apply to any object matching all
24699// of the predicates configured inside the And operator.
24700type LifecycleRuleAndOperator struct {
24701	_ struct{} `type:"structure"`
24702
24703	// Minimum object size to which the rule applies.
24704	ObjectSizeGreaterThan *int64 `type:"long"`
24705
24706	// Maximum object size to which the rule applies.
24707	ObjectSizeLessThan *int64 `type:"long"`
24708
24709	// Prefix identifying one or more objects to which the rule applies.
24710	Prefix *string `type:"string"`
24711
24712	// All of these tags must exist in the object's tag set in order for the rule
24713	// to apply.
24714	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
24715}
24716
24717// String returns the string representation.
24718//
24719// API parameter values that are decorated as "sensitive" in the API will not
24720// be included in the string output. The member name will be present, but the
24721// value will be replaced with "sensitive".
24722func (s LifecycleRuleAndOperator) String() string {
24723	return awsutil.Prettify(s)
24724}
24725
24726// GoString returns the string representation.
24727//
24728// API parameter values that are decorated as "sensitive" in the API will not
24729// be included in the string output. The member name will be present, but the
24730// value will be replaced with "sensitive".
24731func (s LifecycleRuleAndOperator) GoString() string {
24732	return s.String()
24733}
24734
24735// Validate inspects the fields of the type to determine if they are valid.
24736func (s *LifecycleRuleAndOperator) Validate() error {
24737	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
24738	if s.Tags != nil {
24739		for i, v := range s.Tags {
24740			if v == nil {
24741				continue
24742			}
24743			if err := v.Validate(); err != nil {
24744				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
24745			}
24746		}
24747	}
24748
24749	if invalidParams.Len() > 0 {
24750		return invalidParams
24751	}
24752	return nil
24753}
24754
24755// SetObjectSizeGreaterThan sets the ObjectSizeGreaterThan field's value.
24756func (s *LifecycleRuleAndOperator) SetObjectSizeGreaterThan(v int64) *LifecycleRuleAndOperator {
24757	s.ObjectSizeGreaterThan = &v
24758	return s
24759}
24760
24761// SetObjectSizeLessThan sets the ObjectSizeLessThan field's value.
24762func (s *LifecycleRuleAndOperator) SetObjectSizeLessThan(v int64) *LifecycleRuleAndOperator {
24763	s.ObjectSizeLessThan = &v
24764	return s
24765}
24766
24767// SetPrefix sets the Prefix field's value.
24768func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
24769	s.Prefix = &v
24770	return s
24771}
24772
24773// SetTags sets the Tags field's value.
24774func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
24775	s.Tags = v
24776	return s
24777}
24778
24779// The Filter is used to identify objects that a Lifecycle Rule applies to.
24780// A Filter must have exactly one of Prefix, Tag, or And specified.
24781type LifecycleRuleFilter struct {
24782	_ struct{} `type:"structure"`
24783
24784	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
24785	// more predicates. The Lifecycle Rule will apply to any object matching all
24786	// of the predicates configured inside the And operator.
24787	And *LifecycleRuleAndOperator `type:"structure"`
24788
24789	// Minimum object size to which the rule applies.
24790	ObjectSizeGreaterThan *int64 `type:"long"`
24791
24792	// Maximum object size to which the rule applies.
24793	ObjectSizeLessThan *int64 `type:"long"`
24794
24795	// Prefix identifying one or more objects to which the rule applies.
24796	//
24797	// Replacement must be made for object keys containing special characters (such
24798	// as carriage returns) when using XML requests. For more information, see XML
24799	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
24800	Prefix *string `type:"string"`
24801
24802	// This tag must exist in the object's tag set in order for the rule to apply.
24803	Tag *Tag `type:"structure"`
24804}
24805
24806// String returns the string representation.
24807//
24808// API parameter values that are decorated as "sensitive" in the API will not
24809// be included in the string output. The member name will be present, but the
24810// value will be replaced with "sensitive".
24811func (s LifecycleRuleFilter) String() string {
24812	return awsutil.Prettify(s)
24813}
24814
24815// GoString returns the string representation.
24816//
24817// API parameter values that are decorated as "sensitive" in the API will not
24818// be included in the string output. The member name will be present, but the
24819// value will be replaced with "sensitive".
24820func (s LifecycleRuleFilter) GoString() string {
24821	return s.String()
24822}
24823
24824// Validate inspects the fields of the type to determine if they are valid.
24825func (s *LifecycleRuleFilter) Validate() error {
24826	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
24827	if s.And != nil {
24828		if err := s.And.Validate(); err != nil {
24829			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
24830		}
24831	}
24832	if s.Tag != nil {
24833		if err := s.Tag.Validate(); err != nil {
24834			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
24835		}
24836	}
24837
24838	if invalidParams.Len() > 0 {
24839		return invalidParams
24840	}
24841	return nil
24842}
24843
24844// SetAnd sets the And field's value.
24845func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
24846	s.And = v
24847	return s
24848}
24849
24850// SetObjectSizeGreaterThan sets the ObjectSizeGreaterThan field's value.
24851func (s *LifecycleRuleFilter) SetObjectSizeGreaterThan(v int64) *LifecycleRuleFilter {
24852	s.ObjectSizeGreaterThan = &v
24853	return s
24854}
24855
24856// SetObjectSizeLessThan sets the ObjectSizeLessThan field's value.
24857func (s *LifecycleRuleFilter) SetObjectSizeLessThan(v int64) *LifecycleRuleFilter {
24858	s.ObjectSizeLessThan = &v
24859	return s
24860}
24861
24862// SetPrefix sets the Prefix field's value.
24863func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
24864	s.Prefix = &v
24865	return s
24866}
24867
24868// SetTag sets the Tag field's value.
24869func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
24870	s.Tag = v
24871	return s
24872}
24873
24874type ListBucketAnalyticsConfigurationsInput struct {
24875	_ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"`
24876
24877	// The name of the bucket from which analytics configurations are retrieved.
24878	//
24879	// Bucket is a required field
24880	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24881
24882	// The ContinuationToken that represents a placeholder from where this request
24883	// should begin.
24884	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
24885
24886	// The account ID of the expected bucket owner. If the bucket is owned by a
24887	// different account, the request will fail with an HTTP 403 (Access Denied)
24888	// error.
24889	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
24890}
24891
24892// String returns the string representation.
24893//
24894// API parameter values that are decorated as "sensitive" in the API will not
24895// be included in the string output. The member name will be present, but the
24896// value will be replaced with "sensitive".
24897func (s ListBucketAnalyticsConfigurationsInput) String() string {
24898	return awsutil.Prettify(s)
24899}
24900
24901// GoString returns the string representation.
24902//
24903// API parameter values that are decorated as "sensitive" in the API will not
24904// be included in the string output. The member name will be present, but the
24905// value will be replaced with "sensitive".
24906func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
24907	return s.String()
24908}
24909
24910// Validate inspects the fields of the type to determine if they are valid.
24911func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
24912	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
24913	if s.Bucket == nil {
24914		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24915	}
24916	if s.Bucket != nil && len(*s.Bucket) < 1 {
24917		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24918	}
24919
24920	if invalidParams.Len() > 0 {
24921		return invalidParams
24922	}
24923	return nil
24924}
24925
24926// SetBucket sets the Bucket field's value.
24927func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
24928	s.Bucket = &v
24929	return s
24930}
24931
24932func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
24933	if s.Bucket == nil {
24934		return v
24935	}
24936	return *s.Bucket
24937}
24938
24939// SetContinuationToken sets the ContinuationToken field's value.
24940func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
24941	s.ContinuationToken = &v
24942	return s
24943}
24944
24945// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
24946func (s *ListBucketAnalyticsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketAnalyticsConfigurationsInput {
24947	s.ExpectedBucketOwner = &v
24948	return s
24949}
24950
24951func (s *ListBucketAnalyticsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
24952	if s.Bucket == nil {
24953		return nil, fmt.Errorf("member Bucket is nil")
24954	}
24955	return parseEndpointARN(*s.Bucket)
24956}
24957
24958func (s *ListBucketAnalyticsConfigurationsInput) hasEndpointARN() bool {
24959	if s.Bucket == nil {
24960		return false
24961	}
24962	return arn.IsARN(*s.Bucket)
24963}
24964
24965// updateArnableField updates the value of the input field that
24966// takes an ARN as an input. This method is useful to backfill
24967// the parsed resource name from ARN into the input member.
24968// It returns a pointer to a modified copy of input and an error.
24969// Note that original input is not modified.
24970func (s ListBucketAnalyticsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
24971	if s.Bucket == nil {
24972		return nil, fmt.Errorf("member Bucket is nil")
24973	}
24974	s.Bucket = aws.String(v)
24975	return &s, nil
24976}
24977
24978type ListBucketAnalyticsConfigurationsOutput struct {
24979	_ struct{} `type:"structure"`
24980
24981	// The list of analytics configurations for a bucket.
24982	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
24983
24984	// The marker that is used as a starting point for this analytics configuration
24985	// list response. This value is present if it was sent in the request.
24986	ContinuationToken *string `type:"string"`
24987
24988	// Indicates whether the returned list of analytics configurations is complete.
24989	// A value of true indicates that the list is not complete and the NextContinuationToken
24990	// will be provided for a subsequent request.
24991	IsTruncated *bool `type:"boolean"`
24992
24993	// NextContinuationToken is sent when isTruncated is true, which indicates that
24994	// there are more analytics configurations to list. The next request must include
24995	// this NextContinuationToken. The token is obfuscated and is not a usable value.
24996	NextContinuationToken *string `type:"string"`
24997}
24998
24999// String returns the string representation.
25000//
25001// API parameter values that are decorated as "sensitive" in the API will not
25002// be included in the string output. The member name will be present, but the
25003// value will be replaced with "sensitive".
25004func (s ListBucketAnalyticsConfigurationsOutput) String() string {
25005	return awsutil.Prettify(s)
25006}
25007
25008// GoString returns the string representation.
25009//
25010// API parameter values that are decorated as "sensitive" in the API will not
25011// be included in the string output. The member name will be present, but the
25012// value will be replaced with "sensitive".
25013func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
25014	return s.String()
25015}
25016
25017// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
25018func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
25019	s.AnalyticsConfigurationList = v
25020	return s
25021}
25022
25023// SetContinuationToken sets the ContinuationToken field's value.
25024func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
25025	s.ContinuationToken = &v
25026	return s
25027}
25028
25029// SetIsTruncated sets the IsTruncated field's value.
25030func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
25031	s.IsTruncated = &v
25032	return s
25033}
25034
25035// SetNextContinuationToken sets the NextContinuationToken field's value.
25036func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
25037	s.NextContinuationToken = &v
25038	return s
25039}
25040
25041type ListBucketIntelligentTieringConfigurationsInput struct {
25042	_ struct{} `locationName:"ListBucketIntelligentTieringConfigurationsRequest" type:"structure"`
25043
25044	// The name of the Amazon S3 bucket whose configuration you want to modify or
25045	// retrieve.
25046	//
25047	// Bucket is a required field
25048	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25049
25050	// The ContinuationToken that represents a placeholder from where this request
25051	// should begin.
25052	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25053}
25054
25055// String returns the string representation.
25056//
25057// API parameter values that are decorated as "sensitive" in the API will not
25058// be included in the string output. The member name will be present, but the
25059// value will be replaced with "sensitive".
25060func (s ListBucketIntelligentTieringConfigurationsInput) String() string {
25061	return awsutil.Prettify(s)
25062}
25063
25064// GoString returns the string representation.
25065//
25066// API parameter values that are decorated as "sensitive" in the API will not
25067// be included in the string output. The member name will be present, but the
25068// value will be replaced with "sensitive".
25069func (s ListBucketIntelligentTieringConfigurationsInput) GoString() string {
25070	return s.String()
25071}
25072
25073// Validate inspects the fields of the type to determine if they are valid.
25074func (s *ListBucketIntelligentTieringConfigurationsInput) Validate() error {
25075	invalidParams := request.ErrInvalidParams{Context: "ListBucketIntelligentTieringConfigurationsInput"}
25076	if s.Bucket == nil {
25077		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25078	}
25079	if s.Bucket != nil && len(*s.Bucket) < 1 {
25080		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25081	}
25082
25083	if invalidParams.Len() > 0 {
25084		return invalidParams
25085	}
25086	return nil
25087}
25088
25089// SetBucket sets the Bucket field's value.
25090func (s *ListBucketIntelligentTieringConfigurationsInput) SetBucket(v string) *ListBucketIntelligentTieringConfigurationsInput {
25091	s.Bucket = &v
25092	return s
25093}
25094
25095func (s *ListBucketIntelligentTieringConfigurationsInput) getBucket() (v string) {
25096	if s.Bucket == nil {
25097		return v
25098	}
25099	return *s.Bucket
25100}
25101
25102// SetContinuationToken sets the ContinuationToken field's value.
25103func (s *ListBucketIntelligentTieringConfigurationsInput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsInput {
25104	s.ContinuationToken = &v
25105	return s
25106}
25107
25108func (s *ListBucketIntelligentTieringConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25109	if s.Bucket == nil {
25110		return nil, fmt.Errorf("member Bucket is nil")
25111	}
25112	return parseEndpointARN(*s.Bucket)
25113}
25114
25115func (s *ListBucketIntelligentTieringConfigurationsInput) hasEndpointARN() bool {
25116	if s.Bucket == nil {
25117		return false
25118	}
25119	return arn.IsARN(*s.Bucket)
25120}
25121
25122// updateArnableField updates the value of the input field that
25123// takes an ARN as an input. This method is useful to backfill
25124// the parsed resource name from ARN into the input member.
25125// It returns a pointer to a modified copy of input and an error.
25126// Note that original input is not modified.
25127func (s ListBucketIntelligentTieringConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25128	if s.Bucket == nil {
25129		return nil, fmt.Errorf("member Bucket is nil")
25130	}
25131	s.Bucket = aws.String(v)
25132	return &s, nil
25133}
25134
25135type ListBucketIntelligentTieringConfigurationsOutput struct {
25136	_ struct{} `type:"structure"`
25137
25138	// The ContinuationToken that represents a placeholder from where this request
25139	// should begin.
25140	ContinuationToken *string `type:"string"`
25141
25142	// The list of S3 Intelligent-Tiering configurations for a bucket.
25143	IntelligentTieringConfigurationList []*IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"list" flattened:"true"`
25144
25145	// Indicates whether the returned list of analytics configurations is complete.
25146	// A value of true indicates that the list is not complete and the NextContinuationToken
25147	// will be provided for a subsequent request.
25148	IsTruncated *bool `type:"boolean"`
25149
25150	// The marker used to continue this inventory configuration listing. Use the
25151	// NextContinuationToken from this response to continue the listing in a subsequent
25152	// request. The continuation token is an opaque value that Amazon S3 understands.
25153	NextContinuationToken *string `type:"string"`
25154}
25155
25156// String returns the string representation.
25157//
25158// API parameter values that are decorated as "sensitive" in the API will not
25159// be included in the string output. The member name will be present, but the
25160// value will be replaced with "sensitive".
25161func (s ListBucketIntelligentTieringConfigurationsOutput) String() string {
25162	return awsutil.Prettify(s)
25163}
25164
25165// GoString returns the string representation.
25166//
25167// API parameter values that are decorated as "sensitive" in the API will not
25168// be included in the string output. The member name will be present, but the
25169// value will be replaced with "sensitive".
25170func (s ListBucketIntelligentTieringConfigurationsOutput) GoString() string {
25171	return s.String()
25172}
25173
25174// SetContinuationToken sets the ContinuationToken field's value.
25175func (s *ListBucketIntelligentTieringConfigurationsOutput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
25176	s.ContinuationToken = &v
25177	return s
25178}
25179
25180// SetIntelligentTieringConfigurationList sets the IntelligentTieringConfigurationList field's value.
25181func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIntelligentTieringConfigurationList(v []*IntelligentTieringConfiguration) *ListBucketIntelligentTieringConfigurationsOutput {
25182	s.IntelligentTieringConfigurationList = v
25183	return s
25184}
25185
25186// SetIsTruncated sets the IsTruncated field's value.
25187func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIsTruncated(v bool) *ListBucketIntelligentTieringConfigurationsOutput {
25188	s.IsTruncated = &v
25189	return s
25190}
25191
25192// SetNextContinuationToken sets the NextContinuationToken field's value.
25193func (s *ListBucketIntelligentTieringConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
25194	s.NextContinuationToken = &v
25195	return s
25196}
25197
25198type ListBucketInventoryConfigurationsInput struct {
25199	_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
25200
25201	// The name of the bucket containing the inventory configurations to retrieve.
25202	//
25203	// Bucket is a required field
25204	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25205
25206	// The marker used to continue an inventory configuration listing that has been
25207	// truncated. Use the NextContinuationToken from a previously truncated list
25208	// response to continue the listing. The continuation token is an opaque value
25209	// that Amazon S3 understands.
25210	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25211
25212	// The account ID of the expected bucket owner. If the bucket is owned by a
25213	// different account, the request will fail with an HTTP 403 (Access Denied)
25214	// error.
25215	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25216}
25217
25218// String returns the string representation.
25219//
25220// API parameter values that are decorated as "sensitive" in the API will not
25221// be included in the string output. The member name will be present, but the
25222// value will be replaced with "sensitive".
25223func (s ListBucketInventoryConfigurationsInput) String() string {
25224	return awsutil.Prettify(s)
25225}
25226
25227// GoString returns the string representation.
25228//
25229// API parameter values that are decorated as "sensitive" in the API will not
25230// be included in the string output. The member name will be present, but the
25231// value will be replaced with "sensitive".
25232func (s ListBucketInventoryConfigurationsInput) GoString() string {
25233	return s.String()
25234}
25235
25236// Validate inspects the fields of the type to determine if they are valid.
25237func (s *ListBucketInventoryConfigurationsInput) Validate() error {
25238	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
25239	if s.Bucket == nil {
25240		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25241	}
25242	if s.Bucket != nil && len(*s.Bucket) < 1 {
25243		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25244	}
25245
25246	if invalidParams.Len() > 0 {
25247		return invalidParams
25248	}
25249	return nil
25250}
25251
25252// SetBucket sets the Bucket field's value.
25253func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
25254	s.Bucket = &v
25255	return s
25256}
25257
25258func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
25259	if s.Bucket == nil {
25260		return v
25261	}
25262	return *s.Bucket
25263}
25264
25265// SetContinuationToken sets the ContinuationToken field's value.
25266func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
25267	s.ContinuationToken = &v
25268	return s
25269}
25270
25271// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25272func (s *ListBucketInventoryConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketInventoryConfigurationsInput {
25273	s.ExpectedBucketOwner = &v
25274	return s
25275}
25276
25277func (s *ListBucketInventoryConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25278	if s.Bucket == nil {
25279		return nil, fmt.Errorf("member Bucket is nil")
25280	}
25281	return parseEndpointARN(*s.Bucket)
25282}
25283
25284func (s *ListBucketInventoryConfigurationsInput) hasEndpointARN() bool {
25285	if s.Bucket == nil {
25286		return false
25287	}
25288	return arn.IsARN(*s.Bucket)
25289}
25290
25291// updateArnableField updates the value of the input field that
25292// takes an ARN as an input. This method is useful to backfill
25293// the parsed resource name from ARN into the input member.
25294// It returns a pointer to a modified copy of input and an error.
25295// Note that original input is not modified.
25296func (s ListBucketInventoryConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25297	if s.Bucket == nil {
25298		return nil, fmt.Errorf("member Bucket is nil")
25299	}
25300	s.Bucket = aws.String(v)
25301	return &s, nil
25302}
25303
25304type ListBucketInventoryConfigurationsOutput struct {
25305	_ struct{} `type:"structure"`
25306
25307	// If sent in the request, the marker that is used as a starting point for this
25308	// inventory configuration list response.
25309	ContinuationToken *string `type:"string"`
25310
25311	// The list of inventory configurations for a bucket.
25312	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
25313
25314	// Tells whether the returned list of inventory configurations is complete.
25315	// A value of true indicates that the list is not complete and the NextContinuationToken
25316	// is provided for a subsequent request.
25317	IsTruncated *bool `type:"boolean"`
25318
25319	// The marker used to continue this inventory configuration listing. Use the
25320	// NextContinuationToken from this response to continue the listing in a subsequent
25321	// request. The continuation token is an opaque value that Amazon S3 understands.
25322	NextContinuationToken *string `type:"string"`
25323}
25324
25325// String returns the string representation.
25326//
25327// API parameter values that are decorated as "sensitive" in the API will not
25328// be included in the string output. The member name will be present, but the
25329// value will be replaced with "sensitive".
25330func (s ListBucketInventoryConfigurationsOutput) String() string {
25331	return awsutil.Prettify(s)
25332}
25333
25334// GoString returns the string representation.
25335//
25336// API parameter values that are decorated as "sensitive" in the API will not
25337// be included in the string output. The member name will be present, but the
25338// value will be replaced with "sensitive".
25339func (s ListBucketInventoryConfigurationsOutput) GoString() string {
25340	return s.String()
25341}
25342
25343// SetContinuationToken sets the ContinuationToken field's value.
25344func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
25345	s.ContinuationToken = &v
25346	return s
25347}
25348
25349// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
25350func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
25351	s.InventoryConfigurationList = v
25352	return s
25353}
25354
25355// SetIsTruncated sets the IsTruncated field's value.
25356func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
25357	s.IsTruncated = &v
25358	return s
25359}
25360
25361// SetNextContinuationToken sets the NextContinuationToken field's value.
25362func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
25363	s.NextContinuationToken = &v
25364	return s
25365}
25366
25367type ListBucketMetricsConfigurationsInput struct {
25368	_ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"`
25369
25370	// The name of the bucket containing the metrics configurations to retrieve.
25371	//
25372	// Bucket is a required field
25373	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25374
25375	// The marker that is used to continue a metrics configuration listing that
25376	// has been truncated. Use the NextContinuationToken from a previously truncated
25377	// list response to continue the listing. The continuation token is an opaque
25378	// value that Amazon S3 understands.
25379	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25380
25381	// The account ID of the expected bucket owner. If the bucket is owned by a
25382	// different account, the request will fail with an HTTP 403 (Access Denied)
25383	// error.
25384	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25385}
25386
25387// String returns the string representation.
25388//
25389// API parameter values that are decorated as "sensitive" in the API will not
25390// be included in the string output. The member name will be present, but the
25391// value will be replaced with "sensitive".
25392func (s ListBucketMetricsConfigurationsInput) String() string {
25393	return awsutil.Prettify(s)
25394}
25395
25396// GoString returns the string representation.
25397//
25398// API parameter values that are decorated as "sensitive" in the API will not
25399// be included in the string output. The member name will be present, but the
25400// value will be replaced with "sensitive".
25401func (s ListBucketMetricsConfigurationsInput) GoString() string {
25402	return s.String()
25403}
25404
25405// Validate inspects the fields of the type to determine if they are valid.
25406func (s *ListBucketMetricsConfigurationsInput) Validate() error {
25407	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
25408	if s.Bucket == nil {
25409		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25410	}
25411	if s.Bucket != nil && len(*s.Bucket) < 1 {
25412		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25413	}
25414
25415	if invalidParams.Len() > 0 {
25416		return invalidParams
25417	}
25418	return nil
25419}
25420
25421// SetBucket sets the Bucket field's value.
25422func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
25423	s.Bucket = &v
25424	return s
25425}
25426
25427func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
25428	if s.Bucket == nil {
25429		return v
25430	}
25431	return *s.Bucket
25432}
25433
25434// SetContinuationToken sets the ContinuationToken field's value.
25435func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
25436	s.ContinuationToken = &v
25437	return s
25438}
25439
25440// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25441func (s *ListBucketMetricsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketMetricsConfigurationsInput {
25442	s.ExpectedBucketOwner = &v
25443	return s
25444}
25445
25446func (s *ListBucketMetricsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25447	if s.Bucket == nil {
25448		return nil, fmt.Errorf("member Bucket is nil")
25449	}
25450	return parseEndpointARN(*s.Bucket)
25451}
25452
25453func (s *ListBucketMetricsConfigurationsInput) hasEndpointARN() bool {
25454	if s.Bucket == nil {
25455		return false
25456	}
25457	return arn.IsARN(*s.Bucket)
25458}
25459
25460// updateArnableField updates the value of the input field that
25461// takes an ARN as an input. This method is useful to backfill
25462// the parsed resource name from ARN into the input member.
25463// It returns a pointer to a modified copy of input and an error.
25464// Note that original input is not modified.
25465func (s ListBucketMetricsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25466	if s.Bucket == nil {
25467		return nil, fmt.Errorf("member Bucket is nil")
25468	}
25469	s.Bucket = aws.String(v)
25470	return &s, nil
25471}
25472
25473type ListBucketMetricsConfigurationsOutput struct {
25474	_ struct{} `type:"structure"`
25475
25476	// The marker that is used as a starting point for this metrics configuration
25477	// list response. This value is present if it was sent in the request.
25478	ContinuationToken *string `type:"string"`
25479
25480	// Indicates whether the returned list of metrics configurations is complete.
25481	// A value of true indicates that the list is not complete and the NextContinuationToken
25482	// will be provided for a subsequent request.
25483	IsTruncated *bool `type:"boolean"`
25484
25485	// The list of metrics configurations for a bucket.
25486	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
25487
25488	// The marker used to continue a metrics configuration listing that has been
25489	// truncated. Use the NextContinuationToken from a previously truncated list
25490	// response to continue the listing. The continuation token is an opaque value
25491	// that Amazon S3 understands.
25492	NextContinuationToken *string `type:"string"`
25493}
25494
25495// String returns the string representation.
25496//
25497// API parameter values that are decorated as "sensitive" in the API will not
25498// be included in the string output. The member name will be present, but the
25499// value will be replaced with "sensitive".
25500func (s ListBucketMetricsConfigurationsOutput) String() string {
25501	return awsutil.Prettify(s)
25502}
25503
25504// GoString returns the string representation.
25505//
25506// API parameter values that are decorated as "sensitive" in the API will not
25507// be included in the string output. The member name will be present, but the
25508// value will be replaced with "sensitive".
25509func (s ListBucketMetricsConfigurationsOutput) GoString() string {
25510	return s.String()
25511}
25512
25513// SetContinuationToken sets the ContinuationToken field's value.
25514func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
25515	s.ContinuationToken = &v
25516	return s
25517}
25518
25519// SetIsTruncated sets the IsTruncated field's value.
25520func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
25521	s.IsTruncated = &v
25522	return s
25523}
25524
25525// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
25526func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
25527	s.MetricsConfigurationList = v
25528	return s
25529}
25530
25531// SetNextContinuationToken sets the NextContinuationToken field's value.
25532func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
25533	s.NextContinuationToken = &v
25534	return s
25535}
25536
25537type ListBucketsInput struct {
25538	_ struct{} `type:"structure"`
25539}
25540
25541// String returns the string representation.
25542//
25543// API parameter values that are decorated as "sensitive" in the API will not
25544// be included in the string output. The member name will be present, but the
25545// value will be replaced with "sensitive".
25546func (s ListBucketsInput) String() string {
25547	return awsutil.Prettify(s)
25548}
25549
25550// GoString returns the string representation.
25551//
25552// API parameter values that are decorated as "sensitive" in the API will not
25553// be included in the string output. The member name will be present, but the
25554// value will be replaced with "sensitive".
25555func (s ListBucketsInput) GoString() string {
25556	return s.String()
25557}
25558
25559type ListBucketsOutput struct {
25560	_ struct{} `type:"structure"`
25561
25562	// The list of buckets owned by the requestor.
25563	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
25564
25565	// The owner of the buckets listed.
25566	Owner *Owner `type:"structure"`
25567}
25568
25569// String returns the string representation.
25570//
25571// API parameter values that are decorated as "sensitive" in the API will not
25572// be included in the string output. The member name will be present, but the
25573// value will be replaced with "sensitive".
25574func (s ListBucketsOutput) String() string {
25575	return awsutil.Prettify(s)
25576}
25577
25578// GoString returns the string representation.
25579//
25580// API parameter values that are decorated as "sensitive" in the API will not
25581// be included in the string output. The member name will be present, but the
25582// value will be replaced with "sensitive".
25583func (s ListBucketsOutput) GoString() string {
25584	return s.String()
25585}
25586
25587// SetBuckets sets the Buckets field's value.
25588func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
25589	s.Buckets = v
25590	return s
25591}
25592
25593// SetOwner sets the Owner field's value.
25594func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
25595	s.Owner = v
25596	return s
25597}
25598
25599type ListMultipartUploadsInput struct {
25600	_ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"`
25601
25602	// The name of the bucket to which the multipart upload was initiated.
25603	//
25604	// When using this action with an access point, you must direct requests to
25605	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25606	// When using this action with an access point through the Amazon Web Services
25607	// SDKs, you provide the access point ARN in place of the bucket name. For more
25608	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
25609	// in the Amazon S3 User Guide.
25610	//
25611	// When using this action with Amazon S3 on Outposts, you must direct requests
25612	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
25613	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
25614	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
25615	// you provide the Outposts bucket ARN in place of the bucket name. For more
25616	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
25617	// in the Amazon S3 User Guide.
25618	//
25619	// Bucket is a required field
25620	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25621
25622	// Character you use to group keys.
25623	//
25624	// All keys that contain the same string between the prefix, if specified, and
25625	// the first occurrence of the delimiter after the prefix are grouped under
25626	// a single result element, CommonPrefixes. If you don't specify the prefix
25627	// parameter, then the substring starts at the beginning of the key. The keys
25628	// that are grouped under CommonPrefixes result element are not returned elsewhere
25629	// in the response.
25630	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
25631
25632	// Requests Amazon S3 to encode the object keys in the response and specifies
25633	// the encoding method to use. An object key may contain any Unicode character;
25634	// however, XML 1.0 parser cannot parse some characters, such as characters
25635	// with an ASCII value from 0 to 10. For characters that are not supported in
25636	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
25637	// keys in the response.
25638	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
25639
25640	// The account ID of the expected bucket owner. If the bucket is owned by a
25641	// different account, the request will fail with an HTTP 403 (Access Denied)
25642	// error.
25643	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25644
25645	// Together with upload-id-marker, this parameter specifies the multipart upload
25646	// after which listing should begin.
25647	//
25648	// If upload-id-marker is not specified, only the keys lexicographically greater
25649	// than the specified key-marker will be included in the list.
25650	//
25651	// If upload-id-marker is specified, any multipart uploads for a key equal to
25652	// the key-marker might also be included, provided those multipart uploads have
25653	// upload IDs lexicographically greater than the specified upload-id-marker.
25654	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
25655
25656	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
25657	// in the response body. 1,000 is the maximum number of uploads that can be
25658	// returned in a response.
25659	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
25660
25661	// Lists in-progress uploads only for those keys that begin with the specified
25662	// prefix. You can use prefixes to separate a bucket into different grouping
25663	// of keys. (You can think of using prefix to make groups in the same way you'd
25664	// use a folder in a file system.)
25665	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
25666
25667	// Together with key-marker, specifies the multipart upload after which listing
25668	// should begin. If key-marker is not specified, the upload-id-marker parameter
25669	// is ignored. Otherwise, any multipart uploads for a key equal to the key-marker
25670	// might be included in the list only if they have an upload ID lexicographically
25671	// greater than the specified upload-id-marker.
25672	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
25673}
25674
25675// String returns the string representation.
25676//
25677// API parameter values that are decorated as "sensitive" in the API will not
25678// be included in the string output. The member name will be present, but the
25679// value will be replaced with "sensitive".
25680func (s ListMultipartUploadsInput) String() string {
25681	return awsutil.Prettify(s)
25682}
25683
25684// GoString returns the string representation.
25685//
25686// API parameter values that are decorated as "sensitive" in the API will not
25687// be included in the string output. The member name will be present, but the
25688// value will be replaced with "sensitive".
25689func (s ListMultipartUploadsInput) GoString() string {
25690	return s.String()
25691}
25692
25693// Validate inspects the fields of the type to determine if they are valid.
25694func (s *ListMultipartUploadsInput) Validate() error {
25695	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
25696	if s.Bucket == nil {
25697		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25698	}
25699	if s.Bucket != nil && len(*s.Bucket) < 1 {
25700		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25701	}
25702
25703	if invalidParams.Len() > 0 {
25704		return invalidParams
25705	}
25706	return nil
25707}
25708
25709// SetBucket sets the Bucket field's value.
25710func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
25711	s.Bucket = &v
25712	return s
25713}
25714
25715func (s *ListMultipartUploadsInput) getBucket() (v string) {
25716	if s.Bucket == nil {
25717		return v
25718	}
25719	return *s.Bucket
25720}
25721
25722// SetDelimiter sets the Delimiter field's value.
25723func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
25724	s.Delimiter = &v
25725	return s
25726}
25727
25728// SetEncodingType sets the EncodingType field's value.
25729func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
25730	s.EncodingType = &v
25731	return s
25732}
25733
25734// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25735func (s *ListMultipartUploadsInput) SetExpectedBucketOwner(v string) *ListMultipartUploadsInput {
25736	s.ExpectedBucketOwner = &v
25737	return s
25738}
25739
25740// SetKeyMarker sets the KeyMarker field's value.
25741func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
25742	s.KeyMarker = &v
25743	return s
25744}
25745
25746// SetMaxUploads sets the MaxUploads field's value.
25747func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
25748	s.MaxUploads = &v
25749	return s
25750}
25751
25752// SetPrefix sets the Prefix field's value.
25753func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
25754	s.Prefix = &v
25755	return s
25756}
25757
25758// SetUploadIdMarker sets the UploadIdMarker field's value.
25759func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
25760	s.UploadIdMarker = &v
25761	return s
25762}
25763
25764func (s *ListMultipartUploadsInput) getEndpointARN() (arn.Resource, error) {
25765	if s.Bucket == nil {
25766		return nil, fmt.Errorf("member Bucket is nil")
25767	}
25768	return parseEndpointARN(*s.Bucket)
25769}
25770
25771func (s *ListMultipartUploadsInput) hasEndpointARN() bool {
25772	if s.Bucket == nil {
25773		return false
25774	}
25775	return arn.IsARN(*s.Bucket)
25776}
25777
25778// updateArnableField updates the value of the input field that
25779// takes an ARN as an input. This method is useful to backfill
25780// the parsed resource name from ARN into the input member.
25781// It returns a pointer to a modified copy of input and an error.
25782// Note that original input is not modified.
25783func (s ListMultipartUploadsInput) updateArnableField(v string) (interface{}, error) {
25784	if s.Bucket == nil {
25785		return nil, fmt.Errorf("member Bucket is nil")
25786	}
25787	s.Bucket = aws.String(v)
25788	return &s, nil
25789}
25790
25791type ListMultipartUploadsOutput struct {
25792	_ struct{} `type:"structure"`
25793
25794	// The name of the bucket to which the multipart upload was initiated. Does
25795	// not return the access point ARN or access point alias if used.
25796	Bucket *string `type:"string"`
25797
25798	// If you specify a delimiter in the request, then the result returns each distinct
25799	// key prefix containing the delimiter in a CommonPrefixes element. The distinct
25800	// key prefixes are returned in the Prefix child element.
25801	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
25802
25803	// Contains the delimiter you specified in the request. If you don't specify
25804	// a delimiter in your request, this element is absent from the response.
25805	Delimiter *string `type:"string"`
25806
25807	// Encoding type used by Amazon S3 to encode object keys in the response.
25808	//
25809	// If you specify encoding-type request parameter, Amazon S3 includes this element
25810	// in the response, and returns encoded key name values in the following response
25811	// elements:
25812	//
25813	// Delimiter, KeyMarker, Prefix, NextKeyMarker, Key.
25814	EncodingType *string `type:"string" enum:"EncodingType"`
25815
25816	// Indicates whether the returned list of multipart uploads is truncated. A
25817	// value of true indicates that the list was truncated. The list can be truncated
25818	// if the number of multipart uploads exceeds the limit allowed or specified
25819	// by max uploads.
25820	IsTruncated *bool `type:"boolean"`
25821
25822	// The key at or after which the listing began.
25823	KeyMarker *string `type:"string"`
25824
25825	// Maximum number of multipart uploads that could have been included in the
25826	// response.
25827	MaxUploads *int64 `type:"integer"`
25828
25829	// When a list is truncated, this element specifies the value that should be
25830	// used for the key-marker request parameter in a subsequent request.
25831	NextKeyMarker *string `type:"string"`
25832
25833	// When a list is truncated, this element specifies the value that should be
25834	// used for the upload-id-marker request parameter in a subsequent request.
25835	NextUploadIdMarker *string `type:"string"`
25836
25837	// When a prefix is provided in the request, this field contains the specified
25838	// prefix. The result contains only keys starting with the specified prefix.
25839	Prefix *string `type:"string"`
25840
25841	// Upload ID after which listing began.
25842	UploadIdMarker *string `type:"string"`
25843
25844	// Container for elements related to a particular multipart upload. A response
25845	// can contain zero or more Upload elements.
25846	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
25847}
25848
25849// String returns the string representation.
25850//
25851// API parameter values that are decorated as "sensitive" in the API will not
25852// be included in the string output. The member name will be present, but the
25853// value will be replaced with "sensitive".
25854func (s ListMultipartUploadsOutput) String() string {
25855	return awsutil.Prettify(s)
25856}
25857
25858// GoString returns the string representation.
25859//
25860// API parameter values that are decorated as "sensitive" in the API will not
25861// be included in the string output. The member name will be present, but the
25862// value will be replaced with "sensitive".
25863func (s ListMultipartUploadsOutput) GoString() string {
25864	return s.String()
25865}
25866
25867// SetBucket sets the Bucket field's value.
25868func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
25869	s.Bucket = &v
25870	return s
25871}
25872
25873func (s *ListMultipartUploadsOutput) getBucket() (v string) {
25874	if s.Bucket == nil {
25875		return v
25876	}
25877	return *s.Bucket
25878}
25879
25880// SetCommonPrefixes sets the CommonPrefixes field's value.
25881func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
25882	s.CommonPrefixes = v
25883	return s
25884}
25885
25886// SetDelimiter sets the Delimiter field's value.
25887func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
25888	s.Delimiter = &v
25889	return s
25890}
25891
25892// SetEncodingType sets the EncodingType field's value.
25893func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
25894	s.EncodingType = &v
25895	return s
25896}
25897
25898// SetIsTruncated sets the IsTruncated field's value.
25899func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
25900	s.IsTruncated = &v
25901	return s
25902}
25903
25904// SetKeyMarker sets the KeyMarker field's value.
25905func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
25906	s.KeyMarker = &v
25907	return s
25908}
25909
25910// SetMaxUploads sets the MaxUploads field's value.
25911func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
25912	s.MaxUploads = &v
25913	return s
25914}
25915
25916// SetNextKeyMarker sets the NextKeyMarker field's value.
25917func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
25918	s.NextKeyMarker = &v
25919	return s
25920}
25921
25922// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
25923func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
25924	s.NextUploadIdMarker = &v
25925	return s
25926}
25927
25928// SetPrefix sets the Prefix field's value.
25929func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
25930	s.Prefix = &v
25931	return s
25932}
25933
25934// SetUploadIdMarker sets the UploadIdMarker field's value.
25935func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
25936	s.UploadIdMarker = &v
25937	return s
25938}
25939
25940// SetUploads sets the Uploads field's value.
25941func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
25942	s.Uploads = v
25943	return s
25944}
25945
25946type ListObjectVersionsInput struct {
25947	_ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"`
25948
25949	// The bucket name that contains the objects.
25950	//
25951	// Bucket is a required field
25952	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25953
25954	// A delimiter is a character that you specify to group keys. All keys that
25955	// contain the same string between the prefix and the first occurrence of the
25956	// delimiter are grouped under a single result element in CommonPrefixes. These
25957	// groups are counted as one result against the max-keys limitation. These keys
25958	// are not returned elsewhere in the response.
25959	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
25960
25961	// Requests Amazon S3 to encode the object keys in the response and specifies
25962	// the encoding method to use. An object key may contain any Unicode character;
25963	// however, XML 1.0 parser cannot parse some characters, such as characters
25964	// with an ASCII value from 0 to 10. For characters that are not supported in
25965	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
25966	// keys in the response.
25967	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
25968
25969	// The account ID of the expected bucket owner. If the bucket is owned by a
25970	// different account, the request will fail with an HTTP 403 (Access Denied)
25971	// error.
25972	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25973
25974	// Specifies the key to start with when listing objects in a bucket.
25975	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
25976
25977	// Sets the maximum number of keys returned in the response. By default the
25978	// action returns up to 1,000 key names. The response might contain fewer keys
25979	// but will never contain more. If additional keys satisfy the search criteria,
25980	// but were not returned because max-keys was exceeded, the response contains
25981	// <isTruncated>true</isTruncated>. To return the additional keys, see key-marker
25982	// and version-id-marker.
25983	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
25984
25985	// Use this parameter to select only those keys that begin with the specified
25986	// prefix. You can use prefixes to separate a bucket into different groupings
25987	// of keys. (You can think of using prefix to make groups in the same way you'd
25988	// use a folder in a file system.) You can use prefix with delimiter to roll
25989	// up numerous objects into a single result under CommonPrefixes.
25990	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
25991
25992	// Specifies the object version you want to start listing from.
25993	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
25994}
25995
25996// String returns the string representation.
25997//
25998// API parameter values that are decorated as "sensitive" in the API will not
25999// be included in the string output. The member name will be present, but the
26000// value will be replaced with "sensitive".
26001func (s ListObjectVersionsInput) String() string {
26002	return awsutil.Prettify(s)
26003}
26004
26005// GoString returns the string representation.
26006//
26007// API parameter values that are decorated as "sensitive" in the API will not
26008// be included in the string output. The member name will be present, but the
26009// value will be replaced with "sensitive".
26010func (s ListObjectVersionsInput) GoString() string {
26011	return s.String()
26012}
26013
26014// Validate inspects the fields of the type to determine if they are valid.
26015func (s *ListObjectVersionsInput) Validate() error {
26016	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
26017	if s.Bucket == nil {
26018		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26019	}
26020	if s.Bucket != nil && len(*s.Bucket) < 1 {
26021		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26022	}
26023
26024	if invalidParams.Len() > 0 {
26025		return invalidParams
26026	}
26027	return nil
26028}
26029
26030// SetBucket sets the Bucket field's value.
26031func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
26032	s.Bucket = &v
26033	return s
26034}
26035
26036func (s *ListObjectVersionsInput) getBucket() (v string) {
26037	if s.Bucket == nil {
26038		return v
26039	}
26040	return *s.Bucket
26041}
26042
26043// SetDelimiter sets the Delimiter field's value.
26044func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
26045	s.Delimiter = &v
26046	return s
26047}
26048
26049// SetEncodingType sets the EncodingType field's value.
26050func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
26051	s.EncodingType = &v
26052	return s
26053}
26054
26055// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26056func (s *ListObjectVersionsInput) SetExpectedBucketOwner(v string) *ListObjectVersionsInput {
26057	s.ExpectedBucketOwner = &v
26058	return s
26059}
26060
26061// SetKeyMarker sets the KeyMarker field's value.
26062func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
26063	s.KeyMarker = &v
26064	return s
26065}
26066
26067// SetMaxKeys sets the MaxKeys field's value.
26068func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
26069	s.MaxKeys = &v
26070	return s
26071}
26072
26073// SetPrefix sets the Prefix field's value.
26074func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
26075	s.Prefix = &v
26076	return s
26077}
26078
26079// SetVersionIdMarker sets the VersionIdMarker field's value.
26080func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
26081	s.VersionIdMarker = &v
26082	return s
26083}
26084
26085func (s *ListObjectVersionsInput) getEndpointARN() (arn.Resource, error) {
26086	if s.Bucket == nil {
26087		return nil, fmt.Errorf("member Bucket is nil")
26088	}
26089	return parseEndpointARN(*s.Bucket)
26090}
26091
26092func (s *ListObjectVersionsInput) hasEndpointARN() bool {
26093	if s.Bucket == nil {
26094		return false
26095	}
26096	return arn.IsARN(*s.Bucket)
26097}
26098
26099// updateArnableField updates the value of the input field that
26100// takes an ARN as an input. This method is useful to backfill
26101// the parsed resource name from ARN into the input member.
26102// It returns a pointer to a modified copy of input and an error.
26103// Note that original input is not modified.
26104func (s ListObjectVersionsInput) updateArnableField(v string) (interface{}, error) {
26105	if s.Bucket == nil {
26106		return nil, fmt.Errorf("member Bucket is nil")
26107	}
26108	s.Bucket = aws.String(v)
26109	return &s, nil
26110}
26111
26112type ListObjectVersionsOutput struct {
26113	_ struct{} `type:"structure"`
26114
26115	// All of the keys rolled up into a common prefix count as a single return when
26116	// calculating the number of returns.
26117	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26118
26119	// Container for an object that is a delete marker.
26120	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
26121
26122	// The delimiter grouping the included keys. A delimiter is a character that
26123	// you specify to group keys. All keys that contain the same string between
26124	// the prefix and the first occurrence of the delimiter are grouped under a
26125	// single result element in CommonPrefixes. These groups are counted as one
26126	// result against the max-keys limitation. These keys are not returned elsewhere
26127	// in the response.
26128	Delimiter *string `type:"string"`
26129
26130	// Encoding type used by Amazon S3 to encode object key names in the XML response.
26131	//
26132	// If you specify encoding-type request parameter, Amazon S3 includes this element
26133	// in the response, and returns encoded key name values in the following response
26134	// elements:
26135	//
26136	// KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.
26137	EncodingType *string `type:"string" enum:"EncodingType"`
26138
26139	// A flag that indicates whether Amazon S3 returned all of the results that
26140	// satisfied the search criteria. If your results were truncated, you can make
26141	// a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
26142	// response parameters as a starting place in another request to return the
26143	// rest of the results.
26144	IsTruncated *bool `type:"boolean"`
26145
26146	// Marks the last key returned in a truncated response.
26147	KeyMarker *string `type:"string"`
26148
26149	// Specifies the maximum number of objects to return.
26150	MaxKeys *int64 `type:"integer"`
26151
26152	// The bucket name.
26153	Name *string `type:"string"`
26154
26155	// When the number of responses exceeds the value of MaxKeys, NextKeyMarker
26156	// specifies the first key not returned that satisfies the search criteria.
26157	// Use this value for the key-marker request parameter in a subsequent request.
26158	NextKeyMarker *string `type:"string"`
26159
26160	// When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker
26161	// specifies the first object version not returned that satisfies the search
26162	// criteria. Use this value for the version-id-marker request parameter in a
26163	// subsequent request.
26164	NextVersionIdMarker *string `type:"string"`
26165
26166	// Selects objects that start with the value supplied by this parameter.
26167	Prefix *string `type:"string"`
26168
26169	// Marks the last version of the key returned in a truncated response.
26170	VersionIdMarker *string `type:"string"`
26171
26172	// Container for version information.
26173	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
26174}
26175
26176// String returns the string representation.
26177//
26178// API parameter values that are decorated as "sensitive" in the API will not
26179// be included in the string output. The member name will be present, but the
26180// value will be replaced with "sensitive".
26181func (s ListObjectVersionsOutput) String() string {
26182	return awsutil.Prettify(s)
26183}
26184
26185// GoString returns the string representation.
26186//
26187// API parameter values that are decorated as "sensitive" in the API will not
26188// be included in the string output. The member name will be present, but the
26189// value will be replaced with "sensitive".
26190func (s ListObjectVersionsOutput) GoString() string {
26191	return s.String()
26192}
26193
26194// SetCommonPrefixes sets the CommonPrefixes field's value.
26195func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
26196	s.CommonPrefixes = v
26197	return s
26198}
26199
26200// SetDeleteMarkers sets the DeleteMarkers field's value.
26201func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
26202	s.DeleteMarkers = v
26203	return s
26204}
26205
26206// SetDelimiter sets the Delimiter field's value.
26207func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
26208	s.Delimiter = &v
26209	return s
26210}
26211
26212// SetEncodingType sets the EncodingType field's value.
26213func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
26214	s.EncodingType = &v
26215	return s
26216}
26217
26218// SetIsTruncated sets the IsTruncated field's value.
26219func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
26220	s.IsTruncated = &v
26221	return s
26222}
26223
26224// SetKeyMarker sets the KeyMarker field's value.
26225func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
26226	s.KeyMarker = &v
26227	return s
26228}
26229
26230// SetMaxKeys sets the MaxKeys field's value.
26231func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
26232	s.MaxKeys = &v
26233	return s
26234}
26235
26236// SetName sets the Name field's value.
26237func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
26238	s.Name = &v
26239	return s
26240}
26241
26242// SetNextKeyMarker sets the NextKeyMarker field's value.
26243func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
26244	s.NextKeyMarker = &v
26245	return s
26246}
26247
26248// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
26249func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
26250	s.NextVersionIdMarker = &v
26251	return s
26252}
26253
26254// SetPrefix sets the Prefix field's value.
26255func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
26256	s.Prefix = &v
26257	return s
26258}
26259
26260// SetVersionIdMarker sets the VersionIdMarker field's value.
26261func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
26262	s.VersionIdMarker = &v
26263	return s
26264}
26265
26266// SetVersions sets the Versions field's value.
26267func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
26268	s.Versions = v
26269	return s
26270}
26271
26272type ListObjectsInput struct {
26273	_ struct{} `locationName:"ListObjectsRequest" type:"structure"`
26274
26275	// The name of the bucket containing the objects.
26276	//
26277	// When using this action with an access point, you must direct requests to
26278	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26279	// When using this action with an access point through the Amazon Web Services
26280	// SDKs, you provide the access point ARN in place of the bucket name. For more
26281	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26282	// in the Amazon S3 User Guide.
26283	//
26284	// When using this action with Amazon S3 on Outposts, you must direct requests
26285	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26286	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26287	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26288	// you provide the Outposts bucket ARN in place of the bucket name. For more
26289	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26290	// in the Amazon S3 User Guide.
26291	//
26292	// Bucket is a required field
26293	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26294
26295	// A delimiter is a character you use to group keys.
26296	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
26297
26298	// Requests Amazon S3 to encode the object keys in the response and specifies
26299	// the encoding method to use. An object key may contain any Unicode character;
26300	// however, XML 1.0 parser cannot parse some characters, such as characters
26301	// with an ASCII value from 0 to 10. For characters that are not supported in
26302	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
26303	// keys in the response.
26304	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
26305
26306	// The account ID of the expected bucket owner. If the bucket is owned by a
26307	// different account, the request will fail with an HTTP 403 (Access Denied)
26308	// error.
26309	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26310
26311	// Marker is where you want Amazon S3 to start listing from. Amazon S3 starts
26312	// listing after this specified key. Marker can be any key in the bucket.
26313	Marker *string `location:"querystring" locationName:"marker" type:"string"`
26314
26315	// Sets the maximum number of keys returned in the response. By default the
26316	// action returns up to 1,000 key names. The response might contain fewer keys
26317	// but will never contain more.
26318	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
26319
26320	// Limits the response to keys that begin with the specified prefix.
26321	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
26322
26323	// Confirms that the requester knows that she or he will be charged for the
26324	// list objects request. Bucket owners need not specify this parameter in their
26325	// requests.
26326	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26327}
26328
26329// String returns the string representation.
26330//
26331// API parameter values that are decorated as "sensitive" in the API will not
26332// be included in the string output. The member name will be present, but the
26333// value will be replaced with "sensitive".
26334func (s ListObjectsInput) String() string {
26335	return awsutil.Prettify(s)
26336}
26337
26338// GoString returns the string representation.
26339//
26340// API parameter values that are decorated as "sensitive" in the API will not
26341// be included in the string output. The member name will be present, but the
26342// value will be replaced with "sensitive".
26343func (s ListObjectsInput) GoString() string {
26344	return s.String()
26345}
26346
26347// Validate inspects the fields of the type to determine if they are valid.
26348func (s *ListObjectsInput) Validate() error {
26349	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
26350	if s.Bucket == nil {
26351		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26352	}
26353	if s.Bucket != nil && len(*s.Bucket) < 1 {
26354		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26355	}
26356
26357	if invalidParams.Len() > 0 {
26358		return invalidParams
26359	}
26360	return nil
26361}
26362
26363// SetBucket sets the Bucket field's value.
26364func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
26365	s.Bucket = &v
26366	return s
26367}
26368
26369func (s *ListObjectsInput) getBucket() (v string) {
26370	if s.Bucket == nil {
26371		return v
26372	}
26373	return *s.Bucket
26374}
26375
26376// SetDelimiter sets the Delimiter field's value.
26377func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
26378	s.Delimiter = &v
26379	return s
26380}
26381
26382// SetEncodingType sets the EncodingType field's value.
26383func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
26384	s.EncodingType = &v
26385	return s
26386}
26387
26388// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26389func (s *ListObjectsInput) SetExpectedBucketOwner(v string) *ListObjectsInput {
26390	s.ExpectedBucketOwner = &v
26391	return s
26392}
26393
26394// SetMarker sets the Marker field's value.
26395func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
26396	s.Marker = &v
26397	return s
26398}
26399
26400// SetMaxKeys sets the MaxKeys field's value.
26401func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
26402	s.MaxKeys = &v
26403	return s
26404}
26405
26406// SetPrefix sets the Prefix field's value.
26407func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
26408	s.Prefix = &v
26409	return s
26410}
26411
26412// SetRequestPayer sets the RequestPayer field's value.
26413func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
26414	s.RequestPayer = &v
26415	return s
26416}
26417
26418func (s *ListObjectsInput) getEndpointARN() (arn.Resource, error) {
26419	if s.Bucket == nil {
26420		return nil, fmt.Errorf("member Bucket is nil")
26421	}
26422	return parseEndpointARN(*s.Bucket)
26423}
26424
26425func (s *ListObjectsInput) hasEndpointARN() bool {
26426	if s.Bucket == nil {
26427		return false
26428	}
26429	return arn.IsARN(*s.Bucket)
26430}
26431
26432// updateArnableField updates the value of the input field that
26433// takes an ARN as an input. This method is useful to backfill
26434// the parsed resource name from ARN into the input member.
26435// It returns a pointer to a modified copy of input and an error.
26436// Note that original input is not modified.
26437func (s ListObjectsInput) updateArnableField(v string) (interface{}, error) {
26438	if s.Bucket == nil {
26439		return nil, fmt.Errorf("member Bucket is nil")
26440	}
26441	s.Bucket = aws.String(v)
26442	return &s, nil
26443}
26444
26445type ListObjectsOutput struct {
26446	_ struct{} `type:"structure"`
26447
26448	// All of the keys (up to 1,000) rolled up in a common prefix count as a single
26449	// return when calculating the number of returns.
26450	//
26451	// A response can contain CommonPrefixes only if you specify a delimiter.
26452	//
26453	// CommonPrefixes contains all (if there are any) keys between Prefix and the
26454	// next occurrence of the string specified by the delimiter.
26455	//
26456	// CommonPrefixes lists keys that act like subdirectories in the directory specified
26457	// by Prefix.
26458	//
26459	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
26460	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
26461	// that roll up into a common prefix count as a single return when calculating
26462	// the number of returns.
26463	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26464
26465	// Metadata about each object returned.
26466	Contents []*Object `type:"list" flattened:"true"`
26467
26468	// Causes keys that contain the same string between the prefix and the first
26469	// occurrence of the delimiter to be rolled up into a single result element
26470	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
26471	// in the response. Each rolled-up result counts as only one return against
26472	// the MaxKeys value.
26473	Delimiter *string `type:"string"`
26474
26475	// Encoding type used by Amazon S3 to encode object keys in the response.
26476	EncodingType *string `type:"string" enum:"EncodingType"`
26477
26478	// A flag that indicates whether Amazon S3 returned all of the results that
26479	// satisfied the search criteria.
26480	IsTruncated *bool `type:"boolean"`
26481
26482	// Indicates where in the bucket listing begins. Marker is included in the response
26483	// if it was sent with the request.
26484	Marker *string `type:"string"`
26485
26486	// The maximum number of keys returned in the response body.
26487	MaxKeys *int64 `type:"integer"`
26488
26489	// The bucket name.
26490	Name *string `type:"string"`
26491
26492	// When response is truncated (the IsTruncated element value in the response
26493	// is true), you can use the key name in this field as marker in the subsequent
26494	// request to get next set of objects. Amazon S3 lists objects in alphabetical
26495	// order Note: This element is returned only if you have delimiter request parameter
26496	// specified. If response does not include the NextMarker and it is truncated,
26497	// you can use the value of the last Key in the response as the marker in the
26498	// subsequent request to get the next set of object keys.
26499	NextMarker *string `type:"string"`
26500
26501	// Keys that begin with the indicated prefix.
26502	Prefix *string `type:"string"`
26503}
26504
26505// String returns the string representation.
26506//
26507// API parameter values that are decorated as "sensitive" in the API will not
26508// be included in the string output. The member name will be present, but the
26509// value will be replaced with "sensitive".
26510func (s ListObjectsOutput) String() string {
26511	return awsutil.Prettify(s)
26512}
26513
26514// GoString returns the string representation.
26515//
26516// API parameter values that are decorated as "sensitive" in the API will not
26517// be included in the string output. The member name will be present, but the
26518// value will be replaced with "sensitive".
26519func (s ListObjectsOutput) GoString() string {
26520	return s.String()
26521}
26522
26523// SetCommonPrefixes sets the CommonPrefixes field's value.
26524func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
26525	s.CommonPrefixes = v
26526	return s
26527}
26528
26529// SetContents sets the Contents field's value.
26530func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
26531	s.Contents = v
26532	return s
26533}
26534
26535// SetDelimiter sets the Delimiter field's value.
26536func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
26537	s.Delimiter = &v
26538	return s
26539}
26540
26541// SetEncodingType sets the EncodingType field's value.
26542func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
26543	s.EncodingType = &v
26544	return s
26545}
26546
26547// SetIsTruncated sets the IsTruncated field's value.
26548func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
26549	s.IsTruncated = &v
26550	return s
26551}
26552
26553// SetMarker sets the Marker field's value.
26554func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
26555	s.Marker = &v
26556	return s
26557}
26558
26559// SetMaxKeys sets the MaxKeys field's value.
26560func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
26561	s.MaxKeys = &v
26562	return s
26563}
26564
26565// SetName sets the Name field's value.
26566func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
26567	s.Name = &v
26568	return s
26569}
26570
26571// SetNextMarker sets the NextMarker field's value.
26572func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
26573	s.NextMarker = &v
26574	return s
26575}
26576
26577// SetPrefix sets the Prefix field's value.
26578func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
26579	s.Prefix = &v
26580	return s
26581}
26582
26583type ListObjectsV2Input struct {
26584	_ struct{} `locationName:"ListObjectsV2Request" type:"structure"`
26585
26586	// Bucket name to list.
26587	//
26588	// When using this action with an access point, you must direct requests to
26589	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26590	// When using this action with an access point through the Amazon Web Services
26591	// SDKs, you provide the access point ARN in place of the bucket name. For more
26592	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26593	// in the Amazon S3 User Guide.
26594	//
26595	// When using this action with Amazon S3 on Outposts, you must direct requests
26596	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26597	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26598	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26599	// you provide the Outposts bucket ARN in place of the bucket name. For more
26600	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26601	// in the Amazon S3 User Guide.
26602	//
26603	// Bucket is a required field
26604	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26605
26606	// ContinuationToken indicates Amazon S3 that the list is being continued on
26607	// this bucket with a token. ContinuationToken is obfuscated and is not a real
26608	// key.
26609	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
26610
26611	// A delimiter is a character you use to group keys.
26612	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
26613
26614	// Encoding type used by Amazon S3 to encode object keys in the response.
26615	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
26616
26617	// The account ID of the expected bucket owner. If the bucket is owned by a
26618	// different account, the request will fail with an HTTP 403 (Access Denied)
26619	// error.
26620	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26621
26622	// The owner field is not present in listV2 by default, if you want to return
26623	// owner field with each key in the result then set the fetch owner field to
26624	// true.
26625	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
26626
26627	// Sets the maximum number of keys returned in the response. By default the
26628	// action returns up to 1,000 key names. The response might contain fewer keys
26629	// but will never contain more.
26630	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
26631
26632	// Limits the response to keys that begin with the specified prefix.
26633	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
26634
26635	// Confirms that the requester knows that she or he will be charged for the
26636	// list objects request in V2 style. Bucket owners need not specify this parameter
26637	// in their requests.
26638	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26639
26640	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
26641	// listing after this specified key. StartAfter can be any key in the bucket.
26642	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
26643}
26644
26645// String returns the string representation.
26646//
26647// API parameter values that are decorated as "sensitive" in the API will not
26648// be included in the string output. The member name will be present, but the
26649// value will be replaced with "sensitive".
26650func (s ListObjectsV2Input) String() string {
26651	return awsutil.Prettify(s)
26652}
26653
26654// GoString returns the string representation.
26655//
26656// API parameter values that are decorated as "sensitive" in the API will not
26657// be included in the string output. The member name will be present, but the
26658// value will be replaced with "sensitive".
26659func (s ListObjectsV2Input) GoString() string {
26660	return s.String()
26661}
26662
26663// Validate inspects the fields of the type to determine if they are valid.
26664func (s *ListObjectsV2Input) Validate() error {
26665	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
26666	if s.Bucket == nil {
26667		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26668	}
26669	if s.Bucket != nil && len(*s.Bucket) < 1 {
26670		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26671	}
26672
26673	if invalidParams.Len() > 0 {
26674		return invalidParams
26675	}
26676	return nil
26677}
26678
26679// SetBucket sets the Bucket field's value.
26680func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
26681	s.Bucket = &v
26682	return s
26683}
26684
26685func (s *ListObjectsV2Input) getBucket() (v string) {
26686	if s.Bucket == nil {
26687		return v
26688	}
26689	return *s.Bucket
26690}
26691
26692// SetContinuationToken sets the ContinuationToken field's value.
26693func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
26694	s.ContinuationToken = &v
26695	return s
26696}
26697
26698// SetDelimiter sets the Delimiter field's value.
26699func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
26700	s.Delimiter = &v
26701	return s
26702}
26703
26704// SetEncodingType sets the EncodingType field's value.
26705func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
26706	s.EncodingType = &v
26707	return s
26708}
26709
26710// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26711func (s *ListObjectsV2Input) SetExpectedBucketOwner(v string) *ListObjectsV2Input {
26712	s.ExpectedBucketOwner = &v
26713	return s
26714}
26715
26716// SetFetchOwner sets the FetchOwner field's value.
26717func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
26718	s.FetchOwner = &v
26719	return s
26720}
26721
26722// SetMaxKeys sets the MaxKeys field's value.
26723func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
26724	s.MaxKeys = &v
26725	return s
26726}
26727
26728// SetPrefix sets the Prefix field's value.
26729func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
26730	s.Prefix = &v
26731	return s
26732}
26733
26734// SetRequestPayer sets the RequestPayer field's value.
26735func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
26736	s.RequestPayer = &v
26737	return s
26738}
26739
26740// SetStartAfter sets the StartAfter field's value.
26741func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
26742	s.StartAfter = &v
26743	return s
26744}
26745
26746func (s *ListObjectsV2Input) getEndpointARN() (arn.Resource, error) {
26747	if s.Bucket == nil {
26748		return nil, fmt.Errorf("member Bucket is nil")
26749	}
26750	return parseEndpointARN(*s.Bucket)
26751}
26752
26753func (s *ListObjectsV2Input) hasEndpointARN() bool {
26754	if s.Bucket == nil {
26755		return false
26756	}
26757	return arn.IsARN(*s.Bucket)
26758}
26759
26760// updateArnableField updates the value of the input field that
26761// takes an ARN as an input. This method is useful to backfill
26762// the parsed resource name from ARN into the input member.
26763// It returns a pointer to a modified copy of input and an error.
26764// Note that original input is not modified.
26765func (s ListObjectsV2Input) updateArnableField(v string) (interface{}, error) {
26766	if s.Bucket == nil {
26767		return nil, fmt.Errorf("member Bucket is nil")
26768	}
26769	s.Bucket = aws.String(v)
26770	return &s, nil
26771}
26772
26773type ListObjectsV2Output struct {
26774	_ struct{} `type:"structure"`
26775
26776	// All of the keys (up to 1,000) rolled up into a common prefix count as a single
26777	// return when calculating the number of returns.
26778	//
26779	// A response can contain CommonPrefixes only if you specify a delimiter.
26780	//
26781	// CommonPrefixes contains all (if there are any) keys between Prefix and the
26782	// next occurrence of the string specified by a delimiter.
26783	//
26784	// CommonPrefixes lists keys that act like subdirectories in the directory specified
26785	// by Prefix.
26786	//
26787	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
26788	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
26789	// that roll up into a common prefix count as a single return when calculating
26790	// the number of returns.
26791	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26792
26793	// Metadata about each object returned.
26794	Contents []*Object `type:"list" flattened:"true"`
26795
26796	// If ContinuationToken was sent with the request, it is included in the response.
26797	ContinuationToken *string `type:"string"`
26798
26799	// Causes keys that contain the same string between the prefix and the first
26800	// occurrence of the delimiter to be rolled up into a single result element
26801	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
26802	// in the response. Each rolled-up result counts as only one return against
26803	// the MaxKeys value.
26804	Delimiter *string `type:"string"`
26805
26806	// Encoding type used by Amazon S3 to encode object key names in the XML response.
26807	//
26808	// If you specify the encoding-type request parameter, Amazon S3 includes this
26809	// element in the response, and returns encoded key name values in the following
26810	// response elements:
26811	//
26812	// Delimiter, Prefix, Key, and StartAfter.
26813	EncodingType *string `type:"string" enum:"EncodingType"`
26814
26815	// Set to false if all of the results were returned. Set to true if more keys
26816	// are available to return. If the number of results exceeds that specified
26817	// by MaxKeys, all of the results might not be returned.
26818	IsTruncated *bool `type:"boolean"`
26819
26820	// KeyCount is the number of keys returned with this request. KeyCount will
26821	// always be less than or equals to MaxKeys field. Say you ask for 50 keys,
26822	// your result will include less than equals 50 keys
26823	KeyCount *int64 `type:"integer"`
26824
26825	// Sets the maximum number of keys returned in the response. By default the
26826	// action returns up to 1,000 key names. The response might contain fewer keys
26827	// but will never contain more.
26828	MaxKeys *int64 `type:"integer"`
26829
26830	// The bucket name.
26831	//
26832	// When using this action with an access point, you must direct requests to
26833	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26834	// When using this action with an access point through the Amazon Web Services
26835	// SDKs, you provide the access point ARN in place of the bucket name. For more
26836	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26837	// in the Amazon S3 User Guide.
26838	//
26839	// When using this action with Amazon S3 on Outposts, you must direct requests
26840	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26841	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26842	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26843	// you provide the Outposts bucket ARN in place of the bucket name. For more
26844	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26845	// in the Amazon S3 User Guide.
26846	Name *string `type:"string"`
26847
26848	// NextContinuationToken is sent when isTruncated is true, which means there
26849	// are more keys in the bucket that can be listed. The next list requests to
26850	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
26851	// is obfuscated and is not a real key
26852	NextContinuationToken *string `type:"string"`
26853
26854	// Keys that begin with the indicated prefix.
26855	Prefix *string `type:"string"`
26856
26857	// If StartAfter was sent with the request, it is included in the response.
26858	StartAfter *string `type:"string"`
26859}
26860
26861// String returns the string representation.
26862//
26863// API parameter values that are decorated as "sensitive" in the API will not
26864// be included in the string output. The member name will be present, but the
26865// value will be replaced with "sensitive".
26866func (s ListObjectsV2Output) String() string {
26867	return awsutil.Prettify(s)
26868}
26869
26870// GoString returns the string representation.
26871//
26872// API parameter values that are decorated as "sensitive" in the API will not
26873// be included in the string output. The member name will be present, but the
26874// value will be replaced with "sensitive".
26875func (s ListObjectsV2Output) GoString() string {
26876	return s.String()
26877}
26878
26879// SetCommonPrefixes sets the CommonPrefixes field's value.
26880func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
26881	s.CommonPrefixes = v
26882	return s
26883}
26884
26885// SetContents sets the Contents field's value.
26886func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
26887	s.Contents = v
26888	return s
26889}
26890
26891// SetContinuationToken sets the ContinuationToken field's value.
26892func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
26893	s.ContinuationToken = &v
26894	return s
26895}
26896
26897// SetDelimiter sets the Delimiter field's value.
26898func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
26899	s.Delimiter = &v
26900	return s
26901}
26902
26903// SetEncodingType sets the EncodingType field's value.
26904func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
26905	s.EncodingType = &v
26906	return s
26907}
26908
26909// SetIsTruncated sets the IsTruncated field's value.
26910func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
26911	s.IsTruncated = &v
26912	return s
26913}
26914
26915// SetKeyCount sets the KeyCount field's value.
26916func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
26917	s.KeyCount = &v
26918	return s
26919}
26920
26921// SetMaxKeys sets the MaxKeys field's value.
26922func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
26923	s.MaxKeys = &v
26924	return s
26925}
26926
26927// SetName sets the Name field's value.
26928func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
26929	s.Name = &v
26930	return s
26931}
26932
26933// SetNextContinuationToken sets the NextContinuationToken field's value.
26934func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
26935	s.NextContinuationToken = &v
26936	return s
26937}
26938
26939// SetPrefix sets the Prefix field's value.
26940func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
26941	s.Prefix = &v
26942	return s
26943}
26944
26945// SetStartAfter sets the StartAfter field's value.
26946func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
26947	s.StartAfter = &v
26948	return s
26949}
26950
26951type ListPartsInput struct {
26952	_ struct{} `locationName:"ListPartsRequest" type:"structure"`
26953
26954	// The name of the bucket to which the parts are being uploaded.
26955	//
26956	// When using this action with an access point, you must direct requests to
26957	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26958	// When using this action with an access point through the Amazon Web Services
26959	// SDKs, you provide the access point ARN in place of the bucket name. For more
26960	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26961	// in the Amazon S3 User Guide.
26962	//
26963	// When using this action with Amazon S3 on Outposts, you must direct requests
26964	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26965	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26966	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26967	// you provide the Outposts bucket ARN in place of the bucket name. For more
26968	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26969	// in the Amazon S3 User Guide.
26970	//
26971	// Bucket is a required field
26972	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26973
26974	// The account ID of the expected bucket owner. If the bucket is owned by a
26975	// different account, the request will fail with an HTTP 403 (Access Denied)
26976	// error.
26977	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26978
26979	// Object key for which the multipart upload was initiated.
26980	//
26981	// Key is a required field
26982	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26983
26984	// Sets the maximum number of parts to return.
26985	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
26986
26987	// Specifies the part after which listing should begin. Only parts with higher
26988	// part numbers will be listed.
26989	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
26990
26991	// Confirms that the requester knows that they will be charged for the request.
26992	// Bucket owners need not specify this parameter in their requests. For information
26993	// about downloading objects from requester pays buckets, see Downloading Objects
26994	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26995	// in the Amazon S3 User Guide.
26996	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26997
26998	// Upload ID identifying the multipart upload whose parts are being listed.
26999	//
27000	// UploadId is a required field
27001	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
27002}
27003
27004// String returns the string representation.
27005//
27006// API parameter values that are decorated as "sensitive" in the API will not
27007// be included in the string output. The member name will be present, but the
27008// value will be replaced with "sensitive".
27009func (s ListPartsInput) String() string {
27010	return awsutil.Prettify(s)
27011}
27012
27013// GoString returns the string representation.
27014//
27015// API parameter values that are decorated as "sensitive" in the API will not
27016// be included in the string output. The member name will be present, but the
27017// value will be replaced with "sensitive".
27018func (s ListPartsInput) GoString() string {
27019	return s.String()
27020}
27021
27022// Validate inspects the fields of the type to determine if they are valid.
27023func (s *ListPartsInput) Validate() error {
27024	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
27025	if s.Bucket == nil {
27026		invalidParams.Add(request.NewErrParamRequired("Bucket"))
27027	}
27028	if s.Bucket != nil && len(*s.Bucket) < 1 {
27029		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
27030	}
27031	if s.Key == nil {
27032		invalidParams.Add(request.NewErrParamRequired("Key"))
27033	}
27034	if s.Key != nil && len(*s.Key) < 1 {
27035		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
27036	}
27037	if s.UploadId == nil {
27038		invalidParams.Add(request.NewErrParamRequired("UploadId"))
27039	}
27040
27041	if invalidParams.Len() > 0 {
27042		return invalidParams
27043	}
27044	return nil
27045}
27046
27047// SetBucket sets the Bucket field's value.
27048func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
27049	s.Bucket = &v
27050	return s
27051}
27052
27053func (s *ListPartsInput) getBucket() (v string) {
27054	if s.Bucket == nil {
27055		return v
27056	}
27057	return *s.Bucket
27058}
27059
27060// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
27061func (s *ListPartsInput) SetExpectedBucketOwner(v string) *ListPartsInput {
27062	s.ExpectedBucketOwner = &v
27063	return s
27064}
27065
27066// SetKey sets the Key field's value.
27067func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
27068	s.Key = &v
27069	return s
27070}
27071
27072// SetMaxParts sets the MaxParts field's value.
27073func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
27074	s.MaxParts = &v
27075	return s
27076}
27077
27078// SetPartNumberMarker sets the PartNumberMarker field's value.
27079func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
27080	s.PartNumberMarker = &v
27081	return s
27082}
27083
27084// SetRequestPayer sets the RequestPayer field's value.
27085func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
27086	s.RequestPayer = &v
27087	return s
27088}
27089
27090// SetUploadId sets the UploadId field's value.
27091func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
27092	s.UploadId = &v
27093	return s
27094}
27095
27096func (s *ListPartsInput) getEndpointARN() (arn.Resource, error) {
27097	if s.Bucket == nil {
27098		return nil, fmt.Errorf("member Bucket is nil")
27099	}
27100	return parseEndpointARN(*s.Bucket)
27101}
27102
27103func (s *ListPartsInput) hasEndpointARN() bool {
27104	if s.Bucket == nil {
27105		return false
27106	}
27107	return arn.IsARN(*s.Bucket)
27108}
27109
27110// updateArnableField updates the value of the input field that
27111// takes an ARN as an input. This method is useful to backfill
27112// the parsed resource name from ARN into the input member.
27113// It returns a pointer to a modified copy of input and an error.
27114// Note that original input is not modified.
27115func (s ListPartsInput) updateArnableField(v string) (interface{}, error) {
27116	if s.Bucket == nil {
27117		return nil, fmt.Errorf("member Bucket is nil")
27118	}
27119	s.Bucket = aws.String(v)
27120	return &s, nil
27121}
27122
27123type ListPartsOutput struct {
27124	_ struct{} `type:"structure"`
27125
27126	// If the bucket has a lifecycle rule configured with an action to abort incomplete
27127	// multipart uploads and the prefix in the lifecycle rule matches the object
27128	// name in the request, then the response includes this header indicating when
27129	// the initiated multipart upload will become eligible for abort operation.
27130	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
27131	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
27132	//
27133	// The response will also include the x-amz-abort-rule-id header that will provide
27134	// the ID of the lifecycle configuration rule that defines this action.
27135	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
27136
27137	// This header is returned along with the x-amz-abort-date header. It identifies
27138	// applicable lifecycle configuration rule that defines the action to abort
27139	// incomplete multipart uploads.
27140	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
27141
27142	// The name of the bucket to which the multipart upload was initiated. Does
27143	// not return the access point ARN or access point alias if used.
27144	Bucket *string `type:"string"`
27145
27146	// Container element that identifies who initiated the multipart upload. If
27147	// the initiator is an Amazon Web Services account, this element provides the
27148	// same information as the Owner element. If the initiator is an IAM User, this
27149	// element provides the user ARN and display name.
27150	Initiator *Initiator `type:"structure"`
27151
27152	// Indicates whether the returned list of parts is truncated. A true value indicates
27153	// that the list was truncated. A list can be truncated if the number of parts
27154	// exceeds the limit returned in the MaxParts element.
27155	IsTruncated *bool `type:"boolean"`
27156
27157	// Object key for which the multipart upload was initiated.
27158	Key *string `min:"1" type:"string"`
27159
27160	// Maximum number of parts that were allowed in the response.
27161	MaxParts *int64 `type:"integer"`
27162
27163	// When a list is truncated, this element specifies the last part in the list,
27164	// as well as the value to use for the part-number-marker request parameter
27165	// in a subsequent request.
27166	NextPartNumberMarker *int64 `type:"integer"`
27167
27168	// Container element that identifies the object owner, after the object is created.
27169	// If multipart upload is initiated by an IAM user, this element provides the
27170	// parent account ID and display name.
27171	Owner *Owner `type:"structure"`
27172
27173	// When a list is truncated, this element specifies the last part in the list,
27174	// as well as the value to use for the part-number-marker request parameter
27175	// in a subsequent request.
27176	PartNumberMarker *int64 `type:"integer"`
27177
27178	// Container for elements related to a particular part. A response can contain
27179	// zero or more Part elements.
27180	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
27181
27182	// If present, indicates that the requester was successfully charged for the
27183	// request.
27184	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
27185
27186	// Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
27187	// object.
27188	StorageClass *string `type:"string" enum:"StorageClass"`
27189
27190	// Upload ID identifying the multipart upload whose parts are being listed.
27191	UploadId *string `type:"string"`
27192}
27193
27194// String returns the string representation.
27195//
27196// API parameter values that are decorated as "sensitive" in the API will not
27197// be included in the string output. The member name will be present, but the
27198// value will be replaced with "sensitive".
27199func (s ListPartsOutput) String() string {
27200	return awsutil.Prettify(s)
27201}
27202
27203// GoString returns the string representation.
27204//
27205// API parameter values that are decorated as "sensitive" in the API will not
27206// be included in the string output. The member name will be present, but the
27207// value will be replaced with "sensitive".
27208func (s ListPartsOutput) GoString() string {
27209	return s.String()
27210}
27211
27212// SetAbortDate sets the AbortDate field's value.
27213func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
27214	s.AbortDate = &v
27215	return s
27216}
27217
27218// SetAbortRuleId sets the AbortRuleId field's value.
27219func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
27220	s.AbortRuleId = &v
27221	return s
27222}
27223
27224// SetBucket sets the Bucket field's value.
27225func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
27226	s.Bucket = &v
27227	return s
27228}
27229
27230func (s *ListPartsOutput) getBucket() (v string) {
27231	if s.Bucket == nil {
27232		return v
27233	}
27234	return *s.Bucket
27235}
27236
27237// SetInitiator sets the Initiator field's value.
27238func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
27239	s.Initiator = v
27240	return s
27241}
27242
27243// SetIsTruncated sets the IsTruncated field's value.
27244func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
27245	s.IsTruncated = &v
27246	return s
27247}
27248
27249// SetKey sets the Key field's value.
27250func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
27251	s.Key = &v
27252	return s
27253}
27254
27255// SetMaxParts sets the MaxParts field's value.
27256func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
27257	s.MaxParts = &v
27258	return s
27259}
27260
27261// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
27262func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
27263	s.NextPartNumberMarker = &v
27264	return s
27265}
27266
27267// SetOwner sets the Owner field's value.
27268func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
27269	s.Owner = v
27270	return s
27271}
27272
27273// SetPartNumberMarker sets the PartNumberMarker field's value.
27274func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
27275	s.PartNumberMarker = &v
27276	return s
27277}
27278
27279// SetParts sets the Parts field's value.
27280func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
27281	s.Parts = v
27282	return s
27283}
27284
27285// SetRequestCharged sets the RequestCharged field's value.
27286func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
27287	s.RequestCharged = &v
27288	return s
27289}
27290
27291// SetStorageClass sets the StorageClass field's value.
27292func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
27293	s.StorageClass = &v
27294	return s
27295}
27296
27297// SetUploadId sets the UploadId field's value.
27298func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
27299	s.UploadId = &v
27300	return s
27301}
27302
27303// Describes an Amazon S3 location that will receive the results of the restore
27304// request.
27305type Location struct {
27306	_ struct{} `type:"structure"`
27307
27308	// A list of grants that control access to the staged results.
27309	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
27310
27311	// The name of the bucket where the restore results will be placed.
27312	//
27313	// BucketName is a required field
27314	BucketName *string `type:"string" required:"true"`
27315
27316	// The canned ACL to apply to the restore results.
27317	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
27318
27319	// Contains the type of server-side encryption used.
27320	Encryption *Encryption `type:"structure"`
27321
27322	// The prefix that is prepended to the restore results for this request.
27323	//
27324	// Prefix is a required field
27325	Prefix *string `type:"string" required:"true"`
27326
27327	// The class of storage used to store the restore results.
27328	StorageClass *string `type:"string" enum:"StorageClass"`
27329
27330	// The tag-set that is applied to the restore results.
27331	Tagging *Tagging `type:"structure"`
27332
27333	// A list of metadata to store with the restore results in S3.
27334	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
27335}
27336
27337// String returns the string representation.
27338//
27339// API parameter values that are decorated as "sensitive" in the API will not
27340// be included in the string output. The member name will be present, but the
27341// value will be replaced with "sensitive".
27342func (s Location) String() string {
27343	return awsutil.Prettify(s)
27344}
27345
27346// GoString returns the string representation.
27347//
27348// API parameter values that are decorated as "sensitive" in the API will not
27349// be included in the string output. The member name will be present, but the
27350// value will be replaced with "sensitive".
27351func (s Location) GoString() string {
27352	return s.String()
27353}
27354
27355// Validate inspects the fields of the type to determine if they are valid.
27356func (s *Location) Validate() error {
27357	invalidParams := request.ErrInvalidParams{Context: "Location"}
27358	if s.BucketName == nil {
27359		invalidParams.Add(request.NewErrParamRequired("BucketName"))
27360	}
27361	if s.Prefix == nil {
27362		invalidParams.Add(request.NewErrParamRequired("Prefix"))
27363	}
27364	if s.AccessControlList != nil {
27365		for i, v := range s.AccessControlList {
27366			if v == nil {
27367				continue
27368			}
27369			if err := v.Validate(); err != nil {
27370				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
27371			}
27372		}
27373	}
27374	if s.Encryption != nil {
27375		if err := s.Encryption.Validate(); err != nil {
27376			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
27377		}
27378	}
27379	if s.Tagging != nil {
27380		if err := s.Tagging.Validate(); err != nil {
27381			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
27382		}
27383	}
27384
27385	if invalidParams.Len() > 0 {
27386		return invalidParams
27387	}
27388	return nil
27389}
27390
27391// SetAccessControlList sets the AccessControlList field's value.
27392func (s *Location) SetAccessControlList(v []*Grant) *Location {
27393	s.AccessControlList = v
27394	return s
27395}
27396
27397// SetBucketName sets the BucketName field's value.
27398func (s *Location) SetBucketName(v string) *Location {
27399	s.BucketName = &v
27400	return s
27401}
27402
27403// SetCannedACL sets the CannedACL field's value.
27404func (s *Location) SetCannedACL(v string) *Location {
27405	s.CannedACL = &v
27406	return s
27407}
27408
27409// SetEncryption sets the Encryption field's value.
27410func (s *Location) SetEncryption(v *Encryption) *Location {
27411	s.Encryption = v
27412	return s
27413}
27414
27415// SetPrefix sets the Prefix field's value.
27416func (s *Location) SetPrefix(v string) *Location {
27417	s.Prefix = &v
27418	return s
27419}
27420
27421// SetStorageClass sets the StorageClass field's value.
27422func (s *Location) SetStorageClass(v string) *Location {
27423	s.StorageClass = &v
27424	return s
27425}
27426
27427// SetTagging sets the Tagging field's value.
27428func (s *Location) SetTagging(v *Tagging) *Location {
27429	s.Tagging = v
27430	return s
27431}
27432
27433// SetUserMetadata sets the UserMetadata field's value.
27434func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
27435	s.UserMetadata = v
27436	return s
27437}
27438
27439// Describes where logs are stored and the prefix that Amazon S3 assigns to
27440// all log object keys for a bucket. For more information, see PUT Bucket logging
27441// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
27442// in the Amazon S3 API Reference.
27443type LoggingEnabled struct {
27444	_ struct{} `type:"structure"`
27445
27446	// Specifies the bucket where you want Amazon S3 to store server access logs.
27447	// You can have your logs delivered to any bucket that you own, including the
27448	// same bucket that is being logged. You can also configure multiple buckets
27449	// to deliver their logs to the same target bucket. In this case, you should
27450	// choose a different TargetPrefix for each source bucket so that the delivered
27451	// log files can be distinguished by key.
27452	//
27453	// TargetBucket is a required field
27454	TargetBucket *string `type:"string" required:"true"`
27455
27456	// Container for granting information.
27457	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
27458
27459	// A prefix for all log object keys. If you store log files from multiple Amazon
27460	// S3 buckets in a single bucket, you can use a prefix to distinguish which
27461	// log files came from which bucket.
27462	//
27463	// TargetPrefix is a required field
27464	TargetPrefix *string `type:"string" required:"true"`
27465}
27466
27467// String returns the string representation.
27468//
27469// API parameter values that are decorated as "sensitive" in the API will not
27470// be included in the string output. The member name will be present, but the
27471// value will be replaced with "sensitive".
27472func (s LoggingEnabled) String() string {
27473	return awsutil.Prettify(s)
27474}
27475
27476// GoString returns the string representation.
27477//
27478// API parameter values that are decorated as "sensitive" in the API will not
27479// be included in the string output. The member name will be present, but the
27480// value will be replaced with "sensitive".
27481func (s LoggingEnabled) GoString() string {
27482	return s.String()
27483}
27484
27485// Validate inspects the fields of the type to determine if they are valid.
27486func (s *LoggingEnabled) Validate() error {
27487	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
27488	if s.TargetBucket == nil {
27489		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
27490	}
27491	if s.TargetPrefix == nil {
27492		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
27493	}
27494	if s.TargetGrants != nil {
27495		for i, v := range s.TargetGrants {
27496			if v == nil {
27497				continue
27498			}
27499			if err := v.Validate(); err != nil {
27500				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
27501			}
27502		}
27503	}
27504
27505	if invalidParams.Len() > 0 {
27506		return invalidParams
27507	}
27508	return nil
27509}
27510
27511// SetTargetBucket sets the TargetBucket field's value.
27512func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
27513	s.TargetBucket = &v
27514	return s
27515}
27516
27517// SetTargetGrants sets the TargetGrants field's value.
27518func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
27519	s.TargetGrants = v
27520	return s
27521}
27522
27523// SetTargetPrefix sets the TargetPrefix field's value.
27524func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
27525	s.TargetPrefix = &v
27526	return s
27527}
27528
27529// A metadata key-value pair to store with an object.
27530type MetadataEntry struct {
27531	_ struct{} `type:"structure"`
27532
27533	// Name of the Object.
27534	Name *string `type:"string"`
27535
27536	// Value of the Object.
27537	Value *string `type:"string"`
27538}
27539
27540// String returns the string representation.
27541//
27542// API parameter values that are decorated as "sensitive" in the API will not
27543// be included in the string output. The member name will be present, but the
27544// value will be replaced with "sensitive".
27545func (s MetadataEntry) String() string {
27546	return awsutil.Prettify(s)
27547}
27548
27549// GoString returns the string representation.
27550//
27551// API parameter values that are decorated as "sensitive" in the API will not
27552// be included in the string output. The member name will be present, but the
27553// value will be replaced with "sensitive".
27554func (s MetadataEntry) GoString() string {
27555	return s.String()
27556}
27557
27558// SetName sets the Name field's value.
27559func (s *MetadataEntry) SetName(v string) *MetadataEntry {
27560	s.Name = &v
27561	return s
27562}
27563
27564// SetValue sets the Value field's value.
27565func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
27566	s.Value = &v
27567	return s
27568}
27569
27570// A container specifying replication metrics-related settings enabling replication
27571// metrics and events.
27572type Metrics struct {
27573	_ struct{} `type:"structure"`
27574
27575	// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
27576	// event.
27577	EventThreshold *ReplicationTimeValue `type:"structure"`
27578
27579	// Specifies whether the replication metrics are enabled.
27580	//
27581	// Status is a required field
27582	Status *string `type:"string" required:"true" enum:"MetricsStatus"`
27583}
27584
27585// String returns the string representation.
27586//
27587// API parameter values that are decorated as "sensitive" in the API will not
27588// be included in the string output. The member name will be present, but the
27589// value will be replaced with "sensitive".
27590func (s Metrics) String() string {
27591	return awsutil.Prettify(s)
27592}
27593
27594// GoString returns the string representation.
27595//
27596// API parameter values that are decorated as "sensitive" in the API will not
27597// be included in the string output. The member name will be present, but the
27598// value will be replaced with "sensitive".
27599func (s Metrics) GoString() string {
27600	return s.String()
27601}
27602
27603// Validate inspects the fields of the type to determine if they are valid.
27604func (s *Metrics) Validate() error {
27605	invalidParams := request.ErrInvalidParams{Context: "Metrics"}
27606	if s.Status == nil {
27607		invalidParams.Add(request.NewErrParamRequired("Status"))
27608	}
27609
27610	if invalidParams.Len() > 0 {
27611		return invalidParams
27612	}
27613	return nil
27614}
27615
27616// SetEventThreshold sets the EventThreshold field's value.
27617func (s *Metrics) SetEventThreshold(v *ReplicationTimeValue) *Metrics {
27618	s.EventThreshold = v
27619	return s
27620}
27621
27622// SetStatus sets the Status field's value.
27623func (s *Metrics) SetStatus(v string) *Metrics {
27624	s.Status = &v
27625	return s
27626}
27627
27628// A conjunction (logical AND) of predicates, which is used in evaluating a
27629// metrics filter. The operator must have at least two predicates, and an object
27630// must match all of the predicates in order for the filter to apply.
27631type MetricsAndOperator struct {
27632	_ struct{} `type:"structure"`
27633
27634	// The access point ARN used when evaluating an AND predicate.
27635	AccessPointArn *string `type:"string"`
27636
27637	// The prefix used when evaluating an AND predicate.
27638	Prefix *string `type:"string"`
27639
27640	// The list of tags used when evaluating an AND predicate.
27641	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
27642}
27643
27644// String returns the string representation.
27645//
27646// API parameter values that are decorated as "sensitive" in the API will not
27647// be included in the string output. The member name will be present, but the
27648// value will be replaced with "sensitive".
27649func (s MetricsAndOperator) String() string {
27650	return awsutil.Prettify(s)
27651}
27652
27653// GoString returns the string representation.
27654//
27655// API parameter values that are decorated as "sensitive" in the API will not
27656// be included in the string output. The member name will be present, but the
27657// value will be replaced with "sensitive".
27658func (s MetricsAndOperator) GoString() string {
27659	return s.String()
27660}
27661
27662// Validate inspects the fields of the type to determine if they are valid.
27663func (s *MetricsAndOperator) Validate() error {
27664	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
27665	if s.Tags != nil {
27666		for i, v := range s.Tags {
27667			if v == nil {
27668				continue
27669			}
27670			if err := v.Validate(); err != nil {
27671				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
27672			}
27673		}
27674	}
27675
27676	if invalidParams.Len() > 0 {
27677		return invalidParams
27678	}
27679	return nil
27680}
27681
27682// SetAccessPointArn sets the AccessPointArn field's value.
27683func (s *MetricsAndOperator) SetAccessPointArn(v string) *MetricsAndOperator {
27684	s.AccessPointArn = &v
27685	return s
27686}
27687
27688// SetPrefix sets the Prefix field's value.
27689func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
27690	s.Prefix = &v
27691	return s
27692}
27693
27694// SetTags sets the Tags field's value.
27695func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
27696	s.Tags = v
27697	return s
27698}
27699
27700// Specifies a metrics configuration for the CloudWatch request metrics (specified
27701// by the metrics configuration ID) from an Amazon S3 bucket. If you're updating
27702// an existing metrics configuration, note that this is a full replacement of
27703// the existing metrics configuration. If you don't include the elements you
27704// want to keep, they are erased. For more information, see PutBucketMetricsConfiguration
27705// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).
27706type MetricsConfiguration struct {
27707	_ struct{} `type:"structure"`
27708
27709	// Specifies a metrics configuration filter. The metrics configuration will
27710	// only include objects that meet the filter's criteria. A filter must be a
27711	// prefix, an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
27712	Filter *MetricsFilter `type:"structure"`
27713
27714	// The ID used to identify the metrics configuration.
27715	//
27716	// Id is a required field
27717	Id *string `type:"string" required:"true"`
27718}
27719
27720// String returns the string representation.
27721//
27722// API parameter values that are decorated as "sensitive" in the API will not
27723// be included in the string output. The member name will be present, but the
27724// value will be replaced with "sensitive".
27725func (s MetricsConfiguration) String() string {
27726	return awsutil.Prettify(s)
27727}
27728
27729// GoString returns the string representation.
27730//
27731// API parameter values that are decorated as "sensitive" in the API will not
27732// be included in the string output. The member name will be present, but the
27733// value will be replaced with "sensitive".
27734func (s MetricsConfiguration) GoString() string {
27735	return s.String()
27736}
27737
27738// Validate inspects the fields of the type to determine if they are valid.
27739func (s *MetricsConfiguration) Validate() error {
27740	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
27741	if s.Id == nil {
27742		invalidParams.Add(request.NewErrParamRequired("Id"))
27743	}
27744	if s.Filter != nil {
27745		if err := s.Filter.Validate(); err != nil {
27746			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
27747		}
27748	}
27749
27750	if invalidParams.Len() > 0 {
27751		return invalidParams
27752	}
27753	return nil
27754}
27755
27756// SetFilter sets the Filter field's value.
27757func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
27758	s.Filter = v
27759	return s
27760}
27761
27762// SetId sets the Id field's value.
27763func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
27764	s.Id = &v
27765	return s
27766}
27767
27768// Specifies a metrics configuration filter. The metrics configuration only
27769// includes objects that meet the filter's criteria. A filter must be a prefix,
27770// an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
27771// For more information, see PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html).
27772type MetricsFilter struct {
27773	_ struct{} `type:"structure"`
27774
27775	// The access point ARN used when evaluating a metrics filter.
27776	AccessPointArn *string `type:"string"`
27777
27778	// A conjunction (logical AND) of predicates, which is used in evaluating a
27779	// metrics filter. The operator must have at least two predicates, and an object
27780	// must match all of the predicates in order for the filter to apply.
27781	And *MetricsAndOperator `type:"structure"`
27782
27783	// The prefix used when evaluating a metrics filter.
27784	Prefix *string `type:"string"`
27785
27786	// The tag used when evaluating a metrics filter.
27787	Tag *Tag `type:"structure"`
27788}
27789
27790// String returns the string representation.
27791//
27792// API parameter values that are decorated as "sensitive" in the API will not
27793// be included in the string output. The member name will be present, but the
27794// value will be replaced with "sensitive".
27795func (s MetricsFilter) String() string {
27796	return awsutil.Prettify(s)
27797}
27798
27799// GoString returns the string representation.
27800//
27801// API parameter values that are decorated as "sensitive" in the API will not
27802// be included in the string output. The member name will be present, but the
27803// value will be replaced with "sensitive".
27804func (s MetricsFilter) GoString() string {
27805	return s.String()
27806}
27807
27808// Validate inspects the fields of the type to determine if they are valid.
27809func (s *MetricsFilter) Validate() error {
27810	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
27811	if s.And != nil {
27812		if err := s.And.Validate(); err != nil {
27813			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
27814		}
27815	}
27816	if s.Tag != nil {
27817		if err := s.Tag.Validate(); err != nil {
27818			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
27819		}
27820	}
27821
27822	if invalidParams.Len() > 0 {
27823		return invalidParams
27824	}
27825	return nil
27826}
27827
27828// SetAccessPointArn sets the AccessPointArn field's value.
27829func (s *MetricsFilter) SetAccessPointArn(v string) *MetricsFilter {
27830	s.AccessPointArn = &v
27831	return s
27832}
27833
27834// SetAnd sets the And field's value.
27835func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
27836	s.And = v
27837	return s
27838}
27839
27840// SetPrefix sets the Prefix field's value.
27841func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
27842	s.Prefix = &v
27843	return s
27844}
27845
27846// SetTag sets the Tag field's value.
27847func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
27848	s.Tag = v
27849	return s
27850}
27851
27852// Container for the MultipartUpload for the Amazon S3 object.
27853type MultipartUpload struct {
27854	_ struct{} `type:"structure"`
27855
27856	// Date and time at which the multipart upload was initiated.
27857	Initiated *time.Time `type:"timestamp"`
27858
27859	// Identifies who initiated the multipart upload.
27860	Initiator *Initiator `type:"structure"`
27861
27862	// Key of the object for which the multipart upload was initiated.
27863	Key *string `min:"1" type:"string"`
27864
27865	// Specifies the owner of the object that is part of the multipart upload.
27866	Owner *Owner `type:"structure"`
27867
27868	// The class of storage used to store the object.
27869	StorageClass *string `type:"string" enum:"StorageClass"`
27870
27871	// Upload ID that identifies the multipart upload.
27872	UploadId *string `type:"string"`
27873}
27874
27875// String returns the string representation.
27876//
27877// API parameter values that are decorated as "sensitive" in the API will not
27878// be included in the string output. The member name will be present, but the
27879// value will be replaced with "sensitive".
27880func (s MultipartUpload) String() string {
27881	return awsutil.Prettify(s)
27882}
27883
27884// GoString returns the string representation.
27885//
27886// API parameter values that are decorated as "sensitive" in the API will not
27887// be included in the string output. The member name will be present, but the
27888// value will be replaced with "sensitive".
27889func (s MultipartUpload) GoString() string {
27890	return s.String()
27891}
27892
27893// SetInitiated sets the Initiated field's value.
27894func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
27895	s.Initiated = &v
27896	return s
27897}
27898
27899// SetInitiator sets the Initiator field's value.
27900func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
27901	s.Initiator = v
27902	return s
27903}
27904
27905// SetKey sets the Key field's value.
27906func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
27907	s.Key = &v
27908	return s
27909}
27910
27911// SetOwner sets the Owner field's value.
27912func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
27913	s.Owner = v
27914	return s
27915}
27916
27917// SetStorageClass sets the StorageClass field's value.
27918func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
27919	s.StorageClass = &v
27920	return s
27921}
27922
27923// SetUploadId sets the UploadId field's value.
27924func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
27925	s.UploadId = &v
27926	return s
27927}
27928
27929// Specifies when noncurrent object versions expire. Upon expiration, Amazon
27930// S3 permanently deletes the noncurrent object versions. You set this lifecycle
27931// configuration action on a bucket that has versioning enabled (or suspended)
27932// to request that Amazon S3 delete noncurrent object versions at a specific
27933// period in the object's lifetime.
27934type NoncurrentVersionExpiration struct {
27935	_ struct{} `type:"structure"`
27936
27937	// Specifies how many noncurrent versions Amazon S3 will retain. If there are
27938	// this many more recent noncurrent versions, Amazon S3 will take the associated
27939	// action. For more information about noncurrent versions, see Lifecycle configuration
27940	// elements (https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
27941	// in the Amazon S3 User Guide.
27942	NewerNoncurrentVersions *int64 `type:"integer"`
27943
27944	// Specifies the number of days an object is noncurrent before Amazon S3 can
27945	// perform the associated action. For information about the noncurrent days
27946	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
27947	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
27948	// in the Amazon S3 User Guide.
27949	NoncurrentDays *int64 `type:"integer"`
27950}
27951
27952// String returns the string representation.
27953//
27954// API parameter values that are decorated as "sensitive" in the API will not
27955// be included in the string output. The member name will be present, but the
27956// value will be replaced with "sensitive".
27957func (s NoncurrentVersionExpiration) String() string {
27958	return awsutil.Prettify(s)
27959}
27960
27961// GoString returns the string representation.
27962//
27963// API parameter values that are decorated as "sensitive" in the API will not
27964// be included in the string output. The member name will be present, but the
27965// value will be replaced with "sensitive".
27966func (s NoncurrentVersionExpiration) GoString() string {
27967	return s.String()
27968}
27969
27970// SetNewerNoncurrentVersions sets the NewerNoncurrentVersions field's value.
27971func (s *NoncurrentVersionExpiration) SetNewerNoncurrentVersions(v int64) *NoncurrentVersionExpiration {
27972	s.NewerNoncurrentVersions = &v
27973	return s
27974}
27975
27976// SetNoncurrentDays sets the NoncurrentDays field's value.
27977func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
27978	s.NoncurrentDays = &v
27979	return s
27980}
27981
27982// Container for the transition rule that describes when noncurrent objects
27983// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
27984// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
27985// is suspended), you can set this action to request that Amazon S3 transition
27986// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
27987// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
27988// lifetime.
27989type NoncurrentVersionTransition struct {
27990	_ struct{} `type:"structure"`
27991
27992	// Specifies how many noncurrent versions Amazon S3 will retain. If there are
27993	// this many more recent noncurrent versions, Amazon S3 will take the associated
27994	// action. For more information about noncurrent versions, see Lifecycle configuration
27995	// elements (https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html)
27996	// in the Amazon S3 User Guide.
27997	NewerNoncurrentVersions *int64 `type:"integer"`
27998
27999	// Specifies the number of days an object is noncurrent before Amazon S3 can
28000	// perform the associated action. For information about the noncurrent days
28001	// calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent
28002	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
28003	// in the Amazon S3 User Guide.
28004	NoncurrentDays *int64 `type:"integer"`
28005
28006	// The class of storage used to store the object.
28007	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
28008}
28009
28010// String returns the string representation.
28011//
28012// API parameter values that are decorated as "sensitive" in the API will not
28013// be included in the string output. The member name will be present, but the
28014// value will be replaced with "sensitive".
28015func (s NoncurrentVersionTransition) String() string {
28016	return awsutil.Prettify(s)
28017}
28018
28019// GoString returns the string representation.
28020//
28021// API parameter values that are decorated as "sensitive" in the API will not
28022// be included in the string output. The member name will be present, but the
28023// value will be replaced with "sensitive".
28024func (s NoncurrentVersionTransition) GoString() string {
28025	return s.String()
28026}
28027
28028// SetNewerNoncurrentVersions sets the NewerNoncurrentVersions field's value.
28029func (s *NoncurrentVersionTransition) SetNewerNoncurrentVersions(v int64) *NoncurrentVersionTransition {
28030	s.NewerNoncurrentVersions = &v
28031	return s
28032}
28033
28034// SetNoncurrentDays sets the NoncurrentDays field's value.
28035func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
28036	s.NoncurrentDays = &v
28037	return s
28038}
28039
28040// SetStorageClass sets the StorageClass field's value.
28041func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
28042	s.StorageClass = &v
28043	return s
28044}
28045
28046// A container for specifying the notification configuration of the bucket.
28047// If this element is empty, notifications are turned off for the bucket.
28048type NotificationConfiguration struct {
28049	_ struct{} `type:"structure"`
28050
28051	// Describes the Lambda functions to invoke and the events for which to invoke
28052	// them.
28053	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
28054
28055	// The Amazon Simple Queue Service queues to publish messages to and the events
28056	// for which to publish messages.
28057	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
28058
28059	// The topic to which notifications are sent and the events for which notifications
28060	// are generated.
28061	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
28062}
28063
28064// String returns the string representation.
28065//
28066// API parameter values that are decorated as "sensitive" in the API will not
28067// be included in the string output. The member name will be present, but the
28068// value will be replaced with "sensitive".
28069func (s NotificationConfiguration) String() string {
28070	return awsutil.Prettify(s)
28071}
28072
28073// GoString returns the string representation.
28074//
28075// API parameter values that are decorated as "sensitive" in the API will not
28076// be included in the string output. The member name will be present, but the
28077// value will be replaced with "sensitive".
28078func (s NotificationConfiguration) GoString() string {
28079	return s.String()
28080}
28081
28082// Validate inspects the fields of the type to determine if they are valid.
28083func (s *NotificationConfiguration) Validate() error {
28084	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
28085	if s.LambdaFunctionConfigurations != nil {
28086		for i, v := range s.LambdaFunctionConfigurations {
28087			if v == nil {
28088				continue
28089			}
28090			if err := v.Validate(); err != nil {
28091				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
28092			}
28093		}
28094	}
28095	if s.QueueConfigurations != nil {
28096		for i, v := range s.QueueConfigurations {
28097			if v == nil {
28098				continue
28099			}
28100			if err := v.Validate(); err != nil {
28101				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
28102			}
28103		}
28104	}
28105	if s.TopicConfigurations != nil {
28106		for i, v := range s.TopicConfigurations {
28107			if v == nil {
28108				continue
28109			}
28110			if err := v.Validate(); err != nil {
28111				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
28112			}
28113		}
28114	}
28115
28116	if invalidParams.Len() > 0 {
28117		return invalidParams
28118	}
28119	return nil
28120}
28121
28122// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
28123func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
28124	s.LambdaFunctionConfigurations = v
28125	return s
28126}
28127
28128// SetQueueConfigurations sets the QueueConfigurations field's value.
28129func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
28130	s.QueueConfigurations = v
28131	return s
28132}
28133
28134// SetTopicConfigurations sets the TopicConfigurations field's value.
28135func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
28136	s.TopicConfigurations = v
28137	return s
28138}
28139
28140type NotificationConfigurationDeprecated struct {
28141	_ struct{} `type:"structure"`
28142
28143	// Container for specifying the Lambda notification configuration.
28144	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
28145
28146	// This data type is deprecated. This data type specifies the configuration
28147	// for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue
28148	// when Amazon S3 detects specified events.
28149	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
28150
28151	// This data type is deprecated. A container for specifying the configuration
28152	// for publication of messages to an Amazon Simple Notification Service (Amazon
28153	// SNS) topic when Amazon S3 detects specified events.
28154	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
28155}
28156
28157// String returns the string representation.
28158//
28159// API parameter values that are decorated as "sensitive" in the API will not
28160// be included in the string output. The member name will be present, but the
28161// value will be replaced with "sensitive".
28162func (s NotificationConfigurationDeprecated) String() string {
28163	return awsutil.Prettify(s)
28164}
28165
28166// GoString returns the string representation.
28167//
28168// API parameter values that are decorated as "sensitive" in the API will not
28169// be included in the string output. The member name will be present, but the
28170// value will be replaced with "sensitive".
28171func (s NotificationConfigurationDeprecated) GoString() string {
28172	return s.String()
28173}
28174
28175// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
28176func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
28177	s.CloudFunctionConfiguration = v
28178	return s
28179}
28180
28181// SetQueueConfiguration sets the QueueConfiguration field's value.
28182func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
28183	s.QueueConfiguration = v
28184	return s
28185}
28186
28187// SetTopicConfiguration sets the TopicConfiguration field's value.
28188func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
28189	s.TopicConfiguration = v
28190	return s
28191}
28192
28193// Specifies object key name filtering rules. For information about key name
28194// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
28195// in the Amazon S3 User Guide.
28196type NotificationConfigurationFilter struct {
28197	_ struct{} `type:"structure"`
28198
28199	// A container for object key name prefix and suffix filtering rules.
28200	Key *KeyFilter `locationName:"S3Key" type:"structure"`
28201}
28202
28203// String returns the string representation.
28204//
28205// API parameter values that are decorated as "sensitive" in the API will not
28206// be included in the string output. The member name will be present, but the
28207// value will be replaced with "sensitive".
28208func (s NotificationConfigurationFilter) String() string {
28209	return awsutil.Prettify(s)
28210}
28211
28212// GoString returns the string representation.
28213//
28214// API parameter values that are decorated as "sensitive" in the API will not
28215// be included in the string output. The member name will be present, but the
28216// value will be replaced with "sensitive".
28217func (s NotificationConfigurationFilter) GoString() string {
28218	return s.String()
28219}
28220
28221// SetKey sets the Key field's value.
28222func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
28223	s.Key = v
28224	return s
28225}
28226
28227// An object consists of data and its descriptive metadata.
28228type Object struct {
28229	_ struct{} `type:"structure"`
28230
28231	// The entity tag is a hash of the object. The ETag reflects changes only to
28232	// the contents of an object, not its metadata. The ETag may or may not be an
28233	// MD5 digest of the object data. Whether or not it is depends on how the object
28234	// was created and how it is encrypted as described below:
28235	//
28236	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
28237	//    through the Amazon Web Services Management Console, and are encrypted
28238	//    by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object
28239	//    data.
28240	//
28241	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
28242	//    through the Amazon Web Services Management Console, and are encrypted
28243	//    by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object
28244	//    data.
28245	//
28246	//    * If an object is created by either the Multipart Upload or Part Copy
28247	//    operation, the ETag is not an MD5 digest, regardless of the method of
28248	//    encryption.
28249	ETag *string `type:"string"`
28250
28251	// The name that you assign to an object. You use the object key to retrieve
28252	// the object.
28253	Key *string `min:"1" type:"string"`
28254
28255	// Creation date of the object.
28256	LastModified *time.Time `type:"timestamp"`
28257
28258	// The owner of the object
28259	Owner *Owner `type:"structure"`
28260
28261	// Size in bytes of the object
28262	Size *int64 `type:"integer"`
28263
28264	// The class of storage used to store the object.
28265	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
28266}
28267
28268// String returns the string representation.
28269//
28270// API parameter values that are decorated as "sensitive" in the API will not
28271// be included in the string output. The member name will be present, but the
28272// value will be replaced with "sensitive".
28273func (s Object) String() string {
28274	return awsutil.Prettify(s)
28275}
28276
28277// GoString returns the string representation.
28278//
28279// API parameter values that are decorated as "sensitive" in the API will not
28280// be included in the string output. The member name will be present, but the
28281// value will be replaced with "sensitive".
28282func (s Object) GoString() string {
28283	return s.String()
28284}
28285
28286// SetETag sets the ETag field's value.
28287func (s *Object) SetETag(v string) *Object {
28288	s.ETag = &v
28289	return s
28290}
28291
28292// SetKey sets the Key field's value.
28293func (s *Object) SetKey(v string) *Object {
28294	s.Key = &v
28295	return s
28296}
28297
28298// SetLastModified sets the LastModified field's value.
28299func (s *Object) SetLastModified(v time.Time) *Object {
28300	s.LastModified = &v
28301	return s
28302}
28303
28304// SetOwner sets the Owner field's value.
28305func (s *Object) SetOwner(v *Owner) *Object {
28306	s.Owner = v
28307	return s
28308}
28309
28310// SetSize sets the Size field's value.
28311func (s *Object) SetSize(v int64) *Object {
28312	s.Size = &v
28313	return s
28314}
28315
28316// SetStorageClass sets the StorageClass field's value.
28317func (s *Object) SetStorageClass(v string) *Object {
28318	s.StorageClass = &v
28319	return s
28320}
28321
28322// Object Identifier is unique value to identify objects.
28323type ObjectIdentifier struct {
28324	_ struct{} `type:"structure"`
28325
28326	// Key name of the object.
28327	//
28328	// Replacement must be made for object keys containing special characters (such
28329	// as carriage returns) when using XML requests. For more information, see XML
28330	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
28331	//
28332	// Key is a required field
28333	Key *string `min:"1" type:"string" required:"true"`
28334
28335	// VersionId for the specific version of the object to delete.
28336	VersionId *string `type:"string"`
28337}
28338
28339// String 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 ObjectIdentifier) String() string {
28345	return awsutil.Prettify(s)
28346}
28347
28348// GoString returns the string representation.
28349//
28350// API parameter values that are decorated as "sensitive" in the API will not
28351// be included in the string output. The member name will be present, but the
28352// value will be replaced with "sensitive".
28353func (s ObjectIdentifier) GoString() string {
28354	return s.String()
28355}
28356
28357// Validate inspects the fields of the type to determine if they are valid.
28358func (s *ObjectIdentifier) Validate() error {
28359	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
28360	if s.Key == nil {
28361		invalidParams.Add(request.NewErrParamRequired("Key"))
28362	}
28363	if s.Key != nil && len(*s.Key) < 1 {
28364		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
28365	}
28366
28367	if invalidParams.Len() > 0 {
28368		return invalidParams
28369	}
28370	return nil
28371}
28372
28373// SetKey sets the Key field's value.
28374func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
28375	s.Key = &v
28376	return s
28377}
28378
28379// SetVersionId sets the VersionId field's value.
28380func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
28381	s.VersionId = &v
28382	return s
28383}
28384
28385// The container element for Object Lock configuration parameters.
28386type ObjectLockConfiguration struct {
28387	_ struct{} `type:"structure"`
28388
28389	// Indicates whether this bucket has an Object Lock configuration enabled. Enable
28390	// ObjectLockEnabled when you apply ObjectLockConfiguration to a bucket.
28391	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
28392
28393	// Specifies the Object Lock rule for the specified object. Enable the this
28394	// rule when you apply ObjectLockConfiguration to a bucket. Bucket settings
28395	// require both a mode and a period. The period can be either Days or Years
28396	// but you must select one. You cannot specify Days and Years at the same time.
28397	Rule *ObjectLockRule `type:"structure"`
28398}
28399
28400// String returns the string representation.
28401//
28402// API parameter values that are decorated as "sensitive" in the API will not
28403// be included in the string output. The member name will be present, but the
28404// value will be replaced with "sensitive".
28405func (s ObjectLockConfiguration) String() string {
28406	return awsutil.Prettify(s)
28407}
28408
28409// GoString returns the string representation.
28410//
28411// API parameter values that are decorated as "sensitive" in the API will not
28412// be included in the string output. The member name will be present, but the
28413// value will be replaced with "sensitive".
28414func (s ObjectLockConfiguration) GoString() string {
28415	return s.String()
28416}
28417
28418// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
28419func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
28420	s.ObjectLockEnabled = &v
28421	return s
28422}
28423
28424// SetRule sets the Rule field's value.
28425func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
28426	s.Rule = v
28427	return s
28428}
28429
28430// A Legal Hold configuration for an object.
28431type ObjectLockLegalHold struct {
28432	_ struct{} `type:"structure"`
28433
28434	// Indicates whether the specified object has a Legal Hold in place.
28435	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
28436}
28437
28438// String returns the string representation.
28439//
28440// API parameter values that are decorated as "sensitive" in the API will not
28441// be included in the string output. The member name will be present, but the
28442// value will be replaced with "sensitive".
28443func (s ObjectLockLegalHold) String() string {
28444	return awsutil.Prettify(s)
28445}
28446
28447// GoString returns the string representation.
28448//
28449// API parameter values that are decorated as "sensitive" in the API will not
28450// be included in the string output. The member name will be present, but the
28451// value will be replaced with "sensitive".
28452func (s ObjectLockLegalHold) GoString() string {
28453	return s.String()
28454}
28455
28456// SetStatus sets the Status field's value.
28457func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
28458	s.Status = &v
28459	return s
28460}
28461
28462// A Retention configuration for an object.
28463type ObjectLockRetention struct {
28464	_ struct{} `type:"structure"`
28465
28466	// Indicates the Retention mode for the specified object.
28467	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
28468
28469	// The date on which this Object Lock Retention will expire.
28470	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
28471}
28472
28473// String returns the string representation.
28474//
28475// API parameter values that are decorated as "sensitive" in the API will not
28476// be included in the string output. The member name will be present, but the
28477// value will be replaced with "sensitive".
28478func (s ObjectLockRetention) String() string {
28479	return awsutil.Prettify(s)
28480}
28481
28482// GoString returns the string representation.
28483//
28484// API parameter values that are decorated as "sensitive" in the API will not
28485// be included in the string output. The member name will be present, but the
28486// value will be replaced with "sensitive".
28487func (s ObjectLockRetention) GoString() string {
28488	return s.String()
28489}
28490
28491// SetMode sets the Mode field's value.
28492func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
28493	s.Mode = &v
28494	return s
28495}
28496
28497// SetRetainUntilDate sets the RetainUntilDate field's value.
28498func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
28499	s.RetainUntilDate = &v
28500	return s
28501}
28502
28503// The container element for an Object Lock rule.
28504type ObjectLockRule struct {
28505	_ struct{} `type:"structure"`
28506
28507	// The default Object Lock retention mode and period that you want to apply
28508	// to new objects placed in the specified bucket. Bucket settings require both
28509	// a mode and a period. The period can be either Days or Years but you must
28510	// select one. You cannot specify Days and Years at the same time.
28511	DefaultRetention *DefaultRetention `type:"structure"`
28512}
28513
28514// String returns the string representation.
28515//
28516// API parameter values that are decorated as "sensitive" in the API will not
28517// be included in the string output. The member name will be present, but the
28518// value will be replaced with "sensitive".
28519func (s ObjectLockRule) String() string {
28520	return awsutil.Prettify(s)
28521}
28522
28523// GoString returns the string representation.
28524//
28525// API parameter values that are decorated as "sensitive" in the API will not
28526// be included in the string output. The member name will be present, but the
28527// value will be replaced with "sensitive".
28528func (s ObjectLockRule) GoString() string {
28529	return s.String()
28530}
28531
28532// SetDefaultRetention sets the DefaultRetention field's value.
28533func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
28534	s.DefaultRetention = v
28535	return s
28536}
28537
28538// The version of an object.
28539type ObjectVersion struct {
28540	_ struct{} `type:"structure"`
28541
28542	// The entity tag is an MD5 hash of that version of the object.
28543	ETag *string `type:"string"`
28544
28545	// Specifies whether the object is (true) or is not (false) the latest version
28546	// of an object.
28547	IsLatest *bool `type:"boolean"`
28548
28549	// The object key.
28550	Key *string `min:"1" type:"string"`
28551
28552	// Date and time the object was last modified.
28553	LastModified *time.Time `type:"timestamp"`
28554
28555	// Specifies the owner of the object.
28556	Owner *Owner `type:"structure"`
28557
28558	// Size in bytes of the object.
28559	Size *int64 `type:"integer"`
28560
28561	// The class of storage used to store the object.
28562	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
28563
28564	// Version ID of an object.
28565	VersionId *string `type:"string"`
28566}
28567
28568// String returns the string representation.
28569//
28570// API parameter values that are decorated as "sensitive" in the API will not
28571// be included in the string output. The member name will be present, but the
28572// value will be replaced with "sensitive".
28573func (s ObjectVersion) String() string {
28574	return awsutil.Prettify(s)
28575}
28576
28577// GoString returns the string representation.
28578//
28579// API parameter values that are decorated as "sensitive" in the API will not
28580// be included in the string output. The member name will be present, but the
28581// value will be replaced with "sensitive".
28582func (s ObjectVersion) GoString() string {
28583	return s.String()
28584}
28585
28586// SetETag sets the ETag field's value.
28587func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
28588	s.ETag = &v
28589	return s
28590}
28591
28592// SetIsLatest sets the IsLatest field's value.
28593func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
28594	s.IsLatest = &v
28595	return s
28596}
28597
28598// SetKey sets the Key field's value.
28599func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
28600	s.Key = &v
28601	return s
28602}
28603
28604// SetLastModified sets the LastModified field's value.
28605func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
28606	s.LastModified = &v
28607	return s
28608}
28609
28610// SetOwner sets the Owner field's value.
28611func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
28612	s.Owner = v
28613	return s
28614}
28615
28616// SetSize sets the Size field's value.
28617func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
28618	s.Size = &v
28619	return s
28620}
28621
28622// SetStorageClass sets the StorageClass field's value.
28623func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
28624	s.StorageClass = &v
28625	return s
28626}
28627
28628// SetVersionId sets the VersionId field's value.
28629func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
28630	s.VersionId = &v
28631	return s
28632}
28633
28634// Describes the location where the restore job's output is stored.
28635type OutputLocation struct {
28636	_ struct{} `type:"structure"`
28637
28638	// Describes an S3 location that will receive the results of the restore request.
28639	S3 *Location `type:"structure"`
28640}
28641
28642// String returns the string representation.
28643//
28644// API parameter values that are decorated as "sensitive" in the API will not
28645// be included in the string output. The member name will be present, but the
28646// value will be replaced with "sensitive".
28647func (s OutputLocation) String() string {
28648	return awsutil.Prettify(s)
28649}
28650
28651// GoString returns the string representation.
28652//
28653// API parameter values that are decorated as "sensitive" in the API will not
28654// be included in the string output. The member name will be present, but the
28655// value will be replaced with "sensitive".
28656func (s OutputLocation) GoString() string {
28657	return s.String()
28658}
28659
28660// Validate inspects the fields of the type to determine if they are valid.
28661func (s *OutputLocation) Validate() error {
28662	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
28663	if s.S3 != nil {
28664		if err := s.S3.Validate(); err != nil {
28665			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
28666		}
28667	}
28668
28669	if invalidParams.Len() > 0 {
28670		return invalidParams
28671	}
28672	return nil
28673}
28674
28675// SetS3 sets the S3 field's value.
28676func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
28677	s.S3 = v
28678	return s
28679}
28680
28681// Describes how results of the Select job are serialized.
28682type OutputSerialization struct {
28683	_ struct{} `type:"structure"`
28684
28685	// Describes the serialization of CSV-encoded Select results.
28686	CSV *CSVOutput `type:"structure"`
28687
28688	// Specifies JSON as request's output serialization format.
28689	JSON *JSONOutput `type:"structure"`
28690}
28691
28692// String returns the string representation.
28693//
28694// API parameter values that are decorated as "sensitive" in the API will not
28695// be included in the string output. The member name will be present, but the
28696// value will be replaced with "sensitive".
28697func (s OutputSerialization) String() string {
28698	return awsutil.Prettify(s)
28699}
28700
28701// GoString returns the string representation.
28702//
28703// API parameter values that are decorated as "sensitive" in the API will not
28704// be included in the string output. The member name will be present, but the
28705// value will be replaced with "sensitive".
28706func (s OutputSerialization) GoString() string {
28707	return s.String()
28708}
28709
28710// SetCSV sets the CSV field's value.
28711func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
28712	s.CSV = v
28713	return s
28714}
28715
28716// SetJSON sets the JSON field's value.
28717func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
28718	s.JSON = v
28719	return s
28720}
28721
28722// Container for the owner's display name and ID.
28723type Owner struct {
28724	_ struct{} `type:"structure"`
28725
28726	// Container for the display name of the owner.
28727	DisplayName *string `type:"string"`
28728
28729	// Container for the ID of the owner.
28730	ID *string `type:"string"`
28731}
28732
28733// String returns the string representation.
28734//
28735// API parameter values that are decorated as "sensitive" in the API will not
28736// be included in the string output. The member name will be present, but the
28737// value will be replaced with "sensitive".
28738func (s Owner) String() string {
28739	return awsutil.Prettify(s)
28740}
28741
28742// GoString returns the string representation.
28743//
28744// API parameter values that are decorated as "sensitive" in the API will not
28745// be included in the string output. The member name will be present, but the
28746// value will be replaced with "sensitive".
28747func (s Owner) GoString() string {
28748	return s.String()
28749}
28750
28751// SetDisplayName sets the DisplayName field's value.
28752func (s *Owner) SetDisplayName(v string) *Owner {
28753	s.DisplayName = &v
28754	return s
28755}
28756
28757// SetID sets the ID field's value.
28758func (s *Owner) SetID(v string) *Owner {
28759	s.ID = &v
28760	return s
28761}
28762
28763// The container element for a bucket's ownership controls.
28764type OwnershipControls struct {
28765	_ struct{} `type:"structure"`
28766
28767	// The container element for an ownership control rule.
28768	//
28769	// Rules is a required field
28770	Rules []*OwnershipControlsRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
28771}
28772
28773// String returns the string representation.
28774//
28775// API parameter values that are decorated as "sensitive" in the API will not
28776// be included in the string output. The member name will be present, but the
28777// value will be replaced with "sensitive".
28778func (s OwnershipControls) String() string {
28779	return awsutil.Prettify(s)
28780}
28781
28782// GoString returns the string representation.
28783//
28784// API parameter values that are decorated as "sensitive" in the API will not
28785// be included in the string output. The member name will be present, but the
28786// value will be replaced with "sensitive".
28787func (s OwnershipControls) GoString() string {
28788	return s.String()
28789}
28790
28791// Validate inspects the fields of the type to determine if they are valid.
28792func (s *OwnershipControls) Validate() error {
28793	invalidParams := request.ErrInvalidParams{Context: "OwnershipControls"}
28794	if s.Rules == nil {
28795		invalidParams.Add(request.NewErrParamRequired("Rules"))
28796	}
28797	if s.Rules != nil {
28798		for i, v := range s.Rules {
28799			if v == nil {
28800				continue
28801			}
28802			if err := v.Validate(); err != nil {
28803				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
28804			}
28805		}
28806	}
28807
28808	if invalidParams.Len() > 0 {
28809		return invalidParams
28810	}
28811	return nil
28812}
28813
28814// SetRules sets the Rules field's value.
28815func (s *OwnershipControls) SetRules(v []*OwnershipControlsRule) *OwnershipControls {
28816	s.Rules = v
28817	return s
28818}
28819
28820// The container element for an ownership control rule.
28821type OwnershipControlsRule struct {
28822	_ struct{} `type:"structure"`
28823
28824	// The container element for object ownership for a bucket's ownership controls.
28825	//
28826	// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
28827	// the bucket owner if the objects are uploaded with the bucket-owner-full-control
28828	// canned ACL.
28829	//
28830	// ObjectWriter - The uploading account will own the object if the object is
28831	// uploaded with the bucket-owner-full-control canned ACL.
28832	//
28833	// ObjectOwnership is a required field
28834	ObjectOwnership *string `type:"string" required:"true" enum:"ObjectOwnership"`
28835}
28836
28837// String returns the string representation.
28838//
28839// API parameter values that are decorated as "sensitive" in the API will not
28840// be included in the string output. The member name will be present, but the
28841// value will be replaced with "sensitive".
28842func (s OwnershipControlsRule) String() string {
28843	return awsutil.Prettify(s)
28844}
28845
28846// GoString returns the string representation.
28847//
28848// API parameter values that are decorated as "sensitive" in the API will not
28849// be included in the string output. The member name will be present, but the
28850// value will be replaced with "sensitive".
28851func (s OwnershipControlsRule) GoString() string {
28852	return s.String()
28853}
28854
28855// Validate inspects the fields of the type to determine if they are valid.
28856func (s *OwnershipControlsRule) Validate() error {
28857	invalidParams := request.ErrInvalidParams{Context: "OwnershipControlsRule"}
28858	if s.ObjectOwnership == nil {
28859		invalidParams.Add(request.NewErrParamRequired("ObjectOwnership"))
28860	}
28861
28862	if invalidParams.Len() > 0 {
28863		return invalidParams
28864	}
28865	return nil
28866}
28867
28868// SetObjectOwnership sets the ObjectOwnership field's value.
28869func (s *OwnershipControlsRule) SetObjectOwnership(v string) *OwnershipControlsRule {
28870	s.ObjectOwnership = &v
28871	return s
28872}
28873
28874// Container for Parquet.
28875type ParquetInput struct {
28876	_ struct{} `type:"structure"`
28877}
28878
28879// String returns the string representation.
28880//
28881// API parameter values that are decorated as "sensitive" in the API will not
28882// be included in the string output. The member name will be present, but the
28883// value will be replaced with "sensitive".
28884func (s ParquetInput) String() string {
28885	return awsutil.Prettify(s)
28886}
28887
28888// GoString returns the string representation.
28889//
28890// API parameter values that are decorated as "sensitive" in the API will not
28891// be included in the string output. The member name will be present, but the
28892// value will be replaced with "sensitive".
28893func (s ParquetInput) GoString() string {
28894	return s.String()
28895}
28896
28897// Container for elements related to a part.
28898type Part struct {
28899	_ struct{} `type:"structure"`
28900
28901	// Entity tag returned when the part was uploaded.
28902	ETag *string `type:"string"`
28903
28904	// Date and time at which the part was uploaded.
28905	LastModified *time.Time `type:"timestamp"`
28906
28907	// Part number identifying the part. This is a positive integer between 1 and
28908	// 10,000.
28909	PartNumber *int64 `type:"integer"`
28910
28911	// Size in bytes of the uploaded part data.
28912	Size *int64 `type:"integer"`
28913}
28914
28915// String returns the string representation.
28916//
28917// API parameter values that are decorated as "sensitive" in the API will not
28918// be included in the string output. The member name will be present, but the
28919// value will be replaced with "sensitive".
28920func (s Part) String() string {
28921	return awsutil.Prettify(s)
28922}
28923
28924// GoString returns the string representation.
28925//
28926// API parameter values that are decorated as "sensitive" in the API will not
28927// be included in the string output. The member name will be present, but the
28928// value will be replaced with "sensitive".
28929func (s Part) GoString() string {
28930	return s.String()
28931}
28932
28933// SetETag sets the ETag field's value.
28934func (s *Part) SetETag(v string) *Part {
28935	s.ETag = &v
28936	return s
28937}
28938
28939// SetLastModified sets the LastModified field's value.
28940func (s *Part) SetLastModified(v time.Time) *Part {
28941	s.LastModified = &v
28942	return s
28943}
28944
28945// SetPartNumber sets the PartNumber field's value.
28946func (s *Part) SetPartNumber(v int64) *Part {
28947	s.PartNumber = &v
28948	return s
28949}
28950
28951// SetSize sets the Size field's value.
28952func (s *Part) SetSize(v int64) *Part {
28953	s.Size = &v
28954	return s
28955}
28956
28957// The container element for a bucket's policy status.
28958type PolicyStatus struct {
28959	_ struct{} `type:"structure"`
28960
28961	// The policy status for this bucket. TRUE indicates that this bucket is public.
28962	// FALSE indicates that the bucket is not public.
28963	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
28964}
28965
28966// String returns the string representation.
28967//
28968// API parameter values that are decorated as "sensitive" in the API will not
28969// be included in the string output. The member name will be present, but the
28970// value will be replaced with "sensitive".
28971func (s PolicyStatus) String() string {
28972	return awsutil.Prettify(s)
28973}
28974
28975// GoString returns the string representation.
28976//
28977// API parameter values that are decorated as "sensitive" in the API will not
28978// be included in the string output. The member name will be present, but the
28979// value will be replaced with "sensitive".
28980func (s PolicyStatus) GoString() string {
28981	return s.String()
28982}
28983
28984// SetIsPublic sets the IsPublic field's value.
28985func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
28986	s.IsPublic = &v
28987	return s
28988}
28989
28990// This data type contains information about progress of an operation.
28991type Progress struct {
28992	_ struct{} `type:"structure"`
28993
28994	// The current number of uncompressed object bytes processed.
28995	BytesProcessed *int64 `type:"long"`
28996
28997	// The current number of bytes of records payload data returned.
28998	BytesReturned *int64 `type:"long"`
28999
29000	// The current number of object bytes scanned.
29001	BytesScanned *int64 `type:"long"`
29002}
29003
29004// String returns the string representation.
29005//
29006// API parameter values that are decorated as "sensitive" in the API will not
29007// be included in the string output. The member name will be present, but the
29008// value will be replaced with "sensitive".
29009func (s Progress) String() string {
29010	return awsutil.Prettify(s)
29011}
29012
29013// GoString returns the string representation.
29014//
29015// API parameter values that are decorated as "sensitive" in the API will not
29016// be included in the string output. The member name will be present, but the
29017// value will be replaced with "sensitive".
29018func (s Progress) GoString() string {
29019	return s.String()
29020}
29021
29022// SetBytesProcessed sets the BytesProcessed field's value.
29023func (s *Progress) SetBytesProcessed(v int64) *Progress {
29024	s.BytesProcessed = &v
29025	return s
29026}
29027
29028// SetBytesReturned sets the BytesReturned field's value.
29029func (s *Progress) SetBytesReturned(v int64) *Progress {
29030	s.BytesReturned = &v
29031	return s
29032}
29033
29034// SetBytesScanned sets the BytesScanned field's value.
29035func (s *Progress) SetBytesScanned(v int64) *Progress {
29036	s.BytesScanned = &v
29037	return s
29038}
29039
29040// This data type contains information about the progress event of an operation.
29041type ProgressEvent struct {
29042	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
29043
29044	// The Progress event details.
29045	Details *Progress `locationName:"Details" type:"structure"`
29046}
29047
29048// String returns the string representation.
29049//
29050// API parameter values that are decorated as "sensitive" in the API will not
29051// be included in the string output. The member name will be present, but the
29052// value will be replaced with "sensitive".
29053func (s ProgressEvent) String() string {
29054	return awsutil.Prettify(s)
29055}
29056
29057// GoString returns the string representation.
29058//
29059// API parameter values that are decorated as "sensitive" in the API will not
29060// be included in the string output. The member name will be present, but the
29061// value will be replaced with "sensitive".
29062func (s ProgressEvent) GoString() string {
29063	return s.String()
29064}
29065
29066// SetDetails sets the Details field's value.
29067func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
29068	s.Details = v
29069	return s
29070}
29071
29072// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
29073func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
29074
29075// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
29076// This method is only used internally within the SDK's EventStream handling.
29077func (s *ProgressEvent) UnmarshalEvent(
29078	payloadUnmarshaler protocol.PayloadUnmarshaler,
29079	msg eventstream.Message,
29080) error {
29081	if err := payloadUnmarshaler.UnmarshalPayload(
29082		bytes.NewReader(msg.Payload), s,
29083	); err != nil {
29084		return err
29085	}
29086	return nil
29087}
29088
29089// MarshalEvent marshals the type into an stream event value. This method
29090// should only used internally within the SDK's EventStream handling.
29091func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
29092	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
29093	var buf bytes.Buffer
29094	if err = pm.MarshalPayload(&buf, s); err != nil {
29095		return eventstream.Message{}, err
29096	}
29097	msg.Payload = buf.Bytes()
29098	return msg, err
29099}
29100
29101// The PublicAccessBlock configuration that you want to apply to this Amazon
29102// S3 bucket. You can enable the configuration options in any combination. For
29103// more information about when Amazon S3 considers a bucket or object public,
29104// 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)
29105// in the Amazon S3 User Guide.
29106type PublicAccessBlockConfiguration struct {
29107	_ struct{} `type:"structure"`
29108
29109	// Specifies whether Amazon S3 should block public access control lists (ACLs)
29110	// for this bucket and objects in this bucket. Setting this element to TRUE
29111	// causes the following behavior:
29112	//
29113	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
29114	//    public.
29115	//
29116	//    * PUT Object calls fail if the request includes a public ACL.
29117	//
29118	//    * PUT Bucket calls fail if the request includes a public ACL.
29119	//
29120	// Enabling this setting doesn't affect existing policies or ACLs.
29121	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
29122
29123	// Specifies whether Amazon S3 should block public bucket policies for this
29124	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
29125	// PUT Bucket policy if the specified bucket policy allows public access.
29126	//
29127	// Enabling this setting doesn't affect existing bucket policies.
29128	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
29129
29130	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
29131	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
29132	// ignore all public ACLs on this bucket and objects in this bucket.
29133	//
29134	// Enabling this setting doesn't affect the persistence of any existing ACLs
29135	// and doesn't prevent new public ACLs from being set.
29136	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
29137
29138	// Specifies whether Amazon S3 should restrict public bucket policies for this
29139	// bucket. Setting this element to TRUE restricts access to this bucket to only
29140	// Amazon Web Service principals and authorized users within this account if
29141	// the bucket has a public policy.
29142	//
29143	// Enabling this setting doesn't affect previously stored bucket policies, except
29144	// that public and cross-account access within any public bucket policy, including
29145	// non-public delegation to specific accounts, is blocked.
29146	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
29147}
29148
29149// String 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 PublicAccessBlockConfiguration) String() string {
29155	return awsutil.Prettify(s)
29156}
29157
29158// GoString returns the string representation.
29159//
29160// API parameter values that are decorated as "sensitive" in the API will not
29161// be included in the string output. The member name will be present, but the
29162// value will be replaced with "sensitive".
29163func (s PublicAccessBlockConfiguration) GoString() string {
29164	return s.String()
29165}
29166
29167// SetBlockPublicAcls sets the BlockPublicAcls field's value.
29168func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
29169	s.BlockPublicAcls = &v
29170	return s
29171}
29172
29173// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
29174func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
29175	s.BlockPublicPolicy = &v
29176	return s
29177}
29178
29179// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
29180func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
29181	s.IgnorePublicAcls = &v
29182	return s
29183}
29184
29185// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
29186func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
29187	s.RestrictPublicBuckets = &v
29188	return s
29189}
29190
29191type PutBucketAccelerateConfigurationInput struct {
29192	_ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"`
29193
29194	// Container for setting the transfer acceleration state.
29195	//
29196	// AccelerateConfiguration is a required field
29197	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29198
29199	// The name of the bucket for which the accelerate configuration is set.
29200	//
29201	// Bucket is a required field
29202	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29203
29204	// The account ID of the expected bucket owner. If the bucket is owned by a
29205	// different account, the request will fail with an HTTP 403 (Access Denied)
29206	// error.
29207	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29208}
29209
29210// String returns the string representation.
29211//
29212// API parameter values that are decorated as "sensitive" in the API will not
29213// be included in the string output. The member name will be present, but the
29214// value will be replaced with "sensitive".
29215func (s PutBucketAccelerateConfigurationInput) String() string {
29216	return awsutil.Prettify(s)
29217}
29218
29219// GoString returns the string representation.
29220//
29221// API parameter values that are decorated as "sensitive" in the API will not
29222// be included in the string output. The member name will be present, but the
29223// value will be replaced with "sensitive".
29224func (s PutBucketAccelerateConfigurationInput) GoString() string {
29225	return s.String()
29226}
29227
29228// Validate inspects the fields of the type to determine if they are valid.
29229func (s *PutBucketAccelerateConfigurationInput) Validate() error {
29230	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
29231	if s.AccelerateConfiguration == nil {
29232		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
29233	}
29234	if s.Bucket == nil {
29235		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29236	}
29237	if s.Bucket != nil && len(*s.Bucket) < 1 {
29238		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29239	}
29240
29241	if invalidParams.Len() > 0 {
29242		return invalidParams
29243	}
29244	return nil
29245}
29246
29247// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
29248func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
29249	s.AccelerateConfiguration = v
29250	return s
29251}
29252
29253// SetBucket sets the Bucket field's value.
29254func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
29255	s.Bucket = &v
29256	return s
29257}
29258
29259func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
29260	if s.Bucket == nil {
29261		return v
29262	}
29263	return *s.Bucket
29264}
29265
29266// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29267func (s *PutBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAccelerateConfigurationInput {
29268	s.ExpectedBucketOwner = &v
29269	return s
29270}
29271
29272func (s *PutBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
29273	if s.Bucket == nil {
29274		return nil, fmt.Errorf("member Bucket is nil")
29275	}
29276	return parseEndpointARN(*s.Bucket)
29277}
29278
29279func (s *PutBucketAccelerateConfigurationInput) hasEndpointARN() bool {
29280	if s.Bucket == nil {
29281		return false
29282	}
29283	return arn.IsARN(*s.Bucket)
29284}
29285
29286// updateArnableField updates the value of the input field that
29287// takes an ARN as an input. This method is useful to backfill
29288// the parsed resource name from ARN into the input member.
29289// It returns a pointer to a modified copy of input and an error.
29290// Note that original input is not modified.
29291func (s PutBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
29292	if s.Bucket == nil {
29293		return nil, fmt.Errorf("member Bucket is nil")
29294	}
29295	s.Bucket = aws.String(v)
29296	return &s, nil
29297}
29298
29299type PutBucketAccelerateConfigurationOutput struct {
29300	_ struct{} `type:"structure"`
29301}
29302
29303// String returns the string representation.
29304//
29305// API parameter values that are decorated as "sensitive" in the API will not
29306// be included in the string output. The member name will be present, but the
29307// value will be replaced with "sensitive".
29308func (s PutBucketAccelerateConfigurationOutput) String() string {
29309	return awsutil.Prettify(s)
29310}
29311
29312// GoString returns the string representation.
29313//
29314// API parameter values that are decorated as "sensitive" in the API will not
29315// be included in the string output. The member name will be present, but the
29316// value will be replaced with "sensitive".
29317func (s PutBucketAccelerateConfigurationOutput) GoString() string {
29318	return s.String()
29319}
29320
29321type PutBucketAclInput struct {
29322	_ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"`
29323
29324	// The canned ACL to apply to the bucket.
29325	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
29326
29327	// Contains the elements that set the ACL permissions for an object per grantee.
29328	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29329
29330	// The bucket to which to apply the ACL.
29331	//
29332	// Bucket is a required field
29333	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29334
29335	// The account ID of the expected bucket owner. If the bucket is owned by a
29336	// different account, the request will fail with an HTTP 403 (Access Denied)
29337	// error.
29338	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29339
29340	// Allows grantee the read, write, read ACP, and write ACP permissions on the
29341	// bucket.
29342	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
29343
29344	// Allows grantee to list the objects in the bucket.
29345	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
29346
29347	// Allows grantee to read the bucket ACL.
29348	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
29349
29350	// Allows grantee to create new objects in the bucket.
29351	//
29352	// For the bucket and object owners of existing objects, also allows deletions
29353	// and overwrites of those objects.
29354	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
29355
29356	// Allows grantee to write the ACL for the applicable bucket.
29357	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
29358}
29359
29360// String returns the string representation.
29361//
29362// API parameter values that are decorated as "sensitive" in the API will not
29363// be included in the string output. The member name will be present, but the
29364// value will be replaced with "sensitive".
29365func (s PutBucketAclInput) String() string {
29366	return awsutil.Prettify(s)
29367}
29368
29369// GoString returns the string representation.
29370//
29371// API parameter values that are decorated as "sensitive" in the API will not
29372// be included in the string output. The member name will be present, but the
29373// value will be replaced with "sensitive".
29374func (s PutBucketAclInput) GoString() string {
29375	return s.String()
29376}
29377
29378// Validate inspects the fields of the type to determine if they are valid.
29379func (s *PutBucketAclInput) Validate() error {
29380	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
29381	if s.Bucket == nil {
29382		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29383	}
29384	if s.Bucket != nil && len(*s.Bucket) < 1 {
29385		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29386	}
29387	if s.AccessControlPolicy != nil {
29388		if err := s.AccessControlPolicy.Validate(); err != nil {
29389			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
29390		}
29391	}
29392
29393	if invalidParams.Len() > 0 {
29394		return invalidParams
29395	}
29396	return nil
29397}
29398
29399// SetACL sets the ACL field's value.
29400func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
29401	s.ACL = &v
29402	return s
29403}
29404
29405// SetAccessControlPolicy sets the AccessControlPolicy field's value.
29406func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
29407	s.AccessControlPolicy = v
29408	return s
29409}
29410
29411// SetBucket sets the Bucket field's value.
29412func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
29413	s.Bucket = &v
29414	return s
29415}
29416
29417func (s *PutBucketAclInput) getBucket() (v string) {
29418	if s.Bucket == nil {
29419		return v
29420	}
29421	return *s.Bucket
29422}
29423
29424// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29425func (s *PutBucketAclInput) SetExpectedBucketOwner(v string) *PutBucketAclInput {
29426	s.ExpectedBucketOwner = &v
29427	return s
29428}
29429
29430// SetGrantFullControl sets the GrantFullControl field's value.
29431func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
29432	s.GrantFullControl = &v
29433	return s
29434}
29435
29436// SetGrantRead sets the GrantRead field's value.
29437func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
29438	s.GrantRead = &v
29439	return s
29440}
29441
29442// SetGrantReadACP sets the GrantReadACP field's value.
29443func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
29444	s.GrantReadACP = &v
29445	return s
29446}
29447
29448// SetGrantWrite sets the GrantWrite field's value.
29449func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
29450	s.GrantWrite = &v
29451	return s
29452}
29453
29454// SetGrantWriteACP sets the GrantWriteACP field's value.
29455func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
29456	s.GrantWriteACP = &v
29457	return s
29458}
29459
29460func (s *PutBucketAclInput) getEndpointARN() (arn.Resource, error) {
29461	if s.Bucket == nil {
29462		return nil, fmt.Errorf("member Bucket is nil")
29463	}
29464	return parseEndpointARN(*s.Bucket)
29465}
29466
29467func (s *PutBucketAclInput) hasEndpointARN() bool {
29468	if s.Bucket == nil {
29469		return false
29470	}
29471	return arn.IsARN(*s.Bucket)
29472}
29473
29474// updateArnableField updates the value of the input field that
29475// takes an ARN as an input. This method is useful to backfill
29476// the parsed resource name from ARN into the input member.
29477// It returns a pointer to a modified copy of input and an error.
29478// Note that original input is not modified.
29479func (s PutBucketAclInput) updateArnableField(v string) (interface{}, error) {
29480	if s.Bucket == nil {
29481		return nil, fmt.Errorf("member Bucket is nil")
29482	}
29483	s.Bucket = aws.String(v)
29484	return &s, nil
29485}
29486
29487type PutBucketAclOutput struct {
29488	_ struct{} `type:"structure"`
29489}
29490
29491// String returns the string representation.
29492//
29493// API parameter values that are decorated as "sensitive" in the API will not
29494// be included in the string output. The member name will be present, but the
29495// value will be replaced with "sensitive".
29496func (s PutBucketAclOutput) String() string {
29497	return awsutil.Prettify(s)
29498}
29499
29500// GoString returns the string representation.
29501//
29502// API parameter values that are decorated as "sensitive" in the API will not
29503// be included in the string output. The member name will be present, but the
29504// value will be replaced with "sensitive".
29505func (s PutBucketAclOutput) GoString() string {
29506	return s.String()
29507}
29508
29509type PutBucketAnalyticsConfigurationInput struct {
29510	_ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"`
29511
29512	// The configuration and any analyses for the analytics filter.
29513	//
29514	// AnalyticsConfiguration is a required field
29515	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29516
29517	// The name of the bucket to which an analytics configuration is stored.
29518	//
29519	// Bucket is a required field
29520	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29521
29522	// The account ID of the expected bucket owner. If the bucket is owned by a
29523	// different account, the request will fail with an HTTP 403 (Access Denied)
29524	// error.
29525	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29526
29527	// The ID that identifies the analytics configuration.
29528	//
29529	// Id is a required field
29530	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
29531}
29532
29533// String returns the string representation.
29534//
29535// API parameter values that are decorated as "sensitive" in the API will not
29536// be included in the string output. The member name will be present, but the
29537// value will be replaced with "sensitive".
29538func (s PutBucketAnalyticsConfigurationInput) String() string {
29539	return awsutil.Prettify(s)
29540}
29541
29542// GoString returns the string representation.
29543//
29544// API parameter values that are decorated as "sensitive" in the API will not
29545// be included in the string output. The member name will be present, but the
29546// value will be replaced with "sensitive".
29547func (s PutBucketAnalyticsConfigurationInput) GoString() string {
29548	return s.String()
29549}
29550
29551// Validate inspects the fields of the type to determine if they are valid.
29552func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
29553	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
29554	if s.AnalyticsConfiguration == nil {
29555		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
29556	}
29557	if s.Bucket == nil {
29558		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29559	}
29560	if s.Bucket != nil && len(*s.Bucket) < 1 {
29561		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29562	}
29563	if s.Id == nil {
29564		invalidParams.Add(request.NewErrParamRequired("Id"))
29565	}
29566	if s.AnalyticsConfiguration != nil {
29567		if err := s.AnalyticsConfiguration.Validate(); err != nil {
29568			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
29569		}
29570	}
29571
29572	if invalidParams.Len() > 0 {
29573		return invalidParams
29574	}
29575	return nil
29576}
29577
29578// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
29579func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
29580	s.AnalyticsConfiguration = v
29581	return s
29582}
29583
29584// SetBucket sets the Bucket field's value.
29585func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
29586	s.Bucket = &v
29587	return s
29588}
29589
29590func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
29591	if s.Bucket == nil {
29592		return v
29593	}
29594	return *s.Bucket
29595}
29596
29597// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29598func (s *PutBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAnalyticsConfigurationInput {
29599	s.ExpectedBucketOwner = &v
29600	return s
29601}
29602
29603// SetId sets the Id field's value.
29604func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
29605	s.Id = &v
29606	return s
29607}
29608
29609func (s *PutBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
29610	if s.Bucket == nil {
29611		return nil, fmt.Errorf("member Bucket is nil")
29612	}
29613	return parseEndpointARN(*s.Bucket)
29614}
29615
29616func (s *PutBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
29617	if s.Bucket == nil {
29618		return false
29619	}
29620	return arn.IsARN(*s.Bucket)
29621}
29622
29623// updateArnableField updates the value of the input field that
29624// takes an ARN as an input. This method is useful to backfill
29625// the parsed resource name from ARN into the input member.
29626// It returns a pointer to a modified copy of input and an error.
29627// Note that original input is not modified.
29628func (s PutBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
29629	if s.Bucket == nil {
29630		return nil, fmt.Errorf("member Bucket is nil")
29631	}
29632	s.Bucket = aws.String(v)
29633	return &s, nil
29634}
29635
29636type PutBucketAnalyticsConfigurationOutput struct {
29637	_ struct{} `type:"structure"`
29638}
29639
29640// String returns the string representation.
29641//
29642// API parameter values that are decorated as "sensitive" in the API will not
29643// be included in the string output. The member name will be present, but the
29644// value will be replaced with "sensitive".
29645func (s PutBucketAnalyticsConfigurationOutput) String() string {
29646	return awsutil.Prettify(s)
29647}
29648
29649// GoString returns the string representation.
29650//
29651// API parameter values that are decorated as "sensitive" in the API will not
29652// be included in the string output. The member name will be present, but the
29653// value will be replaced with "sensitive".
29654func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
29655	return s.String()
29656}
29657
29658type PutBucketCorsInput struct {
29659	_ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"`
29660
29661	// Specifies the bucket impacted by the corsconfiguration.
29662	//
29663	// Bucket is a required field
29664	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29665
29666	// Describes the cross-origin access configuration for objects in an Amazon
29667	// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
29668	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
29669	// S3 User Guide.
29670	//
29671	// CORSConfiguration is a required field
29672	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29673
29674	// The account ID of the expected bucket owner. If the bucket is owned by a
29675	// different account, the request will fail with an HTTP 403 (Access Denied)
29676	// error.
29677	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29678}
29679
29680// String returns the string representation.
29681//
29682// API parameter values that are decorated as "sensitive" in the API will not
29683// be included in the string output. The member name will be present, but the
29684// value will be replaced with "sensitive".
29685func (s PutBucketCorsInput) String() string {
29686	return awsutil.Prettify(s)
29687}
29688
29689// GoString returns the string representation.
29690//
29691// API parameter values that are decorated as "sensitive" in the API will not
29692// be included in the string output. The member name will be present, but the
29693// value will be replaced with "sensitive".
29694func (s PutBucketCorsInput) GoString() string {
29695	return s.String()
29696}
29697
29698// Validate inspects the fields of the type to determine if they are valid.
29699func (s *PutBucketCorsInput) Validate() error {
29700	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
29701	if s.Bucket == nil {
29702		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29703	}
29704	if s.Bucket != nil && len(*s.Bucket) < 1 {
29705		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29706	}
29707	if s.CORSConfiguration == nil {
29708		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
29709	}
29710	if s.CORSConfiguration != nil {
29711		if err := s.CORSConfiguration.Validate(); err != nil {
29712			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
29713		}
29714	}
29715
29716	if invalidParams.Len() > 0 {
29717		return invalidParams
29718	}
29719	return nil
29720}
29721
29722// SetBucket sets the Bucket field's value.
29723func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
29724	s.Bucket = &v
29725	return s
29726}
29727
29728func (s *PutBucketCorsInput) getBucket() (v string) {
29729	if s.Bucket == nil {
29730		return v
29731	}
29732	return *s.Bucket
29733}
29734
29735// SetCORSConfiguration sets the CORSConfiguration field's value.
29736func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
29737	s.CORSConfiguration = v
29738	return s
29739}
29740
29741// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29742func (s *PutBucketCorsInput) SetExpectedBucketOwner(v string) *PutBucketCorsInput {
29743	s.ExpectedBucketOwner = &v
29744	return s
29745}
29746
29747func (s *PutBucketCorsInput) getEndpointARN() (arn.Resource, error) {
29748	if s.Bucket == nil {
29749		return nil, fmt.Errorf("member Bucket is nil")
29750	}
29751	return parseEndpointARN(*s.Bucket)
29752}
29753
29754func (s *PutBucketCorsInput) hasEndpointARN() bool {
29755	if s.Bucket == nil {
29756		return false
29757	}
29758	return arn.IsARN(*s.Bucket)
29759}
29760
29761// updateArnableField updates the value of the input field that
29762// takes an ARN as an input. This method is useful to backfill
29763// the parsed resource name from ARN into the input member.
29764// It returns a pointer to a modified copy of input and an error.
29765// Note that original input is not modified.
29766func (s PutBucketCorsInput) updateArnableField(v string) (interface{}, error) {
29767	if s.Bucket == nil {
29768		return nil, fmt.Errorf("member Bucket is nil")
29769	}
29770	s.Bucket = aws.String(v)
29771	return &s, nil
29772}
29773
29774type PutBucketCorsOutput struct {
29775	_ struct{} `type:"structure"`
29776}
29777
29778// String returns the string representation.
29779//
29780// API parameter values that are decorated as "sensitive" in the API will not
29781// be included in the string output. The member name will be present, but the
29782// value will be replaced with "sensitive".
29783func (s PutBucketCorsOutput) String() string {
29784	return awsutil.Prettify(s)
29785}
29786
29787// GoString returns the string representation.
29788//
29789// API parameter values that are decorated as "sensitive" in the API will not
29790// be included in the string output. The member name will be present, but the
29791// value will be replaced with "sensitive".
29792func (s PutBucketCorsOutput) GoString() string {
29793	return s.String()
29794}
29795
29796type PutBucketEncryptionInput struct {
29797	_ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"`
29798
29799	// Specifies default encryption for a bucket using server-side encryption with
29800	// Amazon S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). For information
29801	// about the Amazon S3 default encryption feature, see Amazon S3 Default Bucket
29802	// Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
29803	// in the Amazon S3 User Guide.
29804	//
29805	// Bucket is a required field
29806	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29807
29808	// The account ID of the expected bucket owner. If the bucket is owned by a
29809	// different account, the request will fail with an HTTP 403 (Access Denied)
29810	// error.
29811	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29812
29813	// Specifies the default server-side-encryption configuration.
29814	//
29815	// ServerSideEncryptionConfiguration is a required field
29816	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29817}
29818
29819// String returns the string representation.
29820//
29821// API parameter values that are decorated as "sensitive" in the API will not
29822// be included in the string output. The member name will be present, but the
29823// value will be replaced with "sensitive".
29824func (s PutBucketEncryptionInput) String() string {
29825	return awsutil.Prettify(s)
29826}
29827
29828// GoString returns the string representation.
29829//
29830// API parameter values that are decorated as "sensitive" in the API will not
29831// be included in the string output. The member name will be present, but the
29832// value will be replaced with "sensitive".
29833func (s PutBucketEncryptionInput) GoString() string {
29834	return s.String()
29835}
29836
29837// Validate inspects the fields of the type to determine if they are valid.
29838func (s *PutBucketEncryptionInput) Validate() error {
29839	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
29840	if s.Bucket == nil {
29841		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29842	}
29843	if s.Bucket != nil && len(*s.Bucket) < 1 {
29844		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29845	}
29846	if s.ServerSideEncryptionConfiguration == nil {
29847		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
29848	}
29849	if s.ServerSideEncryptionConfiguration != nil {
29850		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
29851			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
29852		}
29853	}
29854
29855	if invalidParams.Len() > 0 {
29856		return invalidParams
29857	}
29858	return nil
29859}
29860
29861// SetBucket sets the Bucket field's value.
29862func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
29863	s.Bucket = &v
29864	return s
29865}
29866
29867func (s *PutBucketEncryptionInput) getBucket() (v string) {
29868	if s.Bucket == nil {
29869		return v
29870	}
29871	return *s.Bucket
29872}
29873
29874// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29875func (s *PutBucketEncryptionInput) SetExpectedBucketOwner(v string) *PutBucketEncryptionInput {
29876	s.ExpectedBucketOwner = &v
29877	return s
29878}
29879
29880// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
29881func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
29882	s.ServerSideEncryptionConfiguration = v
29883	return s
29884}
29885
29886func (s *PutBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
29887	if s.Bucket == nil {
29888		return nil, fmt.Errorf("member Bucket is nil")
29889	}
29890	return parseEndpointARN(*s.Bucket)
29891}
29892
29893func (s *PutBucketEncryptionInput) hasEndpointARN() bool {
29894	if s.Bucket == nil {
29895		return false
29896	}
29897	return arn.IsARN(*s.Bucket)
29898}
29899
29900// updateArnableField updates the value of the input field that
29901// takes an ARN as an input. This method is useful to backfill
29902// the parsed resource name from ARN into the input member.
29903// It returns a pointer to a modified copy of input and an error.
29904// Note that original input is not modified.
29905func (s PutBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
29906	if s.Bucket == nil {
29907		return nil, fmt.Errorf("member Bucket is nil")
29908	}
29909	s.Bucket = aws.String(v)
29910	return &s, nil
29911}
29912
29913type PutBucketEncryptionOutput struct {
29914	_ struct{} `type:"structure"`
29915}
29916
29917// String returns the string representation.
29918//
29919// API parameter values that are decorated as "sensitive" in the API will not
29920// be included in the string output. The member name will be present, but the
29921// value will be replaced with "sensitive".
29922func (s PutBucketEncryptionOutput) String() string {
29923	return awsutil.Prettify(s)
29924}
29925
29926// GoString returns the string representation.
29927//
29928// API parameter values that are decorated as "sensitive" in the API will not
29929// be included in the string output. The member name will be present, but the
29930// value will be replaced with "sensitive".
29931func (s PutBucketEncryptionOutput) GoString() string {
29932	return s.String()
29933}
29934
29935type PutBucketIntelligentTieringConfigurationInput struct {
29936	_ struct{} `locationName:"PutBucketIntelligentTieringConfigurationRequest" type:"structure" payload:"IntelligentTieringConfiguration"`
29937
29938	// The name of the Amazon S3 bucket whose configuration you want to modify or
29939	// retrieve.
29940	//
29941	// Bucket is a required field
29942	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29943
29944	// The ID used to identify the S3 Intelligent-Tiering configuration.
29945	//
29946	// Id is a required field
29947	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
29948
29949	// Container for S3 Intelligent-Tiering configuration.
29950	//
29951	// IntelligentTieringConfiguration is a required field
29952	IntelligentTieringConfiguration *IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29953}
29954
29955// String returns the string representation.
29956//
29957// API parameter values that are decorated as "sensitive" in the API will not
29958// be included in the string output. The member name will be present, but the
29959// value will be replaced with "sensitive".
29960func (s PutBucketIntelligentTieringConfigurationInput) String() string {
29961	return awsutil.Prettify(s)
29962}
29963
29964// GoString returns the string representation.
29965//
29966// API parameter values that are decorated as "sensitive" in the API will not
29967// be included in the string output. The member name will be present, but the
29968// value will be replaced with "sensitive".
29969func (s PutBucketIntelligentTieringConfigurationInput) GoString() string {
29970	return s.String()
29971}
29972
29973// Validate inspects the fields of the type to determine if they are valid.
29974func (s *PutBucketIntelligentTieringConfigurationInput) Validate() error {
29975	invalidParams := request.ErrInvalidParams{Context: "PutBucketIntelligentTieringConfigurationInput"}
29976	if s.Bucket == nil {
29977		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29978	}
29979	if s.Bucket != nil && len(*s.Bucket) < 1 {
29980		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29981	}
29982	if s.Id == nil {
29983		invalidParams.Add(request.NewErrParamRequired("Id"))
29984	}
29985	if s.IntelligentTieringConfiguration == nil {
29986		invalidParams.Add(request.NewErrParamRequired("IntelligentTieringConfiguration"))
29987	}
29988	if s.IntelligentTieringConfiguration != nil {
29989		if err := s.IntelligentTieringConfiguration.Validate(); err != nil {
29990			invalidParams.AddNested("IntelligentTieringConfiguration", err.(request.ErrInvalidParams))
29991		}
29992	}
29993
29994	if invalidParams.Len() > 0 {
29995		return invalidParams
29996	}
29997	return nil
29998}
29999
30000// SetBucket sets the Bucket field's value.
30001func (s *PutBucketIntelligentTieringConfigurationInput) SetBucket(v string) *PutBucketIntelligentTieringConfigurationInput {
30002	s.Bucket = &v
30003	return s
30004}
30005
30006func (s *PutBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
30007	if s.Bucket == nil {
30008		return v
30009	}
30010	return *s.Bucket
30011}
30012
30013// SetId sets the Id field's value.
30014func (s *PutBucketIntelligentTieringConfigurationInput) SetId(v string) *PutBucketIntelligentTieringConfigurationInput {
30015	s.Id = &v
30016	return s
30017}
30018
30019// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
30020func (s *PutBucketIntelligentTieringConfigurationInput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *PutBucketIntelligentTieringConfigurationInput {
30021	s.IntelligentTieringConfiguration = v
30022	return s
30023}
30024
30025func (s *PutBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
30026	if s.Bucket == nil {
30027		return nil, fmt.Errorf("member Bucket is nil")
30028	}
30029	return parseEndpointARN(*s.Bucket)
30030}
30031
30032func (s *PutBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
30033	if s.Bucket == nil {
30034		return false
30035	}
30036	return arn.IsARN(*s.Bucket)
30037}
30038
30039// updateArnableField updates the value of the input field that
30040// takes an ARN as an input. This method is useful to backfill
30041// the parsed resource name from ARN into the input member.
30042// It returns a pointer to a modified copy of input and an error.
30043// Note that original input is not modified.
30044func (s PutBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
30045	if s.Bucket == nil {
30046		return nil, fmt.Errorf("member Bucket is nil")
30047	}
30048	s.Bucket = aws.String(v)
30049	return &s, nil
30050}
30051
30052type PutBucketIntelligentTieringConfigurationOutput struct {
30053	_ struct{} `type:"structure"`
30054}
30055
30056// String returns the string representation.
30057//
30058// API parameter values that are decorated as "sensitive" in the API will not
30059// be included in the string output. The member name will be present, but the
30060// value will be replaced with "sensitive".
30061func (s PutBucketIntelligentTieringConfigurationOutput) String() string {
30062	return awsutil.Prettify(s)
30063}
30064
30065// GoString returns the string representation.
30066//
30067// API parameter values that are decorated as "sensitive" in the API will not
30068// be included in the string output. The member name will be present, but the
30069// value will be replaced with "sensitive".
30070func (s PutBucketIntelligentTieringConfigurationOutput) GoString() string {
30071	return s.String()
30072}
30073
30074type PutBucketInventoryConfigurationInput struct {
30075	_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
30076
30077	// The name of the bucket where the inventory configuration will be stored.
30078	//
30079	// Bucket is a required field
30080	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30081
30082	// The account ID of the expected bucket owner. If the bucket is owned by a
30083	// different account, the request will fail with an HTTP 403 (Access Denied)
30084	// error.
30085	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30086
30087	// The ID used to identify the inventory configuration.
30088	//
30089	// Id is a required field
30090	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
30091
30092	// Specifies the inventory configuration.
30093	//
30094	// InventoryConfiguration is a required field
30095	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30096}
30097
30098// String returns the string representation.
30099//
30100// API parameter values that are decorated as "sensitive" in the API will not
30101// be included in the string output. The member name will be present, but the
30102// value will be replaced with "sensitive".
30103func (s PutBucketInventoryConfigurationInput) String() string {
30104	return awsutil.Prettify(s)
30105}
30106
30107// GoString returns the string representation.
30108//
30109// API parameter values that are decorated as "sensitive" in the API will not
30110// be included in the string output. The member name will be present, but the
30111// value will be replaced with "sensitive".
30112func (s PutBucketInventoryConfigurationInput) GoString() string {
30113	return s.String()
30114}
30115
30116// Validate inspects the fields of the type to determine if they are valid.
30117func (s *PutBucketInventoryConfigurationInput) Validate() error {
30118	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
30119	if s.Bucket == nil {
30120		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30121	}
30122	if s.Bucket != nil && len(*s.Bucket) < 1 {
30123		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30124	}
30125	if s.Id == nil {
30126		invalidParams.Add(request.NewErrParamRequired("Id"))
30127	}
30128	if s.InventoryConfiguration == nil {
30129		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
30130	}
30131	if s.InventoryConfiguration != nil {
30132		if err := s.InventoryConfiguration.Validate(); err != nil {
30133			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
30134		}
30135	}
30136
30137	if invalidParams.Len() > 0 {
30138		return invalidParams
30139	}
30140	return nil
30141}
30142
30143// SetBucket sets the Bucket field's value.
30144func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
30145	s.Bucket = &v
30146	return s
30147}
30148
30149func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
30150	if s.Bucket == nil {
30151		return v
30152	}
30153	return *s.Bucket
30154}
30155
30156// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30157func (s *PutBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketInventoryConfigurationInput {
30158	s.ExpectedBucketOwner = &v
30159	return s
30160}
30161
30162// SetId sets the Id field's value.
30163func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
30164	s.Id = &v
30165	return s
30166}
30167
30168// SetInventoryConfiguration sets the InventoryConfiguration field's value.
30169func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
30170	s.InventoryConfiguration = v
30171	return s
30172}
30173
30174func (s *PutBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
30175	if s.Bucket == nil {
30176		return nil, fmt.Errorf("member Bucket is nil")
30177	}
30178	return parseEndpointARN(*s.Bucket)
30179}
30180
30181func (s *PutBucketInventoryConfigurationInput) hasEndpointARN() bool {
30182	if s.Bucket == nil {
30183		return false
30184	}
30185	return arn.IsARN(*s.Bucket)
30186}
30187
30188// updateArnableField updates the value of the input field that
30189// takes an ARN as an input. This method is useful to backfill
30190// the parsed resource name from ARN into the input member.
30191// It returns a pointer to a modified copy of input and an error.
30192// Note that original input is not modified.
30193func (s PutBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
30194	if s.Bucket == nil {
30195		return nil, fmt.Errorf("member Bucket is nil")
30196	}
30197	s.Bucket = aws.String(v)
30198	return &s, nil
30199}
30200
30201type PutBucketInventoryConfigurationOutput struct {
30202	_ struct{} `type:"structure"`
30203}
30204
30205// String returns the string representation.
30206//
30207// API parameter values that are decorated as "sensitive" in the API will not
30208// be included in the string output. The member name will be present, but the
30209// value will be replaced with "sensitive".
30210func (s PutBucketInventoryConfigurationOutput) String() string {
30211	return awsutil.Prettify(s)
30212}
30213
30214// GoString returns the string representation.
30215//
30216// API parameter values that are decorated as "sensitive" in the API will not
30217// be included in the string output. The member name will be present, but the
30218// value will be replaced with "sensitive".
30219func (s PutBucketInventoryConfigurationOutput) GoString() string {
30220	return s.String()
30221}
30222
30223type PutBucketLifecycleConfigurationInput struct {
30224	_ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"`
30225
30226	// The name of the bucket for which to set the configuration.
30227	//
30228	// Bucket is a required field
30229	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30230
30231	// The account ID of the expected bucket owner. If the bucket is owned by a
30232	// different account, the request will fail with an HTTP 403 (Access Denied)
30233	// error.
30234	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30235
30236	// Container for lifecycle rules. You can add as many as 1,000 rules.
30237	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30238}
30239
30240// String returns the string representation.
30241//
30242// API parameter values that are decorated as "sensitive" in the API will not
30243// be included in the string output. The member name will be present, but the
30244// value will be replaced with "sensitive".
30245func (s PutBucketLifecycleConfigurationInput) String() string {
30246	return awsutil.Prettify(s)
30247}
30248
30249// GoString returns the string representation.
30250//
30251// API parameter values that are decorated as "sensitive" in the API will not
30252// be included in the string output. The member name will be present, but the
30253// value will be replaced with "sensitive".
30254func (s PutBucketLifecycleConfigurationInput) GoString() string {
30255	return s.String()
30256}
30257
30258// Validate inspects the fields of the type to determine if they are valid.
30259func (s *PutBucketLifecycleConfigurationInput) Validate() error {
30260	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
30261	if s.Bucket == nil {
30262		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30263	}
30264	if s.Bucket != nil && len(*s.Bucket) < 1 {
30265		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30266	}
30267	if s.LifecycleConfiguration != nil {
30268		if err := s.LifecycleConfiguration.Validate(); err != nil {
30269			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
30270		}
30271	}
30272
30273	if invalidParams.Len() > 0 {
30274		return invalidParams
30275	}
30276	return nil
30277}
30278
30279// SetBucket sets the Bucket field's value.
30280func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
30281	s.Bucket = &v
30282	return s
30283}
30284
30285func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
30286	if s.Bucket == nil {
30287		return v
30288	}
30289	return *s.Bucket
30290}
30291
30292// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30293func (s *PutBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleConfigurationInput {
30294	s.ExpectedBucketOwner = &v
30295	return s
30296}
30297
30298// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
30299func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
30300	s.LifecycleConfiguration = v
30301	return s
30302}
30303
30304func (s *PutBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
30305	if s.Bucket == nil {
30306		return nil, fmt.Errorf("member Bucket is nil")
30307	}
30308	return parseEndpointARN(*s.Bucket)
30309}
30310
30311func (s *PutBucketLifecycleConfigurationInput) hasEndpointARN() bool {
30312	if s.Bucket == nil {
30313		return false
30314	}
30315	return arn.IsARN(*s.Bucket)
30316}
30317
30318// updateArnableField updates the value of the input field that
30319// takes an ARN as an input. This method is useful to backfill
30320// the parsed resource name from ARN into the input member.
30321// It returns a pointer to a modified copy of input and an error.
30322// Note that original input is not modified.
30323func (s PutBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
30324	if s.Bucket == nil {
30325		return nil, fmt.Errorf("member Bucket is nil")
30326	}
30327	s.Bucket = aws.String(v)
30328	return &s, nil
30329}
30330
30331type PutBucketLifecycleConfigurationOutput struct {
30332	_ struct{} `type:"structure"`
30333}
30334
30335// String returns the string representation.
30336//
30337// API parameter values that are decorated as "sensitive" in the API will not
30338// be included in the string output. The member name will be present, but the
30339// value will be replaced with "sensitive".
30340func (s PutBucketLifecycleConfigurationOutput) String() string {
30341	return awsutil.Prettify(s)
30342}
30343
30344// GoString returns the string representation.
30345//
30346// API parameter values that are decorated as "sensitive" in the API will not
30347// be included in the string output. The member name will be present, but the
30348// value will be replaced with "sensitive".
30349func (s PutBucketLifecycleConfigurationOutput) GoString() string {
30350	return s.String()
30351}
30352
30353type PutBucketLifecycleInput struct {
30354	_ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"`
30355
30356	// Bucket is a required field
30357	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30358
30359	// The account ID of the expected bucket owner. If the bucket is owned by a
30360	// different account, the request will fail with an HTTP 403 (Access Denied)
30361	// error.
30362	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30363
30364	// Container for lifecycle rules. You can add as many as 1000 rules.
30365	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30366}
30367
30368// String returns the string representation.
30369//
30370// API parameter values that are decorated as "sensitive" in the API will not
30371// be included in the string output. The member name will be present, but the
30372// value will be replaced with "sensitive".
30373func (s PutBucketLifecycleInput) String() string {
30374	return awsutil.Prettify(s)
30375}
30376
30377// GoString returns the string representation.
30378//
30379// API parameter values that are decorated as "sensitive" in the API will not
30380// be included in the string output. The member name will be present, but the
30381// value will be replaced with "sensitive".
30382func (s PutBucketLifecycleInput) GoString() string {
30383	return s.String()
30384}
30385
30386// Validate inspects the fields of the type to determine if they are valid.
30387func (s *PutBucketLifecycleInput) Validate() error {
30388	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
30389	if s.Bucket == nil {
30390		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30391	}
30392	if s.Bucket != nil && len(*s.Bucket) < 1 {
30393		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30394	}
30395	if s.LifecycleConfiguration != nil {
30396		if err := s.LifecycleConfiguration.Validate(); err != nil {
30397			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
30398		}
30399	}
30400
30401	if invalidParams.Len() > 0 {
30402		return invalidParams
30403	}
30404	return nil
30405}
30406
30407// SetBucket sets the Bucket field's value.
30408func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
30409	s.Bucket = &v
30410	return s
30411}
30412
30413func (s *PutBucketLifecycleInput) getBucket() (v string) {
30414	if s.Bucket == nil {
30415		return v
30416	}
30417	return *s.Bucket
30418}
30419
30420// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30421func (s *PutBucketLifecycleInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleInput {
30422	s.ExpectedBucketOwner = &v
30423	return s
30424}
30425
30426// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
30427func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
30428	s.LifecycleConfiguration = v
30429	return s
30430}
30431
30432func (s *PutBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
30433	if s.Bucket == nil {
30434		return nil, fmt.Errorf("member Bucket is nil")
30435	}
30436	return parseEndpointARN(*s.Bucket)
30437}
30438
30439func (s *PutBucketLifecycleInput) hasEndpointARN() bool {
30440	if s.Bucket == nil {
30441		return false
30442	}
30443	return arn.IsARN(*s.Bucket)
30444}
30445
30446// updateArnableField updates the value of the input field that
30447// takes an ARN as an input. This method is useful to backfill
30448// the parsed resource name from ARN into the input member.
30449// It returns a pointer to a modified copy of input and an error.
30450// Note that original input is not modified.
30451func (s PutBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
30452	if s.Bucket == nil {
30453		return nil, fmt.Errorf("member Bucket is nil")
30454	}
30455	s.Bucket = aws.String(v)
30456	return &s, nil
30457}
30458
30459type PutBucketLifecycleOutput struct {
30460	_ struct{} `type:"structure"`
30461}
30462
30463// String returns the string representation.
30464//
30465// API parameter values that are decorated as "sensitive" in the API will not
30466// be included in the string output. The member name will be present, but the
30467// value will be replaced with "sensitive".
30468func (s PutBucketLifecycleOutput) String() string {
30469	return awsutil.Prettify(s)
30470}
30471
30472// GoString returns the string representation.
30473//
30474// API parameter values that are decorated as "sensitive" in the API will not
30475// be included in the string output. The member name will be present, but the
30476// value will be replaced with "sensitive".
30477func (s PutBucketLifecycleOutput) GoString() string {
30478	return s.String()
30479}
30480
30481type PutBucketLoggingInput struct {
30482	_ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"`
30483
30484	// The name of the bucket for which to set the logging parameters.
30485	//
30486	// Bucket is a required field
30487	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30488
30489	// Container for logging status information.
30490	//
30491	// BucketLoggingStatus is a required field
30492	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30493
30494	// The account ID of the expected bucket owner. If the bucket is owned by a
30495	// different account, the request will fail with an HTTP 403 (Access Denied)
30496	// error.
30497	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30498}
30499
30500// String returns the string representation.
30501//
30502// API parameter values that are decorated as "sensitive" in the API will not
30503// be included in the string output. The member name will be present, but the
30504// value will be replaced with "sensitive".
30505func (s PutBucketLoggingInput) String() string {
30506	return awsutil.Prettify(s)
30507}
30508
30509// GoString returns the string representation.
30510//
30511// API parameter values that are decorated as "sensitive" in the API will not
30512// be included in the string output. The member name will be present, but the
30513// value will be replaced with "sensitive".
30514func (s PutBucketLoggingInput) GoString() string {
30515	return s.String()
30516}
30517
30518// Validate inspects the fields of the type to determine if they are valid.
30519func (s *PutBucketLoggingInput) Validate() error {
30520	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
30521	if s.Bucket == nil {
30522		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30523	}
30524	if s.Bucket != nil && len(*s.Bucket) < 1 {
30525		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30526	}
30527	if s.BucketLoggingStatus == nil {
30528		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
30529	}
30530	if s.BucketLoggingStatus != nil {
30531		if err := s.BucketLoggingStatus.Validate(); err != nil {
30532			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
30533		}
30534	}
30535
30536	if invalidParams.Len() > 0 {
30537		return invalidParams
30538	}
30539	return nil
30540}
30541
30542// SetBucket sets the Bucket field's value.
30543func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
30544	s.Bucket = &v
30545	return s
30546}
30547
30548func (s *PutBucketLoggingInput) getBucket() (v string) {
30549	if s.Bucket == nil {
30550		return v
30551	}
30552	return *s.Bucket
30553}
30554
30555// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
30556func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
30557	s.BucketLoggingStatus = v
30558	return s
30559}
30560
30561// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30562func (s *PutBucketLoggingInput) SetExpectedBucketOwner(v string) *PutBucketLoggingInput {
30563	s.ExpectedBucketOwner = &v
30564	return s
30565}
30566
30567func (s *PutBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
30568	if s.Bucket == nil {
30569		return nil, fmt.Errorf("member Bucket is nil")
30570	}
30571	return parseEndpointARN(*s.Bucket)
30572}
30573
30574func (s *PutBucketLoggingInput) hasEndpointARN() bool {
30575	if s.Bucket == nil {
30576		return false
30577	}
30578	return arn.IsARN(*s.Bucket)
30579}
30580
30581// updateArnableField updates the value of the input field that
30582// takes an ARN as an input. This method is useful to backfill
30583// the parsed resource name from ARN into the input member.
30584// It returns a pointer to a modified copy of input and an error.
30585// Note that original input is not modified.
30586func (s PutBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
30587	if s.Bucket == nil {
30588		return nil, fmt.Errorf("member Bucket is nil")
30589	}
30590	s.Bucket = aws.String(v)
30591	return &s, nil
30592}
30593
30594type PutBucketLoggingOutput struct {
30595	_ struct{} `type:"structure"`
30596}
30597
30598// String returns the string representation.
30599//
30600// API parameter values that are decorated as "sensitive" in the API will not
30601// be included in the string output. The member name will be present, but the
30602// value will be replaced with "sensitive".
30603func (s PutBucketLoggingOutput) String() string {
30604	return awsutil.Prettify(s)
30605}
30606
30607// GoString returns the string representation.
30608//
30609// API parameter values that are decorated as "sensitive" in the API will not
30610// be included in the string output. The member name will be present, but the
30611// value will be replaced with "sensitive".
30612func (s PutBucketLoggingOutput) GoString() string {
30613	return s.String()
30614}
30615
30616type PutBucketMetricsConfigurationInput struct {
30617	_ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"`
30618
30619	// The name of the bucket for which the metrics configuration is set.
30620	//
30621	// Bucket is a required field
30622	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30623
30624	// The account ID of the expected bucket owner. If the bucket is owned by a
30625	// different account, the request will fail with an HTTP 403 (Access Denied)
30626	// error.
30627	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30628
30629	// The ID used to identify the metrics configuration.
30630	//
30631	// Id is a required field
30632	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
30633
30634	// Specifies the metrics configuration.
30635	//
30636	// MetricsConfiguration is a required field
30637	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30638}
30639
30640// String returns the string representation.
30641//
30642// API parameter values that are decorated as "sensitive" in the API will not
30643// be included in the string output. The member name will be present, but the
30644// value will be replaced with "sensitive".
30645func (s PutBucketMetricsConfigurationInput) String() string {
30646	return awsutil.Prettify(s)
30647}
30648
30649// GoString returns the string representation.
30650//
30651// API parameter values that are decorated as "sensitive" in the API will not
30652// be included in the string output. The member name will be present, but the
30653// value will be replaced with "sensitive".
30654func (s PutBucketMetricsConfigurationInput) GoString() string {
30655	return s.String()
30656}
30657
30658// Validate inspects the fields of the type to determine if they are valid.
30659func (s *PutBucketMetricsConfigurationInput) Validate() error {
30660	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
30661	if s.Bucket == nil {
30662		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30663	}
30664	if s.Bucket != nil && len(*s.Bucket) < 1 {
30665		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30666	}
30667	if s.Id == nil {
30668		invalidParams.Add(request.NewErrParamRequired("Id"))
30669	}
30670	if s.MetricsConfiguration == nil {
30671		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
30672	}
30673	if s.MetricsConfiguration != nil {
30674		if err := s.MetricsConfiguration.Validate(); err != nil {
30675			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
30676		}
30677	}
30678
30679	if invalidParams.Len() > 0 {
30680		return invalidParams
30681	}
30682	return nil
30683}
30684
30685// SetBucket sets the Bucket field's value.
30686func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
30687	s.Bucket = &v
30688	return s
30689}
30690
30691func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
30692	if s.Bucket == nil {
30693		return v
30694	}
30695	return *s.Bucket
30696}
30697
30698// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30699func (s *PutBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketMetricsConfigurationInput {
30700	s.ExpectedBucketOwner = &v
30701	return s
30702}
30703
30704// SetId sets the Id field's value.
30705func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
30706	s.Id = &v
30707	return s
30708}
30709
30710// SetMetricsConfiguration sets the MetricsConfiguration field's value.
30711func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
30712	s.MetricsConfiguration = v
30713	return s
30714}
30715
30716func (s *PutBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
30717	if s.Bucket == nil {
30718		return nil, fmt.Errorf("member Bucket is nil")
30719	}
30720	return parseEndpointARN(*s.Bucket)
30721}
30722
30723func (s *PutBucketMetricsConfigurationInput) hasEndpointARN() bool {
30724	if s.Bucket == nil {
30725		return false
30726	}
30727	return arn.IsARN(*s.Bucket)
30728}
30729
30730// updateArnableField updates the value of the input field that
30731// takes an ARN as an input. This method is useful to backfill
30732// the parsed resource name from ARN into the input member.
30733// It returns a pointer to a modified copy of input and an error.
30734// Note that original input is not modified.
30735func (s PutBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
30736	if s.Bucket == nil {
30737		return nil, fmt.Errorf("member Bucket is nil")
30738	}
30739	s.Bucket = aws.String(v)
30740	return &s, nil
30741}
30742
30743type PutBucketMetricsConfigurationOutput struct {
30744	_ struct{} `type:"structure"`
30745}
30746
30747// String returns the string representation.
30748//
30749// API parameter values that are decorated as "sensitive" in the API will not
30750// be included in the string output. The member name will be present, but the
30751// value will be replaced with "sensitive".
30752func (s PutBucketMetricsConfigurationOutput) String() string {
30753	return awsutil.Prettify(s)
30754}
30755
30756// GoString returns the string representation.
30757//
30758// API parameter values that are decorated as "sensitive" in the API will not
30759// be included in the string output. The member name will be present, but the
30760// value will be replaced with "sensitive".
30761func (s PutBucketMetricsConfigurationOutput) GoString() string {
30762	return s.String()
30763}
30764
30765type PutBucketNotificationConfigurationInput struct {
30766	_ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"`
30767
30768	// The name of the bucket.
30769	//
30770	// Bucket is a required field
30771	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30772
30773	// The account ID of the expected bucket owner. If the bucket is owned by a
30774	// different account, the request will fail with an HTTP 403 (Access Denied)
30775	// error.
30776	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30777
30778	// A container for specifying the notification configuration of the bucket.
30779	// If this element is empty, notifications are turned off for the bucket.
30780	//
30781	// NotificationConfiguration is a required field
30782	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30783}
30784
30785// String returns the string representation.
30786//
30787// API parameter values that are decorated as "sensitive" in the API will not
30788// be included in the string output. The member name will be present, but the
30789// value will be replaced with "sensitive".
30790func (s PutBucketNotificationConfigurationInput) String() string {
30791	return awsutil.Prettify(s)
30792}
30793
30794// GoString returns the string representation.
30795//
30796// API parameter values that are decorated as "sensitive" in the API will not
30797// be included in the string output. The member name will be present, but the
30798// value will be replaced with "sensitive".
30799func (s PutBucketNotificationConfigurationInput) GoString() string {
30800	return s.String()
30801}
30802
30803// Validate inspects the fields of the type to determine if they are valid.
30804func (s *PutBucketNotificationConfigurationInput) Validate() error {
30805	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
30806	if s.Bucket == nil {
30807		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30808	}
30809	if s.Bucket != nil && len(*s.Bucket) < 1 {
30810		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30811	}
30812	if s.NotificationConfiguration == nil {
30813		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
30814	}
30815	if s.NotificationConfiguration != nil {
30816		if err := s.NotificationConfiguration.Validate(); err != nil {
30817			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
30818		}
30819	}
30820
30821	if invalidParams.Len() > 0 {
30822		return invalidParams
30823	}
30824	return nil
30825}
30826
30827// SetBucket sets the Bucket field's value.
30828func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
30829	s.Bucket = &v
30830	return s
30831}
30832
30833func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
30834	if s.Bucket == nil {
30835		return v
30836	}
30837	return *s.Bucket
30838}
30839
30840// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30841func (s *PutBucketNotificationConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationConfigurationInput {
30842	s.ExpectedBucketOwner = &v
30843	return s
30844}
30845
30846// SetNotificationConfiguration sets the NotificationConfiguration field's value.
30847func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
30848	s.NotificationConfiguration = v
30849	return s
30850}
30851
30852func (s *PutBucketNotificationConfigurationInput) getEndpointARN() (arn.Resource, error) {
30853	if s.Bucket == nil {
30854		return nil, fmt.Errorf("member Bucket is nil")
30855	}
30856	return parseEndpointARN(*s.Bucket)
30857}
30858
30859func (s *PutBucketNotificationConfigurationInput) hasEndpointARN() bool {
30860	if s.Bucket == nil {
30861		return false
30862	}
30863	return arn.IsARN(*s.Bucket)
30864}
30865
30866// updateArnableField updates the value of the input field that
30867// takes an ARN as an input. This method is useful to backfill
30868// the parsed resource name from ARN into the input member.
30869// It returns a pointer to a modified copy of input and an error.
30870// Note that original input is not modified.
30871func (s PutBucketNotificationConfigurationInput) updateArnableField(v string) (interface{}, error) {
30872	if s.Bucket == nil {
30873		return nil, fmt.Errorf("member Bucket is nil")
30874	}
30875	s.Bucket = aws.String(v)
30876	return &s, nil
30877}
30878
30879type PutBucketNotificationConfigurationOutput struct {
30880	_ struct{} `type:"structure"`
30881}
30882
30883// String returns the string representation.
30884//
30885// API parameter values that are decorated as "sensitive" in the API will not
30886// be included in the string output. The member name will be present, but the
30887// value will be replaced with "sensitive".
30888func (s PutBucketNotificationConfigurationOutput) String() string {
30889	return awsutil.Prettify(s)
30890}
30891
30892// GoString returns the string representation.
30893//
30894// API parameter values that are decorated as "sensitive" in the API will not
30895// be included in the string output. The member name will be present, but the
30896// value will be replaced with "sensitive".
30897func (s PutBucketNotificationConfigurationOutput) GoString() string {
30898	return s.String()
30899}
30900
30901type PutBucketNotificationInput struct {
30902	_ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"`
30903
30904	// The name of the bucket.
30905	//
30906	// Bucket is a required field
30907	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30908
30909	// The account ID of the expected bucket owner. If the bucket is owned by a
30910	// different account, the request will fail with an HTTP 403 (Access Denied)
30911	// error.
30912	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30913
30914	// The container for the configuration.
30915	//
30916	// NotificationConfiguration is a required field
30917	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30918}
30919
30920// String returns the string representation.
30921//
30922// API parameter values that are decorated as "sensitive" in the API will not
30923// be included in the string output. The member name will be present, but the
30924// value will be replaced with "sensitive".
30925func (s PutBucketNotificationInput) String() string {
30926	return awsutil.Prettify(s)
30927}
30928
30929// GoString returns the string representation.
30930//
30931// API parameter values that are decorated as "sensitive" in the API will not
30932// be included in the string output. The member name will be present, but the
30933// value will be replaced with "sensitive".
30934func (s PutBucketNotificationInput) GoString() string {
30935	return s.String()
30936}
30937
30938// Validate inspects the fields of the type to determine if they are valid.
30939func (s *PutBucketNotificationInput) Validate() error {
30940	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
30941	if s.Bucket == nil {
30942		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30943	}
30944	if s.Bucket != nil && len(*s.Bucket) < 1 {
30945		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30946	}
30947	if s.NotificationConfiguration == nil {
30948		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
30949	}
30950
30951	if invalidParams.Len() > 0 {
30952		return invalidParams
30953	}
30954	return nil
30955}
30956
30957// SetBucket sets the Bucket field's value.
30958func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
30959	s.Bucket = &v
30960	return s
30961}
30962
30963func (s *PutBucketNotificationInput) getBucket() (v string) {
30964	if s.Bucket == nil {
30965		return v
30966	}
30967	return *s.Bucket
30968}
30969
30970// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30971func (s *PutBucketNotificationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationInput {
30972	s.ExpectedBucketOwner = &v
30973	return s
30974}
30975
30976// SetNotificationConfiguration sets the NotificationConfiguration field's value.
30977func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
30978	s.NotificationConfiguration = v
30979	return s
30980}
30981
30982func (s *PutBucketNotificationInput) getEndpointARN() (arn.Resource, error) {
30983	if s.Bucket == nil {
30984		return nil, fmt.Errorf("member Bucket is nil")
30985	}
30986	return parseEndpointARN(*s.Bucket)
30987}
30988
30989func (s *PutBucketNotificationInput) hasEndpointARN() bool {
30990	if s.Bucket == nil {
30991		return false
30992	}
30993	return arn.IsARN(*s.Bucket)
30994}
30995
30996// updateArnableField updates the value of the input field that
30997// takes an ARN as an input. This method is useful to backfill
30998// the parsed resource name from ARN into the input member.
30999// It returns a pointer to a modified copy of input and an error.
31000// Note that original input is not modified.
31001func (s PutBucketNotificationInput) updateArnableField(v string) (interface{}, error) {
31002	if s.Bucket == nil {
31003		return nil, fmt.Errorf("member Bucket is nil")
31004	}
31005	s.Bucket = aws.String(v)
31006	return &s, nil
31007}
31008
31009type PutBucketNotificationOutput struct {
31010	_ struct{} `type:"structure"`
31011}
31012
31013// String returns the string representation.
31014//
31015// API parameter values that are decorated as "sensitive" in the API will not
31016// be included in the string output. The member name will be present, but the
31017// value will be replaced with "sensitive".
31018func (s PutBucketNotificationOutput) String() string {
31019	return awsutil.Prettify(s)
31020}
31021
31022// GoString returns the string representation.
31023//
31024// API parameter values that are decorated as "sensitive" in the API will not
31025// be included in the string output. The member name will be present, but the
31026// value will be replaced with "sensitive".
31027func (s PutBucketNotificationOutput) GoString() string {
31028	return s.String()
31029}
31030
31031type PutBucketOwnershipControlsInput struct {
31032	_ struct{} `locationName:"PutBucketOwnershipControlsRequest" type:"structure" payload:"OwnershipControls"`
31033
31034	// The name of the Amazon S3 bucket whose OwnershipControls you want to set.
31035	//
31036	// Bucket is a required field
31037	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31038
31039	// The account ID of the expected bucket owner. If the bucket is owned by a
31040	// different account, the request will fail with an HTTP 403 (Access Denied)
31041	// error.
31042	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31043
31044	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) that you want
31045	// to apply to this Amazon S3 bucket.
31046	//
31047	// OwnershipControls is a required field
31048	OwnershipControls *OwnershipControls `locationName:"OwnershipControls" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31049}
31050
31051// String returns the string representation.
31052//
31053// API parameter values that are decorated as "sensitive" in the API will not
31054// be included in the string output. The member name will be present, but the
31055// value will be replaced with "sensitive".
31056func (s PutBucketOwnershipControlsInput) String() string {
31057	return awsutil.Prettify(s)
31058}
31059
31060// GoString returns the string representation.
31061//
31062// API parameter values that are decorated as "sensitive" in the API will not
31063// be included in the string output. The member name will be present, but the
31064// value will be replaced with "sensitive".
31065func (s PutBucketOwnershipControlsInput) GoString() string {
31066	return s.String()
31067}
31068
31069// Validate inspects the fields of the type to determine if they are valid.
31070func (s *PutBucketOwnershipControlsInput) Validate() error {
31071	invalidParams := request.ErrInvalidParams{Context: "PutBucketOwnershipControlsInput"}
31072	if s.Bucket == nil {
31073		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31074	}
31075	if s.Bucket != nil && len(*s.Bucket) < 1 {
31076		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31077	}
31078	if s.OwnershipControls == nil {
31079		invalidParams.Add(request.NewErrParamRequired("OwnershipControls"))
31080	}
31081	if s.OwnershipControls != nil {
31082		if err := s.OwnershipControls.Validate(); err != nil {
31083			invalidParams.AddNested("OwnershipControls", err.(request.ErrInvalidParams))
31084		}
31085	}
31086
31087	if invalidParams.Len() > 0 {
31088		return invalidParams
31089	}
31090	return nil
31091}
31092
31093// SetBucket sets the Bucket field's value.
31094func (s *PutBucketOwnershipControlsInput) SetBucket(v string) *PutBucketOwnershipControlsInput {
31095	s.Bucket = &v
31096	return s
31097}
31098
31099func (s *PutBucketOwnershipControlsInput) getBucket() (v string) {
31100	if s.Bucket == nil {
31101		return v
31102	}
31103	return *s.Bucket
31104}
31105
31106// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31107func (s *PutBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *PutBucketOwnershipControlsInput {
31108	s.ExpectedBucketOwner = &v
31109	return s
31110}
31111
31112// SetOwnershipControls sets the OwnershipControls field's value.
31113func (s *PutBucketOwnershipControlsInput) SetOwnershipControls(v *OwnershipControls) *PutBucketOwnershipControlsInput {
31114	s.OwnershipControls = v
31115	return s
31116}
31117
31118func (s *PutBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
31119	if s.Bucket == nil {
31120		return nil, fmt.Errorf("member Bucket is nil")
31121	}
31122	return parseEndpointARN(*s.Bucket)
31123}
31124
31125func (s *PutBucketOwnershipControlsInput) hasEndpointARN() bool {
31126	if s.Bucket == nil {
31127		return false
31128	}
31129	return arn.IsARN(*s.Bucket)
31130}
31131
31132// updateArnableField updates the value of the input field that
31133// takes an ARN as an input. This method is useful to backfill
31134// the parsed resource name from ARN into the input member.
31135// It returns a pointer to a modified copy of input and an error.
31136// Note that original input is not modified.
31137func (s PutBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
31138	if s.Bucket == nil {
31139		return nil, fmt.Errorf("member Bucket is nil")
31140	}
31141	s.Bucket = aws.String(v)
31142	return &s, nil
31143}
31144
31145type PutBucketOwnershipControlsOutput struct {
31146	_ struct{} `type:"structure"`
31147}
31148
31149// String returns the string representation.
31150//
31151// API parameter values that are decorated as "sensitive" in the API will not
31152// be included in the string output. The member name will be present, but the
31153// value will be replaced with "sensitive".
31154func (s PutBucketOwnershipControlsOutput) String() string {
31155	return awsutil.Prettify(s)
31156}
31157
31158// GoString returns the string representation.
31159//
31160// API parameter values that are decorated as "sensitive" in the API will not
31161// be included in the string output. The member name will be present, but the
31162// value will be replaced with "sensitive".
31163func (s PutBucketOwnershipControlsOutput) GoString() string {
31164	return s.String()
31165}
31166
31167type PutBucketPolicyInput struct {
31168	_ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"`
31169
31170	// The name of the bucket.
31171	//
31172	// Bucket is a required field
31173	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31174
31175	// Set this parameter to true to confirm that you want to remove your permissions
31176	// to change this bucket policy in the future.
31177	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
31178
31179	// The account ID of the expected bucket owner. If the bucket is owned by a
31180	// different account, the request will fail with an HTTP 403 (Access Denied)
31181	// error.
31182	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31183
31184	// The bucket policy as a JSON document.
31185	//
31186	// Policy is a required field
31187	Policy *string `type:"string" required:"true"`
31188}
31189
31190// String returns the string representation.
31191//
31192// API parameter values that are decorated as "sensitive" in the API will not
31193// be included in the string output. The member name will be present, but the
31194// value will be replaced with "sensitive".
31195func (s PutBucketPolicyInput) String() string {
31196	return awsutil.Prettify(s)
31197}
31198
31199// GoString returns the string representation.
31200//
31201// API parameter values that are decorated as "sensitive" in the API will not
31202// be included in the string output. The member name will be present, but the
31203// value will be replaced with "sensitive".
31204func (s PutBucketPolicyInput) GoString() string {
31205	return s.String()
31206}
31207
31208// Validate inspects the fields of the type to determine if they are valid.
31209func (s *PutBucketPolicyInput) Validate() error {
31210	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
31211	if s.Bucket == nil {
31212		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31213	}
31214	if s.Bucket != nil && len(*s.Bucket) < 1 {
31215		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31216	}
31217	if s.Policy == nil {
31218		invalidParams.Add(request.NewErrParamRequired("Policy"))
31219	}
31220
31221	if invalidParams.Len() > 0 {
31222		return invalidParams
31223	}
31224	return nil
31225}
31226
31227// SetBucket sets the Bucket field's value.
31228func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
31229	s.Bucket = &v
31230	return s
31231}
31232
31233func (s *PutBucketPolicyInput) getBucket() (v string) {
31234	if s.Bucket == nil {
31235		return v
31236	}
31237	return *s.Bucket
31238}
31239
31240// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
31241func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
31242	s.ConfirmRemoveSelfBucketAccess = &v
31243	return s
31244}
31245
31246// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31247func (s *PutBucketPolicyInput) SetExpectedBucketOwner(v string) *PutBucketPolicyInput {
31248	s.ExpectedBucketOwner = &v
31249	return s
31250}
31251
31252// SetPolicy sets the Policy field's value.
31253func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
31254	s.Policy = &v
31255	return s
31256}
31257
31258func (s *PutBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
31259	if s.Bucket == nil {
31260		return nil, fmt.Errorf("member Bucket is nil")
31261	}
31262	return parseEndpointARN(*s.Bucket)
31263}
31264
31265func (s *PutBucketPolicyInput) hasEndpointARN() bool {
31266	if s.Bucket == nil {
31267		return false
31268	}
31269	return arn.IsARN(*s.Bucket)
31270}
31271
31272// updateArnableField updates the value of the input field that
31273// takes an ARN as an input. This method is useful to backfill
31274// the parsed resource name from ARN into the input member.
31275// It returns a pointer to a modified copy of input and an error.
31276// Note that original input is not modified.
31277func (s PutBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
31278	if s.Bucket == nil {
31279		return nil, fmt.Errorf("member Bucket is nil")
31280	}
31281	s.Bucket = aws.String(v)
31282	return &s, nil
31283}
31284
31285type PutBucketPolicyOutput struct {
31286	_ struct{} `type:"structure"`
31287}
31288
31289// String returns the string representation.
31290//
31291// API parameter values that are decorated as "sensitive" in the API will not
31292// be included in the string output. The member name will be present, but the
31293// value will be replaced with "sensitive".
31294func (s PutBucketPolicyOutput) String() string {
31295	return awsutil.Prettify(s)
31296}
31297
31298// GoString returns the string representation.
31299//
31300// API parameter values that are decorated as "sensitive" in the API will not
31301// be included in the string output. The member name will be present, but the
31302// value will be replaced with "sensitive".
31303func (s PutBucketPolicyOutput) GoString() string {
31304	return s.String()
31305}
31306
31307type PutBucketReplicationInput struct {
31308	_ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"`
31309
31310	// The name of the bucket
31311	//
31312	// Bucket is a required field
31313	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31314
31315	// The account ID of the expected bucket owner. If the bucket is owned by a
31316	// different account, the request will fail with an HTTP 403 (Access Denied)
31317	// error.
31318	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31319
31320	// A container for replication rules. You can add up to 1,000 rules. The maximum
31321	// size of a replication configuration is 2 MB.
31322	//
31323	// ReplicationConfiguration is a required field
31324	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31325
31326	// A token to allow Object Lock to be enabled for an existing bucket.
31327	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
31328}
31329
31330// String returns the string representation.
31331//
31332// API parameter values that are decorated as "sensitive" in the API will not
31333// be included in the string output. The member name will be present, but the
31334// value will be replaced with "sensitive".
31335func (s PutBucketReplicationInput) String() string {
31336	return awsutil.Prettify(s)
31337}
31338
31339// GoString returns the string representation.
31340//
31341// API parameter values that are decorated as "sensitive" in the API will not
31342// be included in the string output. The member name will be present, but the
31343// value will be replaced with "sensitive".
31344func (s PutBucketReplicationInput) GoString() string {
31345	return s.String()
31346}
31347
31348// Validate inspects the fields of the type to determine if they are valid.
31349func (s *PutBucketReplicationInput) Validate() error {
31350	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
31351	if s.Bucket == nil {
31352		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31353	}
31354	if s.Bucket != nil && len(*s.Bucket) < 1 {
31355		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31356	}
31357	if s.ReplicationConfiguration == nil {
31358		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
31359	}
31360	if s.ReplicationConfiguration != nil {
31361		if err := s.ReplicationConfiguration.Validate(); err != nil {
31362			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
31363		}
31364	}
31365
31366	if invalidParams.Len() > 0 {
31367		return invalidParams
31368	}
31369	return nil
31370}
31371
31372// SetBucket sets the Bucket field's value.
31373func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
31374	s.Bucket = &v
31375	return s
31376}
31377
31378func (s *PutBucketReplicationInput) getBucket() (v string) {
31379	if s.Bucket == nil {
31380		return v
31381	}
31382	return *s.Bucket
31383}
31384
31385// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31386func (s *PutBucketReplicationInput) SetExpectedBucketOwner(v string) *PutBucketReplicationInput {
31387	s.ExpectedBucketOwner = &v
31388	return s
31389}
31390
31391// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
31392func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
31393	s.ReplicationConfiguration = v
31394	return s
31395}
31396
31397// SetToken sets the Token field's value.
31398func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
31399	s.Token = &v
31400	return s
31401}
31402
31403func (s *PutBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
31404	if s.Bucket == nil {
31405		return nil, fmt.Errorf("member Bucket is nil")
31406	}
31407	return parseEndpointARN(*s.Bucket)
31408}
31409
31410func (s *PutBucketReplicationInput) hasEndpointARN() bool {
31411	if s.Bucket == nil {
31412		return false
31413	}
31414	return arn.IsARN(*s.Bucket)
31415}
31416
31417// updateArnableField updates the value of the input field that
31418// takes an ARN as an input. This method is useful to backfill
31419// the parsed resource name from ARN into the input member.
31420// It returns a pointer to a modified copy of input and an error.
31421// Note that original input is not modified.
31422func (s PutBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
31423	if s.Bucket == nil {
31424		return nil, fmt.Errorf("member Bucket is nil")
31425	}
31426	s.Bucket = aws.String(v)
31427	return &s, nil
31428}
31429
31430type PutBucketReplicationOutput struct {
31431	_ struct{} `type:"structure"`
31432}
31433
31434// String returns the string representation.
31435//
31436// API parameter values that are decorated as "sensitive" in the API will not
31437// be included in the string output. The member name will be present, but the
31438// value will be replaced with "sensitive".
31439func (s PutBucketReplicationOutput) String() string {
31440	return awsutil.Prettify(s)
31441}
31442
31443// GoString returns the string representation.
31444//
31445// API parameter values that are decorated as "sensitive" in the API will not
31446// be included in the string output. The member name will be present, but the
31447// value will be replaced with "sensitive".
31448func (s PutBucketReplicationOutput) GoString() string {
31449	return s.String()
31450}
31451
31452type PutBucketRequestPaymentInput struct {
31453	_ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"`
31454
31455	// The bucket name.
31456	//
31457	// Bucket is a required field
31458	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31459
31460	// The account ID of the expected bucket owner. If the bucket is owned by a
31461	// different account, the request will fail with an HTTP 403 (Access Denied)
31462	// error.
31463	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31464
31465	// Container for Payer.
31466	//
31467	// RequestPaymentConfiguration is a required field
31468	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31469}
31470
31471// String returns the string representation.
31472//
31473// API parameter values that are decorated as "sensitive" in the API will not
31474// be included in the string output. The member name will be present, but the
31475// value will be replaced with "sensitive".
31476func (s PutBucketRequestPaymentInput) String() string {
31477	return awsutil.Prettify(s)
31478}
31479
31480// GoString returns the string representation.
31481//
31482// API parameter values that are decorated as "sensitive" in the API will not
31483// be included in the string output. The member name will be present, but the
31484// value will be replaced with "sensitive".
31485func (s PutBucketRequestPaymentInput) GoString() string {
31486	return s.String()
31487}
31488
31489// Validate inspects the fields of the type to determine if they are valid.
31490func (s *PutBucketRequestPaymentInput) Validate() error {
31491	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
31492	if s.Bucket == nil {
31493		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31494	}
31495	if s.Bucket != nil && len(*s.Bucket) < 1 {
31496		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31497	}
31498	if s.RequestPaymentConfiguration == nil {
31499		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
31500	}
31501	if s.RequestPaymentConfiguration != nil {
31502		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
31503			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
31504		}
31505	}
31506
31507	if invalidParams.Len() > 0 {
31508		return invalidParams
31509	}
31510	return nil
31511}
31512
31513// SetBucket sets the Bucket field's value.
31514func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
31515	s.Bucket = &v
31516	return s
31517}
31518
31519func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
31520	if s.Bucket == nil {
31521		return v
31522	}
31523	return *s.Bucket
31524}
31525
31526// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31527func (s *PutBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *PutBucketRequestPaymentInput {
31528	s.ExpectedBucketOwner = &v
31529	return s
31530}
31531
31532// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
31533func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
31534	s.RequestPaymentConfiguration = v
31535	return s
31536}
31537
31538func (s *PutBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
31539	if s.Bucket == nil {
31540		return nil, fmt.Errorf("member Bucket is nil")
31541	}
31542	return parseEndpointARN(*s.Bucket)
31543}
31544
31545func (s *PutBucketRequestPaymentInput) hasEndpointARN() bool {
31546	if s.Bucket == nil {
31547		return false
31548	}
31549	return arn.IsARN(*s.Bucket)
31550}
31551
31552// updateArnableField updates the value of the input field that
31553// takes an ARN as an input. This method is useful to backfill
31554// the parsed resource name from ARN into the input member.
31555// It returns a pointer to a modified copy of input and an error.
31556// Note that original input is not modified.
31557func (s PutBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
31558	if s.Bucket == nil {
31559		return nil, fmt.Errorf("member Bucket is nil")
31560	}
31561	s.Bucket = aws.String(v)
31562	return &s, nil
31563}
31564
31565type PutBucketRequestPaymentOutput struct {
31566	_ struct{} `type:"structure"`
31567}
31568
31569// String returns the string representation.
31570//
31571// API parameter values that are decorated as "sensitive" in the API will not
31572// be included in the string output. The member name will be present, but the
31573// value will be replaced with "sensitive".
31574func (s PutBucketRequestPaymentOutput) String() string {
31575	return awsutil.Prettify(s)
31576}
31577
31578// GoString returns the string representation.
31579//
31580// API parameter values that are decorated as "sensitive" in the API will not
31581// be included in the string output. The member name will be present, but the
31582// value will be replaced with "sensitive".
31583func (s PutBucketRequestPaymentOutput) GoString() string {
31584	return s.String()
31585}
31586
31587type PutBucketTaggingInput struct {
31588	_ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"`
31589
31590	// The bucket name.
31591	//
31592	// Bucket is a required field
31593	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31594
31595	// The account ID of the expected bucket owner. If the bucket is owned by a
31596	// different account, the request will fail with an HTTP 403 (Access Denied)
31597	// error.
31598	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31599
31600	// Container for the TagSet and Tag elements.
31601	//
31602	// Tagging is a required field
31603	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31604}
31605
31606// String returns the string representation.
31607//
31608// API parameter values that are decorated as "sensitive" in the API will not
31609// be included in the string output. The member name will be present, but the
31610// value will be replaced with "sensitive".
31611func (s PutBucketTaggingInput) String() string {
31612	return awsutil.Prettify(s)
31613}
31614
31615// GoString returns the string representation.
31616//
31617// API parameter values that are decorated as "sensitive" in the API will not
31618// be included in the string output. The member name will be present, but the
31619// value will be replaced with "sensitive".
31620func (s PutBucketTaggingInput) GoString() string {
31621	return s.String()
31622}
31623
31624// Validate inspects the fields of the type to determine if they are valid.
31625func (s *PutBucketTaggingInput) Validate() error {
31626	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
31627	if s.Bucket == nil {
31628		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31629	}
31630	if s.Bucket != nil && len(*s.Bucket) < 1 {
31631		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31632	}
31633	if s.Tagging == nil {
31634		invalidParams.Add(request.NewErrParamRequired("Tagging"))
31635	}
31636	if s.Tagging != nil {
31637		if err := s.Tagging.Validate(); err != nil {
31638			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
31639		}
31640	}
31641
31642	if invalidParams.Len() > 0 {
31643		return invalidParams
31644	}
31645	return nil
31646}
31647
31648// SetBucket sets the Bucket field's value.
31649func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
31650	s.Bucket = &v
31651	return s
31652}
31653
31654func (s *PutBucketTaggingInput) getBucket() (v string) {
31655	if s.Bucket == nil {
31656		return v
31657	}
31658	return *s.Bucket
31659}
31660
31661// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31662func (s *PutBucketTaggingInput) SetExpectedBucketOwner(v string) *PutBucketTaggingInput {
31663	s.ExpectedBucketOwner = &v
31664	return s
31665}
31666
31667// SetTagging sets the Tagging field's value.
31668func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
31669	s.Tagging = v
31670	return s
31671}
31672
31673func (s *PutBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
31674	if s.Bucket == nil {
31675		return nil, fmt.Errorf("member Bucket is nil")
31676	}
31677	return parseEndpointARN(*s.Bucket)
31678}
31679
31680func (s *PutBucketTaggingInput) hasEndpointARN() bool {
31681	if s.Bucket == nil {
31682		return false
31683	}
31684	return arn.IsARN(*s.Bucket)
31685}
31686
31687// updateArnableField updates the value of the input field that
31688// takes an ARN as an input. This method is useful to backfill
31689// the parsed resource name from ARN into the input member.
31690// It returns a pointer to a modified copy of input and an error.
31691// Note that original input is not modified.
31692func (s PutBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
31693	if s.Bucket == nil {
31694		return nil, fmt.Errorf("member Bucket is nil")
31695	}
31696	s.Bucket = aws.String(v)
31697	return &s, nil
31698}
31699
31700type PutBucketTaggingOutput struct {
31701	_ struct{} `type:"structure"`
31702}
31703
31704// String returns the string representation.
31705//
31706// API parameter values that are decorated as "sensitive" in the API will not
31707// be included in the string output. The member name will be present, but the
31708// value will be replaced with "sensitive".
31709func (s PutBucketTaggingOutput) String() string {
31710	return awsutil.Prettify(s)
31711}
31712
31713// GoString returns the string representation.
31714//
31715// API parameter values that are decorated as "sensitive" in the API will not
31716// be included in the string output. The member name will be present, but the
31717// value will be replaced with "sensitive".
31718func (s PutBucketTaggingOutput) GoString() string {
31719	return s.String()
31720}
31721
31722type PutBucketVersioningInput struct {
31723	_ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"`
31724
31725	// The bucket name.
31726	//
31727	// Bucket is a required field
31728	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31729
31730	// The account ID of the expected bucket owner. If the bucket is owned by a
31731	// different account, the request will fail with an HTTP 403 (Access Denied)
31732	// error.
31733	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31734
31735	// The concatenation of the authentication device's serial number, a space,
31736	// and the value that is displayed on your authentication device.
31737	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
31738
31739	// Container for setting the versioning state.
31740	//
31741	// VersioningConfiguration is a required field
31742	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31743}
31744
31745// String returns the string representation.
31746//
31747// API parameter values that are decorated as "sensitive" in the API will not
31748// be included in the string output. The member name will be present, but the
31749// value will be replaced with "sensitive".
31750func (s PutBucketVersioningInput) String() string {
31751	return awsutil.Prettify(s)
31752}
31753
31754// GoString returns the string representation.
31755//
31756// API parameter values that are decorated as "sensitive" in the API will not
31757// be included in the string output. The member name will be present, but the
31758// value will be replaced with "sensitive".
31759func (s PutBucketVersioningInput) GoString() string {
31760	return s.String()
31761}
31762
31763// Validate inspects the fields of the type to determine if they are valid.
31764func (s *PutBucketVersioningInput) Validate() error {
31765	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
31766	if s.Bucket == nil {
31767		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31768	}
31769	if s.Bucket != nil && len(*s.Bucket) < 1 {
31770		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31771	}
31772	if s.VersioningConfiguration == nil {
31773		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
31774	}
31775
31776	if invalidParams.Len() > 0 {
31777		return invalidParams
31778	}
31779	return nil
31780}
31781
31782// SetBucket sets the Bucket field's value.
31783func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
31784	s.Bucket = &v
31785	return s
31786}
31787
31788func (s *PutBucketVersioningInput) getBucket() (v string) {
31789	if s.Bucket == nil {
31790		return v
31791	}
31792	return *s.Bucket
31793}
31794
31795// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31796func (s *PutBucketVersioningInput) SetExpectedBucketOwner(v string) *PutBucketVersioningInput {
31797	s.ExpectedBucketOwner = &v
31798	return s
31799}
31800
31801// SetMFA sets the MFA field's value.
31802func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
31803	s.MFA = &v
31804	return s
31805}
31806
31807// SetVersioningConfiguration sets the VersioningConfiguration field's value.
31808func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
31809	s.VersioningConfiguration = v
31810	return s
31811}
31812
31813func (s *PutBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
31814	if s.Bucket == nil {
31815		return nil, fmt.Errorf("member Bucket is nil")
31816	}
31817	return parseEndpointARN(*s.Bucket)
31818}
31819
31820func (s *PutBucketVersioningInput) hasEndpointARN() bool {
31821	if s.Bucket == nil {
31822		return false
31823	}
31824	return arn.IsARN(*s.Bucket)
31825}
31826
31827// updateArnableField updates the value of the input field that
31828// takes an ARN as an input. This method is useful to backfill
31829// the parsed resource name from ARN into the input member.
31830// It returns a pointer to a modified copy of input and an error.
31831// Note that original input is not modified.
31832func (s PutBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
31833	if s.Bucket == nil {
31834		return nil, fmt.Errorf("member Bucket is nil")
31835	}
31836	s.Bucket = aws.String(v)
31837	return &s, nil
31838}
31839
31840type PutBucketVersioningOutput struct {
31841	_ struct{} `type:"structure"`
31842}
31843
31844// String returns the string representation.
31845//
31846// API parameter values that are decorated as "sensitive" in the API will not
31847// be included in the string output. The member name will be present, but the
31848// value will be replaced with "sensitive".
31849func (s PutBucketVersioningOutput) String() string {
31850	return awsutil.Prettify(s)
31851}
31852
31853// GoString returns the string representation.
31854//
31855// API parameter values that are decorated as "sensitive" in the API will not
31856// be included in the string output. The member name will be present, but the
31857// value will be replaced with "sensitive".
31858func (s PutBucketVersioningOutput) GoString() string {
31859	return s.String()
31860}
31861
31862type PutBucketWebsiteInput struct {
31863	_ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"`
31864
31865	// The bucket name.
31866	//
31867	// Bucket is a required field
31868	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31869
31870	// The account ID of the expected bucket owner. If the bucket is owned by a
31871	// different account, the request will fail with an HTTP 403 (Access Denied)
31872	// error.
31873	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31874
31875	// Container for the request.
31876	//
31877	// WebsiteConfiguration is a required field
31878	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31879}
31880
31881// String returns the string representation.
31882//
31883// API parameter values that are decorated as "sensitive" in the API will not
31884// be included in the string output. The member name will be present, but the
31885// value will be replaced with "sensitive".
31886func (s PutBucketWebsiteInput) String() string {
31887	return awsutil.Prettify(s)
31888}
31889
31890// GoString returns the string representation.
31891//
31892// API parameter values that are decorated as "sensitive" in the API will not
31893// be included in the string output. The member name will be present, but the
31894// value will be replaced with "sensitive".
31895func (s PutBucketWebsiteInput) GoString() string {
31896	return s.String()
31897}
31898
31899// Validate inspects the fields of the type to determine if they are valid.
31900func (s *PutBucketWebsiteInput) Validate() error {
31901	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
31902	if s.Bucket == nil {
31903		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31904	}
31905	if s.Bucket != nil && len(*s.Bucket) < 1 {
31906		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31907	}
31908	if s.WebsiteConfiguration == nil {
31909		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
31910	}
31911	if s.WebsiteConfiguration != nil {
31912		if err := s.WebsiteConfiguration.Validate(); err != nil {
31913			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
31914		}
31915	}
31916
31917	if invalidParams.Len() > 0 {
31918		return invalidParams
31919	}
31920	return nil
31921}
31922
31923// SetBucket sets the Bucket field's value.
31924func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
31925	s.Bucket = &v
31926	return s
31927}
31928
31929func (s *PutBucketWebsiteInput) getBucket() (v string) {
31930	if s.Bucket == nil {
31931		return v
31932	}
31933	return *s.Bucket
31934}
31935
31936// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31937func (s *PutBucketWebsiteInput) SetExpectedBucketOwner(v string) *PutBucketWebsiteInput {
31938	s.ExpectedBucketOwner = &v
31939	return s
31940}
31941
31942// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
31943func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
31944	s.WebsiteConfiguration = v
31945	return s
31946}
31947
31948func (s *PutBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
31949	if s.Bucket == nil {
31950		return nil, fmt.Errorf("member Bucket is nil")
31951	}
31952	return parseEndpointARN(*s.Bucket)
31953}
31954
31955func (s *PutBucketWebsiteInput) hasEndpointARN() bool {
31956	if s.Bucket == nil {
31957		return false
31958	}
31959	return arn.IsARN(*s.Bucket)
31960}
31961
31962// updateArnableField updates the value of the input field that
31963// takes an ARN as an input. This method is useful to backfill
31964// the parsed resource name from ARN into the input member.
31965// It returns a pointer to a modified copy of input and an error.
31966// Note that original input is not modified.
31967func (s PutBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
31968	if s.Bucket == nil {
31969		return nil, fmt.Errorf("member Bucket is nil")
31970	}
31971	s.Bucket = aws.String(v)
31972	return &s, nil
31973}
31974
31975type PutBucketWebsiteOutput struct {
31976	_ struct{} `type:"structure"`
31977}
31978
31979// String returns the string representation.
31980//
31981// API parameter values that are decorated as "sensitive" in the API will not
31982// be included in the string output. The member name will be present, but the
31983// value will be replaced with "sensitive".
31984func (s PutBucketWebsiteOutput) String() string {
31985	return awsutil.Prettify(s)
31986}
31987
31988// GoString returns the string representation.
31989//
31990// API parameter values that are decorated as "sensitive" in the API will not
31991// be included in the string output. The member name will be present, but the
31992// value will be replaced with "sensitive".
31993func (s PutBucketWebsiteOutput) GoString() string {
31994	return s.String()
31995}
31996
31997type PutObjectAclInput struct {
31998	_ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"`
31999
32000	// The canned ACL to apply to the object. For more information, see Canned ACL
32001	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
32002	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
32003
32004	// Contains the elements that set the ACL permissions for an object per grantee.
32005	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
32006
32007	// The bucket name that contains the object to which you want to attach the
32008	// ACL.
32009	//
32010	// When using this action with an access point, you must direct requests to
32011	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32012	// When using this action with an access point through the Amazon Web Services
32013	// SDKs, you provide the access point ARN in place of the bucket name. For more
32014	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32015	// in the Amazon S3 User Guide.
32016	//
32017	// Bucket is a required field
32018	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32019
32020	// The account ID of the expected bucket owner. If the bucket is owned by a
32021	// different account, the request will fail with an HTTP 403 (Access Denied)
32022	// error.
32023	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32024
32025	// Allows grantee the read, write, read ACP, and write ACP permissions on the
32026	// bucket.
32027	//
32028	// This action is not supported by Amazon S3 on Outposts.
32029	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
32030
32031	// Allows grantee to list the objects in the bucket.
32032	//
32033	// This action is not supported by Amazon S3 on Outposts.
32034	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
32035
32036	// Allows grantee to read the bucket ACL.
32037	//
32038	// This action is not supported by Amazon S3 on Outposts.
32039	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
32040
32041	// Allows grantee to create new objects in the bucket.
32042	//
32043	// For the bucket and object owners of existing objects, also allows deletions
32044	// and overwrites of those objects.
32045	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
32046
32047	// Allows grantee to write the ACL for the applicable bucket.
32048	//
32049	// This action is not supported by Amazon S3 on Outposts.
32050	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
32051
32052	// Key for which the PUT action was initiated.
32053	//
32054	// When using this action with an access point, you must direct requests to
32055	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32056	// When using this action with an access point through the Amazon Web Services
32057	// SDKs, you provide the access point ARN in place of the bucket name. For more
32058	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32059	// in the Amazon S3 User Guide.
32060	//
32061	// When using this action with Amazon S3 on Outposts, you must direct requests
32062	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
32063	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
32064	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
32065	// you provide the Outposts bucket ARN in place of the bucket name. For more
32066	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
32067	// in the Amazon S3 User Guide.
32068	//
32069	// Key is a required field
32070	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32071
32072	// Confirms that the requester knows that they will be charged for the request.
32073	// Bucket owners need not specify this parameter in their requests. For information
32074	// about downloading objects from requester pays buckets, see Downloading Objects
32075	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32076	// in the Amazon S3 User Guide.
32077	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32078
32079	// VersionId used to reference a specific version of the object.
32080	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
32081}
32082
32083// String returns the string representation.
32084//
32085// API parameter values that are decorated as "sensitive" in the API will not
32086// be included in the string output. The member name will be present, but the
32087// value will be replaced with "sensitive".
32088func (s PutObjectAclInput) String() string {
32089	return awsutil.Prettify(s)
32090}
32091
32092// GoString returns the string representation.
32093//
32094// API parameter values that are decorated as "sensitive" in the API will not
32095// be included in the string output. The member name will be present, but the
32096// value will be replaced with "sensitive".
32097func (s PutObjectAclInput) GoString() string {
32098	return s.String()
32099}
32100
32101// Validate inspects the fields of the type to determine if they are valid.
32102func (s *PutObjectAclInput) Validate() error {
32103	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
32104	if s.Bucket == nil {
32105		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32106	}
32107	if s.Bucket != nil && len(*s.Bucket) < 1 {
32108		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32109	}
32110	if s.Key == nil {
32111		invalidParams.Add(request.NewErrParamRequired("Key"))
32112	}
32113	if s.Key != nil && len(*s.Key) < 1 {
32114		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32115	}
32116	if s.AccessControlPolicy != nil {
32117		if err := s.AccessControlPolicy.Validate(); err != nil {
32118			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
32119		}
32120	}
32121
32122	if invalidParams.Len() > 0 {
32123		return invalidParams
32124	}
32125	return nil
32126}
32127
32128// SetACL sets the ACL field's value.
32129func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
32130	s.ACL = &v
32131	return s
32132}
32133
32134// SetAccessControlPolicy sets the AccessControlPolicy field's value.
32135func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
32136	s.AccessControlPolicy = v
32137	return s
32138}
32139
32140// SetBucket sets the Bucket field's value.
32141func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
32142	s.Bucket = &v
32143	return s
32144}
32145
32146func (s *PutObjectAclInput) getBucket() (v string) {
32147	if s.Bucket == nil {
32148		return v
32149	}
32150	return *s.Bucket
32151}
32152
32153// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32154func (s *PutObjectAclInput) SetExpectedBucketOwner(v string) *PutObjectAclInput {
32155	s.ExpectedBucketOwner = &v
32156	return s
32157}
32158
32159// SetGrantFullControl sets the GrantFullControl field's value.
32160func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
32161	s.GrantFullControl = &v
32162	return s
32163}
32164
32165// SetGrantRead sets the GrantRead field's value.
32166func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
32167	s.GrantRead = &v
32168	return s
32169}
32170
32171// SetGrantReadACP sets the GrantReadACP field's value.
32172func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
32173	s.GrantReadACP = &v
32174	return s
32175}
32176
32177// SetGrantWrite sets the GrantWrite field's value.
32178func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
32179	s.GrantWrite = &v
32180	return s
32181}
32182
32183// SetGrantWriteACP sets the GrantWriteACP field's value.
32184func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
32185	s.GrantWriteACP = &v
32186	return s
32187}
32188
32189// SetKey sets the Key field's value.
32190func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
32191	s.Key = &v
32192	return s
32193}
32194
32195// SetRequestPayer sets the RequestPayer field's value.
32196func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
32197	s.RequestPayer = &v
32198	return s
32199}
32200
32201// SetVersionId sets the VersionId field's value.
32202func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
32203	s.VersionId = &v
32204	return s
32205}
32206
32207func (s *PutObjectAclInput) getEndpointARN() (arn.Resource, error) {
32208	if s.Bucket == nil {
32209		return nil, fmt.Errorf("member Bucket is nil")
32210	}
32211	return parseEndpointARN(*s.Bucket)
32212}
32213
32214func (s *PutObjectAclInput) hasEndpointARN() bool {
32215	if s.Bucket == nil {
32216		return false
32217	}
32218	return arn.IsARN(*s.Bucket)
32219}
32220
32221// updateArnableField updates the value of the input field that
32222// takes an ARN as an input. This method is useful to backfill
32223// the parsed resource name from ARN into the input member.
32224// It returns a pointer to a modified copy of input and an error.
32225// Note that original input is not modified.
32226func (s PutObjectAclInput) updateArnableField(v string) (interface{}, error) {
32227	if s.Bucket == nil {
32228		return nil, fmt.Errorf("member Bucket is nil")
32229	}
32230	s.Bucket = aws.String(v)
32231	return &s, nil
32232}
32233
32234type PutObjectAclOutput struct {
32235	_ struct{} `type:"structure"`
32236
32237	// If present, indicates that the requester was successfully charged for the
32238	// request.
32239	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
32240}
32241
32242// String returns the string representation.
32243//
32244// API parameter values that are decorated as "sensitive" in the API will not
32245// be included in the string output. The member name will be present, but the
32246// value will be replaced with "sensitive".
32247func (s PutObjectAclOutput) String() string {
32248	return awsutil.Prettify(s)
32249}
32250
32251// GoString returns the string representation.
32252//
32253// API parameter values that are decorated as "sensitive" in the API will not
32254// be included in the string output. The member name will be present, but the
32255// value will be replaced with "sensitive".
32256func (s PutObjectAclOutput) GoString() string {
32257	return s.String()
32258}
32259
32260// SetRequestCharged sets the RequestCharged field's value.
32261func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
32262	s.RequestCharged = &v
32263	return s
32264}
32265
32266type PutObjectInput struct {
32267	_ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"`
32268
32269	// The canned ACL to apply to the object. For more information, see Canned ACL
32270	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
32271	//
32272	// This action is not supported by Amazon S3 on Outposts.
32273	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
32274
32275	// Object data.
32276	Body io.ReadSeeker `type:"blob"`
32277
32278	// The bucket name to which the PUT action was initiated.
32279	//
32280	// When using this action with an access point, you must direct requests to
32281	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32282	// When using this action with an access point through the Amazon Web Services
32283	// SDKs, you provide the access point ARN in place of the bucket name. For more
32284	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32285	// in the Amazon S3 User Guide.
32286	//
32287	// When using this action with Amazon S3 on Outposts, you must direct requests
32288	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
32289	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
32290	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
32291	// you provide the Outposts bucket ARN in place of the bucket name. For more
32292	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
32293	// in the Amazon S3 User Guide.
32294	//
32295	// Bucket is a required field
32296	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32297
32298	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
32299	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
32300	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
32301	// SSE-KMS.
32302	//
32303	// Specifying this header with a PUT action doesn’t affect bucket-level settings
32304	// for S3 Bucket Key.
32305	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
32306
32307	// Can be used to specify caching behavior along the request/reply chain. For
32308	// more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
32309	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
32310	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
32311
32312	// Specifies presentational information for the object. For more information,
32313	// 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).
32314	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
32315
32316	// Specifies what content encodings have been applied to the object and thus
32317	// what decoding mechanisms must be applied to obtain the media-type referenced
32318	// by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
32319	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
32320	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
32321
32322	// The language the content is in.
32323	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
32324
32325	// Size of the body in bytes. This parameter is useful when the size of the
32326	// body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
32327	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
32328	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
32329
32330	// The base64-encoded 128-bit MD5 digest of the message (without the headers)
32331	// according to RFC 1864. This header can be used as a message integrity check
32332	// to verify that the data is the same data that was originally sent. Although
32333	// it is optional, we recommend using the Content-MD5 mechanism as an end-to-end
32334	// integrity check. For more information about REST request authentication,
32335	// see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
32336	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
32337
32338	// A standard MIME type describing the format of the contents. For more information,
32339	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
32340	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
32341
32342	// The account ID of the expected bucket owner. If the bucket is owned by a
32343	// different account, the request will fail with an HTTP 403 (Access Denied)
32344	// error.
32345	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32346
32347	// The date and time at which the object is no longer cacheable. For more information,
32348	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
32349	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
32350
32351	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
32352	//
32353	// This action is not supported by Amazon S3 on Outposts.
32354	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
32355
32356	// Allows grantee to read the object data and its metadata.
32357	//
32358	// This action is not supported by Amazon S3 on Outposts.
32359	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
32360
32361	// Allows grantee to read the object ACL.
32362	//
32363	// This action is not supported by Amazon S3 on Outposts.
32364	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
32365
32366	// Allows grantee to write the ACL for the applicable object.
32367	//
32368	// This action is not supported by Amazon S3 on Outposts.
32369	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
32370
32371	// Object key for which the PUT action was initiated.
32372	//
32373	// Key is a required field
32374	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32375
32376	// A map of metadata to store with the object in S3.
32377	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
32378
32379	// Specifies whether a legal hold will be applied to this object. For more information
32380	// about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
32381	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
32382
32383	// The Object Lock mode that you want to apply to this object.
32384	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
32385
32386	// The date and time when you want this object's Object Lock to expire. Must
32387	// be formatted as a timestamp parameter.
32388	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
32389
32390	// Confirms that the requester knows that they will be charged for the request.
32391	// Bucket owners need not specify this parameter in their requests. For information
32392	// about downloading objects from requester pays buckets, see Downloading Objects
32393	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32394	// in the Amazon S3 User Guide.
32395	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32396
32397	// Specifies the algorithm to use to when encrypting the object (for example,
32398	// AES256).
32399	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
32400
32401	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
32402	// data. This value is used to store the object and then it is discarded; Amazon
32403	// S3 does not store the encryption key. The key must be appropriate for use
32404	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
32405	// header.
32406	//
32407	// SSECustomerKey is a sensitive parameter and its value will be
32408	// replaced with "sensitive" in string returned by PutObjectInput's
32409	// String and GoString methods.
32410	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
32411
32412	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
32413	// Amazon S3 uses this header for a message integrity check to ensure that the
32414	// encryption key was transmitted without error.
32415	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
32416
32417	// Specifies the Amazon Web Services KMS Encryption Context to use for object
32418	// encryption. The value of this header is a base64-encoded UTF-8 string holding
32419	// JSON with the encryption context key-value pairs.
32420	//
32421	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
32422	// replaced with "sensitive" in string returned by PutObjectInput's
32423	// String and GoString methods.
32424	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
32425
32426	// If x-amz-server-side-encryption is present and has the value of aws:kms,
32427	// this header specifies the ID of the Amazon Web Services Key Management Service
32428	// (Amazon Web Services KMS) symmetrical customer managed key that was used
32429	// for the object. If you specify x-amz-server-side-encryption:aws:kms, but
32430	// do not providex-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses
32431	// the Amazon Web Services managed key to protect the data. If the KMS key does
32432	// not exist in the same account issuing the command, you must use the full
32433	// ARN and not just the ID.
32434	//
32435	// SSEKMSKeyId is a sensitive parameter and its value will be
32436	// replaced with "sensitive" in string returned by PutObjectInput's
32437	// String and GoString methods.
32438	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
32439
32440	// The server-side encryption algorithm used when storing this object in Amazon
32441	// S3 (for example, AES256, aws:kms).
32442	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
32443
32444	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
32445	// objects. The STANDARD storage class provides high durability and high availability.
32446	// Depending on performance needs, you can specify a different Storage Class.
32447	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
32448	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
32449	// in the Amazon S3 User Guide.
32450	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
32451
32452	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
32453	// (For example, "Key1=Value1")
32454	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
32455
32456	// If the bucket is configured as a website, redirects requests for this object
32457	// to another object in the same bucket or to an external URL. Amazon S3 stores
32458	// the value of this header in the object metadata. For information about object
32459	// metadata, see Object Key and Metadata (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html).
32460	//
32461	// In the following example, the request header sets the redirect to an object
32462	// (anotherPage.html) in the same bucket:
32463	//
32464	// x-amz-website-redirect-location: /anotherPage.html
32465	//
32466	// In the following example, the request header sets the object redirect to
32467	// another website:
32468	//
32469	// x-amz-website-redirect-location: http://www.example.com/
32470	//
32471	// For more information about website hosting in Amazon S3, see Hosting Websites
32472	// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
32473	// and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
32474	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
32475}
32476
32477// String returns the string representation.
32478//
32479// API parameter values that are decorated as "sensitive" in the API will not
32480// be included in the string output. The member name will be present, but the
32481// value will be replaced with "sensitive".
32482func (s PutObjectInput) String() string {
32483	return awsutil.Prettify(s)
32484}
32485
32486// GoString returns the string representation.
32487//
32488// API parameter values that are decorated as "sensitive" in the API will not
32489// be included in the string output. The member name will be present, but the
32490// value will be replaced with "sensitive".
32491func (s PutObjectInput) GoString() string {
32492	return s.String()
32493}
32494
32495// Validate inspects the fields of the type to determine if they are valid.
32496func (s *PutObjectInput) Validate() error {
32497	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
32498	if s.Bucket == nil {
32499		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32500	}
32501	if s.Bucket != nil && len(*s.Bucket) < 1 {
32502		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32503	}
32504	if s.Key == nil {
32505		invalidParams.Add(request.NewErrParamRequired("Key"))
32506	}
32507	if s.Key != nil && len(*s.Key) < 1 {
32508		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32509	}
32510
32511	if invalidParams.Len() > 0 {
32512		return invalidParams
32513	}
32514	return nil
32515}
32516
32517// SetACL sets the ACL field's value.
32518func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
32519	s.ACL = &v
32520	return s
32521}
32522
32523// SetBody sets the Body field's value.
32524func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
32525	s.Body = v
32526	return s
32527}
32528
32529// SetBucket sets the Bucket field's value.
32530func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
32531	s.Bucket = &v
32532	return s
32533}
32534
32535func (s *PutObjectInput) getBucket() (v string) {
32536	if s.Bucket == nil {
32537		return v
32538	}
32539	return *s.Bucket
32540}
32541
32542// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
32543func (s *PutObjectInput) SetBucketKeyEnabled(v bool) *PutObjectInput {
32544	s.BucketKeyEnabled = &v
32545	return s
32546}
32547
32548// SetCacheControl sets the CacheControl field's value.
32549func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
32550	s.CacheControl = &v
32551	return s
32552}
32553
32554// SetContentDisposition sets the ContentDisposition field's value.
32555func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
32556	s.ContentDisposition = &v
32557	return s
32558}
32559
32560// SetContentEncoding sets the ContentEncoding field's value.
32561func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
32562	s.ContentEncoding = &v
32563	return s
32564}
32565
32566// SetContentLanguage sets the ContentLanguage field's value.
32567func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
32568	s.ContentLanguage = &v
32569	return s
32570}
32571
32572// SetContentLength sets the ContentLength field's value.
32573func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
32574	s.ContentLength = &v
32575	return s
32576}
32577
32578// SetContentMD5 sets the ContentMD5 field's value.
32579func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
32580	s.ContentMD5 = &v
32581	return s
32582}
32583
32584// SetContentType sets the ContentType field's value.
32585func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
32586	s.ContentType = &v
32587	return s
32588}
32589
32590// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32591func (s *PutObjectInput) SetExpectedBucketOwner(v string) *PutObjectInput {
32592	s.ExpectedBucketOwner = &v
32593	return s
32594}
32595
32596// SetExpires sets the Expires field's value.
32597func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
32598	s.Expires = &v
32599	return s
32600}
32601
32602// SetGrantFullControl sets the GrantFullControl field's value.
32603func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
32604	s.GrantFullControl = &v
32605	return s
32606}
32607
32608// SetGrantRead sets the GrantRead field's value.
32609func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
32610	s.GrantRead = &v
32611	return s
32612}
32613
32614// SetGrantReadACP sets the GrantReadACP field's value.
32615func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
32616	s.GrantReadACP = &v
32617	return s
32618}
32619
32620// SetGrantWriteACP sets the GrantWriteACP field's value.
32621func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
32622	s.GrantWriteACP = &v
32623	return s
32624}
32625
32626// SetKey sets the Key field's value.
32627func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
32628	s.Key = &v
32629	return s
32630}
32631
32632// SetMetadata sets the Metadata field's value.
32633func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
32634	s.Metadata = v
32635	return s
32636}
32637
32638// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
32639func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
32640	s.ObjectLockLegalHoldStatus = &v
32641	return s
32642}
32643
32644// SetObjectLockMode sets the ObjectLockMode field's value.
32645func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
32646	s.ObjectLockMode = &v
32647	return s
32648}
32649
32650// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
32651func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
32652	s.ObjectLockRetainUntilDate = &v
32653	return s
32654}
32655
32656// SetRequestPayer sets the RequestPayer field's value.
32657func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
32658	s.RequestPayer = &v
32659	return s
32660}
32661
32662// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
32663func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
32664	s.SSECustomerAlgorithm = &v
32665	return s
32666}
32667
32668// SetSSECustomerKey sets the SSECustomerKey field's value.
32669func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
32670	s.SSECustomerKey = &v
32671	return s
32672}
32673
32674func (s *PutObjectInput) getSSECustomerKey() (v string) {
32675	if s.SSECustomerKey == nil {
32676		return v
32677	}
32678	return *s.SSECustomerKey
32679}
32680
32681// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
32682func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
32683	s.SSECustomerKeyMD5 = &v
32684	return s
32685}
32686
32687// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
32688func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput {
32689	s.SSEKMSEncryptionContext = &v
32690	return s
32691}
32692
32693// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
32694func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
32695	s.SSEKMSKeyId = &v
32696	return s
32697}
32698
32699// SetServerSideEncryption sets the ServerSideEncryption field's value.
32700func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
32701	s.ServerSideEncryption = &v
32702	return s
32703}
32704
32705// SetStorageClass sets the StorageClass field's value.
32706func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
32707	s.StorageClass = &v
32708	return s
32709}
32710
32711// SetTagging sets the Tagging field's value.
32712func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
32713	s.Tagging = &v
32714	return s
32715}
32716
32717// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
32718func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
32719	s.WebsiteRedirectLocation = &v
32720	return s
32721}
32722
32723func (s *PutObjectInput) getEndpointARN() (arn.Resource, error) {
32724	if s.Bucket == nil {
32725		return nil, fmt.Errorf("member Bucket is nil")
32726	}
32727	return parseEndpointARN(*s.Bucket)
32728}
32729
32730func (s *PutObjectInput) hasEndpointARN() bool {
32731	if s.Bucket == nil {
32732		return false
32733	}
32734	return arn.IsARN(*s.Bucket)
32735}
32736
32737// updateArnableField updates the value of the input field that
32738// takes an ARN as an input. This method is useful to backfill
32739// the parsed resource name from ARN into the input member.
32740// It returns a pointer to a modified copy of input and an error.
32741// Note that original input is not modified.
32742func (s PutObjectInput) updateArnableField(v string) (interface{}, error) {
32743	if s.Bucket == nil {
32744		return nil, fmt.Errorf("member Bucket is nil")
32745	}
32746	s.Bucket = aws.String(v)
32747	return &s, nil
32748}
32749
32750type PutObjectLegalHoldInput struct {
32751	_ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"`
32752
32753	// The bucket name containing the object that you want to place a Legal Hold
32754	// on.
32755	//
32756	// When using this action with an access point, you must direct requests to
32757	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32758	// When using this action with an access point through the Amazon Web Services
32759	// SDKs, you provide the access point ARN in place of the bucket name. For more
32760	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32761	// in the Amazon S3 User Guide.
32762	//
32763	// Bucket is a required field
32764	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32765
32766	// The account ID of the expected bucket owner. If the bucket is owned by a
32767	// different account, the request will fail with an HTTP 403 (Access Denied)
32768	// error.
32769	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32770
32771	// The key name for the object that you want to place a Legal Hold on.
32772	//
32773	// Key is a required field
32774	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32775
32776	// Container element for the Legal Hold configuration you want to apply to the
32777	// specified object.
32778	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
32779
32780	// Confirms that the requester knows that they will be charged for the request.
32781	// Bucket owners need not specify this parameter in their requests. For information
32782	// about downloading objects from requester pays buckets, see Downloading Objects
32783	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32784	// in the Amazon S3 User Guide.
32785	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32786
32787	// The version ID of the object that you want to place a Legal Hold on.
32788	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
32789}
32790
32791// String returns the string representation.
32792//
32793// API parameter values that are decorated as "sensitive" in the API will not
32794// be included in the string output. The member name will be present, but the
32795// value will be replaced with "sensitive".
32796func (s PutObjectLegalHoldInput) String() string {
32797	return awsutil.Prettify(s)
32798}
32799
32800// GoString returns the string representation.
32801//
32802// API parameter values that are decorated as "sensitive" in the API will not
32803// be included in the string output. The member name will be present, but the
32804// value will be replaced with "sensitive".
32805func (s PutObjectLegalHoldInput) GoString() string {
32806	return s.String()
32807}
32808
32809// Validate inspects the fields of the type to determine if they are valid.
32810func (s *PutObjectLegalHoldInput) Validate() error {
32811	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
32812	if s.Bucket == nil {
32813		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32814	}
32815	if s.Bucket != nil && len(*s.Bucket) < 1 {
32816		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32817	}
32818	if s.Key == nil {
32819		invalidParams.Add(request.NewErrParamRequired("Key"))
32820	}
32821	if s.Key != nil && len(*s.Key) < 1 {
32822		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32823	}
32824
32825	if invalidParams.Len() > 0 {
32826		return invalidParams
32827	}
32828	return nil
32829}
32830
32831// SetBucket sets the Bucket field's value.
32832func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
32833	s.Bucket = &v
32834	return s
32835}
32836
32837func (s *PutObjectLegalHoldInput) getBucket() (v string) {
32838	if s.Bucket == nil {
32839		return v
32840	}
32841	return *s.Bucket
32842}
32843
32844// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32845func (s *PutObjectLegalHoldInput) SetExpectedBucketOwner(v string) *PutObjectLegalHoldInput {
32846	s.ExpectedBucketOwner = &v
32847	return s
32848}
32849
32850// SetKey sets the Key field's value.
32851func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
32852	s.Key = &v
32853	return s
32854}
32855
32856// SetLegalHold sets the LegalHold field's value.
32857func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
32858	s.LegalHold = v
32859	return s
32860}
32861
32862// SetRequestPayer sets the RequestPayer field's value.
32863func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
32864	s.RequestPayer = &v
32865	return s
32866}
32867
32868// SetVersionId sets the VersionId field's value.
32869func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
32870	s.VersionId = &v
32871	return s
32872}
32873
32874func (s *PutObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
32875	if s.Bucket == nil {
32876		return nil, fmt.Errorf("member Bucket is nil")
32877	}
32878	return parseEndpointARN(*s.Bucket)
32879}
32880
32881func (s *PutObjectLegalHoldInput) hasEndpointARN() bool {
32882	if s.Bucket == nil {
32883		return false
32884	}
32885	return arn.IsARN(*s.Bucket)
32886}
32887
32888// updateArnableField updates the value of the input field that
32889// takes an ARN as an input. This method is useful to backfill
32890// the parsed resource name from ARN into the input member.
32891// It returns a pointer to a modified copy of input and an error.
32892// Note that original input is not modified.
32893func (s PutObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
32894	if s.Bucket == nil {
32895		return nil, fmt.Errorf("member Bucket is nil")
32896	}
32897	s.Bucket = aws.String(v)
32898	return &s, nil
32899}
32900
32901type PutObjectLegalHoldOutput struct {
32902	_ struct{} `type:"structure"`
32903
32904	// If present, indicates that the requester was successfully charged for the
32905	// request.
32906	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
32907}
32908
32909// String returns the string representation.
32910//
32911// API parameter values that are decorated as "sensitive" in the API will not
32912// be included in the string output. The member name will be present, but the
32913// value will be replaced with "sensitive".
32914func (s PutObjectLegalHoldOutput) String() string {
32915	return awsutil.Prettify(s)
32916}
32917
32918// GoString returns the string representation.
32919//
32920// API parameter values that are decorated as "sensitive" in the API will not
32921// be included in the string output. The member name will be present, but the
32922// value will be replaced with "sensitive".
32923func (s PutObjectLegalHoldOutput) GoString() string {
32924	return s.String()
32925}
32926
32927// SetRequestCharged sets the RequestCharged field's value.
32928func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
32929	s.RequestCharged = &v
32930	return s
32931}
32932
32933type PutObjectLockConfigurationInput struct {
32934	_ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"`
32935
32936	// The bucket whose Object Lock configuration you want to create or replace.
32937	//
32938	// Bucket is a required field
32939	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32940
32941	// The account ID of the expected bucket owner. If the bucket is owned by a
32942	// different account, the request will fail with an HTTP 403 (Access Denied)
32943	// error.
32944	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32945
32946	// The Object Lock configuration that you want to apply to the specified bucket.
32947	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
32948
32949	// Confirms that the requester knows that they will be charged for the request.
32950	// Bucket owners need not specify this parameter in their requests. For information
32951	// about downloading objects from requester pays buckets, see Downloading Objects
32952	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32953	// in the Amazon S3 User Guide.
32954	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32955
32956	// A token to allow Object Lock to be enabled for an existing bucket.
32957	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
32958}
32959
32960// String returns the string representation.
32961//
32962// API parameter values that are decorated as "sensitive" in the API will not
32963// be included in the string output. The member name will be present, but the
32964// value will be replaced with "sensitive".
32965func (s PutObjectLockConfigurationInput) String() string {
32966	return awsutil.Prettify(s)
32967}
32968
32969// GoString returns the string representation.
32970//
32971// API parameter values that are decorated as "sensitive" in the API will not
32972// be included in the string output. The member name will be present, but the
32973// value will be replaced with "sensitive".
32974func (s PutObjectLockConfigurationInput) GoString() string {
32975	return s.String()
32976}
32977
32978// Validate inspects the fields of the type to determine if they are valid.
32979func (s *PutObjectLockConfigurationInput) Validate() error {
32980	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
32981	if s.Bucket == nil {
32982		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32983	}
32984	if s.Bucket != nil && len(*s.Bucket) < 1 {
32985		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32986	}
32987
32988	if invalidParams.Len() > 0 {
32989		return invalidParams
32990	}
32991	return nil
32992}
32993
32994// SetBucket sets the Bucket field's value.
32995func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
32996	s.Bucket = &v
32997	return s
32998}
32999
33000func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
33001	if s.Bucket == nil {
33002		return v
33003	}
33004	return *s.Bucket
33005}
33006
33007// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33008func (s *PutObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *PutObjectLockConfigurationInput {
33009	s.ExpectedBucketOwner = &v
33010	return s
33011}
33012
33013// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
33014func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
33015	s.ObjectLockConfiguration = v
33016	return s
33017}
33018
33019// SetRequestPayer sets the RequestPayer field's value.
33020func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
33021	s.RequestPayer = &v
33022	return s
33023}
33024
33025// SetToken sets the Token field's value.
33026func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
33027	s.Token = &v
33028	return s
33029}
33030
33031func (s *PutObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
33032	if s.Bucket == nil {
33033		return nil, fmt.Errorf("member Bucket is nil")
33034	}
33035	return parseEndpointARN(*s.Bucket)
33036}
33037
33038func (s *PutObjectLockConfigurationInput) hasEndpointARN() bool {
33039	if s.Bucket == nil {
33040		return false
33041	}
33042	return arn.IsARN(*s.Bucket)
33043}
33044
33045// updateArnableField updates the value of the input field that
33046// takes an ARN as an input. This method is useful to backfill
33047// the parsed resource name from ARN into the input member.
33048// It returns a pointer to a modified copy of input and an error.
33049// Note that original input is not modified.
33050func (s PutObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
33051	if s.Bucket == nil {
33052		return nil, fmt.Errorf("member Bucket is nil")
33053	}
33054	s.Bucket = aws.String(v)
33055	return &s, nil
33056}
33057
33058type PutObjectLockConfigurationOutput struct {
33059	_ struct{} `type:"structure"`
33060
33061	// If present, indicates that the requester was successfully charged for the
33062	// request.
33063	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
33064}
33065
33066// String returns the string representation.
33067//
33068// API parameter values that are decorated as "sensitive" in the API will not
33069// be included in the string output. The member name will be present, but the
33070// value will be replaced with "sensitive".
33071func (s PutObjectLockConfigurationOutput) String() string {
33072	return awsutil.Prettify(s)
33073}
33074
33075// GoString returns the string representation.
33076//
33077// API parameter values that are decorated as "sensitive" in the API will not
33078// be included in the string output. The member name will be present, but the
33079// value will be replaced with "sensitive".
33080func (s PutObjectLockConfigurationOutput) GoString() string {
33081	return s.String()
33082}
33083
33084// SetRequestCharged sets the RequestCharged field's value.
33085func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
33086	s.RequestCharged = &v
33087	return s
33088}
33089
33090type PutObjectOutput struct {
33091	_ struct{} `type:"structure"`
33092
33093	// Indicates whether the uploaded object uses an S3 Bucket Key for server-side
33094	// encryption with Amazon Web Services KMS (SSE-KMS).
33095	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
33096
33097	// Entity tag for the uploaded object.
33098	ETag *string `location:"header" locationName:"ETag" type:"string"`
33099
33100	// If the expiration is configured for the object (see PutBucketLifecycleConfiguration
33101	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)),
33102	// the response includes this header. It includes the expiry-date and rule-id
33103	// key-value pairs that provide information about object expiration. The value
33104	// of the rule-id is URL encoded.
33105	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
33106
33107	// If present, indicates that the requester was successfully charged for the
33108	// request.
33109	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
33110
33111	// If server-side encryption with a customer-provided encryption key was requested,
33112	// the response will include this header confirming the encryption algorithm
33113	// used.
33114	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
33115
33116	// If server-side encryption with a customer-provided encryption key was requested,
33117	// the response will include this header to provide round-trip message integrity
33118	// verification of the customer-provided encryption key.
33119	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
33120
33121	// If present, specifies the Amazon Web Services KMS Encryption Context to use
33122	// for object encryption. The value of this header is a base64-encoded UTF-8
33123	// string holding JSON with the encryption context key-value pairs.
33124	//
33125	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
33126	// replaced with "sensitive" in string returned by PutObjectOutput's
33127	// String and GoString methods.
33128	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
33129
33130	// If x-amz-server-side-encryption is present and has the value of aws:kms,
33131	// this header specifies the ID of the Amazon Web Services Key Management Service
33132	// (Amazon Web Services KMS) symmetric customer managed key that was used for
33133	// the object.
33134	//
33135	// SSEKMSKeyId is a sensitive parameter and its value will be
33136	// replaced with "sensitive" in string returned by PutObjectOutput's
33137	// String and GoString methods.
33138	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
33139
33140	// If you specified server-side encryption either with an Amazon Web Services
33141	// KMS key or Amazon S3-managed encryption key in your PUT request, the response
33142	// includes this header. It confirms the encryption algorithm that Amazon S3
33143	// used to encrypt the object.
33144	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
33145
33146	// Version of the object.
33147	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
33148}
33149
33150// String returns the string representation.
33151//
33152// API parameter values that are decorated as "sensitive" in the API will not
33153// be included in the string output. The member name will be present, but the
33154// value will be replaced with "sensitive".
33155func (s PutObjectOutput) String() string {
33156	return awsutil.Prettify(s)
33157}
33158
33159// GoString returns the string representation.
33160//
33161// API parameter values that are decorated as "sensitive" in the API will not
33162// be included in the string output. The member name will be present, but the
33163// value will be replaced with "sensitive".
33164func (s PutObjectOutput) GoString() string {
33165	return s.String()
33166}
33167
33168// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
33169func (s *PutObjectOutput) SetBucketKeyEnabled(v bool) *PutObjectOutput {
33170	s.BucketKeyEnabled = &v
33171	return s
33172}
33173
33174// SetETag sets the ETag field's value.
33175func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
33176	s.ETag = &v
33177	return s
33178}
33179
33180// SetExpiration sets the Expiration field's value.
33181func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
33182	s.Expiration = &v
33183	return s
33184}
33185
33186// SetRequestCharged sets the RequestCharged field's value.
33187func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
33188	s.RequestCharged = &v
33189	return s
33190}
33191
33192// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
33193func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
33194	s.SSECustomerAlgorithm = &v
33195	return s
33196}
33197
33198// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
33199func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
33200	s.SSECustomerKeyMD5 = &v
33201	return s
33202}
33203
33204// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
33205func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput {
33206	s.SSEKMSEncryptionContext = &v
33207	return s
33208}
33209
33210// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
33211func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
33212	s.SSEKMSKeyId = &v
33213	return s
33214}
33215
33216// SetServerSideEncryption sets the ServerSideEncryption field's value.
33217func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
33218	s.ServerSideEncryption = &v
33219	return s
33220}
33221
33222// SetVersionId sets the VersionId field's value.
33223func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
33224	s.VersionId = &v
33225	return s
33226}
33227
33228type PutObjectRetentionInput struct {
33229	_ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"`
33230
33231	// The bucket name that contains the object you want to apply this Object Retention
33232	// configuration to.
33233	//
33234	// When using this action with an access point, you must direct requests to
33235	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
33236	// When using this action with an access point through the Amazon Web Services
33237	// SDKs, you provide the access point ARN in place of the bucket name. For more
33238	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
33239	// in the Amazon S3 User Guide.
33240	//
33241	// Bucket is a required field
33242	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33243
33244	// Indicates whether this action should bypass Governance-mode restrictions.
33245	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
33246
33247	// The account ID of the expected bucket owner. If the bucket is owned by a
33248	// different account, the request will fail with an HTTP 403 (Access Denied)
33249	// error.
33250	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33251
33252	// The key name for the object that you want to apply this Object Retention
33253	// configuration to.
33254	//
33255	// Key is a required field
33256	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
33257
33258	// Confirms that the requester knows that they will be charged for the request.
33259	// Bucket owners need not specify this parameter in their requests. For information
33260	// about downloading objects from requester pays buckets, see Downloading Objects
33261	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
33262	// in the Amazon S3 User Guide.
33263	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
33264
33265	// The container element for the Object Retention configuration.
33266	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33267
33268	// The version ID for the object that you want to apply this Object Retention
33269	// configuration to.
33270	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
33271}
33272
33273// String returns the string representation.
33274//
33275// API parameter values that are decorated as "sensitive" in the API will not
33276// be included in the string output. The member name will be present, but the
33277// value will be replaced with "sensitive".
33278func (s PutObjectRetentionInput) String() string {
33279	return awsutil.Prettify(s)
33280}
33281
33282// GoString returns the string representation.
33283//
33284// API parameter values that are decorated as "sensitive" in the API will not
33285// be included in the string output. The member name will be present, but the
33286// value will be replaced with "sensitive".
33287func (s PutObjectRetentionInput) GoString() string {
33288	return s.String()
33289}
33290
33291// Validate inspects the fields of the type to determine if they are valid.
33292func (s *PutObjectRetentionInput) Validate() error {
33293	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
33294	if s.Bucket == nil {
33295		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33296	}
33297	if s.Bucket != nil && len(*s.Bucket) < 1 {
33298		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33299	}
33300	if s.Key == nil {
33301		invalidParams.Add(request.NewErrParamRequired("Key"))
33302	}
33303	if s.Key != nil && len(*s.Key) < 1 {
33304		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
33305	}
33306
33307	if invalidParams.Len() > 0 {
33308		return invalidParams
33309	}
33310	return nil
33311}
33312
33313// SetBucket sets the Bucket field's value.
33314func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
33315	s.Bucket = &v
33316	return s
33317}
33318
33319func (s *PutObjectRetentionInput) getBucket() (v string) {
33320	if s.Bucket == nil {
33321		return v
33322	}
33323	return *s.Bucket
33324}
33325
33326// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
33327func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
33328	s.BypassGovernanceRetention = &v
33329	return s
33330}
33331
33332// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33333func (s *PutObjectRetentionInput) SetExpectedBucketOwner(v string) *PutObjectRetentionInput {
33334	s.ExpectedBucketOwner = &v
33335	return s
33336}
33337
33338// SetKey sets the Key field's value.
33339func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
33340	s.Key = &v
33341	return s
33342}
33343
33344// SetRequestPayer sets the RequestPayer field's value.
33345func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
33346	s.RequestPayer = &v
33347	return s
33348}
33349
33350// SetRetention sets the Retention field's value.
33351func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
33352	s.Retention = v
33353	return s
33354}
33355
33356// SetVersionId sets the VersionId field's value.
33357func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
33358	s.VersionId = &v
33359	return s
33360}
33361
33362func (s *PutObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
33363	if s.Bucket == nil {
33364		return nil, fmt.Errorf("member Bucket is nil")
33365	}
33366	return parseEndpointARN(*s.Bucket)
33367}
33368
33369func (s *PutObjectRetentionInput) hasEndpointARN() bool {
33370	if s.Bucket == nil {
33371		return false
33372	}
33373	return arn.IsARN(*s.Bucket)
33374}
33375
33376// updateArnableField updates the value of the input field that
33377// takes an ARN as an input. This method is useful to backfill
33378// the parsed resource name from ARN into the input member.
33379// It returns a pointer to a modified copy of input and an error.
33380// Note that original input is not modified.
33381func (s PutObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
33382	if s.Bucket == nil {
33383		return nil, fmt.Errorf("member Bucket is nil")
33384	}
33385	s.Bucket = aws.String(v)
33386	return &s, nil
33387}
33388
33389type PutObjectRetentionOutput struct {
33390	_ struct{} `type:"structure"`
33391
33392	// If present, indicates that the requester was successfully charged for the
33393	// request.
33394	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
33395}
33396
33397// String returns the string representation.
33398//
33399// API parameter values that are decorated as "sensitive" in the API will not
33400// be included in the string output. The member name will be present, but the
33401// value will be replaced with "sensitive".
33402func (s PutObjectRetentionOutput) String() string {
33403	return awsutil.Prettify(s)
33404}
33405
33406// GoString returns the string representation.
33407//
33408// API parameter values that are decorated as "sensitive" in the API will not
33409// be included in the string output. The member name will be present, but the
33410// value will be replaced with "sensitive".
33411func (s PutObjectRetentionOutput) GoString() string {
33412	return s.String()
33413}
33414
33415// SetRequestCharged sets the RequestCharged field's value.
33416func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
33417	s.RequestCharged = &v
33418	return s
33419}
33420
33421type PutObjectTaggingInput struct {
33422	_ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"`
33423
33424	// The bucket name containing the object.
33425	//
33426	// When using this action with an access point, you must direct requests to
33427	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
33428	// When using this action with an access point through the Amazon Web Services
33429	// SDKs, you provide the access point ARN in place of the bucket name. For more
33430	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
33431	// in the Amazon S3 User Guide.
33432	//
33433	// When using this action with Amazon S3 on Outposts, you must direct requests
33434	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
33435	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
33436	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
33437	// you provide the Outposts bucket ARN in place of the bucket name. For more
33438	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
33439	// in the Amazon S3 User Guide.
33440	//
33441	// Bucket is a required field
33442	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33443
33444	// The account ID of the expected bucket owner. If the bucket is owned by a
33445	// different account, the request will fail with an HTTP 403 (Access Denied)
33446	// error.
33447	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33448
33449	// Name of the object key.
33450	//
33451	// Key is a required field
33452	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
33453
33454	// Confirms that the requester knows that they will be charged for the request.
33455	// Bucket owners need not specify this parameter in their requests. For information
33456	// about downloading objects from requester pays buckets, see Downloading Objects
33457	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
33458	// in the Amazon S3 User Guide.
33459	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
33460
33461	// Container for the TagSet and Tag elements
33462	//
33463	// Tagging is a required field
33464	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33465
33466	// The versionId of the object that the tag-set will be added to.
33467	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
33468}
33469
33470// String returns the string representation.
33471//
33472// API parameter values that are decorated as "sensitive" in the API will not
33473// be included in the string output. The member name will be present, but the
33474// value will be replaced with "sensitive".
33475func (s PutObjectTaggingInput) String() string {
33476	return awsutil.Prettify(s)
33477}
33478
33479// GoString returns the string representation.
33480//
33481// API parameter values that are decorated as "sensitive" in the API will not
33482// be included in the string output. The member name will be present, but the
33483// value will be replaced with "sensitive".
33484func (s PutObjectTaggingInput) GoString() string {
33485	return s.String()
33486}
33487
33488// Validate inspects the fields of the type to determine if they are valid.
33489func (s *PutObjectTaggingInput) Validate() error {
33490	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
33491	if s.Bucket == nil {
33492		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33493	}
33494	if s.Bucket != nil && len(*s.Bucket) < 1 {
33495		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33496	}
33497	if s.Key == nil {
33498		invalidParams.Add(request.NewErrParamRequired("Key"))
33499	}
33500	if s.Key != nil && len(*s.Key) < 1 {
33501		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
33502	}
33503	if s.Tagging == nil {
33504		invalidParams.Add(request.NewErrParamRequired("Tagging"))
33505	}
33506	if s.Tagging != nil {
33507		if err := s.Tagging.Validate(); err != nil {
33508			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
33509		}
33510	}
33511
33512	if invalidParams.Len() > 0 {
33513		return invalidParams
33514	}
33515	return nil
33516}
33517
33518// SetBucket sets the Bucket field's value.
33519func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
33520	s.Bucket = &v
33521	return s
33522}
33523
33524func (s *PutObjectTaggingInput) getBucket() (v string) {
33525	if s.Bucket == nil {
33526		return v
33527	}
33528	return *s.Bucket
33529}
33530
33531// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33532func (s *PutObjectTaggingInput) SetExpectedBucketOwner(v string) *PutObjectTaggingInput {
33533	s.ExpectedBucketOwner = &v
33534	return s
33535}
33536
33537// SetKey sets the Key field's value.
33538func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
33539	s.Key = &v
33540	return s
33541}
33542
33543// SetRequestPayer sets the RequestPayer field's value.
33544func (s *PutObjectTaggingInput) SetRequestPayer(v string) *PutObjectTaggingInput {
33545	s.RequestPayer = &v
33546	return s
33547}
33548
33549// SetTagging sets the Tagging field's value.
33550func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
33551	s.Tagging = v
33552	return s
33553}
33554
33555// SetVersionId sets the VersionId field's value.
33556func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
33557	s.VersionId = &v
33558	return s
33559}
33560
33561func (s *PutObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
33562	if s.Bucket == nil {
33563		return nil, fmt.Errorf("member Bucket is nil")
33564	}
33565	return parseEndpointARN(*s.Bucket)
33566}
33567
33568func (s *PutObjectTaggingInput) hasEndpointARN() bool {
33569	if s.Bucket == nil {
33570		return false
33571	}
33572	return arn.IsARN(*s.Bucket)
33573}
33574
33575// updateArnableField updates the value of the input field that
33576// takes an ARN as an input. This method is useful to backfill
33577// the parsed resource name from ARN into the input member.
33578// It returns a pointer to a modified copy of input and an error.
33579// Note that original input is not modified.
33580func (s PutObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
33581	if s.Bucket == nil {
33582		return nil, fmt.Errorf("member Bucket is nil")
33583	}
33584	s.Bucket = aws.String(v)
33585	return &s, nil
33586}
33587
33588type PutObjectTaggingOutput struct {
33589	_ struct{} `type:"structure"`
33590
33591	// The versionId of the object the tag-set was added to.
33592	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
33593}
33594
33595// String returns the string representation.
33596//
33597// API parameter values that are decorated as "sensitive" in the API will not
33598// be included in the string output. The member name will be present, but the
33599// value will be replaced with "sensitive".
33600func (s PutObjectTaggingOutput) String() string {
33601	return awsutil.Prettify(s)
33602}
33603
33604// GoString returns the string representation.
33605//
33606// API parameter values that are decorated as "sensitive" in the API will not
33607// be included in the string output. The member name will be present, but the
33608// value will be replaced with "sensitive".
33609func (s PutObjectTaggingOutput) GoString() string {
33610	return s.String()
33611}
33612
33613// SetVersionId sets the VersionId field's value.
33614func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
33615	s.VersionId = &v
33616	return s
33617}
33618
33619type PutPublicAccessBlockInput struct {
33620	_ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"`
33621
33622	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
33623	// want to set.
33624	//
33625	// Bucket is a required field
33626	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33627
33628	// The account ID of the expected bucket owner. If the bucket is owned by a
33629	// different account, the request will fail with an HTTP 403 (Access Denied)
33630	// error.
33631	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33632
33633	// The PublicAccessBlock configuration that you want to apply to this Amazon
33634	// S3 bucket. You can enable the configuration options in any combination. For
33635	// more information about when Amazon S3 considers a bucket or object public,
33636	// 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)
33637	// in the Amazon S3 User Guide.
33638	//
33639	// PublicAccessBlockConfiguration is a required field
33640	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33641}
33642
33643// String returns the string representation.
33644//
33645// API parameter values that are decorated as "sensitive" in the API will not
33646// be included in the string output. The member name will be present, but the
33647// value will be replaced with "sensitive".
33648func (s PutPublicAccessBlockInput) String() string {
33649	return awsutil.Prettify(s)
33650}
33651
33652// GoString returns the string representation.
33653//
33654// API parameter values that are decorated as "sensitive" in the API will not
33655// be included in the string output. The member name will be present, but the
33656// value will be replaced with "sensitive".
33657func (s PutPublicAccessBlockInput) GoString() string {
33658	return s.String()
33659}
33660
33661// Validate inspects the fields of the type to determine if they are valid.
33662func (s *PutPublicAccessBlockInput) Validate() error {
33663	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
33664	if s.Bucket == nil {
33665		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33666	}
33667	if s.Bucket != nil && len(*s.Bucket) < 1 {
33668		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33669	}
33670	if s.PublicAccessBlockConfiguration == nil {
33671		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
33672	}
33673
33674	if invalidParams.Len() > 0 {
33675		return invalidParams
33676	}
33677	return nil
33678}
33679
33680// SetBucket sets the Bucket field's value.
33681func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
33682	s.Bucket = &v
33683	return s
33684}
33685
33686func (s *PutPublicAccessBlockInput) getBucket() (v string) {
33687	if s.Bucket == nil {
33688		return v
33689	}
33690	return *s.Bucket
33691}
33692
33693// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33694func (s *PutPublicAccessBlockInput) SetExpectedBucketOwner(v string) *PutPublicAccessBlockInput {
33695	s.ExpectedBucketOwner = &v
33696	return s
33697}
33698
33699// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
33700func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
33701	s.PublicAccessBlockConfiguration = v
33702	return s
33703}
33704
33705func (s *PutPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
33706	if s.Bucket == nil {
33707		return nil, fmt.Errorf("member Bucket is nil")
33708	}
33709	return parseEndpointARN(*s.Bucket)
33710}
33711
33712func (s *PutPublicAccessBlockInput) hasEndpointARN() bool {
33713	if s.Bucket == nil {
33714		return false
33715	}
33716	return arn.IsARN(*s.Bucket)
33717}
33718
33719// updateArnableField updates the value of the input field that
33720// takes an ARN as an input. This method is useful to backfill
33721// the parsed resource name from ARN into the input member.
33722// It returns a pointer to a modified copy of input and an error.
33723// Note that original input is not modified.
33724func (s PutPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
33725	if s.Bucket == nil {
33726		return nil, fmt.Errorf("member Bucket is nil")
33727	}
33728	s.Bucket = aws.String(v)
33729	return &s, nil
33730}
33731
33732type PutPublicAccessBlockOutput struct {
33733	_ struct{} `type:"structure"`
33734}
33735
33736// String returns the string representation.
33737//
33738// API parameter values that are decorated as "sensitive" in the API will not
33739// be included in the string output. The member name will be present, but the
33740// value will be replaced with "sensitive".
33741func (s PutPublicAccessBlockOutput) String() string {
33742	return awsutil.Prettify(s)
33743}
33744
33745// GoString returns the string representation.
33746//
33747// API parameter values that are decorated as "sensitive" in the API will not
33748// be included in the string output. The member name will be present, but the
33749// value will be replaced with "sensitive".
33750func (s PutPublicAccessBlockOutput) GoString() string {
33751	return s.String()
33752}
33753
33754// Specifies the configuration for publishing messages to an Amazon Simple Queue
33755// Service (Amazon SQS) queue when Amazon S3 detects specified events.
33756type QueueConfiguration struct {
33757	_ struct{} `type:"structure"`
33758
33759	// A collection of bucket events for which to send notifications
33760	//
33761	// Events is a required field
33762	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
33763
33764	// Specifies object key name filtering rules. For information about key name
33765	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
33766	// in the Amazon S3 User Guide.
33767	Filter *NotificationConfigurationFilter `type:"structure"`
33768
33769	// An optional unique identifier for configurations in a notification configuration.
33770	// If you don't provide one, Amazon S3 will assign an ID.
33771	Id *string `type:"string"`
33772
33773	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
33774	// publishes a message when it detects events of the specified type.
33775	//
33776	// QueueArn is a required field
33777	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
33778}
33779
33780// String returns the string representation.
33781//
33782// API parameter values that are decorated as "sensitive" in the API will not
33783// be included in the string output. The member name will be present, but the
33784// value will be replaced with "sensitive".
33785func (s QueueConfiguration) String() string {
33786	return awsutil.Prettify(s)
33787}
33788
33789// GoString returns the string representation.
33790//
33791// API parameter values that are decorated as "sensitive" in the API will not
33792// be included in the string output. The member name will be present, but the
33793// value will be replaced with "sensitive".
33794func (s QueueConfiguration) GoString() string {
33795	return s.String()
33796}
33797
33798// Validate inspects the fields of the type to determine if they are valid.
33799func (s *QueueConfiguration) Validate() error {
33800	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
33801	if s.Events == nil {
33802		invalidParams.Add(request.NewErrParamRequired("Events"))
33803	}
33804	if s.QueueArn == nil {
33805		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
33806	}
33807
33808	if invalidParams.Len() > 0 {
33809		return invalidParams
33810	}
33811	return nil
33812}
33813
33814// SetEvents sets the Events field's value.
33815func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
33816	s.Events = v
33817	return s
33818}
33819
33820// SetFilter sets the Filter field's value.
33821func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
33822	s.Filter = v
33823	return s
33824}
33825
33826// SetId sets the Id field's value.
33827func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
33828	s.Id = &v
33829	return s
33830}
33831
33832// SetQueueArn sets the QueueArn field's value.
33833func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
33834	s.QueueArn = &v
33835	return s
33836}
33837
33838// This data type is deprecated. Use QueueConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_QueueConfiguration.html)
33839// for the same purposes. This data type specifies the configuration for publishing
33840// messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon
33841// S3 detects specified events.
33842type QueueConfigurationDeprecated struct {
33843	_ struct{} `type:"structure"`
33844
33845	// The bucket event for which to send notifications.
33846	//
33847	// Deprecated: Event has been deprecated
33848	Event *string `deprecated:"true" type:"string" enum:"Event"`
33849
33850	// A collection of bucket events for which to send notifications.
33851	Events []*string `locationName:"Event" type:"list" flattened:"true"`
33852
33853	// An optional unique identifier for configurations in a notification configuration.
33854	// If you don't provide one, Amazon S3 will assign an ID.
33855	Id *string `type:"string"`
33856
33857	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
33858	// publishes a message when it detects events of the specified type.
33859	Queue *string `type:"string"`
33860}
33861
33862// String returns the string representation.
33863//
33864// API parameter values that are decorated as "sensitive" in the API will not
33865// be included in the string output. The member name will be present, but the
33866// value will be replaced with "sensitive".
33867func (s QueueConfigurationDeprecated) String() string {
33868	return awsutil.Prettify(s)
33869}
33870
33871// GoString returns the string representation.
33872//
33873// API parameter values that are decorated as "sensitive" in the API will not
33874// be included in the string output. The member name will be present, but the
33875// value will be replaced with "sensitive".
33876func (s QueueConfigurationDeprecated) GoString() string {
33877	return s.String()
33878}
33879
33880// SetEvent sets the Event field's value.
33881func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
33882	s.Event = &v
33883	return s
33884}
33885
33886// SetEvents sets the Events field's value.
33887func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
33888	s.Events = v
33889	return s
33890}
33891
33892// SetId sets the Id field's value.
33893func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
33894	s.Id = &v
33895	return s
33896}
33897
33898// SetQueue sets the Queue field's value.
33899func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
33900	s.Queue = &v
33901	return s
33902}
33903
33904// The container for the records event.
33905type RecordsEvent struct {
33906	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
33907
33908	// The byte array of partial, one or more result records.
33909	// Payload is automatically base64 encoded/decoded by the SDK.
33910	Payload []byte `type:"blob"`
33911}
33912
33913// String returns the string representation.
33914//
33915// API parameter values that are decorated as "sensitive" in the API will not
33916// be included in the string output. The member name will be present, but the
33917// value will be replaced with "sensitive".
33918func (s RecordsEvent) String() string {
33919	return awsutil.Prettify(s)
33920}
33921
33922// GoString returns the string representation.
33923//
33924// API parameter values that are decorated as "sensitive" in the API will not
33925// be included in the string output. The member name will be present, but the
33926// value will be replaced with "sensitive".
33927func (s RecordsEvent) GoString() string {
33928	return s.String()
33929}
33930
33931// SetPayload sets the Payload field's value.
33932func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
33933	s.Payload = v
33934	return s
33935}
33936
33937// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
33938func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
33939
33940// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
33941// This method is only used internally within the SDK's EventStream handling.
33942func (s *RecordsEvent) UnmarshalEvent(
33943	payloadUnmarshaler protocol.PayloadUnmarshaler,
33944	msg eventstream.Message,
33945) error {
33946	s.Payload = make([]byte, len(msg.Payload))
33947	copy(s.Payload, msg.Payload)
33948	return nil
33949}
33950
33951// MarshalEvent marshals the type into an stream event value. This method
33952// should only used internally within the SDK's EventStream handling.
33953func (s *RecordsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
33954	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
33955	msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
33956	msg.Payload = s.Payload
33957	return msg, err
33958}
33959
33960// Specifies how requests are redirected. In the event of an error, you can
33961// specify a different error code to return.
33962type Redirect struct {
33963	_ struct{} `type:"structure"`
33964
33965	// The host name to use in the redirect request.
33966	HostName *string `type:"string"`
33967
33968	// The HTTP redirect code to use on the response. Not required if one of the
33969	// siblings is present.
33970	HttpRedirectCode *string `type:"string"`
33971
33972	// Protocol to use when redirecting requests. The default is the protocol that
33973	// is used in the original request.
33974	Protocol *string `type:"string" enum:"Protocol"`
33975
33976	// The object key prefix to use in the redirect request. For example, to redirect
33977	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
33978	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
33979	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
33980	// if one of the siblings is present. Can be present only if ReplaceKeyWith
33981	// is not provided.
33982	//
33983	// Replacement must be made for object keys containing special characters (such
33984	// as carriage returns) when using XML requests. For more information, see XML
33985	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
33986	ReplaceKeyPrefixWith *string `type:"string"`
33987
33988	// The specific object key to use in the redirect request. For example, redirect
33989	// request to error.html. Not required if one of the siblings is present. Can
33990	// be present only if ReplaceKeyPrefixWith is not provided.
33991	//
33992	// Replacement must be made for object keys containing special characters (such
33993	// as carriage returns) when using XML requests. For more information, see XML
33994	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
33995	ReplaceKeyWith *string `type:"string"`
33996}
33997
33998// String returns the string representation.
33999//
34000// API parameter values that are decorated as "sensitive" in the API will not
34001// be included in the string output. The member name will be present, but the
34002// value will be replaced with "sensitive".
34003func (s Redirect) String() string {
34004	return awsutil.Prettify(s)
34005}
34006
34007// GoString returns the string representation.
34008//
34009// API parameter values that are decorated as "sensitive" in the API will not
34010// be included in the string output. The member name will be present, but the
34011// value will be replaced with "sensitive".
34012func (s Redirect) GoString() string {
34013	return s.String()
34014}
34015
34016// SetHostName sets the HostName field's value.
34017func (s *Redirect) SetHostName(v string) *Redirect {
34018	s.HostName = &v
34019	return s
34020}
34021
34022// SetHttpRedirectCode sets the HttpRedirectCode field's value.
34023func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
34024	s.HttpRedirectCode = &v
34025	return s
34026}
34027
34028// SetProtocol sets the Protocol field's value.
34029func (s *Redirect) SetProtocol(v string) *Redirect {
34030	s.Protocol = &v
34031	return s
34032}
34033
34034// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
34035func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
34036	s.ReplaceKeyPrefixWith = &v
34037	return s
34038}
34039
34040// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
34041func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
34042	s.ReplaceKeyWith = &v
34043	return s
34044}
34045
34046// Specifies the redirect behavior of all requests to a website endpoint of
34047// an Amazon S3 bucket.
34048type RedirectAllRequestsTo struct {
34049	_ struct{} `type:"structure"`
34050
34051	// Name of the host where requests are redirected.
34052	//
34053	// HostName is a required field
34054	HostName *string `type:"string" required:"true"`
34055
34056	// Protocol to use when redirecting requests. The default is the protocol that
34057	// is used in the original request.
34058	Protocol *string `type:"string" enum:"Protocol"`
34059}
34060
34061// String 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 RedirectAllRequestsTo) String() string {
34067	return awsutil.Prettify(s)
34068}
34069
34070// GoString returns the string representation.
34071//
34072// API parameter values that are decorated as "sensitive" in the API will not
34073// be included in the string output. The member name will be present, but the
34074// value will be replaced with "sensitive".
34075func (s RedirectAllRequestsTo) GoString() string {
34076	return s.String()
34077}
34078
34079// Validate inspects the fields of the type to determine if they are valid.
34080func (s *RedirectAllRequestsTo) Validate() error {
34081	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
34082	if s.HostName == nil {
34083		invalidParams.Add(request.NewErrParamRequired("HostName"))
34084	}
34085
34086	if invalidParams.Len() > 0 {
34087		return invalidParams
34088	}
34089	return nil
34090}
34091
34092// SetHostName sets the HostName field's value.
34093func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
34094	s.HostName = &v
34095	return s
34096}
34097
34098// SetProtocol sets the Protocol field's value.
34099func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
34100	s.Protocol = &v
34101	return s
34102}
34103
34104// A filter that you can specify for selection for modifications on replicas.
34105// Amazon S3 doesn't replicate replica modifications by default. In the latest
34106// version of replication configuration (when Filter is specified), you can
34107// specify this element and set the status to Enabled to replicate modifications
34108// on replicas.
34109//
34110// If you don't specify the Filter element, Amazon S3 assumes that the replication
34111// configuration is the earlier version, V1. In the earlier version, this element
34112// is not allowed.
34113type ReplicaModifications struct {
34114	_ struct{} `type:"structure"`
34115
34116	// Specifies whether Amazon S3 replicates modifications on replicas.
34117	//
34118	// Status is a required field
34119	Status *string `type:"string" required:"true" enum:"ReplicaModificationsStatus"`
34120}
34121
34122// String returns the string representation.
34123//
34124// API parameter values that are decorated as "sensitive" in the API will not
34125// be included in the string output. The member name will be present, but the
34126// value will be replaced with "sensitive".
34127func (s ReplicaModifications) String() string {
34128	return awsutil.Prettify(s)
34129}
34130
34131// GoString returns the string representation.
34132//
34133// API parameter values that are decorated as "sensitive" in the API will not
34134// be included in the string output. The member name will be present, but the
34135// value will be replaced with "sensitive".
34136func (s ReplicaModifications) GoString() string {
34137	return s.String()
34138}
34139
34140// Validate inspects the fields of the type to determine if they are valid.
34141func (s *ReplicaModifications) Validate() error {
34142	invalidParams := request.ErrInvalidParams{Context: "ReplicaModifications"}
34143	if s.Status == nil {
34144		invalidParams.Add(request.NewErrParamRequired("Status"))
34145	}
34146
34147	if invalidParams.Len() > 0 {
34148		return invalidParams
34149	}
34150	return nil
34151}
34152
34153// SetStatus sets the Status field's value.
34154func (s *ReplicaModifications) SetStatus(v string) *ReplicaModifications {
34155	s.Status = &v
34156	return s
34157}
34158
34159// A container for replication rules. You can add up to 1,000 rules. The maximum
34160// size of a replication configuration is 2 MB.
34161type ReplicationConfiguration struct {
34162	_ struct{} `type:"structure"`
34163
34164	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
34165	// role that Amazon S3 assumes when replicating objects. For more information,
34166	// see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html)
34167	// in the Amazon S3 User Guide.
34168	//
34169	// Role is a required field
34170	Role *string `type:"string" required:"true"`
34171
34172	// A container for one or more replication rules. A replication configuration
34173	// must have at least one rule and can contain a maximum of 1,000 rules.
34174	//
34175	// Rules is a required field
34176	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
34177}
34178
34179// String returns the string representation.
34180//
34181// API parameter values that are decorated as "sensitive" in the API will not
34182// be included in the string output. The member name will be present, but the
34183// value will be replaced with "sensitive".
34184func (s ReplicationConfiguration) String() string {
34185	return awsutil.Prettify(s)
34186}
34187
34188// GoString returns the string representation.
34189//
34190// API parameter values that are decorated as "sensitive" in the API will not
34191// be included in the string output. The member name will be present, but the
34192// value will be replaced with "sensitive".
34193func (s ReplicationConfiguration) GoString() string {
34194	return s.String()
34195}
34196
34197// Validate inspects the fields of the type to determine if they are valid.
34198func (s *ReplicationConfiguration) Validate() error {
34199	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
34200	if s.Role == nil {
34201		invalidParams.Add(request.NewErrParamRequired("Role"))
34202	}
34203	if s.Rules == nil {
34204		invalidParams.Add(request.NewErrParamRequired("Rules"))
34205	}
34206	if s.Rules != nil {
34207		for i, v := range s.Rules {
34208			if v == nil {
34209				continue
34210			}
34211			if err := v.Validate(); err != nil {
34212				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
34213			}
34214		}
34215	}
34216
34217	if invalidParams.Len() > 0 {
34218		return invalidParams
34219	}
34220	return nil
34221}
34222
34223// SetRole sets the Role field's value.
34224func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
34225	s.Role = &v
34226	return s
34227}
34228
34229// SetRules sets the Rules field's value.
34230func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
34231	s.Rules = v
34232	return s
34233}
34234
34235// Specifies which Amazon S3 objects to replicate and where to store the replicas.
34236type ReplicationRule struct {
34237	_ struct{} `type:"structure"`
34238
34239	// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
34240	// in your replication configuration, you must also include a DeleteMarkerReplication
34241	// element. If your Filter includes a Tag element, the DeleteMarkerReplication
34242	// Status must be set to Disabled, because Amazon S3 does not support replicating
34243	// delete markers for tag-based rules. For an example configuration, see Basic
34244	// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
34245	//
34246	// For more information about delete marker replication, see Basic Rule Configuration
34247	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
34248	//
34249	// If you are using an earlier version of the replication configuration, Amazon
34250	// S3 handles replication of delete markers differently. For more information,
34251	// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
34252	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
34253
34254	// A container for information about the replication destination and its configurations
34255	// including enabling the S3 Replication Time Control (S3 RTC).
34256	//
34257	// Destination is a required field
34258	Destination *Destination `type:"structure" required:"true"`
34259
34260	// Optional configuration to replicate existing source bucket objects. For more
34261	// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
34262	// in the Amazon S3 User Guide.
34263	ExistingObjectReplication *ExistingObjectReplication `type:"structure"`
34264
34265	// A filter that identifies the subset of objects to which the replication rule
34266	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
34267	Filter *ReplicationRuleFilter `type:"structure"`
34268
34269	// A unique identifier for the rule. The maximum value is 255 characters.
34270	ID *string `type:"string"`
34271
34272	// An object key name prefix that identifies the object or objects to which
34273	// the rule applies. The maximum prefix length is 1,024 characters. To include
34274	// all objects in a bucket, specify an empty string.
34275	//
34276	// Replacement must be made for object keys containing special characters (such
34277	// as carriage returns) when using XML requests. For more information, see XML
34278	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
34279	//
34280	// Deprecated: Prefix has been deprecated
34281	Prefix *string `deprecated:"true" type:"string"`
34282
34283	// The priority indicates which rule has precedence whenever two or more replication
34284	// rules conflict. Amazon S3 will attempt to replicate objects according to
34285	// all replication rules. However, if there are two or more rules with the same
34286	// destination bucket, then objects will be replicated according to the rule
34287	// with the highest priority. The higher the number, the higher the priority.
34288	//
34289	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
34290	// in the Amazon S3 User Guide.
34291	Priority *int64 `type:"integer"`
34292
34293	// A container that describes additional filters for identifying the source
34294	// objects that you want to replicate. You can choose to enable or disable the
34295	// replication of these objects. Currently, Amazon S3 supports only the filter
34296	// that you can specify for objects created with server-side encryption using
34297	// a customer managed key stored in Amazon Web Services Key Management Service
34298	// (SSE-KMS).
34299	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
34300
34301	// Specifies whether the rule is enabled.
34302	//
34303	// Status is a required field
34304	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
34305}
34306
34307// String returns the string representation.
34308//
34309// API parameter values that are decorated as "sensitive" in the API will not
34310// be included in the string output. The member name will be present, but the
34311// value will be replaced with "sensitive".
34312func (s ReplicationRule) String() string {
34313	return awsutil.Prettify(s)
34314}
34315
34316// GoString returns the string representation.
34317//
34318// API parameter values that are decorated as "sensitive" in the API will not
34319// be included in the string output. The member name will be present, but the
34320// value will be replaced with "sensitive".
34321func (s ReplicationRule) GoString() string {
34322	return s.String()
34323}
34324
34325// Validate inspects the fields of the type to determine if they are valid.
34326func (s *ReplicationRule) Validate() error {
34327	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
34328	if s.Destination == nil {
34329		invalidParams.Add(request.NewErrParamRequired("Destination"))
34330	}
34331	if s.Status == nil {
34332		invalidParams.Add(request.NewErrParamRequired("Status"))
34333	}
34334	if s.Destination != nil {
34335		if err := s.Destination.Validate(); err != nil {
34336			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
34337		}
34338	}
34339	if s.ExistingObjectReplication != nil {
34340		if err := s.ExistingObjectReplication.Validate(); err != nil {
34341			invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams))
34342		}
34343	}
34344	if s.Filter != nil {
34345		if err := s.Filter.Validate(); err != nil {
34346			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
34347		}
34348	}
34349	if s.SourceSelectionCriteria != nil {
34350		if err := s.SourceSelectionCriteria.Validate(); err != nil {
34351			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
34352		}
34353	}
34354
34355	if invalidParams.Len() > 0 {
34356		return invalidParams
34357	}
34358	return nil
34359}
34360
34361// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
34362func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
34363	s.DeleteMarkerReplication = v
34364	return s
34365}
34366
34367// SetDestination sets the Destination field's value.
34368func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
34369	s.Destination = v
34370	return s
34371}
34372
34373// SetExistingObjectReplication sets the ExistingObjectReplication field's value.
34374func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule {
34375	s.ExistingObjectReplication = v
34376	return s
34377}
34378
34379// SetFilter sets the Filter field's value.
34380func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
34381	s.Filter = v
34382	return s
34383}
34384
34385// SetID sets the ID field's value.
34386func (s *ReplicationRule) SetID(v string) *ReplicationRule {
34387	s.ID = &v
34388	return s
34389}
34390
34391// SetPrefix sets the Prefix field's value.
34392func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
34393	s.Prefix = &v
34394	return s
34395}
34396
34397// SetPriority sets the Priority field's value.
34398func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
34399	s.Priority = &v
34400	return s
34401}
34402
34403// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
34404func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
34405	s.SourceSelectionCriteria = v
34406	return s
34407}
34408
34409// SetStatus sets the Status field's value.
34410func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
34411	s.Status = &v
34412	return s
34413}
34414
34415// A container for specifying rule filters. The filters determine the subset
34416// of objects to which the rule applies. This element is required only if you
34417// specify more than one filter.
34418//
34419// For example:
34420//
34421//    * If you specify both a Prefix and a Tag filter, wrap these filters in
34422//    an And tag.
34423//
34424//    * If you specify a filter based on multiple tags, wrap the Tag elements
34425//    in an And tag.
34426type ReplicationRuleAndOperator struct {
34427	_ struct{} `type:"structure"`
34428
34429	// An object key name prefix that identifies the subset of objects to which
34430	// the rule applies.
34431	Prefix *string `type:"string"`
34432
34433	// An array of tags containing key and value pairs.
34434	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
34435}
34436
34437// String returns the string representation.
34438//
34439// API parameter values that are decorated as "sensitive" in the API will not
34440// be included in the string output. The member name will be present, but the
34441// value will be replaced with "sensitive".
34442func (s ReplicationRuleAndOperator) String() string {
34443	return awsutil.Prettify(s)
34444}
34445
34446// GoString returns the string representation.
34447//
34448// API parameter values that are decorated as "sensitive" in the API will not
34449// be included in the string output. The member name will be present, but the
34450// value will be replaced with "sensitive".
34451func (s ReplicationRuleAndOperator) GoString() string {
34452	return s.String()
34453}
34454
34455// Validate inspects the fields of the type to determine if they are valid.
34456func (s *ReplicationRuleAndOperator) Validate() error {
34457	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
34458	if s.Tags != nil {
34459		for i, v := range s.Tags {
34460			if v == nil {
34461				continue
34462			}
34463			if err := v.Validate(); err != nil {
34464				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
34465			}
34466		}
34467	}
34468
34469	if invalidParams.Len() > 0 {
34470		return invalidParams
34471	}
34472	return nil
34473}
34474
34475// SetPrefix sets the Prefix field's value.
34476func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
34477	s.Prefix = &v
34478	return s
34479}
34480
34481// SetTags sets the Tags field's value.
34482func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
34483	s.Tags = v
34484	return s
34485}
34486
34487// A filter that identifies the subset of objects to which the replication rule
34488// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
34489type ReplicationRuleFilter struct {
34490	_ struct{} `type:"structure"`
34491
34492	// A container for specifying rule filters. The filters determine the subset
34493	// of objects to which the rule applies. This element is required only if you
34494	// specify more than one filter. For example:
34495	//
34496	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
34497	//    an And tag.
34498	//
34499	//    * If you specify a filter based on multiple tags, wrap the Tag elements
34500	//    in an And tag.
34501	And *ReplicationRuleAndOperator `type:"structure"`
34502
34503	// An object key name prefix that identifies the subset of objects to which
34504	// the rule applies.
34505	//
34506	// Replacement must be made for object keys containing special characters (such
34507	// as carriage returns) when using XML requests. For more information, see XML
34508	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
34509	Prefix *string `type:"string"`
34510
34511	// A container for specifying a tag key and value.
34512	//
34513	// The rule applies only to objects that have the tag in their tag set.
34514	Tag *Tag `type:"structure"`
34515}
34516
34517// String returns the string representation.
34518//
34519// API parameter values that are decorated as "sensitive" in the API will not
34520// be included in the string output. The member name will be present, but the
34521// value will be replaced with "sensitive".
34522func (s ReplicationRuleFilter) String() string {
34523	return awsutil.Prettify(s)
34524}
34525
34526// GoString returns the string representation.
34527//
34528// API parameter values that are decorated as "sensitive" in the API will not
34529// be included in the string output. The member name will be present, but the
34530// value will be replaced with "sensitive".
34531func (s ReplicationRuleFilter) GoString() string {
34532	return s.String()
34533}
34534
34535// Validate inspects the fields of the type to determine if they are valid.
34536func (s *ReplicationRuleFilter) Validate() error {
34537	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
34538	if s.And != nil {
34539		if err := s.And.Validate(); err != nil {
34540			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
34541		}
34542	}
34543	if s.Tag != nil {
34544		if err := s.Tag.Validate(); err != nil {
34545			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
34546		}
34547	}
34548
34549	if invalidParams.Len() > 0 {
34550		return invalidParams
34551	}
34552	return nil
34553}
34554
34555// SetAnd sets the And field's value.
34556func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
34557	s.And = v
34558	return s
34559}
34560
34561// SetPrefix sets the Prefix field's value.
34562func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
34563	s.Prefix = &v
34564	return s
34565}
34566
34567// SetTag sets the Tag field's value.
34568func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
34569	s.Tag = v
34570	return s
34571}
34572
34573// A container specifying S3 Replication Time Control (S3 RTC) related information,
34574// including whether S3 RTC is enabled and the time when all objects and operations
34575// on objects must be replicated. Must be specified together with a Metrics
34576// block.
34577type ReplicationTime struct {
34578	_ struct{} `type:"structure"`
34579
34580	// Specifies whether the replication time is enabled.
34581	//
34582	// Status is a required field
34583	Status *string `type:"string" required:"true" enum:"ReplicationTimeStatus"`
34584
34585	// A container specifying the time by which replication should be complete for
34586	// all objects and operations on objects.
34587	//
34588	// Time is a required field
34589	Time *ReplicationTimeValue `type:"structure" required:"true"`
34590}
34591
34592// String returns the string representation.
34593//
34594// API parameter values that are decorated as "sensitive" in the API will not
34595// be included in the string output. The member name will be present, but the
34596// value will be replaced with "sensitive".
34597func (s ReplicationTime) String() string {
34598	return awsutil.Prettify(s)
34599}
34600
34601// GoString returns the string representation.
34602//
34603// API parameter values that are decorated as "sensitive" in the API will not
34604// be included in the string output. The member name will be present, but the
34605// value will be replaced with "sensitive".
34606func (s ReplicationTime) GoString() string {
34607	return s.String()
34608}
34609
34610// Validate inspects the fields of the type to determine if they are valid.
34611func (s *ReplicationTime) Validate() error {
34612	invalidParams := request.ErrInvalidParams{Context: "ReplicationTime"}
34613	if s.Status == nil {
34614		invalidParams.Add(request.NewErrParamRequired("Status"))
34615	}
34616	if s.Time == nil {
34617		invalidParams.Add(request.NewErrParamRequired("Time"))
34618	}
34619
34620	if invalidParams.Len() > 0 {
34621		return invalidParams
34622	}
34623	return nil
34624}
34625
34626// SetStatus sets the Status field's value.
34627func (s *ReplicationTime) SetStatus(v string) *ReplicationTime {
34628	s.Status = &v
34629	return s
34630}
34631
34632// SetTime sets the Time field's value.
34633func (s *ReplicationTime) SetTime(v *ReplicationTimeValue) *ReplicationTime {
34634	s.Time = v
34635	return s
34636}
34637
34638// A container specifying the time value for S3 Replication Time Control (S3
34639// RTC) and replication metrics EventThreshold.
34640type ReplicationTimeValue struct {
34641	_ struct{} `type:"structure"`
34642
34643	// Contains an integer specifying time in minutes.
34644	//
34645	// Valid value: 15
34646	Minutes *int64 `type:"integer"`
34647}
34648
34649// String returns the string representation.
34650//
34651// API parameter values that are decorated as "sensitive" in the API will not
34652// be included in the string output. The member name will be present, but the
34653// value will be replaced with "sensitive".
34654func (s ReplicationTimeValue) String() string {
34655	return awsutil.Prettify(s)
34656}
34657
34658// GoString returns the string representation.
34659//
34660// API parameter values that are decorated as "sensitive" in the API will not
34661// be included in the string output. The member name will be present, but the
34662// value will be replaced with "sensitive".
34663func (s ReplicationTimeValue) GoString() string {
34664	return s.String()
34665}
34666
34667// SetMinutes sets the Minutes field's value.
34668func (s *ReplicationTimeValue) SetMinutes(v int64) *ReplicationTimeValue {
34669	s.Minutes = &v
34670	return s
34671}
34672
34673// Container for Payer.
34674type RequestPaymentConfiguration struct {
34675	_ struct{} `type:"structure"`
34676
34677	// Specifies who pays for the download and request fees.
34678	//
34679	// Payer is a required field
34680	Payer *string `type:"string" required:"true" enum:"Payer"`
34681}
34682
34683// String returns the string representation.
34684//
34685// API parameter values that are decorated as "sensitive" in the API will not
34686// be included in the string output. The member name will be present, but the
34687// value will be replaced with "sensitive".
34688func (s RequestPaymentConfiguration) String() string {
34689	return awsutil.Prettify(s)
34690}
34691
34692// GoString returns the string representation.
34693//
34694// API parameter values that are decorated as "sensitive" in the API will not
34695// be included in the string output. The member name will be present, but the
34696// value will be replaced with "sensitive".
34697func (s RequestPaymentConfiguration) GoString() string {
34698	return s.String()
34699}
34700
34701// Validate inspects the fields of the type to determine if they are valid.
34702func (s *RequestPaymentConfiguration) Validate() error {
34703	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
34704	if s.Payer == nil {
34705		invalidParams.Add(request.NewErrParamRequired("Payer"))
34706	}
34707
34708	if invalidParams.Len() > 0 {
34709		return invalidParams
34710	}
34711	return nil
34712}
34713
34714// SetPayer sets the Payer field's value.
34715func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
34716	s.Payer = &v
34717	return s
34718}
34719
34720// Container for specifying if periodic QueryProgress messages should be sent.
34721type RequestProgress struct {
34722	_ struct{} `type:"structure"`
34723
34724	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
34725	// TRUE, FALSE. Default value: FALSE.
34726	Enabled *bool `type:"boolean"`
34727}
34728
34729// String returns the string representation.
34730//
34731// API parameter values that are decorated as "sensitive" in the API will not
34732// be included in the string output. The member name will be present, but the
34733// value will be replaced with "sensitive".
34734func (s RequestProgress) String() string {
34735	return awsutil.Prettify(s)
34736}
34737
34738// GoString returns the string representation.
34739//
34740// API parameter values that are decorated as "sensitive" in the API will not
34741// be included in the string output. The member name will be present, but the
34742// value will be replaced with "sensitive".
34743func (s RequestProgress) GoString() string {
34744	return s.String()
34745}
34746
34747// SetEnabled sets the Enabled field's value.
34748func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
34749	s.Enabled = &v
34750	return s
34751}
34752
34753type RestoreObjectInput struct {
34754	_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
34755
34756	// The bucket name containing the object to restore.
34757	//
34758	// When using this action with an access point, you must direct requests to
34759	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
34760	// When using this action with an access point through the Amazon Web Services
34761	// SDKs, you provide the access point ARN in place of the bucket name. For more
34762	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
34763	// in the Amazon S3 User Guide.
34764	//
34765	// When using this action with Amazon S3 on Outposts, you must direct requests
34766	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
34767	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
34768	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
34769	// you provide the Outposts bucket ARN in place of the bucket name. For more
34770	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
34771	// in the Amazon S3 User Guide.
34772	//
34773	// Bucket is a required field
34774	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
34775
34776	// The account ID of the expected bucket owner. If the bucket is owned by a
34777	// different account, the request will fail with an HTTP 403 (Access Denied)
34778	// error.
34779	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
34780
34781	// Object key for which the action was initiated.
34782	//
34783	// Key is a required field
34784	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
34785
34786	// Confirms that the requester knows that they will be charged for the request.
34787	// Bucket owners need not specify this parameter in their requests. For information
34788	// about downloading objects from requester pays buckets, see Downloading Objects
34789	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
34790	// in the Amazon S3 User Guide.
34791	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
34792
34793	// Container for restore job parameters.
34794	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
34795
34796	// VersionId used to reference a specific version of the object.
34797	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
34798}
34799
34800// String returns the string representation.
34801//
34802// API parameter values that are decorated as "sensitive" in the API will not
34803// be included in the string output. The member name will be present, but the
34804// value will be replaced with "sensitive".
34805func (s RestoreObjectInput) String() string {
34806	return awsutil.Prettify(s)
34807}
34808
34809// GoString returns the string representation.
34810//
34811// API parameter values that are decorated as "sensitive" in the API will not
34812// be included in the string output. The member name will be present, but the
34813// value will be replaced with "sensitive".
34814func (s RestoreObjectInput) GoString() string {
34815	return s.String()
34816}
34817
34818// Validate inspects the fields of the type to determine if they are valid.
34819func (s *RestoreObjectInput) Validate() error {
34820	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
34821	if s.Bucket == nil {
34822		invalidParams.Add(request.NewErrParamRequired("Bucket"))
34823	}
34824	if s.Bucket != nil && len(*s.Bucket) < 1 {
34825		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
34826	}
34827	if s.Key == nil {
34828		invalidParams.Add(request.NewErrParamRequired("Key"))
34829	}
34830	if s.Key != nil && len(*s.Key) < 1 {
34831		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
34832	}
34833	if s.RestoreRequest != nil {
34834		if err := s.RestoreRequest.Validate(); err != nil {
34835			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
34836		}
34837	}
34838
34839	if invalidParams.Len() > 0 {
34840		return invalidParams
34841	}
34842	return nil
34843}
34844
34845// SetBucket sets the Bucket field's value.
34846func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
34847	s.Bucket = &v
34848	return s
34849}
34850
34851func (s *RestoreObjectInput) getBucket() (v string) {
34852	if s.Bucket == nil {
34853		return v
34854	}
34855	return *s.Bucket
34856}
34857
34858// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
34859func (s *RestoreObjectInput) SetExpectedBucketOwner(v string) *RestoreObjectInput {
34860	s.ExpectedBucketOwner = &v
34861	return s
34862}
34863
34864// SetKey sets the Key field's value.
34865func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
34866	s.Key = &v
34867	return s
34868}
34869
34870// SetRequestPayer sets the RequestPayer field's value.
34871func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
34872	s.RequestPayer = &v
34873	return s
34874}
34875
34876// SetRestoreRequest sets the RestoreRequest field's value.
34877func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
34878	s.RestoreRequest = v
34879	return s
34880}
34881
34882// SetVersionId sets the VersionId field's value.
34883func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
34884	s.VersionId = &v
34885	return s
34886}
34887
34888func (s *RestoreObjectInput) getEndpointARN() (arn.Resource, error) {
34889	if s.Bucket == nil {
34890		return nil, fmt.Errorf("member Bucket is nil")
34891	}
34892	return parseEndpointARN(*s.Bucket)
34893}
34894
34895func (s *RestoreObjectInput) hasEndpointARN() bool {
34896	if s.Bucket == nil {
34897		return false
34898	}
34899	return arn.IsARN(*s.Bucket)
34900}
34901
34902// updateArnableField updates the value of the input field that
34903// takes an ARN as an input. This method is useful to backfill
34904// the parsed resource name from ARN into the input member.
34905// It returns a pointer to a modified copy of input and an error.
34906// Note that original input is not modified.
34907func (s RestoreObjectInput) updateArnableField(v string) (interface{}, error) {
34908	if s.Bucket == nil {
34909		return nil, fmt.Errorf("member Bucket is nil")
34910	}
34911	s.Bucket = aws.String(v)
34912	return &s, nil
34913}
34914
34915type RestoreObjectOutput struct {
34916	_ struct{} `type:"structure"`
34917
34918	// If present, indicates that the requester was successfully charged for the
34919	// request.
34920	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
34921
34922	// Indicates the path in the provided S3 output location where Select results
34923	// will be restored to.
34924	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
34925}
34926
34927// String 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 RestoreObjectOutput) String() string {
34933	return awsutil.Prettify(s)
34934}
34935
34936// GoString returns the string representation.
34937//
34938// API parameter values that are decorated as "sensitive" in the API will not
34939// be included in the string output. The member name will be present, but the
34940// value will be replaced with "sensitive".
34941func (s RestoreObjectOutput) GoString() string {
34942	return s.String()
34943}
34944
34945// SetRequestCharged sets the RequestCharged field's value.
34946func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
34947	s.RequestCharged = &v
34948	return s
34949}
34950
34951// SetRestoreOutputPath sets the RestoreOutputPath field's value.
34952func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
34953	s.RestoreOutputPath = &v
34954	return s
34955}
34956
34957// Container for restore job parameters.
34958type RestoreRequest struct {
34959	_ struct{} `type:"structure"`
34960
34961	// Lifetime of the active copy in days. Do not use with restores that specify
34962	// OutputLocation.
34963	//
34964	// The Days element is required for regular restores, and must not be provided
34965	// for select requests.
34966	Days *int64 `type:"integer"`
34967
34968	// The optional description for the job.
34969	Description *string `type:"string"`
34970
34971	// S3 Glacier related parameters pertaining to this job. Do not use with restores
34972	// that specify OutputLocation.
34973	GlacierJobParameters *GlacierJobParameters `type:"structure"`
34974
34975	// Describes the location where the restore job's output is stored.
34976	OutputLocation *OutputLocation `type:"structure"`
34977
34978	// Describes the parameters for Select job types.
34979	SelectParameters *SelectParameters `type:"structure"`
34980
34981	// Retrieval tier at which the restore will be processed.
34982	Tier *string `type:"string" enum:"Tier"`
34983
34984	// Type of restore request.
34985	Type *string `type:"string" enum:"RestoreRequestType"`
34986}
34987
34988// String returns the string representation.
34989//
34990// API parameter values that are decorated as "sensitive" in the API will not
34991// be included in the string output. The member name will be present, but the
34992// value will be replaced with "sensitive".
34993func (s RestoreRequest) String() string {
34994	return awsutil.Prettify(s)
34995}
34996
34997// GoString returns the string representation.
34998//
34999// API parameter values that are decorated as "sensitive" in the API will not
35000// be included in the string output. The member name will be present, but the
35001// value will be replaced with "sensitive".
35002func (s RestoreRequest) GoString() string {
35003	return s.String()
35004}
35005
35006// Validate inspects the fields of the type to determine if they are valid.
35007func (s *RestoreRequest) Validate() error {
35008	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
35009	if s.GlacierJobParameters != nil {
35010		if err := s.GlacierJobParameters.Validate(); err != nil {
35011			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
35012		}
35013	}
35014	if s.OutputLocation != nil {
35015		if err := s.OutputLocation.Validate(); err != nil {
35016			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
35017		}
35018	}
35019	if s.SelectParameters != nil {
35020		if err := s.SelectParameters.Validate(); err != nil {
35021			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
35022		}
35023	}
35024
35025	if invalidParams.Len() > 0 {
35026		return invalidParams
35027	}
35028	return nil
35029}
35030
35031// SetDays sets the Days field's value.
35032func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
35033	s.Days = &v
35034	return s
35035}
35036
35037// SetDescription sets the Description field's value.
35038func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
35039	s.Description = &v
35040	return s
35041}
35042
35043// SetGlacierJobParameters sets the GlacierJobParameters field's value.
35044func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
35045	s.GlacierJobParameters = v
35046	return s
35047}
35048
35049// SetOutputLocation sets the OutputLocation field's value.
35050func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
35051	s.OutputLocation = v
35052	return s
35053}
35054
35055// SetSelectParameters sets the SelectParameters field's value.
35056func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
35057	s.SelectParameters = v
35058	return s
35059}
35060
35061// SetTier sets the Tier field's value.
35062func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
35063	s.Tier = &v
35064	return s
35065}
35066
35067// SetType sets the Type field's value.
35068func (s *RestoreRequest) SetType(v string) *RestoreRequest {
35069	s.Type = &v
35070	return s
35071}
35072
35073// Specifies the redirect behavior and when a redirect is applied. For more
35074// information about routing rules, see Configuring advanced conditional redirects
35075// (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects)
35076// in the Amazon S3 User Guide.
35077type RoutingRule struct {
35078	_ struct{} `type:"structure"`
35079
35080	// A container for describing a condition that must be met for the specified
35081	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
35082	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
35083	// redirect request to another host where you might process the error.
35084	Condition *Condition `type:"structure"`
35085
35086	// Container for redirect information. You can redirect requests to another
35087	// host, to another page, or with another protocol. In the event of an error,
35088	// you can specify a different error code to return.
35089	//
35090	// Redirect is a required field
35091	Redirect *Redirect `type:"structure" required:"true"`
35092}
35093
35094// String returns the string representation.
35095//
35096// API parameter values that are decorated as "sensitive" in the API will not
35097// be included in the string output. The member name will be present, but the
35098// value will be replaced with "sensitive".
35099func (s RoutingRule) String() string {
35100	return awsutil.Prettify(s)
35101}
35102
35103// GoString returns the string representation.
35104//
35105// API parameter values that are decorated as "sensitive" in the API will not
35106// be included in the string output. The member name will be present, but the
35107// value will be replaced with "sensitive".
35108func (s RoutingRule) GoString() string {
35109	return s.String()
35110}
35111
35112// Validate inspects the fields of the type to determine if they are valid.
35113func (s *RoutingRule) Validate() error {
35114	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
35115	if s.Redirect == nil {
35116		invalidParams.Add(request.NewErrParamRequired("Redirect"))
35117	}
35118
35119	if invalidParams.Len() > 0 {
35120		return invalidParams
35121	}
35122	return nil
35123}
35124
35125// SetCondition sets the Condition field's value.
35126func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
35127	s.Condition = v
35128	return s
35129}
35130
35131// SetRedirect sets the Redirect field's value.
35132func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
35133	s.Redirect = v
35134	return s
35135}
35136
35137// Specifies lifecycle rules for an Amazon S3 bucket. For more information,
35138// see Put Bucket Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)
35139// in the Amazon S3 API Reference. For examples, see Put Bucket Lifecycle Configuration
35140// Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples).
35141type Rule struct {
35142	_ struct{} `type:"structure"`
35143
35144	// Specifies the days since the initiation of an incomplete multipart upload
35145	// that Amazon S3 will wait before permanently removing all parts of the upload.
35146	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
35147	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
35148	// in the Amazon S3 User Guide.
35149	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
35150
35151	// Specifies the expiration for the lifecycle of the object.
35152	Expiration *LifecycleExpiration `type:"structure"`
35153
35154	// Unique identifier for the rule. The value can't be longer than 255 characters.
35155	ID *string `type:"string"`
35156
35157	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
35158	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
35159	// configuration action on a bucket that has versioning enabled (or suspended)
35160	// to request that Amazon S3 delete noncurrent object versions at a specific
35161	// period in the object's lifetime.
35162	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
35163
35164	// Container for the transition rule that describes when noncurrent objects
35165	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
35166	// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
35167	// is suspended), you can set this action to request that Amazon S3 transition
35168	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
35169	// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
35170	// lifetime.
35171	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
35172
35173	// Object key prefix that identifies one or more objects to which this rule
35174	// applies.
35175	//
35176	// Replacement must be made for object keys containing special characters (such
35177	// as carriage returns) when using XML requests. For more information, see XML
35178	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
35179	//
35180	// Prefix is a required field
35181	Prefix *string `type:"string" required:"true"`
35182
35183	// If Enabled, the rule is currently being applied. If Disabled, the rule is
35184	// not currently being applied.
35185	//
35186	// Status is a required field
35187	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
35188
35189	// Specifies when an object transitions to a specified storage class. For more
35190	// information about Amazon S3 lifecycle configuration rules, see Transitioning
35191	// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
35192	// in the Amazon S3 User Guide.
35193	Transition *Transition `type:"structure"`
35194}
35195
35196// String returns the string representation.
35197//
35198// API parameter values that are decorated as "sensitive" in the API will not
35199// be included in the string output. The member name will be present, but the
35200// value will be replaced with "sensitive".
35201func (s Rule) String() string {
35202	return awsutil.Prettify(s)
35203}
35204
35205// GoString returns the string representation.
35206//
35207// API parameter values that are decorated as "sensitive" in the API will not
35208// be included in the string output. The member name will be present, but the
35209// value will be replaced with "sensitive".
35210func (s Rule) GoString() string {
35211	return s.String()
35212}
35213
35214// Validate inspects the fields of the type to determine if they are valid.
35215func (s *Rule) Validate() error {
35216	invalidParams := request.ErrInvalidParams{Context: "Rule"}
35217	if s.Prefix == nil {
35218		invalidParams.Add(request.NewErrParamRequired("Prefix"))
35219	}
35220	if s.Status == nil {
35221		invalidParams.Add(request.NewErrParamRequired("Status"))
35222	}
35223
35224	if invalidParams.Len() > 0 {
35225		return invalidParams
35226	}
35227	return nil
35228}
35229
35230// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
35231func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
35232	s.AbortIncompleteMultipartUpload = v
35233	return s
35234}
35235
35236// SetExpiration sets the Expiration field's value.
35237func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
35238	s.Expiration = v
35239	return s
35240}
35241
35242// SetID sets the ID field's value.
35243func (s *Rule) SetID(v string) *Rule {
35244	s.ID = &v
35245	return s
35246}
35247
35248// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
35249func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
35250	s.NoncurrentVersionExpiration = v
35251	return s
35252}
35253
35254// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
35255func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
35256	s.NoncurrentVersionTransition = v
35257	return s
35258}
35259
35260// SetPrefix sets the Prefix field's value.
35261func (s *Rule) SetPrefix(v string) *Rule {
35262	s.Prefix = &v
35263	return s
35264}
35265
35266// SetStatus sets the Status field's value.
35267func (s *Rule) SetStatus(v string) *Rule {
35268	s.Status = &v
35269	return s
35270}
35271
35272// SetTransition sets the Transition field's value.
35273func (s *Rule) SetTransition(v *Transition) *Rule {
35274	s.Transition = v
35275	return s
35276}
35277
35278// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
35279type SSEKMS struct {
35280	_ struct{} `locationName:"SSE-KMS" type:"structure"`
35281
35282	// Specifies the ID of the Amazon Web Services Key Management Service (Amazon
35283	// Web Services KMS) symmetric customer managed key to use for encrypting inventory
35284	// reports.
35285	//
35286	// KeyId is a sensitive parameter and its value will be
35287	// replaced with "sensitive" in string returned by SSEKMS's
35288	// String and GoString methods.
35289	//
35290	// KeyId is a required field
35291	KeyId *string `type:"string" required:"true" sensitive:"true"`
35292}
35293
35294// String returns the string representation.
35295//
35296// API parameter values that are decorated as "sensitive" in the API will not
35297// be included in the string output. The member name will be present, but the
35298// value will be replaced with "sensitive".
35299func (s SSEKMS) String() string {
35300	return awsutil.Prettify(s)
35301}
35302
35303// GoString returns the string representation.
35304//
35305// API parameter values that are decorated as "sensitive" in the API will not
35306// be included in the string output. The member name will be present, but the
35307// value will be replaced with "sensitive".
35308func (s SSEKMS) GoString() string {
35309	return s.String()
35310}
35311
35312// Validate inspects the fields of the type to determine if they are valid.
35313func (s *SSEKMS) Validate() error {
35314	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
35315	if s.KeyId == nil {
35316		invalidParams.Add(request.NewErrParamRequired("KeyId"))
35317	}
35318
35319	if invalidParams.Len() > 0 {
35320		return invalidParams
35321	}
35322	return nil
35323}
35324
35325// SetKeyId sets the KeyId field's value.
35326func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
35327	s.KeyId = &v
35328	return s
35329}
35330
35331// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
35332type SSES3 struct {
35333	_ struct{} `locationName:"SSE-S3" type:"structure"`
35334}
35335
35336// String returns the string representation.
35337//
35338// API parameter values that are decorated as "sensitive" in the API will not
35339// be included in the string output. The member name will be present, but the
35340// value will be replaced with "sensitive".
35341func (s SSES3) String() string {
35342	return awsutil.Prettify(s)
35343}
35344
35345// GoString returns the string representation.
35346//
35347// API parameter values that are decorated as "sensitive" in the API will not
35348// be included in the string output. The member name will be present, but the
35349// value will be replaced with "sensitive".
35350func (s SSES3) GoString() string {
35351	return s.String()
35352}
35353
35354// Specifies the byte range of the object to get the records from. A record
35355// is processed when its first byte is contained by the range. This parameter
35356// is optional, but when specified, it must not be empty. See RFC 2616, Section
35357// 14.35.1 about how to specify the start and end of the range.
35358type ScanRange struct {
35359	_ struct{} `type:"structure"`
35360
35361	// Specifies the end of the byte range. This parameter is optional. Valid values:
35362	// non-negative integers. The default value is one less than the size of the
35363	// object being queried. If only the End parameter is supplied, it is interpreted
35364	// to mean scan the last N bytes of the file. For example, <scanrange><end>50</end></scanrange>
35365	// means scan the last 50 bytes.
35366	End *int64 `type:"long"`
35367
35368	// Specifies the start of the byte range. This parameter is optional. Valid
35369	// values: non-negative integers. The default value is 0. If only start is supplied,
35370	// it means scan from that point to the end of the file.For example; <scanrange><start>50</start></scanrange>
35371	// means scan from byte 50 until the end of the file.
35372	Start *int64 `type:"long"`
35373}
35374
35375// String returns the string representation.
35376//
35377// API parameter values that are decorated as "sensitive" in the API will not
35378// be included in the string output. The member name will be present, but the
35379// value will be replaced with "sensitive".
35380func (s ScanRange) String() string {
35381	return awsutil.Prettify(s)
35382}
35383
35384// GoString returns the string representation.
35385//
35386// API parameter values that are decorated as "sensitive" in the API will not
35387// be included in the string output. The member name will be present, but the
35388// value will be replaced with "sensitive".
35389func (s ScanRange) GoString() string {
35390	return s.String()
35391}
35392
35393// SetEnd sets the End field's value.
35394func (s *ScanRange) SetEnd(v int64) *ScanRange {
35395	s.End = &v
35396	return s
35397}
35398
35399// SetStart sets the Start field's value.
35400func (s *ScanRange) SetStart(v int64) *ScanRange {
35401	s.Start = &v
35402	return s
35403}
35404
35405// SelectObjectContentEventStreamEvent groups together all EventStream
35406// events writes for SelectObjectContentEventStream.
35407//
35408// These events are:
35409//
35410//     * ContinuationEvent
35411//     * EndEvent
35412//     * ProgressEvent
35413//     * RecordsEvent
35414//     * StatsEvent
35415type SelectObjectContentEventStreamEvent interface {
35416	eventSelectObjectContentEventStream()
35417	eventstreamapi.Marshaler
35418	eventstreamapi.Unmarshaler
35419}
35420
35421// SelectObjectContentEventStreamReader provides the interface for reading to the stream. The
35422// default implementation for this interface will be SelectObjectContentEventStreamData.
35423//
35424// The reader's Close method must allow multiple concurrent calls.
35425//
35426// These events are:
35427//
35428//     * ContinuationEvent
35429//     * EndEvent
35430//     * ProgressEvent
35431//     * RecordsEvent
35432//     * StatsEvent
35433//     * SelectObjectContentEventStreamUnknownEvent
35434type SelectObjectContentEventStreamReader interface {
35435	// Returns a channel of events as they are read from the event stream.
35436	Events() <-chan SelectObjectContentEventStreamEvent
35437
35438	// Close will stop the reader reading events from the stream.
35439	Close() error
35440
35441	// Returns any error that has occurred while reading from the event stream.
35442	Err() error
35443}
35444
35445type readSelectObjectContentEventStream struct {
35446	eventReader *eventstreamapi.EventReader
35447	stream      chan SelectObjectContentEventStreamEvent
35448	err         *eventstreamapi.OnceError
35449
35450	done      chan struct{}
35451	closeOnce sync.Once
35452}
35453
35454func newReadSelectObjectContentEventStream(eventReader *eventstreamapi.EventReader) *readSelectObjectContentEventStream {
35455	r := &readSelectObjectContentEventStream{
35456		eventReader: eventReader,
35457		stream:      make(chan SelectObjectContentEventStreamEvent),
35458		done:        make(chan struct{}),
35459		err:         eventstreamapi.NewOnceError(),
35460	}
35461	go r.readEventStream()
35462
35463	return r
35464}
35465
35466// Close will close the underlying event stream reader.
35467func (r *readSelectObjectContentEventStream) Close() error {
35468	r.closeOnce.Do(r.safeClose)
35469	return r.Err()
35470}
35471
35472func (r *readSelectObjectContentEventStream) ErrorSet() <-chan struct{} {
35473	return r.err.ErrorSet()
35474}
35475
35476func (r *readSelectObjectContentEventStream) Closed() <-chan struct{} {
35477	return r.done
35478}
35479
35480func (r *readSelectObjectContentEventStream) safeClose() {
35481	close(r.done)
35482}
35483
35484func (r *readSelectObjectContentEventStream) Err() error {
35485	return r.err.Err()
35486}
35487
35488func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
35489	return r.stream
35490}
35491
35492func (r *readSelectObjectContentEventStream) readEventStream() {
35493	defer r.Close()
35494	defer close(r.stream)
35495
35496	for {
35497		event, err := r.eventReader.ReadEvent()
35498		if err != nil {
35499			if err == io.EOF {
35500				return
35501			}
35502			select {
35503			case <-r.done:
35504				// If closed already ignore the error
35505				return
35506			default:
35507			}
35508			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
35509				continue
35510			}
35511			r.err.SetError(err)
35512			return
35513		}
35514
35515		select {
35516		case r.stream <- event.(SelectObjectContentEventStreamEvent):
35517		case <-r.done:
35518			return
35519		}
35520	}
35521}
35522
35523type unmarshalerForSelectObjectContentEventStreamEvent struct {
35524	metadata protocol.ResponseMetadata
35525}
35526
35527func (u unmarshalerForSelectObjectContentEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
35528	switch eventType {
35529	case "Cont":
35530		return &ContinuationEvent{}, nil
35531	case "End":
35532		return &EndEvent{}, nil
35533	case "Progress":
35534		return &ProgressEvent{}, nil
35535	case "Records":
35536		return &RecordsEvent{}, nil
35537	case "Stats":
35538		return &StatsEvent{}, nil
35539	default:
35540		return &SelectObjectContentEventStreamUnknownEvent{Type: eventType}, nil
35541	}
35542}
35543
35544// SelectObjectContentEventStreamUnknownEvent provides a failsafe event for the
35545// SelectObjectContentEventStream group of events when an unknown event is received.
35546type SelectObjectContentEventStreamUnknownEvent struct {
35547	Type    string
35548	Message eventstream.Message
35549}
35550
35551// The SelectObjectContentEventStreamUnknownEvent is and event in the SelectObjectContentEventStream
35552// group of events.
35553func (s *SelectObjectContentEventStreamUnknownEvent) eventSelectObjectContentEventStream() {}
35554
35555// MarshalEvent marshals the type into an stream event value. This method
35556// should only used internally within the SDK's EventStream handling.
35557func (e *SelectObjectContentEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
35558	msg eventstream.Message, err error,
35559) {
35560	return e.Message.Clone(), nil
35561}
35562
35563// UnmarshalEvent unmarshals the EventStream Message into the SelectObjectContentEventStreamData value.
35564// This method is only used internally within the SDK's EventStream handling.
35565func (e *SelectObjectContentEventStreamUnknownEvent) UnmarshalEvent(
35566	payloadUnmarshaler protocol.PayloadUnmarshaler,
35567	msg eventstream.Message,
35568) error {
35569	e.Message = msg.Clone()
35570	return nil
35571}
35572
35573// Request to filter the contents of an Amazon S3 object based on a simple Structured
35574// Query Language (SQL) statement. In the request, along with the SQL expression,
35575// you must specify a data serialization format (JSON or CSV) of the object.
35576// Amazon S3 uses this to parse object data into records. It returns only records
35577// that match the specified SQL expression. You must also specify the data serialization
35578// format for the response. For more information, see S3Select API Documentation
35579// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
35580type SelectObjectContentInput struct {
35581	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
35582
35583	// The S3 bucket.
35584	//
35585	// Bucket is a required field
35586	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
35587
35588	// The account ID of the expected bucket owner. If the bucket is owned by a
35589	// different account, the request will fail with an HTTP 403 (Access Denied)
35590	// error.
35591	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
35592
35593	// The expression that is used to query the object.
35594	//
35595	// Expression is a required field
35596	Expression *string `type:"string" required:"true"`
35597
35598	// The type of the provided expression (for example, SQL).
35599	//
35600	// ExpressionType is a required field
35601	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
35602
35603	// Describes the format of the data in the object that is being queried.
35604	//
35605	// InputSerialization is a required field
35606	InputSerialization *InputSerialization `type:"structure" required:"true"`
35607
35608	// The object key.
35609	//
35610	// Key is a required field
35611	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
35612
35613	// Describes the format of the data that you want Amazon S3 to return in response.
35614	//
35615	// OutputSerialization is a required field
35616	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
35617
35618	// Specifies if periodic request progress information should be enabled.
35619	RequestProgress *RequestProgress `type:"structure"`
35620
35621	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
35622	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35623	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
35624
35625	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
35626	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35627	//
35628	// SSECustomerKey is a sensitive parameter and its value will be
35629	// replaced with "sensitive" in string returned by SelectObjectContentInput's
35630	// String and GoString methods.
35631	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
35632
35633	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
35634	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35635	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
35636
35637	// Specifies the byte range of the object to get the records from. A record
35638	// is processed when its first byte is contained by the range. This parameter
35639	// is optional, but when specified, it must not be empty. See RFC 2616, Section
35640	// 14.35.1 about how to specify the start and end of the range.
35641	//
35642	// ScanRangemay be used in the following ways:
35643	//
35644	//    * <scanrange><start>50</start><end>100</end></scanrange> - process only
35645	//    the records starting between the bytes 50 and 100 (inclusive, counting
35646	//    from zero)
35647	//
35648	//    * <scanrange><start>50</start></scanrange> - process only the records
35649	//    starting after the byte 50
35650	//
35651	//    * <scanrange><end>50</end></scanrange> - process only the records within
35652	//    the last 50 bytes of the file.
35653	ScanRange *ScanRange `type:"structure"`
35654}
35655
35656// String returns the string representation.
35657//
35658// API parameter values that are decorated as "sensitive" in the API will not
35659// be included in the string output. The member name will be present, but the
35660// value will be replaced with "sensitive".
35661func (s SelectObjectContentInput) String() string {
35662	return awsutil.Prettify(s)
35663}
35664
35665// GoString returns the string representation.
35666//
35667// API parameter values that are decorated as "sensitive" in the API will not
35668// be included in the string output. The member name will be present, but the
35669// value will be replaced with "sensitive".
35670func (s SelectObjectContentInput) GoString() string {
35671	return s.String()
35672}
35673
35674// Validate inspects the fields of the type to determine if they are valid.
35675func (s *SelectObjectContentInput) Validate() error {
35676	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
35677	if s.Bucket == nil {
35678		invalidParams.Add(request.NewErrParamRequired("Bucket"))
35679	}
35680	if s.Bucket != nil && len(*s.Bucket) < 1 {
35681		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
35682	}
35683	if s.Expression == nil {
35684		invalidParams.Add(request.NewErrParamRequired("Expression"))
35685	}
35686	if s.ExpressionType == nil {
35687		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
35688	}
35689	if s.InputSerialization == nil {
35690		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
35691	}
35692	if s.Key == nil {
35693		invalidParams.Add(request.NewErrParamRequired("Key"))
35694	}
35695	if s.Key != nil && len(*s.Key) < 1 {
35696		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
35697	}
35698	if s.OutputSerialization == nil {
35699		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
35700	}
35701
35702	if invalidParams.Len() > 0 {
35703		return invalidParams
35704	}
35705	return nil
35706}
35707
35708// SetBucket sets the Bucket field's value.
35709func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
35710	s.Bucket = &v
35711	return s
35712}
35713
35714func (s *SelectObjectContentInput) getBucket() (v string) {
35715	if s.Bucket == nil {
35716		return v
35717	}
35718	return *s.Bucket
35719}
35720
35721// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
35722func (s *SelectObjectContentInput) SetExpectedBucketOwner(v string) *SelectObjectContentInput {
35723	s.ExpectedBucketOwner = &v
35724	return s
35725}
35726
35727// SetExpression sets the Expression field's value.
35728func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
35729	s.Expression = &v
35730	return s
35731}
35732
35733// SetExpressionType sets the ExpressionType field's value.
35734func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
35735	s.ExpressionType = &v
35736	return s
35737}
35738
35739// SetInputSerialization sets the InputSerialization field's value.
35740func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
35741	s.InputSerialization = v
35742	return s
35743}
35744
35745// SetKey sets the Key field's value.
35746func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
35747	s.Key = &v
35748	return s
35749}
35750
35751// SetOutputSerialization sets the OutputSerialization field's value.
35752func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
35753	s.OutputSerialization = v
35754	return s
35755}
35756
35757// SetRequestProgress sets the RequestProgress field's value.
35758func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
35759	s.RequestProgress = v
35760	return s
35761}
35762
35763// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
35764func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
35765	s.SSECustomerAlgorithm = &v
35766	return s
35767}
35768
35769// SetSSECustomerKey sets the SSECustomerKey field's value.
35770func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
35771	s.SSECustomerKey = &v
35772	return s
35773}
35774
35775func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
35776	if s.SSECustomerKey == nil {
35777		return v
35778	}
35779	return *s.SSECustomerKey
35780}
35781
35782// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
35783func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
35784	s.SSECustomerKeyMD5 = &v
35785	return s
35786}
35787
35788// SetScanRange sets the ScanRange field's value.
35789func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput {
35790	s.ScanRange = v
35791	return s
35792}
35793
35794func (s *SelectObjectContentInput) getEndpointARN() (arn.Resource, error) {
35795	if s.Bucket == nil {
35796		return nil, fmt.Errorf("member Bucket is nil")
35797	}
35798	return parseEndpointARN(*s.Bucket)
35799}
35800
35801func (s *SelectObjectContentInput) hasEndpointARN() bool {
35802	if s.Bucket == nil {
35803		return false
35804	}
35805	return arn.IsARN(*s.Bucket)
35806}
35807
35808// updateArnableField updates the value of the input field that
35809// takes an ARN as an input. This method is useful to backfill
35810// the parsed resource name from ARN into the input member.
35811// It returns a pointer to a modified copy of input and an error.
35812// Note that original input is not modified.
35813func (s SelectObjectContentInput) updateArnableField(v string) (interface{}, error) {
35814	if s.Bucket == nil {
35815		return nil, fmt.Errorf("member Bucket is nil")
35816	}
35817	s.Bucket = aws.String(v)
35818	return &s, nil
35819}
35820
35821type SelectObjectContentOutput struct {
35822	_ struct{} `type:"structure" payload:"Payload"`
35823
35824	EventStream *SelectObjectContentEventStream
35825}
35826
35827// String returns the string representation.
35828//
35829// API parameter values that are decorated as "sensitive" in the API will not
35830// be included in the string output. The member name will be present, but the
35831// value will be replaced with "sensitive".
35832func (s SelectObjectContentOutput) String() string {
35833	return awsutil.Prettify(s)
35834}
35835
35836// GoString returns the string representation.
35837//
35838// API parameter values that are decorated as "sensitive" in the API will not
35839// be included in the string output. The member name will be present, but the
35840// value will be replaced with "sensitive".
35841func (s SelectObjectContentOutput) GoString() string {
35842	return s.String()
35843}
35844
35845func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
35846	s.EventStream = v
35847	return s
35848}
35849func (s *SelectObjectContentOutput) GetEventStream() *SelectObjectContentEventStream {
35850	return s.EventStream
35851}
35852
35853// GetStream returns the type to interact with the event stream.
35854func (s *SelectObjectContentOutput) GetStream() *SelectObjectContentEventStream {
35855	return s.EventStream
35856}
35857
35858// Describes the parameters for Select job types.
35859type SelectParameters struct {
35860	_ struct{} `type:"structure"`
35861
35862	// The expression that is used to query the object.
35863	//
35864	// Expression is a required field
35865	Expression *string `type:"string" required:"true"`
35866
35867	// The type of the provided expression (for example, SQL).
35868	//
35869	// ExpressionType is a required field
35870	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
35871
35872	// Describes the serialization format of the object.
35873	//
35874	// InputSerialization is a required field
35875	InputSerialization *InputSerialization `type:"structure" required:"true"`
35876
35877	// Describes how the results of the Select job are serialized.
35878	//
35879	// OutputSerialization is a required field
35880	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
35881}
35882
35883// String returns the string representation.
35884//
35885// API parameter values that are decorated as "sensitive" in the API will not
35886// be included in the string output. The member name will be present, but the
35887// value will be replaced with "sensitive".
35888func (s SelectParameters) String() string {
35889	return awsutil.Prettify(s)
35890}
35891
35892// GoString returns the string representation.
35893//
35894// API parameter values that are decorated as "sensitive" in the API will not
35895// be included in the string output. The member name will be present, but the
35896// value will be replaced with "sensitive".
35897func (s SelectParameters) GoString() string {
35898	return s.String()
35899}
35900
35901// Validate inspects the fields of the type to determine if they are valid.
35902func (s *SelectParameters) Validate() error {
35903	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
35904	if s.Expression == nil {
35905		invalidParams.Add(request.NewErrParamRequired("Expression"))
35906	}
35907	if s.ExpressionType == nil {
35908		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
35909	}
35910	if s.InputSerialization == nil {
35911		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
35912	}
35913	if s.OutputSerialization == nil {
35914		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
35915	}
35916
35917	if invalidParams.Len() > 0 {
35918		return invalidParams
35919	}
35920	return nil
35921}
35922
35923// SetExpression sets the Expression field's value.
35924func (s *SelectParameters) SetExpression(v string) *SelectParameters {
35925	s.Expression = &v
35926	return s
35927}
35928
35929// SetExpressionType sets the ExpressionType field's value.
35930func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
35931	s.ExpressionType = &v
35932	return s
35933}
35934
35935// SetInputSerialization sets the InputSerialization field's value.
35936func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
35937	s.InputSerialization = v
35938	return s
35939}
35940
35941// SetOutputSerialization sets the OutputSerialization field's value.
35942func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
35943	s.OutputSerialization = v
35944	return s
35945}
35946
35947// Describes the default server-side encryption to apply to new objects in the
35948// bucket. If a PUT Object request doesn't specify any server-side encryption,
35949// this default encryption will be applied. For more information, see PUT Bucket
35950// encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)
35951// in the Amazon S3 API Reference.
35952type ServerSideEncryptionByDefault struct {
35953	_ struct{} `type:"structure"`
35954
35955	// Amazon Web Services Key Management Service (KMS) customer Amazon Web Services
35956	// KMS key ID to use for the default encryption. This parameter is allowed if
35957	// and only if SSEAlgorithm is set to aws:kms.
35958	//
35959	// You can specify the key ID or the Amazon Resource Name (ARN) of the KMS key.
35960	// However, if you are using encryption with cross-account operations, you must
35961	// use a fully qualified KMS key ARN. For more information, see Using encryption
35962	// for cross-account operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).
35963	//
35964	// For example:
35965	//
35966	//    * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
35967	//
35968	//    * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
35969	//
35970	// Amazon S3 only supports symmetric KMS keys and not asymmetric KMS keys. For
35971	// more information, see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
35972	// in the Amazon Web Services Key Management Service Developer Guide.
35973	//
35974	// KMSMasterKeyID is a sensitive parameter and its value will be
35975	// replaced with "sensitive" in string returned by ServerSideEncryptionByDefault's
35976	// String and GoString methods.
35977	KMSMasterKeyID *string `type:"string" sensitive:"true"`
35978
35979	// Server-side encryption algorithm to use for the default encryption.
35980	//
35981	// SSEAlgorithm is a required field
35982	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
35983}
35984
35985// String returns the string representation.
35986//
35987// API parameter values that are decorated as "sensitive" in the API will not
35988// be included in the string output. The member name will be present, but the
35989// value will be replaced with "sensitive".
35990func (s ServerSideEncryptionByDefault) String() string {
35991	return awsutil.Prettify(s)
35992}
35993
35994// GoString returns the string representation.
35995//
35996// API parameter values that are decorated as "sensitive" in the API will not
35997// be included in the string output. The member name will be present, but the
35998// value will be replaced with "sensitive".
35999func (s ServerSideEncryptionByDefault) GoString() string {
36000	return s.String()
36001}
36002
36003// Validate inspects the fields of the type to determine if they are valid.
36004func (s *ServerSideEncryptionByDefault) Validate() error {
36005	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
36006	if s.SSEAlgorithm == nil {
36007		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
36008	}
36009
36010	if invalidParams.Len() > 0 {
36011		return invalidParams
36012	}
36013	return nil
36014}
36015
36016// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
36017func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
36018	s.KMSMasterKeyID = &v
36019	return s
36020}
36021
36022// SetSSEAlgorithm sets the SSEAlgorithm field's value.
36023func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
36024	s.SSEAlgorithm = &v
36025	return s
36026}
36027
36028// Specifies the default server-side-encryption configuration.
36029type ServerSideEncryptionConfiguration struct {
36030	_ struct{} `type:"structure"`
36031
36032	// Container for information about a particular server-side encryption configuration
36033	// rule.
36034	//
36035	// Rules is a required field
36036	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
36037}
36038
36039// String returns the string representation.
36040//
36041// API parameter values that are decorated as "sensitive" in the API will not
36042// be included in the string output. The member name will be present, but the
36043// value will be replaced with "sensitive".
36044func (s ServerSideEncryptionConfiguration) String() string {
36045	return awsutil.Prettify(s)
36046}
36047
36048// GoString returns the string representation.
36049//
36050// API parameter values that are decorated as "sensitive" in the API will not
36051// be included in the string output. The member name will be present, but the
36052// value will be replaced with "sensitive".
36053func (s ServerSideEncryptionConfiguration) GoString() string {
36054	return s.String()
36055}
36056
36057// Validate inspects the fields of the type to determine if they are valid.
36058func (s *ServerSideEncryptionConfiguration) Validate() error {
36059	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
36060	if s.Rules == nil {
36061		invalidParams.Add(request.NewErrParamRequired("Rules"))
36062	}
36063	if s.Rules != nil {
36064		for i, v := range s.Rules {
36065			if v == nil {
36066				continue
36067			}
36068			if err := v.Validate(); err != nil {
36069				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
36070			}
36071		}
36072	}
36073
36074	if invalidParams.Len() > 0 {
36075		return invalidParams
36076	}
36077	return nil
36078}
36079
36080// SetRules sets the Rules field's value.
36081func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
36082	s.Rules = v
36083	return s
36084}
36085
36086// Specifies the default server-side encryption configuration.
36087type ServerSideEncryptionRule struct {
36088	_ struct{} `type:"structure"`
36089
36090	// Specifies the default server-side encryption to apply to new objects in the
36091	// bucket. If a PUT Object request doesn't specify any server-side encryption,
36092	// this default encryption will be applied.
36093	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
36094
36095	// Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
36096	// encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
36097	// are not affected. Setting the BucketKeyEnabled element to true causes Amazon
36098	// S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.
36099	//
36100	// For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
36101	// in the Amazon S3 User Guide.
36102	BucketKeyEnabled *bool `type:"boolean"`
36103}
36104
36105// String returns the string representation.
36106//
36107// API parameter values that are decorated as "sensitive" in the API will not
36108// be included in the string output. The member name will be present, but the
36109// value will be replaced with "sensitive".
36110func (s ServerSideEncryptionRule) String() string {
36111	return awsutil.Prettify(s)
36112}
36113
36114// GoString returns the string representation.
36115//
36116// API parameter values that are decorated as "sensitive" in the API will not
36117// be included in the string output. The member name will be present, but the
36118// value will be replaced with "sensitive".
36119func (s ServerSideEncryptionRule) GoString() string {
36120	return s.String()
36121}
36122
36123// Validate inspects the fields of the type to determine if they are valid.
36124func (s *ServerSideEncryptionRule) Validate() error {
36125	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
36126	if s.ApplyServerSideEncryptionByDefault != nil {
36127		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
36128			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
36129		}
36130	}
36131
36132	if invalidParams.Len() > 0 {
36133		return invalidParams
36134	}
36135	return nil
36136}
36137
36138// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
36139func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
36140	s.ApplyServerSideEncryptionByDefault = v
36141	return s
36142}
36143
36144// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
36145func (s *ServerSideEncryptionRule) SetBucketKeyEnabled(v bool) *ServerSideEncryptionRule {
36146	s.BucketKeyEnabled = &v
36147	return s
36148}
36149
36150// A container that describes additional filters for identifying the source
36151// objects that you want to replicate. You can choose to enable or disable the
36152// replication of these objects. Currently, Amazon S3 supports only the filter
36153// that you can specify for objects created with server-side encryption using
36154// a customer managed key stored in Amazon Web Services Key Management Service
36155// (SSE-KMS).
36156type SourceSelectionCriteria struct {
36157	_ struct{} `type:"structure"`
36158
36159	// A filter that you can specify for selections for modifications on replicas.
36160	// Amazon S3 doesn't replicate replica modifications by default. In the latest
36161	// version of replication configuration (when Filter is specified), you can
36162	// specify this element and set the status to Enabled to replicate modifications
36163	// on replicas.
36164	//
36165	// If you don't specify the Filter element, Amazon S3 assumes that the replication
36166	// configuration is the earlier version, V1. In the earlier version, this element
36167	// is not allowed
36168	ReplicaModifications *ReplicaModifications `type:"structure"`
36169
36170	// A container for filter information for the selection of Amazon S3 objects
36171	// encrypted with Amazon Web Services KMS. If you include SourceSelectionCriteria
36172	// in the replication configuration, this element is required.
36173	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
36174}
36175
36176// String returns the string representation.
36177//
36178// API parameter values that are decorated as "sensitive" in the API will not
36179// be included in the string output. The member name will be present, but the
36180// value will be replaced with "sensitive".
36181func (s SourceSelectionCriteria) String() string {
36182	return awsutil.Prettify(s)
36183}
36184
36185// GoString returns the string representation.
36186//
36187// API parameter values that are decorated as "sensitive" in the API will not
36188// be included in the string output. The member name will be present, but the
36189// value will be replaced with "sensitive".
36190func (s SourceSelectionCriteria) GoString() string {
36191	return s.String()
36192}
36193
36194// Validate inspects the fields of the type to determine if they are valid.
36195func (s *SourceSelectionCriteria) Validate() error {
36196	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
36197	if s.ReplicaModifications != nil {
36198		if err := s.ReplicaModifications.Validate(); err != nil {
36199			invalidParams.AddNested("ReplicaModifications", err.(request.ErrInvalidParams))
36200		}
36201	}
36202	if s.SseKmsEncryptedObjects != nil {
36203		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
36204			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
36205		}
36206	}
36207
36208	if invalidParams.Len() > 0 {
36209		return invalidParams
36210	}
36211	return nil
36212}
36213
36214// SetReplicaModifications sets the ReplicaModifications field's value.
36215func (s *SourceSelectionCriteria) SetReplicaModifications(v *ReplicaModifications) *SourceSelectionCriteria {
36216	s.ReplicaModifications = v
36217	return s
36218}
36219
36220// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
36221func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
36222	s.SseKmsEncryptedObjects = v
36223	return s
36224}
36225
36226// A container for filter information for the selection of S3 objects encrypted
36227// with Amazon Web Services KMS.
36228type SseKmsEncryptedObjects struct {
36229	_ struct{} `type:"structure"`
36230
36231	// Specifies whether Amazon S3 replicates objects created with server-side encryption
36232	// using an Amazon Web Services KMS key stored in Amazon Web Services Key Management
36233	// Service.
36234	//
36235	// Status is a required field
36236	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
36237}
36238
36239// String returns the string representation.
36240//
36241// API parameter values that are decorated as "sensitive" in the API will not
36242// be included in the string output. The member name will be present, but the
36243// value will be replaced with "sensitive".
36244func (s SseKmsEncryptedObjects) String() string {
36245	return awsutil.Prettify(s)
36246}
36247
36248// GoString returns the string representation.
36249//
36250// API parameter values that are decorated as "sensitive" in the API will not
36251// be included in the string output. The member name will be present, but the
36252// value will be replaced with "sensitive".
36253func (s SseKmsEncryptedObjects) GoString() string {
36254	return s.String()
36255}
36256
36257// Validate inspects the fields of the type to determine if they are valid.
36258func (s *SseKmsEncryptedObjects) Validate() error {
36259	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
36260	if s.Status == nil {
36261		invalidParams.Add(request.NewErrParamRequired("Status"))
36262	}
36263
36264	if invalidParams.Len() > 0 {
36265		return invalidParams
36266	}
36267	return nil
36268}
36269
36270// SetStatus sets the Status field's value.
36271func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
36272	s.Status = &v
36273	return s
36274}
36275
36276// Container for the stats details.
36277type Stats struct {
36278	_ struct{} `type:"structure"`
36279
36280	// The total number of uncompressed object bytes processed.
36281	BytesProcessed *int64 `type:"long"`
36282
36283	// The total number of bytes of records payload data returned.
36284	BytesReturned *int64 `type:"long"`
36285
36286	// The total number of object bytes scanned.
36287	BytesScanned *int64 `type:"long"`
36288}
36289
36290// String returns the string representation.
36291//
36292// API parameter values that are decorated as "sensitive" in the API will not
36293// be included in the string output. The member name will be present, but the
36294// value will be replaced with "sensitive".
36295func (s Stats) String() string {
36296	return awsutil.Prettify(s)
36297}
36298
36299// GoString returns the string representation.
36300//
36301// API parameter values that are decorated as "sensitive" in the API will not
36302// be included in the string output. The member name will be present, but the
36303// value will be replaced with "sensitive".
36304func (s Stats) GoString() string {
36305	return s.String()
36306}
36307
36308// SetBytesProcessed sets the BytesProcessed field's value.
36309func (s *Stats) SetBytesProcessed(v int64) *Stats {
36310	s.BytesProcessed = &v
36311	return s
36312}
36313
36314// SetBytesReturned sets the BytesReturned field's value.
36315func (s *Stats) SetBytesReturned(v int64) *Stats {
36316	s.BytesReturned = &v
36317	return s
36318}
36319
36320// SetBytesScanned sets the BytesScanned field's value.
36321func (s *Stats) SetBytesScanned(v int64) *Stats {
36322	s.BytesScanned = &v
36323	return s
36324}
36325
36326// Container for the Stats Event.
36327type StatsEvent struct {
36328	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
36329
36330	// The Stats event details.
36331	Details *Stats `locationName:"Details" type:"structure"`
36332}
36333
36334// String returns the string representation.
36335//
36336// API parameter values that are decorated as "sensitive" in the API will not
36337// be included in the string output. The member name will be present, but the
36338// value will be replaced with "sensitive".
36339func (s StatsEvent) String() string {
36340	return awsutil.Prettify(s)
36341}
36342
36343// GoString returns the string representation.
36344//
36345// API parameter values that are decorated as "sensitive" in the API will not
36346// be included in the string output. The member name will be present, but the
36347// value will be replaced with "sensitive".
36348func (s StatsEvent) GoString() string {
36349	return s.String()
36350}
36351
36352// SetDetails sets the Details field's value.
36353func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
36354	s.Details = v
36355	return s
36356}
36357
36358// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
36359func (s *StatsEvent) eventSelectObjectContentEventStream() {}
36360
36361// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
36362// This method is only used internally within the SDK's EventStream handling.
36363func (s *StatsEvent) UnmarshalEvent(
36364	payloadUnmarshaler protocol.PayloadUnmarshaler,
36365	msg eventstream.Message,
36366) error {
36367	if err := payloadUnmarshaler.UnmarshalPayload(
36368		bytes.NewReader(msg.Payload), s,
36369	); err != nil {
36370		return err
36371	}
36372	return nil
36373}
36374
36375// MarshalEvent marshals the type into an stream event value. This method
36376// should only used internally within the SDK's EventStream handling.
36377func (s *StatsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
36378	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
36379	var buf bytes.Buffer
36380	if err = pm.MarshalPayload(&buf, s); err != nil {
36381		return eventstream.Message{}, err
36382	}
36383	msg.Payload = buf.Bytes()
36384	return msg, err
36385}
36386
36387// Specifies data related to access patterns to be collected and made available
36388// to analyze the tradeoffs between different storage classes for an Amazon
36389// S3 bucket.
36390type StorageClassAnalysis struct {
36391	_ struct{} `type:"structure"`
36392
36393	// Specifies how data related to the storage class analysis for an Amazon S3
36394	// bucket should be exported.
36395	DataExport *StorageClassAnalysisDataExport `type:"structure"`
36396}
36397
36398// String returns the string representation.
36399//
36400// API parameter values that are decorated as "sensitive" in the API will not
36401// be included in the string output. The member name will be present, but the
36402// value will be replaced with "sensitive".
36403func (s StorageClassAnalysis) String() string {
36404	return awsutil.Prettify(s)
36405}
36406
36407// GoString returns the string representation.
36408//
36409// API parameter values that are decorated as "sensitive" in the API will not
36410// be included in the string output. The member name will be present, but the
36411// value will be replaced with "sensitive".
36412func (s StorageClassAnalysis) GoString() string {
36413	return s.String()
36414}
36415
36416// Validate inspects the fields of the type to determine if they are valid.
36417func (s *StorageClassAnalysis) Validate() error {
36418	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
36419	if s.DataExport != nil {
36420		if err := s.DataExport.Validate(); err != nil {
36421			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
36422		}
36423	}
36424
36425	if invalidParams.Len() > 0 {
36426		return invalidParams
36427	}
36428	return nil
36429}
36430
36431// SetDataExport sets the DataExport field's value.
36432func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
36433	s.DataExport = v
36434	return s
36435}
36436
36437// Container for data related to the storage class analysis for an Amazon S3
36438// bucket for export.
36439type StorageClassAnalysisDataExport struct {
36440	_ struct{} `type:"structure"`
36441
36442	// The place to store the data for an analysis.
36443	//
36444	// Destination is a required field
36445	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
36446
36447	// The version of the output schema to use when exporting data. Must be V_1.
36448	//
36449	// OutputSchemaVersion is a required field
36450	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
36451}
36452
36453// String returns the string representation.
36454//
36455// API parameter values that are decorated as "sensitive" in the API will not
36456// be included in the string output. The member name will be present, but the
36457// value will be replaced with "sensitive".
36458func (s StorageClassAnalysisDataExport) String() string {
36459	return awsutil.Prettify(s)
36460}
36461
36462// GoString returns the string representation.
36463//
36464// API parameter values that are decorated as "sensitive" in the API will not
36465// be included in the string output. The member name will be present, but the
36466// value will be replaced with "sensitive".
36467func (s StorageClassAnalysisDataExport) GoString() string {
36468	return s.String()
36469}
36470
36471// Validate inspects the fields of the type to determine if they are valid.
36472func (s *StorageClassAnalysisDataExport) Validate() error {
36473	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
36474	if s.Destination == nil {
36475		invalidParams.Add(request.NewErrParamRequired("Destination"))
36476	}
36477	if s.OutputSchemaVersion == nil {
36478		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
36479	}
36480	if s.Destination != nil {
36481		if err := s.Destination.Validate(); err != nil {
36482			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
36483		}
36484	}
36485
36486	if invalidParams.Len() > 0 {
36487		return invalidParams
36488	}
36489	return nil
36490}
36491
36492// SetDestination sets the Destination field's value.
36493func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
36494	s.Destination = v
36495	return s
36496}
36497
36498// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
36499func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
36500	s.OutputSchemaVersion = &v
36501	return s
36502}
36503
36504// A container of a key value name pair.
36505type Tag struct {
36506	_ struct{} `type:"structure"`
36507
36508	// Name of the object key.
36509	//
36510	// Key is a required field
36511	Key *string `min:"1" type:"string" required:"true"`
36512
36513	// Value of the tag.
36514	//
36515	// Value is a required field
36516	Value *string `type:"string" required:"true"`
36517}
36518
36519// String returns the string representation.
36520//
36521// API parameter values that are decorated as "sensitive" in the API will not
36522// be included in the string output. The member name will be present, but the
36523// value will be replaced with "sensitive".
36524func (s Tag) String() string {
36525	return awsutil.Prettify(s)
36526}
36527
36528// GoString returns the string representation.
36529//
36530// API parameter values that are decorated as "sensitive" in the API will not
36531// be included in the string output. The member name will be present, but the
36532// value will be replaced with "sensitive".
36533func (s Tag) GoString() string {
36534	return s.String()
36535}
36536
36537// Validate inspects the fields of the type to determine if they are valid.
36538func (s *Tag) Validate() error {
36539	invalidParams := request.ErrInvalidParams{Context: "Tag"}
36540	if s.Key == nil {
36541		invalidParams.Add(request.NewErrParamRequired("Key"))
36542	}
36543	if s.Key != nil && len(*s.Key) < 1 {
36544		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
36545	}
36546	if s.Value == nil {
36547		invalidParams.Add(request.NewErrParamRequired("Value"))
36548	}
36549
36550	if invalidParams.Len() > 0 {
36551		return invalidParams
36552	}
36553	return nil
36554}
36555
36556// SetKey sets the Key field's value.
36557func (s *Tag) SetKey(v string) *Tag {
36558	s.Key = &v
36559	return s
36560}
36561
36562// SetValue sets the Value field's value.
36563func (s *Tag) SetValue(v string) *Tag {
36564	s.Value = &v
36565	return s
36566}
36567
36568// Container for TagSet elements.
36569type Tagging struct {
36570	_ struct{} `type:"structure"`
36571
36572	// A collection for a set of tags
36573	//
36574	// TagSet is a required field
36575	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
36576}
36577
36578// String returns the string representation.
36579//
36580// API parameter values that are decorated as "sensitive" in the API will not
36581// be included in the string output. The member name will be present, but the
36582// value will be replaced with "sensitive".
36583func (s Tagging) String() string {
36584	return awsutil.Prettify(s)
36585}
36586
36587// GoString returns the string representation.
36588//
36589// API parameter values that are decorated as "sensitive" in the API will not
36590// be included in the string output. The member name will be present, but the
36591// value will be replaced with "sensitive".
36592func (s Tagging) GoString() string {
36593	return s.String()
36594}
36595
36596// Validate inspects the fields of the type to determine if they are valid.
36597func (s *Tagging) Validate() error {
36598	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
36599	if s.TagSet == nil {
36600		invalidParams.Add(request.NewErrParamRequired("TagSet"))
36601	}
36602	if s.TagSet != nil {
36603		for i, v := range s.TagSet {
36604			if v == nil {
36605				continue
36606			}
36607			if err := v.Validate(); err != nil {
36608				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
36609			}
36610		}
36611	}
36612
36613	if invalidParams.Len() > 0 {
36614		return invalidParams
36615	}
36616	return nil
36617}
36618
36619// SetTagSet sets the TagSet field's value.
36620func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
36621	s.TagSet = v
36622	return s
36623}
36624
36625// Container for granting information.
36626type TargetGrant struct {
36627	_ struct{} `type:"structure"`
36628
36629	// Container for the person being granted permissions.
36630	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
36631
36632	// Logging permissions assigned to the grantee for the bucket.
36633	Permission *string `type:"string" enum:"BucketLogsPermission"`
36634}
36635
36636// String returns the string representation.
36637//
36638// API parameter values that are decorated as "sensitive" in the API will not
36639// be included in the string output. The member name will be present, but the
36640// value will be replaced with "sensitive".
36641func (s TargetGrant) String() string {
36642	return awsutil.Prettify(s)
36643}
36644
36645// GoString returns the string representation.
36646//
36647// API parameter values that are decorated as "sensitive" in the API will not
36648// be included in the string output. The member name will be present, but the
36649// value will be replaced with "sensitive".
36650func (s TargetGrant) GoString() string {
36651	return s.String()
36652}
36653
36654// Validate inspects the fields of the type to determine if they are valid.
36655func (s *TargetGrant) Validate() error {
36656	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
36657	if s.Grantee != nil {
36658		if err := s.Grantee.Validate(); err != nil {
36659			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
36660		}
36661	}
36662
36663	if invalidParams.Len() > 0 {
36664		return invalidParams
36665	}
36666	return nil
36667}
36668
36669// SetGrantee sets the Grantee field's value.
36670func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
36671	s.Grantee = v
36672	return s
36673}
36674
36675// SetPermission sets the Permission field's value.
36676func (s *TargetGrant) SetPermission(v string) *TargetGrant {
36677	s.Permission = &v
36678	return s
36679}
36680
36681// The S3 Intelligent-Tiering storage class is designed to optimize storage
36682// costs by automatically moving data to the most cost-effective storage access
36683// tier, without additional operational overhead.
36684type Tiering struct {
36685	_ struct{} `type:"structure"`
36686
36687	// S3 Intelligent-Tiering access tier. See Storage class for automatically optimizing
36688	// frequently and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access)
36689	// for a list of access tiers in the S3 Intelligent-Tiering storage class.
36690	//
36691	// AccessTier is a required field
36692	AccessTier *string `type:"string" required:"true" enum:"IntelligentTieringAccessTier"`
36693
36694	// The number of consecutive days of no access after which an object will be
36695	// eligible to be transitioned to the corresponding tier. The minimum number
36696	// of days specified for Archive Access tier must be at least 90 days and Deep
36697	// Archive Access tier must be at least 180 days. The maximum can be up to 2
36698	// years (730 days).
36699	//
36700	// Days is a required field
36701	Days *int64 `type:"integer" required:"true"`
36702}
36703
36704// String returns the string representation.
36705//
36706// API parameter values that are decorated as "sensitive" in the API will not
36707// be included in the string output. The member name will be present, but the
36708// value will be replaced with "sensitive".
36709func (s Tiering) String() string {
36710	return awsutil.Prettify(s)
36711}
36712
36713// GoString returns the string representation.
36714//
36715// API parameter values that are decorated as "sensitive" in the API will not
36716// be included in the string output. The member name will be present, but the
36717// value will be replaced with "sensitive".
36718func (s Tiering) GoString() string {
36719	return s.String()
36720}
36721
36722// Validate inspects the fields of the type to determine if they are valid.
36723func (s *Tiering) Validate() error {
36724	invalidParams := request.ErrInvalidParams{Context: "Tiering"}
36725	if s.AccessTier == nil {
36726		invalidParams.Add(request.NewErrParamRequired("AccessTier"))
36727	}
36728	if s.Days == nil {
36729		invalidParams.Add(request.NewErrParamRequired("Days"))
36730	}
36731
36732	if invalidParams.Len() > 0 {
36733		return invalidParams
36734	}
36735	return nil
36736}
36737
36738// SetAccessTier sets the AccessTier field's value.
36739func (s *Tiering) SetAccessTier(v string) *Tiering {
36740	s.AccessTier = &v
36741	return s
36742}
36743
36744// SetDays sets the Days field's value.
36745func (s *Tiering) SetDays(v int64) *Tiering {
36746	s.Days = &v
36747	return s
36748}
36749
36750// A container for specifying the configuration for publication of messages
36751// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
36752// detects specified events.
36753type TopicConfiguration struct {
36754	_ struct{} `type:"structure"`
36755
36756	// The Amazon S3 bucket event about which to send notifications. For more information,
36757	// see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
36758	// in the Amazon S3 User Guide.
36759	//
36760	// Events is a required field
36761	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
36762
36763	// Specifies object key name filtering rules. For information about key name
36764	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
36765	// in the Amazon S3 User Guide.
36766	Filter *NotificationConfigurationFilter `type:"structure"`
36767
36768	// An optional unique identifier for configurations in a notification configuration.
36769	// If you don't provide one, Amazon S3 will assign an ID.
36770	Id *string `type:"string"`
36771
36772	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
36773	// publishes a message when it detects events of the specified type.
36774	//
36775	// TopicArn is a required field
36776	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
36777}
36778
36779// String returns the string representation.
36780//
36781// API parameter values that are decorated as "sensitive" in the API will not
36782// be included in the string output. The member name will be present, but the
36783// value will be replaced with "sensitive".
36784func (s TopicConfiguration) String() string {
36785	return awsutil.Prettify(s)
36786}
36787
36788// GoString returns the string representation.
36789//
36790// API parameter values that are decorated as "sensitive" in the API will not
36791// be included in the string output. The member name will be present, but the
36792// value will be replaced with "sensitive".
36793func (s TopicConfiguration) GoString() string {
36794	return s.String()
36795}
36796
36797// Validate inspects the fields of the type to determine if they are valid.
36798func (s *TopicConfiguration) Validate() error {
36799	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
36800	if s.Events == nil {
36801		invalidParams.Add(request.NewErrParamRequired("Events"))
36802	}
36803	if s.TopicArn == nil {
36804		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
36805	}
36806
36807	if invalidParams.Len() > 0 {
36808		return invalidParams
36809	}
36810	return nil
36811}
36812
36813// SetEvents sets the Events field's value.
36814func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
36815	s.Events = v
36816	return s
36817}
36818
36819// SetFilter sets the Filter field's value.
36820func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
36821	s.Filter = v
36822	return s
36823}
36824
36825// SetId sets the Id field's value.
36826func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
36827	s.Id = &v
36828	return s
36829}
36830
36831// SetTopicArn sets the TopicArn field's value.
36832func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
36833	s.TopicArn = &v
36834	return s
36835}
36836
36837// A container for specifying the configuration for publication of messages
36838// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
36839// detects specified events. This data type is deprecated. Use TopicConfiguration
36840// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_TopicConfiguration.html)
36841// instead.
36842type TopicConfigurationDeprecated struct {
36843	_ struct{} `type:"structure"`
36844
36845	// Bucket event for which to send notifications.
36846	//
36847	// Deprecated: Event has been deprecated
36848	Event *string `deprecated:"true" type:"string" enum:"Event"`
36849
36850	// A collection of events related to objects
36851	Events []*string `locationName:"Event" type:"list" flattened:"true"`
36852
36853	// An optional unique identifier for configurations in a notification configuration.
36854	// If you don't provide one, Amazon S3 will assign an ID.
36855	Id *string `type:"string"`
36856
36857	// Amazon SNS topic to which Amazon S3 will publish a message to report the
36858	// specified events for the bucket.
36859	Topic *string `type:"string"`
36860}
36861
36862// String 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 TopicConfigurationDeprecated) String() string {
36868	return awsutil.Prettify(s)
36869}
36870
36871// GoString returns the string representation.
36872//
36873// API parameter values that are decorated as "sensitive" in the API will not
36874// be included in the string output. The member name will be present, but the
36875// value will be replaced with "sensitive".
36876func (s TopicConfigurationDeprecated) GoString() string {
36877	return s.String()
36878}
36879
36880// SetEvent sets the Event field's value.
36881func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
36882	s.Event = &v
36883	return s
36884}
36885
36886// SetEvents sets the Events field's value.
36887func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
36888	s.Events = v
36889	return s
36890}
36891
36892// SetId sets the Id field's value.
36893func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
36894	s.Id = &v
36895	return s
36896}
36897
36898// SetTopic sets the Topic field's value.
36899func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
36900	s.Topic = &v
36901	return s
36902}
36903
36904// Specifies when an object transitions to a specified storage class. For more
36905// information about Amazon S3 lifecycle configuration rules, see Transitioning
36906// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
36907// in the Amazon S3 User Guide.
36908type Transition struct {
36909	_ struct{} `type:"structure"`
36910
36911	// Indicates when objects are transitioned to the specified storage class. The
36912	// date value must be in ISO 8601 format. The time is always midnight UTC.
36913	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
36914
36915	// Indicates the number of days after creation when objects are transitioned
36916	// to the specified storage class. The value must be a positive integer.
36917	Days *int64 `type:"integer"`
36918
36919	// The storage class to which you want the object to transition.
36920	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
36921}
36922
36923// String returns the string representation.
36924//
36925// API parameter values that are decorated as "sensitive" in the API will not
36926// be included in the string output. The member name will be present, but the
36927// value will be replaced with "sensitive".
36928func (s Transition) String() string {
36929	return awsutil.Prettify(s)
36930}
36931
36932// GoString returns the string representation.
36933//
36934// API parameter values that are decorated as "sensitive" in the API will not
36935// be included in the string output. The member name will be present, but the
36936// value will be replaced with "sensitive".
36937func (s Transition) GoString() string {
36938	return s.String()
36939}
36940
36941// SetDate sets the Date field's value.
36942func (s *Transition) SetDate(v time.Time) *Transition {
36943	s.Date = &v
36944	return s
36945}
36946
36947// SetDays sets the Days field's value.
36948func (s *Transition) SetDays(v int64) *Transition {
36949	s.Days = &v
36950	return s
36951}
36952
36953// SetStorageClass sets the StorageClass field's value.
36954func (s *Transition) SetStorageClass(v string) *Transition {
36955	s.StorageClass = &v
36956	return s
36957}
36958
36959type UploadPartCopyInput struct {
36960	_ struct{} `locationName:"UploadPartCopyRequest" type:"structure"`
36961
36962	// The bucket name.
36963	//
36964	// When using this action with an access point, you must direct requests to
36965	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
36966	// When using this action with an access point through the Amazon Web Services
36967	// SDKs, you provide the access point ARN in place of the bucket name. For more
36968	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
36969	// in the Amazon S3 User Guide.
36970	//
36971	// When using this action with Amazon S3 on Outposts, you must direct requests
36972	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
36973	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
36974	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
36975	// you provide the Outposts bucket ARN in place of the bucket name. For more
36976	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
36977	// in the Amazon S3 User Guide.
36978	//
36979	// Bucket is a required field
36980	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
36981
36982	// Specifies the source object for the copy operation. You specify the value
36983	// in one of two formats, depending on whether you want to access the source
36984	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
36985	//
36986	//    * For objects not accessed through an access point, specify the name of
36987	//    the source bucket and key of the source object, separated by a slash (/).
36988	//    For example, to copy the object reports/january.pdf from the bucket awsexamplebucket,
36989	//    use awsexamplebucket/reports/january.pdf. The value must be URL encoded.
36990	//
36991	//    * For objects accessed through access points, specify the Amazon Resource
36992	//    Name (ARN) of the object as accessed through the access point, in the
36993	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
36994	//    For example, to copy the object reports/january.pdf through access point
36995	//    my-access-point owned by account 123456789012 in Region us-west-2, use
36996	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
36997	//    The value must be URL encoded. Amazon S3 supports copy operations using
36998	//    access points only when the source and destination buckets are in the
36999	//    same Amazon Web Services Region. Alternatively, for objects accessed through
37000	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
37001	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
37002	//    For example, to copy the object reports/january.pdf through outpost my-outpost
37003	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
37004	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
37005	//    The value must be URL encoded.
37006	//
37007	// To copy a specific version of an object, append ?versionId=<version-id> to
37008	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
37009	// If you don't specify a version ID, Amazon S3 copies the latest version of
37010	// the source object.
37011	//
37012	// CopySource is a required field
37013	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
37014
37015	// Copies the object if its entity tag (ETag) matches the specified tag.
37016	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
37017
37018	// Copies the object if it has been modified since the specified time.
37019	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
37020
37021	// Copies the object if its entity tag (ETag) is different than the specified
37022	// ETag.
37023	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
37024
37025	// Copies the object if it hasn't been modified since the specified time.
37026	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
37027
37028	// The range of bytes to copy from the source object. The range value must use
37029	// the form bytes=first-last, where the first and last are the zero-based byte
37030	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
37031	// first 10 bytes of the source. You can copy a range only if the source object
37032	// is greater than 5 MB.
37033	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
37034
37035	// Specifies the algorithm to use when decrypting the source object (for example,
37036	// AES256).
37037	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
37038
37039	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
37040	// the source object. The encryption key provided in this header must be one
37041	// that was used when the source object was created.
37042	//
37043	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
37044	// replaced with "sensitive" in string returned by UploadPartCopyInput's
37045	// String and GoString methods.
37046	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
37047
37048	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
37049	// Amazon S3 uses this header for a message integrity check to ensure that the
37050	// encryption key was transmitted without error.
37051	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
37052
37053	// The account ID of the expected destination bucket owner. If the destination
37054	// bucket is owned by a different account, the request will fail with an HTTP
37055	// 403 (Access Denied) error.
37056	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
37057
37058	// The account ID of the expected source bucket owner. If the source bucket
37059	// is owned by a different account, the request will fail with an HTTP 403 (Access
37060	// Denied) error.
37061	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
37062
37063	// Object key for which the multipart upload was initiated.
37064	//
37065	// Key is a required field
37066	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
37067
37068	// Part number of part being copied. This is a positive integer between 1 and
37069	// 10,000.
37070	//
37071	// PartNumber is a required field
37072	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
37073
37074	// Confirms that the requester knows that they will be charged for the request.
37075	// Bucket owners need not specify this parameter in their requests. For information
37076	// about downloading objects from requester pays buckets, see Downloading Objects
37077	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
37078	// in the Amazon S3 User Guide.
37079	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
37080
37081	// Specifies the algorithm to use to when encrypting the object (for example,
37082	// AES256).
37083	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37084
37085	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
37086	// data. This value is used to store the object and then it is discarded; Amazon
37087	// S3 does not store the encryption key. The key must be appropriate for use
37088	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
37089	// header. This must be the same encryption key specified in the initiate multipart
37090	// upload request.
37091	//
37092	// SSECustomerKey is a sensitive parameter and its value will be
37093	// replaced with "sensitive" in string returned by UploadPartCopyInput's
37094	// String and GoString methods.
37095	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
37096
37097	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
37098	// Amazon S3 uses this header for a message integrity check to ensure that the
37099	// encryption key was transmitted without error.
37100	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37101
37102	// Upload ID identifying the multipart upload whose part is being copied.
37103	//
37104	// UploadId is a required field
37105	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
37106}
37107
37108// String returns the string representation.
37109//
37110// API parameter values that are decorated as "sensitive" in the API will not
37111// be included in the string output. The member name will be present, but the
37112// value will be replaced with "sensitive".
37113func (s UploadPartCopyInput) String() string {
37114	return awsutil.Prettify(s)
37115}
37116
37117// GoString returns the string representation.
37118//
37119// API parameter values that are decorated as "sensitive" in the API will not
37120// be included in the string output. The member name will be present, but the
37121// value will be replaced with "sensitive".
37122func (s UploadPartCopyInput) GoString() string {
37123	return s.String()
37124}
37125
37126// Validate inspects the fields of the type to determine if they are valid.
37127func (s *UploadPartCopyInput) Validate() error {
37128	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
37129	if s.Bucket == nil {
37130		invalidParams.Add(request.NewErrParamRequired("Bucket"))
37131	}
37132	if s.Bucket != nil && len(*s.Bucket) < 1 {
37133		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
37134	}
37135	if s.CopySource == nil {
37136		invalidParams.Add(request.NewErrParamRequired("CopySource"))
37137	}
37138	if s.Key == nil {
37139		invalidParams.Add(request.NewErrParamRequired("Key"))
37140	}
37141	if s.Key != nil && len(*s.Key) < 1 {
37142		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
37143	}
37144	if s.PartNumber == nil {
37145		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
37146	}
37147	if s.UploadId == nil {
37148		invalidParams.Add(request.NewErrParamRequired("UploadId"))
37149	}
37150
37151	if invalidParams.Len() > 0 {
37152		return invalidParams
37153	}
37154	return nil
37155}
37156
37157// SetBucket sets the Bucket field's value.
37158func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
37159	s.Bucket = &v
37160	return s
37161}
37162
37163func (s *UploadPartCopyInput) getBucket() (v string) {
37164	if s.Bucket == nil {
37165		return v
37166	}
37167	return *s.Bucket
37168}
37169
37170// SetCopySource sets the CopySource field's value.
37171func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
37172	s.CopySource = &v
37173	return s
37174}
37175
37176// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
37177func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
37178	s.CopySourceIfMatch = &v
37179	return s
37180}
37181
37182// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
37183func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
37184	s.CopySourceIfModifiedSince = &v
37185	return s
37186}
37187
37188// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
37189func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
37190	s.CopySourceIfNoneMatch = &v
37191	return s
37192}
37193
37194// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
37195func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
37196	s.CopySourceIfUnmodifiedSince = &v
37197	return s
37198}
37199
37200// SetCopySourceRange sets the CopySourceRange field's value.
37201func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
37202	s.CopySourceRange = &v
37203	return s
37204}
37205
37206// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
37207func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
37208	s.CopySourceSSECustomerAlgorithm = &v
37209	return s
37210}
37211
37212// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
37213func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
37214	s.CopySourceSSECustomerKey = &v
37215	return s
37216}
37217
37218func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
37219	if s.CopySourceSSECustomerKey == nil {
37220		return v
37221	}
37222	return *s.CopySourceSSECustomerKey
37223}
37224
37225// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
37226func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
37227	s.CopySourceSSECustomerKeyMD5 = &v
37228	return s
37229}
37230
37231// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
37232func (s *UploadPartCopyInput) SetExpectedBucketOwner(v string) *UploadPartCopyInput {
37233	s.ExpectedBucketOwner = &v
37234	return s
37235}
37236
37237// SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
37238func (s *UploadPartCopyInput) SetExpectedSourceBucketOwner(v string) *UploadPartCopyInput {
37239	s.ExpectedSourceBucketOwner = &v
37240	return s
37241}
37242
37243// SetKey sets the Key field's value.
37244func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
37245	s.Key = &v
37246	return s
37247}
37248
37249// SetPartNumber sets the PartNumber field's value.
37250func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
37251	s.PartNumber = &v
37252	return s
37253}
37254
37255// SetRequestPayer sets the RequestPayer field's value.
37256func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
37257	s.RequestPayer = &v
37258	return s
37259}
37260
37261// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37262func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
37263	s.SSECustomerAlgorithm = &v
37264	return s
37265}
37266
37267// SetSSECustomerKey sets the SSECustomerKey field's value.
37268func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
37269	s.SSECustomerKey = &v
37270	return s
37271}
37272
37273func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
37274	if s.SSECustomerKey == nil {
37275		return v
37276	}
37277	return *s.SSECustomerKey
37278}
37279
37280// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37281func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
37282	s.SSECustomerKeyMD5 = &v
37283	return s
37284}
37285
37286// SetUploadId sets the UploadId field's value.
37287func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
37288	s.UploadId = &v
37289	return s
37290}
37291
37292func (s *UploadPartCopyInput) getEndpointARN() (arn.Resource, error) {
37293	if s.Bucket == nil {
37294		return nil, fmt.Errorf("member Bucket is nil")
37295	}
37296	return parseEndpointARN(*s.Bucket)
37297}
37298
37299func (s *UploadPartCopyInput) hasEndpointARN() bool {
37300	if s.Bucket == nil {
37301		return false
37302	}
37303	return arn.IsARN(*s.Bucket)
37304}
37305
37306// updateArnableField updates the value of the input field that
37307// takes an ARN as an input. This method is useful to backfill
37308// the parsed resource name from ARN into the input member.
37309// It returns a pointer to a modified copy of input and an error.
37310// Note that original input is not modified.
37311func (s UploadPartCopyInput) updateArnableField(v string) (interface{}, error) {
37312	if s.Bucket == nil {
37313		return nil, fmt.Errorf("member Bucket is nil")
37314	}
37315	s.Bucket = aws.String(v)
37316	return &s, nil
37317}
37318
37319type UploadPartCopyOutput struct {
37320	_ struct{} `type:"structure" payload:"CopyPartResult"`
37321
37322	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
37323	// encryption with Amazon Web Services KMS (SSE-KMS).
37324	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37325
37326	// Container for all response elements.
37327	CopyPartResult *CopyPartResult `type:"structure"`
37328
37329	// The version of the source object that was copied, if you have enabled versioning
37330	// on the source bucket.
37331	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
37332
37333	// If present, indicates that the requester was successfully charged for the
37334	// request.
37335	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
37336
37337	// If server-side encryption with a customer-provided encryption key was requested,
37338	// the response will include this header confirming the encryption algorithm
37339	// used.
37340	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37341
37342	// If server-side encryption with a customer-provided encryption key was requested,
37343	// the response will include this header to provide round-trip message integrity
37344	// verification of the customer-provided encryption key.
37345	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37346
37347	// If present, specifies the ID of the Amazon Web Services Key Management Service
37348	// (Amazon Web Services KMS) symmetric customer managed key that was used for
37349	// the object.
37350	//
37351	// SSEKMSKeyId is a sensitive parameter and its value will be
37352	// replaced with "sensitive" in string returned by UploadPartCopyOutput's
37353	// String and GoString methods.
37354	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
37355
37356	// The server-side encryption algorithm used when storing this object in Amazon
37357	// S3 (for example, AES256, aws:kms).
37358	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
37359}
37360
37361// String returns the string representation.
37362//
37363// API parameter values that are decorated as "sensitive" in the API will not
37364// be included in the string output. The member name will be present, but the
37365// value will be replaced with "sensitive".
37366func (s UploadPartCopyOutput) String() string {
37367	return awsutil.Prettify(s)
37368}
37369
37370// GoString returns the string representation.
37371//
37372// API parameter values that are decorated as "sensitive" in the API will not
37373// be included in the string output. The member name will be present, but the
37374// value will be replaced with "sensitive".
37375func (s UploadPartCopyOutput) GoString() string {
37376	return s.String()
37377}
37378
37379// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
37380func (s *UploadPartCopyOutput) SetBucketKeyEnabled(v bool) *UploadPartCopyOutput {
37381	s.BucketKeyEnabled = &v
37382	return s
37383}
37384
37385// SetCopyPartResult sets the CopyPartResult field's value.
37386func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
37387	s.CopyPartResult = v
37388	return s
37389}
37390
37391// SetCopySourceVersionId sets the CopySourceVersionId field's value.
37392func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
37393	s.CopySourceVersionId = &v
37394	return s
37395}
37396
37397// SetRequestCharged sets the RequestCharged field's value.
37398func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
37399	s.RequestCharged = &v
37400	return s
37401}
37402
37403// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37404func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
37405	s.SSECustomerAlgorithm = &v
37406	return s
37407}
37408
37409// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37410func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
37411	s.SSECustomerKeyMD5 = &v
37412	return s
37413}
37414
37415// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
37416func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
37417	s.SSEKMSKeyId = &v
37418	return s
37419}
37420
37421// SetServerSideEncryption sets the ServerSideEncryption field's value.
37422func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
37423	s.ServerSideEncryption = &v
37424	return s
37425}
37426
37427type UploadPartInput struct {
37428	_ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"`
37429
37430	// Object data.
37431	Body io.ReadSeeker `type:"blob"`
37432
37433	// The name of the bucket to which the multipart upload was initiated.
37434	//
37435	// When using this action with an access point, you must direct requests to
37436	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
37437	// When using this action with an access point through the Amazon Web Services
37438	// SDKs, you provide the access point ARN in place of the bucket name. For more
37439	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
37440	// in the Amazon S3 User Guide.
37441	//
37442	// When using this action with Amazon S3 on Outposts, you must direct requests
37443	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
37444	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
37445	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
37446	// you provide the Outposts bucket ARN in place of the bucket name. For more
37447	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
37448	// in the Amazon S3 User Guide.
37449	//
37450	// Bucket is a required field
37451	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
37452
37453	// Size of the body in bytes. This parameter is useful when the size of the
37454	// body cannot be determined automatically.
37455	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
37456
37457	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
37458	// auto-populated when using the command from the CLI. This parameter is required
37459	// if object lock parameters are specified.
37460	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
37461
37462	// The account ID of the expected bucket owner. If the bucket is owned by a
37463	// different account, the request will fail with an HTTP 403 (Access Denied)
37464	// error.
37465	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
37466
37467	// Object key for which the multipart upload was initiated.
37468	//
37469	// Key is a required field
37470	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
37471
37472	// Part number of part being uploaded. This is a positive integer between 1
37473	// and 10,000.
37474	//
37475	// PartNumber is a required field
37476	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
37477
37478	// Confirms that the requester knows that they will be charged for the request.
37479	// Bucket owners need not specify this parameter in their requests. For information
37480	// about downloading objects from requester pays buckets, see Downloading Objects
37481	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
37482	// in the Amazon S3 User Guide.
37483	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
37484
37485	// Specifies the algorithm to use to when encrypting the object (for example,
37486	// AES256).
37487	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37488
37489	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
37490	// data. This value is used to store the object and then it is discarded; Amazon
37491	// S3 does not store the encryption key. The key must be appropriate for use
37492	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
37493	// header. This must be the same encryption key specified in the initiate multipart
37494	// upload request.
37495	//
37496	// SSECustomerKey is a sensitive parameter and its value will be
37497	// replaced with "sensitive" in string returned by UploadPartInput's
37498	// String and GoString methods.
37499	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
37500
37501	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
37502	// Amazon S3 uses this header for a message integrity check to ensure that the
37503	// encryption key was transmitted without error.
37504	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37505
37506	// Upload ID identifying the multipart upload whose part is being uploaded.
37507	//
37508	// UploadId is a required field
37509	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
37510}
37511
37512// String returns the string representation.
37513//
37514// API parameter values that are decorated as "sensitive" in the API will not
37515// be included in the string output. The member name will be present, but the
37516// value will be replaced with "sensitive".
37517func (s UploadPartInput) String() string {
37518	return awsutil.Prettify(s)
37519}
37520
37521// GoString returns the string representation.
37522//
37523// API parameter values that are decorated as "sensitive" in the API will not
37524// be included in the string output. The member name will be present, but the
37525// value will be replaced with "sensitive".
37526func (s UploadPartInput) GoString() string {
37527	return s.String()
37528}
37529
37530// Validate inspects the fields of the type to determine if they are valid.
37531func (s *UploadPartInput) Validate() error {
37532	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
37533	if s.Bucket == nil {
37534		invalidParams.Add(request.NewErrParamRequired("Bucket"))
37535	}
37536	if s.Bucket != nil && len(*s.Bucket) < 1 {
37537		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
37538	}
37539	if s.Key == nil {
37540		invalidParams.Add(request.NewErrParamRequired("Key"))
37541	}
37542	if s.Key != nil && len(*s.Key) < 1 {
37543		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
37544	}
37545	if s.PartNumber == nil {
37546		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
37547	}
37548	if s.UploadId == nil {
37549		invalidParams.Add(request.NewErrParamRequired("UploadId"))
37550	}
37551
37552	if invalidParams.Len() > 0 {
37553		return invalidParams
37554	}
37555	return nil
37556}
37557
37558// SetBody sets the Body field's value.
37559func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
37560	s.Body = v
37561	return s
37562}
37563
37564// SetBucket sets the Bucket field's value.
37565func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
37566	s.Bucket = &v
37567	return s
37568}
37569
37570func (s *UploadPartInput) getBucket() (v string) {
37571	if s.Bucket == nil {
37572		return v
37573	}
37574	return *s.Bucket
37575}
37576
37577// SetContentLength sets the ContentLength field's value.
37578func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
37579	s.ContentLength = &v
37580	return s
37581}
37582
37583// SetContentMD5 sets the ContentMD5 field's value.
37584func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
37585	s.ContentMD5 = &v
37586	return s
37587}
37588
37589// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
37590func (s *UploadPartInput) SetExpectedBucketOwner(v string) *UploadPartInput {
37591	s.ExpectedBucketOwner = &v
37592	return s
37593}
37594
37595// SetKey sets the Key field's value.
37596func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
37597	s.Key = &v
37598	return s
37599}
37600
37601// SetPartNumber sets the PartNumber field's value.
37602func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
37603	s.PartNumber = &v
37604	return s
37605}
37606
37607// SetRequestPayer sets the RequestPayer field's value.
37608func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
37609	s.RequestPayer = &v
37610	return s
37611}
37612
37613// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37614func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
37615	s.SSECustomerAlgorithm = &v
37616	return s
37617}
37618
37619// SetSSECustomerKey sets the SSECustomerKey field's value.
37620func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
37621	s.SSECustomerKey = &v
37622	return s
37623}
37624
37625func (s *UploadPartInput) getSSECustomerKey() (v string) {
37626	if s.SSECustomerKey == nil {
37627		return v
37628	}
37629	return *s.SSECustomerKey
37630}
37631
37632// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37633func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
37634	s.SSECustomerKeyMD5 = &v
37635	return s
37636}
37637
37638// SetUploadId sets the UploadId field's value.
37639func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
37640	s.UploadId = &v
37641	return s
37642}
37643
37644func (s *UploadPartInput) getEndpointARN() (arn.Resource, error) {
37645	if s.Bucket == nil {
37646		return nil, fmt.Errorf("member Bucket is nil")
37647	}
37648	return parseEndpointARN(*s.Bucket)
37649}
37650
37651func (s *UploadPartInput) hasEndpointARN() bool {
37652	if s.Bucket == nil {
37653		return false
37654	}
37655	return arn.IsARN(*s.Bucket)
37656}
37657
37658// updateArnableField updates the value of the input field that
37659// takes an ARN as an input. This method is useful to backfill
37660// the parsed resource name from ARN into the input member.
37661// It returns a pointer to a modified copy of input and an error.
37662// Note that original input is not modified.
37663func (s UploadPartInput) updateArnableField(v string) (interface{}, error) {
37664	if s.Bucket == nil {
37665		return nil, fmt.Errorf("member Bucket is nil")
37666	}
37667	s.Bucket = aws.String(v)
37668	return &s, nil
37669}
37670
37671type UploadPartOutput struct {
37672	_ struct{} `type:"structure"`
37673
37674	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
37675	// encryption with Amazon Web Services KMS (SSE-KMS).
37676	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37677
37678	// Entity tag for the uploaded object.
37679	ETag *string `location:"header" locationName:"ETag" type:"string"`
37680
37681	// If present, indicates that the requester was successfully charged for the
37682	// request.
37683	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
37684
37685	// If server-side encryption with a customer-provided encryption key was requested,
37686	// the response will include this header confirming the encryption algorithm
37687	// used.
37688	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37689
37690	// If server-side encryption with a customer-provided encryption key was requested,
37691	// the response will include this header to provide round-trip message integrity
37692	// verification of the customer-provided encryption key.
37693	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37694
37695	// If present, specifies the ID of the Amazon Web Services Key Management Service
37696	// (Amazon Web Services KMS) symmetric customer managed key was used for the
37697	// object.
37698	//
37699	// SSEKMSKeyId is a sensitive parameter and its value will be
37700	// replaced with "sensitive" in string returned by UploadPartOutput's
37701	// String and GoString methods.
37702	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
37703
37704	// The server-side encryption algorithm used when storing this object in Amazon
37705	// S3 (for example, AES256, aws:kms).
37706	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
37707}
37708
37709// String returns the string representation.
37710//
37711// API parameter values that are decorated as "sensitive" in the API will not
37712// be included in the string output. The member name will be present, but the
37713// value will be replaced with "sensitive".
37714func (s UploadPartOutput) String() string {
37715	return awsutil.Prettify(s)
37716}
37717
37718// GoString returns the string representation.
37719//
37720// API parameter values that are decorated as "sensitive" in the API will not
37721// be included in the string output. The member name will be present, but the
37722// value will be replaced with "sensitive".
37723func (s UploadPartOutput) GoString() string {
37724	return s.String()
37725}
37726
37727// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
37728func (s *UploadPartOutput) SetBucketKeyEnabled(v bool) *UploadPartOutput {
37729	s.BucketKeyEnabled = &v
37730	return s
37731}
37732
37733// SetETag sets the ETag field's value.
37734func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
37735	s.ETag = &v
37736	return s
37737}
37738
37739// SetRequestCharged sets the RequestCharged field's value.
37740func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
37741	s.RequestCharged = &v
37742	return s
37743}
37744
37745// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37746func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
37747	s.SSECustomerAlgorithm = &v
37748	return s
37749}
37750
37751// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37752func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
37753	s.SSECustomerKeyMD5 = &v
37754	return s
37755}
37756
37757// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
37758func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
37759	s.SSEKMSKeyId = &v
37760	return s
37761}
37762
37763// SetServerSideEncryption sets the ServerSideEncryption field's value.
37764func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
37765	s.ServerSideEncryption = &v
37766	return s
37767}
37768
37769// Describes the versioning state of an Amazon S3 bucket. For more information,
37770// see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html)
37771// in the Amazon S3 API Reference.
37772type VersioningConfiguration struct {
37773	_ struct{} `type:"structure"`
37774
37775	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
37776	// This element is only returned if the bucket has been configured with MFA
37777	// delete. If the bucket has never been so configured, this element is not returned.
37778	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
37779
37780	// The versioning state of the bucket.
37781	Status *string `type:"string" enum:"BucketVersioningStatus"`
37782}
37783
37784// String returns the string representation.
37785//
37786// API parameter values that are decorated as "sensitive" in the API will not
37787// be included in the string output. The member name will be present, but the
37788// value will be replaced with "sensitive".
37789func (s VersioningConfiguration) String() string {
37790	return awsutil.Prettify(s)
37791}
37792
37793// GoString returns the string representation.
37794//
37795// API parameter values that are decorated as "sensitive" in the API will not
37796// be included in the string output. The member name will be present, but the
37797// value will be replaced with "sensitive".
37798func (s VersioningConfiguration) GoString() string {
37799	return s.String()
37800}
37801
37802// SetMFADelete sets the MFADelete field's value.
37803func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
37804	s.MFADelete = &v
37805	return s
37806}
37807
37808// SetStatus sets the Status field's value.
37809func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
37810	s.Status = &v
37811	return s
37812}
37813
37814// Specifies website configuration parameters for an Amazon S3 bucket.
37815type WebsiteConfiguration struct {
37816	_ struct{} `type:"structure"`
37817
37818	// The name of the error document for the website.
37819	ErrorDocument *ErrorDocument `type:"structure"`
37820
37821	// The name of the index document for the website.
37822	IndexDocument *IndexDocument `type:"structure"`
37823
37824	// The redirect behavior for every request to this bucket's website endpoint.
37825	//
37826	// If you specify this property, you can't specify any other property.
37827	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
37828
37829	// Rules that define when a redirect is applied and the redirect behavior.
37830	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
37831}
37832
37833// String returns the string representation.
37834//
37835// API parameter values that are decorated as "sensitive" in the API will not
37836// be included in the string output. The member name will be present, but the
37837// value will be replaced with "sensitive".
37838func (s WebsiteConfiguration) String() string {
37839	return awsutil.Prettify(s)
37840}
37841
37842// GoString returns the string representation.
37843//
37844// API parameter values that are decorated as "sensitive" in the API will not
37845// be included in the string output. The member name will be present, but the
37846// value will be replaced with "sensitive".
37847func (s WebsiteConfiguration) GoString() string {
37848	return s.String()
37849}
37850
37851// Validate inspects the fields of the type to determine if they are valid.
37852func (s *WebsiteConfiguration) Validate() error {
37853	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
37854	if s.ErrorDocument != nil {
37855		if err := s.ErrorDocument.Validate(); err != nil {
37856			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
37857		}
37858	}
37859	if s.IndexDocument != nil {
37860		if err := s.IndexDocument.Validate(); err != nil {
37861			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
37862		}
37863	}
37864	if s.RedirectAllRequestsTo != nil {
37865		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
37866			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
37867		}
37868	}
37869	if s.RoutingRules != nil {
37870		for i, v := range s.RoutingRules {
37871			if v == nil {
37872				continue
37873			}
37874			if err := v.Validate(); err != nil {
37875				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
37876			}
37877		}
37878	}
37879
37880	if invalidParams.Len() > 0 {
37881		return invalidParams
37882	}
37883	return nil
37884}
37885
37886// SetErrorDocument sets the ErrorDocument field's value.
37887func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
37888	s.ErrorDocument = v
37889	return s
37890}
37891
37892// SetIndexDocument sets the IndexDocument field's value.
37893func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
37894	s.IndexDocument = v
37895	return s
37896}
37897
37898// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
37899func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
37900	s.RedirectAllRequestsTo = v
37901	return s
37902}
37903
37904// SetRoutingRules sets the RoutingRules field's value.
37905func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
37906	s.RoutingRules = v
37907	return s
37908}
37909
37910type WriteGetObjectResponseInput struct {
37911	_ struct{} `locationName:"WriteGetObjectResponseRequest" type:"structure" payload:"Body"`
37912
37913	// Indicates that a range of bytes was specified.
37914	AcceptRanges *string `location:"header" locationName:"x-amz-fwd-header-accept-ranges" type:"string"`
37915
37916	// The object data.
37917	//
37918	// To use an non-seekable io.Reader for this request wrap the io.Reader with
37919	// "aws.ReadSeekCloser". The SDK will not retry request errors for non-seekable
37920	// readers. This will allow the SDK to send the reader's payload as chunked
37921	// transfer encoding.
37922	Body io.ReadSeeker `type:"blob"`
37923
37924	// Indicates whether the object stored in Amazon S3 uses an S3 bucket key for
37925	// server-side encryption with Amazon Web Services KMS (SSE-KMS).
37926	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37927
37928	// Specifies caching behavior along the request/reply chain.
37929	CacheControl *string `location:"header" locationName:"x-amz-fwd-header-Cache-Control" type:"string"`
37930
37931	// Specifies presentational information for the object.
37932	ContentDisposition *string `location:"header" locationName:"x-amz-fwd-header-Content-Disposition" type:"string"`
37933
37934	// Specifies what content encodings have been applied to the object and thus
37935	// what decoding mechanisms must be applied to obtain the media-type referenced
37936	// by the Content-Type header field.
37937	ContentEncoding *string `location:"header" locationName:"x-amz-fwd-header-Content-Encoding" type:"string"`
37938
37939	// The language the content is in.
37940	ContentLanguage *string `location:"header" locationName:"x-amz-fwd-header-Content-Language" type:"string"`
37941
37942	// The size of the content body in bytes.
37943	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
37944
37945	// The portion of the object returned in the response.
37946	ContentRange *string `location:"header" locationName:"x-amz-fwd-header-Content-Range" type:"string"`
37947
37948	// A standard MIME type describing the format of the object data.
37949	ContentType *string `location:"header" locationName:"x-amz-fwd-header-Content-Type" type:"string"`
37950
37951	// Specifies whether an object stored in Amazon S3 is (true) or is not (false)
37952	// a delete marker.
37953	DeleteMarker *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-delete-marker" type:"boolean"`
37954
37955	// An opaque identifier assigned by a web server to a specific version of a
37956	// resource found at a URL.
37957	ETag *string `location:"header" locationName:"x-amz-fwd-header-ETag" type:"string"`
37958
37959	// A string that uniquely identifies an error condition. Returned in the <Code>
37960	// tag of the error XML response for a corresponding GetObject call. Cannot
37961	// be used with a successful StatusCode header or when the transformed object
37962	// is provided in the body. All error codes from S3 are sentence-cased. Regex
37963	// value is "^[A-Z][a-zA-Z]+$".
37964	ErrorCode *string `location:"header" locationName:"x-amz-fwd-error-code" type:"string"`
37965
37966	// Contains a generic description of the error condition. Returned in the <Message>
37967	// tag of the error XML response for a corresponding GetObject call. Cannot
37968	// be used with a successful StatusCode header or when the transformed object
37969	// is provided in body.
37970	ErrorMessage *string `location:"header" locationName:"x-amz-fwd-error-message" type:"string"`
37971
37972	// If object stored in Amazon S3 expiration is configured (see PUT Bucket lifecycle)
37973	// it includes expiry-date and rule-id key-value pairs providing object expiration
37974	// information. The value of the rule-id is URL encoded.
37975	Expiration *string `location:"header" locationName:"x-amz-fwd-header-x-amz-expiration" type:"string"`
37976
37977	// The date and time at which the object is no longer cacheable.
37978	Expires *time.Time `location:"header" locationName:"x-amz-fwd-header-Expires" type:"timestamp"`
37979
37980	// The date and time that the object was last modified.
37981	LastModified *time.Time `location:"header" locationName:"x-amz-fwd-header-Last-Modified" type:"timestamp"`
37982
37983	// A map of metadata to store with the object in S3.
37984	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
37985
37986	// Set to the number of metadata entries not returned in x-amz-meta headers.
37987	// This can happen if you create metadata using an API like SOAP that supports
37988	// more flexible metadata than the REST API. For example, using SOAP, you can
37989	// create metadata whose values are not legal HTTP headers.
37990	MissingMeta *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-missing-meta" type:"integer"`
37991
37992	// Indicates whether an object stored in Amazon S3 has an active legal hold.
37993	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
37994
37995	// Indicates whether an object stored in Amazon S3 has Object Lock enabled.
37996	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html).
37997	ObjectLockMode *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
37998
37999	// The date and time when Object Lock is configured to expire.
38000	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
38001
38002	// The count of parts this object has.
38003	PartsCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-mp-parts-count" type:"integer"`
38004
38005	// Indicates if request involves bucket that is either a source or destination
38006	// in a Replication rule. For more information about S3 Replication, see Replication
38007	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html).
38008	ReplicationStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
38009
38010	// If present, indicates that the requester was successfully charged for the
38011	// request.
38012	RequestCharged *string `location:"header" locationName:"x-amz-fwd-header-x-amz-request-charged" type:"string" enum:"RequestCharged"`
38013
38014	// Route prefix to the HTTP URL generated.
38015	//
38016	// RequestRoute is a required field
38017	RequestRoute *string `location:"header" locationName:"x-amz-request-route" type:"string" required:"true"`
38018
38019	// A single use encrypted token that maps WriteGetObjectResponse to the end
38020	// user GetObject request.
38021	//
38022	// RequestToken is a required field
38023	RequestToken *string `location:"header" locationName:"x-amz-request-token" type:"string" required:"true"`
38024
38025	// Provides information about object restoration operation and expiration time
38026	// of the restored object copy.
38027	Restore *string `location:"header" locationName:"x-amz-fwd-header-x-amz-restore" type:"string"`
38028
38029	// Encryption algorithm used if server-side encryption with a customer-provided
38030	// encryption key was specified for object stored in Amazon S3.
38031	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm" type:"string"`
38032
38033	// 128-bit MD5 digest of customer-provided encryption key used in Amazon S3
38034	// to encrypt data stored in S3. For more information, see Protecting data using
38035	// server-side encryption with customer-provided encryption keys (SSE-C) (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html).
38036	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5" type:"string"`
38037
38038	// If present, specifies the ID of the Amazon Web Services Key Management Service
38039	// (Amazon Web Services KMS) symmetric customer managed key that was used for
38040	// stored in Amazon S3 object.
38041	//
38042	// SSEKMSKeyId is a sensitive parameter and its value will be
38043	// replaced with "sensitive" in string returned by WriteGetObjectResponseInput's
38044	// String and GoString methods.
38045	SSEKMSKeyId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
38046
38047	// The server-side encryption algorithm used when storing requested object in
38048	// Amazon S3 (for example, AES256, aws:kms).
38049	ServerSideEncryption *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
38050
38051	// The integer status code for an HTTP response of a corresponding GetObject
38052	// request.
38053	//
38054	// Status Codes
38055	//
38056	//    * 200 - OK
38057	//
38058	//    * 206 - Partial Content
38059	//
38060	//    * 304 - Not Modified
38061	//
38062	//    * 400 - Bad Request
38063	//
38064	//    * 401 - Unauthorized
38065	//
38066	//    * 403 - Forbidden
38067	//
38068	//    * 404 - Not Found
38069	//
38070	//    * 405 - Method Not Allowed
38071	//
38072	//    * 409 - Conflict
38073	//
38074	//    * 411 - Length Required
38075	//
38076	//    * 412 - Precondition Failed
38077	//
38078	//    * 416 - Range Not Satisfiable
38079	//
38080	//    * 500 - Internal Server Error
38081	//
38082	//    * 503 - Service Unavailable
38083	StatusCode *int64 `location:"header" locationName:"x-amz-fwd-status" type:"integer"`
38084
38085	// The class of storage used to store object in Amazon S3.
38086	StorageClass *string `location:"header" locationName:"x-amz-fwd-header-x-amz-storage-class" type:"string" enum:"StorageClass"`
38087
38088	// The number of tags, if any, on the object.
38089	TagCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-tagging-count" type:"integer"`
38090
38091	// An ID used to reference a specific version of the object.
38092	VersionId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-version-id" type:"string"`
38093}
38094
38095// String returns the string representation.
38096//
38097// API parameter values that are decorated as "sensitive" in the API will not
38098// be included in the string output. The member name will be present, but the
38099// value will be replaced with "sensitive".
38100func (s WriteGetObjectResponseInput) String() string {
38101	return awsutil.Prettify(s)
38102}
38103
38104// GoString returns the string representation.
38105//
38106// API parameter values that are decorated as "sensitive" in the API will not
38107// be included in the string output. The member name will be present, but the
38108// value will be replaced with "sensitive".
38109func (s WriteGetObjectResponseInput) GoString() string {
38110	return s.String()
38111}
38112
38113// Validate inspects the fields of the type to determine if they are valid.
38114func (s *WriteGetObjectResponseInput) Validate() error {
38115	invalidParams := request.ErrInvalidParams{Context: "WriteGetObjectResponseInput"}
38116	if s.RequestRoute == nil {
38117		invalidParams.Add(request.NewErrParamRequired("RequestRoute"))
38118	}
38119	if s.RequestRoute != nil && len(*s.RequestRoute) < 1 {
38120		invalidParams.Add(request.NewErrParamMinLen("RequestRoute", 1))
38121	}
38122	if s.RequestToken == nil {
38123		invalidParams.Add(request.NewErrParamRequired("RequestToken"))
38124	}
38125
38126	if invalidParams.Len() > 0 {
38127		return invalidParams
38128	}
38129	return nil
38130}
38131
38132// SetAcceptRanges sets the AcceptRanges field's value.
38133func (s *WriteGetObjectResponseInput) SetAcceptRanges(v string) *WriteGetObjectResponseInput {
38134	s.AcceptRanges = &v
38135	return s
38136}
38137
38138// SetBody sets the Body field's value.
38139func (s *WriteGetObjectResponseInput) SetBody(v io.ReadSeeker) *WriteGetObjectResponseInput {
38140	s.Body = v
38141	return s
38142}
38143
38144// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
38145func (s *WriteGetObjectResponseInput) SetBucketKeyEnabled(v bool) *WriteGetObjectResponseInput {
38146	s.BucketKeyEnabled = &v
38147	return s
38148}
38149
38150// SetCacheControl sets the CacheControl field's value.
38151func (s *WriteGetObjectResponseInput) SetCacheControl(v string) *WriteGetObjectResponseInput {
38152	s.CacheControl = &v
38153	return s
38154}
38155
38156// SetContentDisposition sets the ContentDisposition field's value.
38157func (s *WriteGetObjectResponseInput) SetContentDisposition(v string) *WriteGetObjectResponseInput {
38158	s.ContentDisposition = &v
38159	return s
38160}
38161
38162// SetContentEncoding sets the ContentEncoding field's value.
38163func (s *WriteGetObjectResponseInput) SetContentEncoding(v string) *WriteGetObjectResponseInput {
38164	s.ContentEncoding = &v
38165	return s
38166}
38167
38168// SetContentLanguage sets the ContentLanguage field's value.
38169func (s *WriteGetObjectResponseInput) SetContentLanguage(v string) *WriteGetObjectResponseInput {
38170	s.ContentLanguage = &v
38171	return s
38172}
38173
38174// SetContentLength sets the ContentLength field's value.
38175func (s *WriteGetObjectResponseInput) SetContentLength(v int64) *WriteGetObjectResponseInput {
38176	s.ContentLength = &v
38177	return s
38178}
38179
38180// SetContentRange sets the ContentRange field's value.
38181func (s *WriteGetObjectResponseInput) SetContentRange(v string) *WriteGetObjectResponseInput {
38182	s.ContentRange = &v
38183	return s
38184}
38185
38186// SetContentType sets the ContentType field's value.
38187func (s *WriteGetObjectResponseInput) SetContentType(v string) *WriteGetObjectResponseInput {
38188	s.ContentType = &v
38189	return s
38190}
38191
38192// SetDeleteMarker sets the DeleteMarker field's value.
38193func (s *WriteGetObjectResponseInput) SetDeleteMarker(v bool) *WriteGetObjectResponseInput {
38194	s.DeleteMarker = &v
38195	return s
38196}
38197
38198// SetETag sets the ETag field's value.
38199func (s *WriteGetObjectResponseInput) SetETag(v string) *WriteGetObjectResponseInput {
38200	s.ETag = &v
38201	return s
38202}
38203
38204// SetErrorCode sets the ErrorCode field's value.
38205func (s *WriteGetObjectResponseInput) SetErrorCode(v string) *WriteGetObjectResponseInput {
38206	s.ErrorCode = &v
38207	return s
38208}
38209
38210// SetErrorMessage sets the ErrorMessage field's value.
38211func (s *WriteGetObjectResponseInput) SetErrorMessage(v string) *WriteGetObjectResponseInput {
38212	s.ErrorMessage = &v
38213	return s
38214}
38215
38216// SetExpiration sets the Expiration field's value.
38217func (s *WriteGetObjectResponseInput) SetExpiration(v string) *WriteGetObjectResponseInput {
38218	s.Expiration = &v
38219	return s
38220}
38221
38222// SetExpires sets the Expires field's value.
38223func (s *WriteGetObjectResponseInput) SetExpires(v time.Time) *WriteGetObjectResponseInput {
38224	s.Expires = &v
38225	return s
38226}
38227
38228// SetLastModified sets the LastModified field's value.
38229func (s *WriteGetObjectResponseInput) SetLastModified(v time.Time) *WriteGetObjectResponseInput {
38230	s.LastModified = &v
38231	return s
38232}
38233
38234// SetMetadata sets the Metadata field's value.
38235func (s *WriteGetObjectResponseInput) SetMetadata(v map[string]*string) *WriteGetObjectResponseInput {
38236	s.Metadata = v
38237	return s
38238}
38239
38240// SetMissingMeta sets the MissingMeta field's value.
38241func (s *WriteGetObjectResponseInput) SetMissingMeta(v int64) *WriteGetObjectResponseInput {
38242	s.MissingMeta = &v
38243	return s
38244}
38245
38246// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
38247func (s *WriteGetObjectResponseInput) SetObjectLockLegalHoldStatus(v string) *WriteGetObjectResponseInput {
38248	s.ObjectLockLegalHoldStatus = &v
38249	return s
38250}
38251
38252// SetObjectLockMode sets the ObjectLockMode field's value.
38253func (s *WriteGetObjectResponseInput) SetObjectLockMode(v string) *WriteGetObjectResponseInput {
38254	s.ObjectLockMode = &v
38255	return s
38256}
38257
38258// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
38259func (s *WriteGetObjectResponseInput) SetObjectLockRetainUntilDate(v time.Time) *WriteGetObjectResponseInput {
38260	s.ObjectLockRetainUntilDate = &v
38261	return s
38262}
38263
38264// SetPartsCount sets the PartsCount field's value.
38265func (s *WriteGetObjectResponseInput) SetPartsCount(v int64) *WriteGetObjectResponseInput {
38266	s.PartsCount = &v
38267	return s
38268}
38269
38270// SetReplicationStatus sets the ReplicationStatus field's value.
38271func (s *WriteGetObjectResponseInput) SetReplicationStatus(v string) *WriteGetObjectResponseInput {
38272	s.ReplicationStatus = &v
38273	return s
38274}
38275
38276// SetRequestCharged sets the RequestCharged field's value.
38277func (s *WriteGetObjectResponseInput) SetRequestCharged(v string) *WriteGetObjectResponseInput {
38278	s.RequestCharged = &v
38279	return s
38280}
38281
38282// SetRequestRoute sets the RequestRoute field's value.
38283func (s *WriteGetObjectResponseInput) SetRequestRoute(v string) *WriteGetObjectResponseInput {
38284	s.RequestRoute = &v
38285	return s
38286}
38287
38288// SetRequestToken sets the RequestToken field's value.
38289func (s *WriteGetObjectResponseInput) SetRequestToken(v string) *WriteGetObjectResponseInput {
38290	s.RequestToken = &v
38291	return s
38292}
38293
38294// SetRestore sets the Restore field's value.
38295func (s *WriteGetObjectResponseInput) SetRestore(v string) *WriteGetObjectResponseInput {
38296	s.Restore = &v
38297	return s
38298}
38299
38300// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
38301func (s *WriteGetObjectResponseInput) SetSSECustomerAlgorithm(v string) *WriteGetObjectResponseInput {
38302	s.SSECustomerAlgorithm = &v
38303	return s
38304}
38305
38306// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
38307func (s *WriteGetObjectResponseInput) SetSSECustomerKeyMD5(v string) *WriteGetObjectResponseInput {
38308	s.SSECustomerKeyMD5 = &v
38309	return s
38310}
38311
38312// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
38313func (s *WriteGetObjectResponseInput) SetSSEKMSKeyId(v string) *WriteGetObjectResponseInput {
38314	s.SSEKMSKeyId = &v
38315	return s
38316}
38317
38318// SetServerSideEncryption sets the ServerSideEncryption field's value.
38319func (s *WriteGetObjectResponseInput) SetServerSideEncryption(v string) *WriteGetObjectResponseInput {
38320	s.ServerSideEncryption = &v
38321	return s
38322}
38323
38324// SetStatusCode sets the StatusCode field's value.
38325func (s *WriteGetObjectResponseInput) SetStatusCode(v int64) *WriteGetObjectResponseInput {
38326	s.StatusCode = &v
38327	return s
38328}
38329
38330// SetStorageClass sets the StorageClass field's value.
38331func (s *WriteGetObjectResponseInput) SetStorageClass(v string) *WriteGetObjectResponseInput {
38332	s.StorageClass = &v
38333	return s
38334}
38335
38336// SetTagCount sets the TagCount field's value.
38337func (s *WriteGetObjectResponseInput) SetTagCount(v int64) *WriteGetObjectResponseInput {
38338	s.TagCount = &v
38339	return s
38340}
38341
38342// SetVersionId sets the VersionId field's value.
38343func (s *WriteGetObjectResponseInput) SetVersionId(v string) *WriteGetObjectResponseInput {
38344	s.VersionId = &v
38345	return s
38346}
38347
38348func (s *WriteGetObjectResponseInput) hostLabels() map[string]string {
38349	return map[string]string{
38350		"RequestRoute": aws.StringValue(s.RequestRoute),
38351	}
38352}
38353
38354type WriteGetObjectResponseOutput struct {
38355	_ struct{} `type:"structure"`
38356}
38357
38358// String returns the string representation.
38359//
38360// API parameter values that are decorated as "sensitive" in the API will not
38361// be included in the string output. The member name will be present, but the
38362// value will be replaced with "sensitive".
38363func (s WriteGetObjectResponseOutput) String() string {
38364	return awsutil.Prettify(s)
38365}
38366
38367// GoString returns the string representation.
38368//
38369// API parameter values that are decorated as "sensitive" in the API will not
38370// be included in the string output. The member name will be present, but the
38371// value will be replaced with "sensitive".
38372func (s WriteGetObjectResponseOutput) GoString() string {
38373	return s.String()
38374}
38375
38376const (
38377	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
38378	AnalyticsS3ExportFileFormatCsv = "CSV"
38379)
38380
38381// AnalyticsS3ExportFileFormat_Values returns all elements of the AnalyticsS3ExportFileFormat enum
38382func AnalyticsS3ExportFileFormat_Values() []string {
38383	return []string{
38384		AnalyticsS3ExportFileFormatCsv,
38385	}
38386}
38387
38388const (
38389	// ArchiveStatusArchiveAccess is a ArchiveStatus enum value
38390	ArchiveStatusArchiveAccess = "ARCHIVE_ACCESS"
38391
38392	// ArchiveStatusDeepArchiveAccess is a ArchiveStatus enum value
38393	ArchiveStatusDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
38394)
38395
38396// ArchiveStatus_Values returns all elements of the ArchiveStatus enum
38397func ArchiveStatus_Values() []string {
38398	return []string{
38399		ArchiveStatusArchiveAccess,
38400		ArchiveStatusDeepArchiveAccess,
38401	}
38402}
38403
38404const (
38405	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
38406	BucketAccelerateStatusEnabled = "Enabled"
38407
38408	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
38409	BucketAccelerateStatusSuspended = "Suspended"
38410)
38411
38412// BucketAccelerateStatus_Values returns all elements of the BucketAccelerateStatus enum
38413func BucketAccelerateStatus_Values() []string {
38414	return []string{
38415		BucketAccelerateStatusEnabled,
38416		BucketAccelerateStatusSuspended,
38417	}
38418}
38419
38420const (
38421	// BucketCannedACLPrivate is a BucketCannedACL enum value
38422	BucketCannedACLPrivate = "private"
38423
38424	// BucketCannedACLPublicRead is a BucketCannedACL enum value
38425	BucketCannedACLPublicRead = "public-read"
38426
38427	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
38428	BucketCannedACLPublicReadWrite = "public-read-write"
38429
38430	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
38431	BucketCannedACLAuthenticatedRead = "authenticated-read"
38432)
38433
38434// BucketCannedACL_Values returns all elements of the BucketCannedACL enum
38435func BucketCannedACL_Values() []string {
38436	return []string{
38437		BucketCannedACLPrivate,
38438		BucketCannedACLPublicRead,
38439		BucketCannedACLPublicReadWrite,
38440		BucketCannedACLAuthenticatedRead,
38441	}
38442}
38443
38444const (
38445	// BucketLocationConstraintAfSouth1 is a BucketLocationConstraint enum value
38446	BucketLocationConstraintAfSouth1 = "af-south-1"
38447
38448	// BucketLocationConstraintApEast1 is a BucketLocationConstraint enum value
38449	BucketLocationConstraintApEast1 = "ap-east-1"
38450
38451	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
38452	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
38453
38454	// BucketLocationConstraintApNortheast2 is a BucketLocationConstraint enum value
38455	BucketLocationConstraintApNortheast2 = "ap-northeast-2"
38456
38457	// BucketLocationConstraintApNortheast3 is a BucketLocationConstraint enum value
38458	BucketLocationConstraintApNortheast3 = "ap-northeast-3"
38459
38460	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
38461	BucketLocationConstraintApSouth1 = "ap-south-1"
38462
38463	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
38464	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
38465
38466	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
38467	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
38468
38469	// BucketLocationConstraintCaCentral1 is a BucketLocationConstraint enum value
38470	BucketLocationConstraintCaCentral1 = "ca-central-1"
38471
38472	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
38473	BucketLocationConstraintCnNorth1 = "cn-north-1"
38474
38475	// BucketLocationConstraintCnNorthwest1 is a BucketLocationConstraint enum value
38476	BucketLocationConstraintCnNorthwest1 = "cn-northwest-1"
38477
38478	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
38479	BucketLocationConstraintEu = "EU"
38480
38481	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
38482	BucketLocationConstraintEuCentral1 = "eu-central-1"
38483
38484	// BucketLocationConstraintEuNorth1 is a BucketLocationConstraint enum value
38485	BucketLocationConstraintEuNorth1 = "eu-north-1"
38486
38487	// BucketLocationConstraintEuSouth1 is a BucketLocationConstraint enum value
38488	BucketLocationConstraintEuSouth1 = "eu-south-1"
38489
38490	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
38491	BucketLocationConstraintEuWest1 = "eu-west-1"
38492
38493	// BucketLocationConstraintEuWest2 is a BucketLocationConstraint enum value
38494	BucketLocationConstraintEuWest2 = "eu-west-2"
38495
38496	// BucketLocationConstraintEuWest3 is a BucketLocationConstraint enum value
38497	BucketLocationConstraintEuWest3 = "eu-west-3"
38498
38499	// BucketLocationConstraintMeSouth1 is a BucketLocationConstraint enum value
38500	BucketLocationConstraintMeSouth1 = "me-south-1"
38501
38502	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
38503	BucketLocationConstraintSaEast1 = "sa-east-1"
38504
38505	// BucketLocationConstraintUsEast2 is a BucketLocationConstraint enum value
38506	BucketLocationConstraintUsEast2 = "us-east-2"
38507
38508	// BucketLocationConstraintUsGovEast1 is a BucketLocationConstraint enum value
38509	BucketLocationConstraintUsGovEast1 = "us-gov-east-1"
38510
38511	// BucketLocationConstraintUsGovWest1 is a BucketLocationConstraint enum value
38512	BucketLocationConstraintUsGovWest1 = "us-gov-west-1"
38513
38514	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
38515	BucketLocationConstraintUsWest1 = "us-west-1"
38516
38517	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
38518	BucketLocationConstraintUsWest2 = "us-west-2"
38519)
38520
38521// BucketLocationConstraint_Values returns all elements of the BucketLocationConstraint enum
38522func BucketLocationConstraint_Values() []string {
38523	return []string{
38524		BucketLocationConstraintAfSouth1,
38525		BucketLocationConstraintApEast1,
38526		BucketLocationConstraintApNortheast1,
38527		BucketLocationConstraintApNortheast2,
38528		BucketLocationConstraintApNortheast3,
38529		BucketLocationConstraintApSouth1,
38530		BucketLocationConstraintApSoutheast1,
38531		BucketLocationConstraintApSoutheast2,
38532		BucketLocationConstraintCaCentral1,
38533		BucketLocationConstraintCnNorth1,
38534		BucketLocationConstraintCnNorthwest1,
38535		BucketLocationConstraintEu,
38536		BucketLocationConstraintEuCentral1,
38537		BucketLocationConstraintEuNorth1,
38538		BucketLocationConstraintEuSouth1,
38539		BucketLocationConstraintEuWest1,
38540		BucketLocationConstraintEuWest2,
38541		BucketLocationConstraintEuWest3,
38542		BucketLocationConstraintMeSouth1,
38543		BucketLocationConstraintSaEast1,
38544		BucketLocationConstraintUsEast2,
38545		BucketLocationConstraintUsGovEast1,
38546		BucketLocationConstraintUsGovWest1,
38547		BucketLocationConstraintUsWest1,
38548		BucketLocationConstraintUsWest2,
38549	}
38550}
38551
38552const (
38553	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
38554	BucketLogsPermissionFullControl = "FULL_CONTROL"
38555
38556	// BucketLogsPermissionRead is a BucketLogsPermission enum value
38557	BucketLogsPermissionRead = "READ"
38558
38559	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
38560	BucketLogsPermissionWrite = "WRITE"
38561)
38562
38563// BucketLogsPermission_Values returns all elements of the BucketLogsPermission enum
38564func BucketLogsPermission_Values() []string {
38565	return []string{
38566		BucketLogsPermissionFullControl,
38567		BucketLogsPermissionRead,
38568		BucketLogsPermissionWrite,
38569	}
38570}
38571
38572const (
38573	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
38574	BucketVersioningStatusEnabled = "Enabled"
38575
38576	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
38577	BucketVersioningStatusSuspended = "Suspended"
38578)
38579
38580// BucketVersioningStatus_Values returns all elements of the BucketVersioningStatus enum
38581func BucketVersioningStatus_Values() []string {
38582	return []string{
38583		BucketVersioningStatusEnabled,
38584		BucketVersioningStatusSuspended,
38585	}
38586}
38587
38588const (
38589	// CompressionTypeNone is a CompressionType enum value
38590	CompressionTypeNone = "NONE"
38591
38592	// CompressionTypeGzip is a CompressionType enum value
38593	CompressionTypeGzip = "GZIP"
38594
38595	// CompressionTypeBzip2 is a CompressionType enum value
38596	CompressionTypeBzip2 = "BZIP2"
38597)
38598
38599// CompressionType_Values returns all elements of the CompressionType enum
38600func CompressionType_Values() []string {
38601	return []string{
38602		CompressionTypeNone,
38603		CompressionTypeGzip,
38604		CompressionTypeBzip2,
38605	}
38606}
38607
38608const (
38609	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
38610	DeleteMarkerReplicationStatusEnabled = "Enabled"
38611
38612	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
38613	DeleteMarkerReplicationStatusDisabled = "Disabled"
38614)
38615
38616// DeleteMarkerReplicationStatus_Values returns all elements of the DeleteMarkerReplicationStatus enum
38617func DeleteMarkerReplicationStatus_Values() []string {
38618	return []string{
38619		DeleteMarkerReplicationStatusEnabled,
38620		DeleteMarkerReplicationStatusDisabled,
38621	}
38622}
38623
38624// Requests Amazon S3 to encode the object keys in the response and specifies
38625// the encoding method to use. An object key may contain any Unicode character;
38626// however, XML 1.0 parser cannot parse some characters, such as characters
38627// with an ASCII value from 0 to 10. For characters that are not supported in
38628// XML 1.0, you can add this parameter to request that Amazon S3 encode the
38629// keys in the response.
38630const (
38631	// EncodingTypeUrl is a EncodingType enum value
38632	EncodingTypeUrl = "url"
38633)
38634
38635// EncodingType_Values returns all elements of the EncodingType enum
38636func EncodingType_Values() []string {
38637	return []string{
38638		EncodingTypeUrl,
38639	}
38640}
38641
38642// The bucket event for which to send notifications.
38643const (
38644	// EventS3ReducedRedundancyLostObject is a Event enum value
38645	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
38646
38647	// EventS3ObjectCreated is a Event enum value
38648	EventS3ObjectCreated = "s3:ObjectCreated:*"
38649
38650	// EventS3ObjectCreatedPut is a Event enum value
38651	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
38652
38653	// EventS3ObjectCreatedPost is a Event enum value
38654	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
38655
38656	// EventS3ObjectCreatedCopy is a Event enum value
38657	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
38658
38659	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
38660	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
38661
38662	// EventS3ObjectRemoved is a Event enum value
38663	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
38664
38665	// EventS3ObjectRemovedDelete is a Event enum value
38666	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
38667
38668	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
38669	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
38670
38671	// EventS3ObjectRestore is a Event enum value
38672	EventS3ObjectRestore = "s3:ObjectRestore:*"
38673
38674	// EventS3ObjectRestorePost is a Event enum value
38675	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
38676
38677	// EventS3ObjectRestoreCompleted is a Event enum value
38678	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
38679
38680	// EventS3Replication is a Event enum value
38681	EventS3Replication = "s3:Replication:*"
38682
38683	// EventS3ReplicationOperationFailedReplication is a Event enum value
38684	EventS3ReplicationOperationFailedReplication = "s3:Replication:OperationFailedReplication"
38685
38686	// EventS3ReplicationOperationNotTracked is a Event enum value
38687	EventS3ReplicationOperationNotTracked = "s3:Replication:OperationNotTracked"
38688
38689	// EventS3ReplicationOperationMissedThreshold is a Event enum value
38690	EventS3ReplicationOperationMissedThreshold = "s3:Replication:OperationMissedThreshold"
38691
38692	// EventS3ReplicationOperationReplicatedAfterThreshold is a Event enum value
38693	EventS3ReplicationOperationReplicatedAfterThreshold = "s3:Replication:OperationReplicatedAfterThreshold"
38694)
38695
38696// Event_Values returns all elements of the Event enum
38697func Event_Values() []string {
38698	return []string{
38699		EventS3ReducedRedundancyLostObject,
38700		EventS3ObjectCreated,
38701		EventS3ObjectCreatedPut,
38702		EventS3ObjectCreatedPost,
38703		EventS3ObjectCreatedCopy,
38704		EventS3ObjectCreatedCompleteMultipartUpload,
38705		EventS3ObjectRemoved,
38706		EventS3ObjectRemovedDelete,
38707		EventS3ObjectRemovedDeleteMarkerCreated,
38708		EventS3ObjectRestore,
38709		EventS3ObjectRestorePost,
38710		EventS3ObjectRestoreCompleted,
38711		EventS3Replication,
38712		EventS3ReplicationOperationFailedReplication,
38713		EventS3ReplicationOperationNotTracked,
38714		EventS3ReplicationOperationMissedThreshold,
38715		EventS3ReplicationOperationReplicatedAfterThreshold,
38716	}
38717}
38718
38719const (
38720	// ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value
38721	ExistingObjectReplicationStatusEnabled = "Enabled"
38722
38723	// ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value
38724	ExistingObjectReplicationStatusDisabled = "Disabled"
38725)
38726
38727// ExistingObjectReplicationStatus_Values returns all elements of the ExistingObjectReplicationStatus enum
38728func ExistingObjectReplicationStatus_Values() []string {
38729	return []string{
38730		ExistingObjectReplicationStatusEnabled,
38731		ExistingObjectReplicationStatusDisabled,
38732	}
38733}
38734
38735const (
38736	// ExpirationStatusEnabled is a ExpirationStatus enum value
38737	ExpirationStatusEnabled = "Enabled"
38738
38739	// ExpirationStatusDisabled is a ExpirationStatus enum value
38740	ExpirationStatusDisabled = "Disabled"
38741)
38742
38743// ExpirationStatus_Values returns all elements of the ExpirationStatus enum
38744func ExpirationStatus_Values() []string {
38745	return []string{
38746		ExpirationStatusEnabled,
38747		ExpirationStatusDisabled,
38748	}
38749}
38750
38751const (
38752	// ExpressionTypeSql is a ExpressionType enum value
38753	ExpressionTypeSql = "SQL"
38754)
38755
38756// ExpressionType_Values returns all elements of the ExpressionType enum
38757func ExpressionType_Values() []string {
38758	return []string{
38759		ExpressionTypeSql,
38760	}
38761}
38762
38763const (
38764	// FileHeaderInfoUse is a FileHeaderInfo enum value
38765	FileHeaderInfoUse = "USE"
38766
38767	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
38768	FileHeaderInfoIgnore = "IGNORE"
38769
38770	// FileHeaderInfoNone is a FileHeaderInfo enum value
38771	FileHeaderInfoNone = "NONE"
38772)
38773
38774// FileHeaderInfo_Values returns all elements of the FileHeaderInfo enum
38775func FileHeaderInfo_Values() []string {
38776	return []string{
38777		FileHeaderInfoUse,
38778		FileHeaderInfoIgnore,
38779		FileHeaderInfoNone,
38780	}
38781}
38782
38783const (
38784	// FilterRuleNamePrefix is a FilterRuleName enum value
38785	FilterRuleNamePrefix = "prefix"
38786
38787	// FilterRuleNameSuffix is a FilterRuleName enum value
38788	FilterRuleNameSuffix = "suffix"
38789)
38790
38791// FilterRuleName_Values returns all elements of the FilterRuleName enum
38792func FilterRuleName_Values() []string {
38793	return []string{
38794		FilterRuleNamePrefix,
38795		FilterRuleNameSuffix,
38796	}
38797}
38798
38799const (
38800	// IntelligentTieringAccessTierArchiveAccess is a IntelligentTieringAccessTier enum value
38801	IntelligentTieringAccessTierArchiveAccess = "ARCHIVE_ACCESS"
38802
38803	// IntelligentTieringAccessTierDeepArchiveAccess is a IntelligentTieringAccessTier enum value
38804	IntelligentTieringAccessTierDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
38805)
38806
38807// IntelligentTieringAccessTier_Values returns all elements of the IntelligentTieringAccessTier enum
38808func IntelligentTieringAccessTier_Values() []string {
38809	return []string{
38810		IntelligentTieringAccessTierArchiveAccess,
38811		IntelligentTieringAccessTierDeepArchiveAccess,
38812	}
38813}
38814
38815const (
38816	// IntelligentTieringStatusEnabled is a IntelligentTieringStatus enum value
38817	IntelligentTieringStatusEnabled = "Enabled"
38818
38819	// IntelligentTieringStatusDisabled is a IntelligentTieringStatus enum value
38820	IntelligentTieringStatusDisabled = "Disabled"
38821)
38822
38823// IntelligentTieringStatus_Values returns all elements of the IntelligentTieringStatus enum
38824func IntelligentTieringStatus_Values() []string {
38825	return []string{
38826		IntelligentTieringStatusEnabled,
38827		IntelligentTieringStatusDisabled,
38828	}
38829}
38830
38831const (
38832	// InventoryFormatCsv is a InventoryFormat enum value
38833	InventoryFormatCsv = "CSV"
38834
38835	// InventoryFormatOrc is a InventoryFormat enum value
38836	InventoryFormatOrc = "ORC"
38837
38838	// InventoryFormatParquet is a InventoryFormat enum value
38839	InventoryFormatParquet = "Parquet"
38840)
38841
38842// InventoryFormat_Values returns all elements of the InventoryFormat enum
38843func InventoryFormat_Values() []string {
38844	return []string{
38845		InventoryFormatCsv,
38846		InventoryFormatOrc,
38847		InventoryFormatParquet,
38848	}
38849}
38850
38851const (
38852	// InventoryFrequencyDaily is a InventoryFrequency enum value
38853	InventoryFrequencyDaily = "Daily"
38854
38855	// InventoryFrequencyWeekly is a InventoryFrequency enum value
38856	InventoryFrequencyWeekly = "Weekly"
38857)
38858
38859// InventoryFrequency_Values returns all elements of the InventoryFrequency enum
38860func InventoryFrequency_Values() []string {
38861	return []string{
38862		InventoryFrequencyDaily,
38863		InventoryFrequencyWeekly,
38864	}
38865}
38866
38867const (
38868	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
38869	InventoryIncludedObjectVersionsAll = "All"
38870
38871	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
38872	InventoryIncludedObjectVersionsCurrent = "Current"
38873)
38874
38875// InventoryIncludedObjectVersions_Values returns all elements of the InventoryIncludedObjectVersions enum
38876func InventoryIncludedObjectVersions_Values() []string {
38877	return []string{
38878		InventoryIncludedObjectVersionsAll,
38879		InventoryIncludedObjectVersionsCurrent,
38880	}
38881}
38882
38883const (
38884	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
38885	InventoryOptionalFieldSize = "Size"
38886
38887	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
38888	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
38889
38890	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
38891	InventoryOptionalFieldStorageClass = "StorageClass"
38892
38893	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
38894	InventoryOptionalFieldEtag = "ETag"
38895
38896	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
38897	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
38898
38899	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
38900	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
38901
38902	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
38903	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
38904
38905	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
38906	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
38907
38908	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
38909	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
38910
38911	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
38912	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
38913
38914	// InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value
38915	InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier"
38916
38917	// InventoryOptionalFieldBucketKeyStatus is a InventoryOptionalField enum value
38918	InventoryOptionalFieldBucketKeyStatus = "BucketKeyStatus"
38919)
38920
38921// InventoryOptionalField_Values returns all elements of the InventoryOptionalField enum
38922func InventoryOptionalField_Values() []string {
38923	return []string{
38924		InventoryOptionalFieldSize,
38925		InventoryOptionalFieldLastModifiedDate,
38926		InventoryOptionalFieldStorageClass,
38927		InventoryOptionalFieldEtag,
38928		InventoryOptionalFieldIsMultipartUploaded,
38929		InventoryOptionalFieldReplicationStatus,
38930		InventoryOptionalFieldEncryptionStatus,
38931		InventoryOptionalFieldObjectLockRetainUntilDate,
38932		InventoryOptionalFieldObjectLockMode,
38933		InventoryOptionalFieldObjectLockLegalHoldStatus,
38934		InventoryOptionalFieldIntelligentTieringAccessTier,
38935		InventoryOptionalFieldBucketKeyStatus,
38936	}
38937}
38938
38939const (
38940	// JSONTypeDocument is a JSONType enum value
38941	JSONTypeDocument = "DOCUMENT"
38942
38943	// JSONTypeLines is a JSONType enum value
38944	JSONTypeLines = "LINES"
38945)
38946
38947// JSONType_Values returns all elements of the JSONType enum
38948func JSONType_Values() []string {
38949	return []string{
38950		JSONTypeDocument,
38951		JSONTypeLines,
38952	}
38953}
38954
38955const (
38956	// MFADeleteEnabled is a MFADelete enum value
38957	MFADeleteEnabled = "Enabled"
38958
38959	// MFADeleteDisabled is a MFADelete enum value
38960	MFADeleteDisabled = "Disabled"
38961)
38962
38963// MFADelete_Values returns all elements of the MFADelete enum
38964func MFADelete_Values() []string {
38965	return []string{
38966		MFADeleteEnabled,
38967		MFADeleteDisabled,
38968	}
38969}
38970
38971const (
38972	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
38973	MFADeleteStatusEnabled = "Enabled"
38974
38975	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
38976	MFADeleteStatusDisabled = "Disabled"
38977)
38978
38979// MFADeleteStatus_Values returns all elements of the MFADeleteStatus enum
38980func MFADeleteStatus_Values() []string {
38981	return []string{
38982		MFADeleteStatusEnabled,
38983		MFADeleteStatusDisabled,
38984	}
38985}
38986
38987const (
38988	// MetadataDirectiveCopy is a MetadataDirective enum value
38989	MetadataDirectiveCopy = "COPY"
38990
38991	// MetadataDirectiveReplace is a MetadataDirective enum value
38992	MetadataDirectiveReplace = "REPLACE"
38993)
38994
38995// MetadataDirective_Values returns all elements of the MetadataDirective enum
38996func MetadataDirective_Values() []string {
38997	return []string{
38998		MetadataDirectiveCopy,
38999		MetadataDirectiveReplace,
39000	}
39001}
39002
39003const (
39004	// MetricsStatusEnabled is a MetricsStatus enum value
39005	MetricsStatusEnabled = "Enabled"
39006
39007	// MetricsStatusDisabled is a MetricsStatus enum value
39008	MetricsStatusDisabled = "Disabled"
39009)
39010
39011// MetricsStatus_Values returns all elements of the MetricsStatus enum
39012func MetricsStatus_Values() []string {
39013	return []string{
39014		MetricsStatusEnabled,
39015		MetricsStatusDisabled,
39016	}
39017}
39018
39019const (
39020	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
39021	ObjectCannedACLPrivate = "private"
39022
39023	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
39024	ObjectCannedACLPublicRead = "public-read"
39025
39026	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
39027	ObjectCannedACLPublicReadWrite = "public-read-write"
39028
39029	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
39030	ObjectCannedACLAuthenticatedRead = "authenticated-read"
39031
39032	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
39033	ObjectCannedACLAwsExecRead = "aws-exec-read"
39034
39035	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
39036	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
39037
39038	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
39039	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
39040)
39041
39042// ObjectCannedACL_Values returns all elements of the ObjectCannedACL enum
39043func ObjectCannedACL_Values() []string {
39044	return []string{
39045		ObjectCannedACLPrivate,
39046		ObjectCannedACLPublicRead,
39047		ObjectCannedACLPublicReadWrite,
39048		ObjectCannedACLAuthenticatedRead,
39049		ObjectCannedACLAwsExecRead,
39050		ObjectCannedACLBucketOwnerRead,
39051		ObjectCannedACLBucketOwnerFullControl,
39052	}
39053}
39054
39055const (
39056	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
39057	ObjectLockEnabledEnabled = "Enabled"
39058)
39059
39060// ObjectLockEnabled_Values returns all elements of the ObjectLockEnabled enum
39061func ObjectLockEnabled_Values() []string {
39062	return []string{
39063		ObjectLockEnabledEnabled,
39064	}
39065}
39066
39067const (
39068	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
39069	ObjectLockLegalHoldStatusOn = "ON"
39070
39071	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
39072	ObjectLockLegalHoldStatusOff = "OFF"
39073)
39074
39075// ObjectLockLegalHoldStatus_Values returns all elements of the ObjectLockLegalHoldStatus enum
39076func ObjectLockLegalHoldStatus_Values() []string {
39077	return []string{
39078		ObjectLockLegalHoldStatusOn,
39079		ObjectLockLegalHoldStatusOff,
39080	}
39081}
39082
39083const (
39084	// ObjectLockModeGovernance is a ObjectLockMode enum value
39085	ObjectLockModeGovernance = "GOVERNANCE"
39086
39087	// ObjectLockModeCompliance is a ObjectLockMode enum value
39088	ObjectLockModeCompliance = "COMPLIANCE"
39089)
39090
39091// ObjectLockMode_Values returns all elements of the ObjectLockMode enum
39092func ObjectLockMode_Values() []string {
39093	return []string{
39094		ObjectLockModeGovernance,
39095		ObjectLockModeCompliance,
39096	}
39097}
39098
39099const (
39100	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
39101	ObjectLockRetentionModeGovernance = "GOVERNANCE"
39102
39103	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
39104	ObjectLockRetentionModeCompliance = "COMPLIANCE"
39105)
39106
39107// ObjectLockRetentionMode_Values returns all elements of the ObjectLockRetentionMode enum
39108func ObjectLockRetentionMode_Values() []string {
39109	return []string{
39110		ObjectLockRetentionModeGovernance,
39111		ObjectLockRetentionModeCompliance,
39112	}
39113}
39114
39115// The container element for object ownership for a bucket's ownership controls.
39116//
39117// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
39118// the bucket owner if the objects are uploaded with the bucket-owner-full-control
39119// canned ACL.
39120//
39121// ObjectWriter - The uploading account will own the object if the object is
39122// uploaded with the bucket-owner-full-control canned ACL.
39123const (
39124	// ObjectOwnershipBucketOwnerPreferred is a ObjectOwnership enum value
39125	ObjectOwnershipBucketOwnerPreferred = "BucketOwnerPreferred"
39126
39127	// ObjectOwnershipObjectWriter is a ObjectOwnership enum value
39128	ObjectOwnershipObjectWriter = "ObjectWriter"
39129)
39130
39131// ObjectOwnership_Values returns all elements of the ObjectOwnership enum
39132func ObjectOwnership_Values() []string {
39133	return []string{
39134		ObjectOwnershipBucketOwnerPreferred,
39135		ObjectOwnershipObjectWriter,
39136	}
39137}
39138
39139const (
39140	// ObjectStorageClassStandard is a ObjectStorageClass enum value
39141	ObjectStorageClassStandard = "STANDARD"
39142
39143	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
39144	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
39145
39146	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
39147	ObjectStorageClassGlacier = "GLACIER"
39148
39149	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
39150	ObjectStorageClassStandardIa = "STANDARD_IA"
39151
39152	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
39153	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
39154
39155	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
39156	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39157
39158	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
39159	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
39160
39161	// ObjectStorageClassOutposts is a ObjectStorageClass enum value
39162	ObjectStorageClassOutposts = "OUTPOSTS"
39163)
39164
39165// ObjectStorageClass_Values returns all elements of the ObjectStorageClass enum
39166func ObjectStorageClass_Values() []string {
39167	return []string{
39168		ObjectStorageClassStandard,
39169		ObjectStorageClassReducedRedundancy,
39170		ObjectStorageClassGlacier,
39171		ObjectStorageClassStandardIa,
39172		ObjectStorageClassOnezoneIa,
39173		ObjectStorageClassIntelligentTiering,
39174		ObjectStorageClassDeepArchive,
39175		ObjectStorageClassOutposts,
39176	}
39177}
39178
39179const (
39180	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
39181	ObjectVersionStorageClassStandard = "STANDARD"
39182)
39183
39184// ObjectVersionStorageClass_Values returns all elements of the ObjectVersionStorageClass enum
39185func ObjectVersionStorageClass_Values() []string {
39186	return []string{
39187		ObjectVersionStorageClassStandard,
39188	}
39189}
39190
39191const (
39192	// OwnerOverrideDestination is a OwnerOverride enum value
39193	OwnerOverrideDestination = "Destination"
39194)
39195
39196// OwnerOverride_Values returns all elements of the OwnerOverride enum
39197func OwnerOverride_Values() []string {
39198	return []string{
39199		OwnerOverrideDestination,
39200	}
39201}
39202
39203const (
39204	// PayerRequester is a Payer enum value
39205	PayerRequester = "Requester"
39206
39207	// PayerBucketOwner is a Payer enum value
39208	PayerBucketOwner = "BucketOwner"
39209)
39210
39211// Payer_Values returns all elements of the Payer enum
39212func Payer_Values() []string {
39213	return []string{
39214		PayerRequester,
39215		PayerBucketOwner,
39216	}
39217}
39218
39219const (
39220	// PermissionFullControl is a Permission enum value
39221	PermissionFullControl = "FULL_CONTROL"
39222
39223	// PermissionWrite is a Permission enum value
39224	PermissionWrite = "WRITE"
39225
39226	// PermissionWriteAcp is a Permission enum value
39227	PermissionWriteAcp = "WRITE_ACP"
39228
39229	// PermissionRead is a Permission enum value
39230	PermissionRead = "READ"
39231
39232	// PermissionReadAcp is a Permission enum value
39233	PermissionReadAcp = "READ_ACP"
39234)
39235
39236// Permission_Values returns all elements of the Permission enum
39237func Permission_Values() []string {
39238	return []string{
39239		PermissionFullControl,
39240		PermissionWrite,
39241		PermissionWriteAcp,
39242		PermissionRead,
39243		PermissionReadAcp,
39244	}
39245}
39246
39247const (
39248	// ProtocolHttp is a Protocol enum value
39249	ProtocolHttp = "http"
39250
39251	// ProtocolHttps is a Protocol enum value
39252	ProtocolHttps = "https"
39253)
39254
39255// Protocol_Values returns all elements of the Protocol enum
39256func Protocol_Values() []string {
39257	return []string{
39258		ProtocolHttp,
39259		ProtocolHttps,
39260	}
39261}
39262
39263const (
39264	// QuoteFieldsAlways is a QuoteFields enum value
39265	QuoteFieldsAlways = "ALWAYS"
39266
39267	// QuoteFieldsAsneeded is a QuoteFields enum value
39268	QuoteFieldsAsneeded = "ASNEEDED"
39269)
39270
39271// QuoteFields_Values returns all elements of the QuoteFields enum
39272func QuoteFields_Values() []string {
39273	return []string{
39274		QuoteFieldsAlways,
39275		QuoteFieldsAsneeded,
39276	}
39277}
39278
39279const (
39280	// ReplicaModificationsStatusEnabled is a ReplicaModificationsStatus enum value
39281	ReplicaModificationsStatusEnabled = "Enabled"
39282
39283	// ReplicaModificationsStatusDisabled is a ReplicaModificationsStatus enum value
39284	ReplicaModificationsStatusDisabled = "Disabled"
39285)
39286
39287// ReplicaModificationsStatus_Values returns all elements of the ReplicaModificationsStatus enum
39288func ReplicaModificationsStatus_Values() []string {
39289	return []string{
39290		ReplicaModificationsStatusEnabled,
39291		ReplicaModificationsStatusDisabled,
39292	}
39293}
39294
39295const (
39296	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
39297	ReplicationRuleStatusEnabled = "Enabled"
39298
39299	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
39300	ReplicationRuleStatusDisabled = "Disabled"
39301)
39302
39303// ReplicationRuleStatus_Values returns all elements of the ReplicationRuleStatus enum
39304func ReplicationRuleStatus_Values() []string {
39305	return []string{
39306		ReplicationRuleStatusEnabled,
39307		ReplicationRuleStatusDisabled,
39308	}
39309}
39310
39311const (
39312	// ReplicationStatusComplete is a ReplicationStatus enum value
39313	ReplicationStatusComplete = "COMPLETE"
39314
39315	// ReplicationStatusPending is a ReplicationStatus enum value
39316	ReplicationStatusPending = "PENDING"
39317
39318	// ReplicationStatusFailed is a ReplicationStatus enum value
39319	ReplicationStatusFailed = "FAILED"
39320
39321	// ReplicationStatusReplica is a ReplicationStatus enum value
39322	ReplicationStatusReplica = "REPLICA"
39323)
39324
39325// ReplicationStatus_Values returns all elements of the ReplicationStatus enum
39326func ReplicationStatus_Values() []string {
39327	return []string{
39328		ReplicationStatusComplete,
39329		ReplicationStatusPending,
39330		ReplicationStatusFailed,
39331		ReplicationStatusReplica,
39332	}
39333}
39334
39335const (
39336	// ReplicationTimeStatusEnabled is a ReplicationTimeStatus enum value
39337	ReplicationTimeStatusEnabled = "Enabled"
39338
39339	// ReplicationTimeStatusDisabled is a ReplicationTimeStatus enum value
39340	ReplicationTimeStatusDisabled = "Disabled"
39341)
39342
39343// ReplicationTimeStatus_Values returns all elements of the ReplicationTimeStatus enum
39344func ReplicationTimeStatus_Values() []string {
39345	return []string{
39346		ReplicationTimeStatusEnabled,
39347		ReplicationTimeStatusDisabled,
39348	}
39349}
39350
39351// If present, indicates that the requester was successfully charged for the
39352// request.
39353const (
39354	// RequestChargedRequester is a RequestCharged enum value
39355	RequestChargedRequester = "requester"
39356)
39357
39358// RequestCharged_Values returns all elements of the RequestCharged enum
39359func RequestCharged_Values() []string {
39360	return []string{
39361		RequestChargedRequester,
39362	}
39363}
39364
39365// Confirms that the requester knows that they will be charged for the request.
39366// Bucket owners need not specify this parameter in their requests. For information
39367// about downloading objects from requester pays buckets, see Downloading Objects
39368// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
39369// in the Amazon S3 User Guide.
39370const (
39371	// RequestPayerRequester is a RequestPayer enum value
39372	RequestPayerRequester = "requester"
39373)
39374
39375// RequestPayer_Values returns all elements of the RequestPayer enum
39376func RequestPayer_Values() []string {
39377	return []string{
39378		RequestPayerRequester,
39379	}
39380}
39381
39382const (
39383	// RestoreRequestTypeSelect is a RestoreRequestType enum value
39384	RestoreRequestTypeSelect = "SELECT"
39385)
39386
39387// RestoreRequestType_Values returns all elements of the RestoreRequestType enum
39388func RestoreRequestType_Values() []string {
39389	return []string{
39390		RestoreRequestTypeSelect,
39391	}
39392}
39393
39394const (
39395	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
39396	ServerSideEncryptionAes256 = "AES256"
39397
39398	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
39399	ServerSideEncryptionAwsKms = "aws:kms"
39400)
39401
39402// ServerSideEncryption_Values returns all elements of the ServerSideEncryption enum
39403func ServerSideEncryption_Values() []string {
39404	return []string{
39405		ServerSideEncryptionAes256,
39406		ServerSideEncryptionAwsKms,
39407	}
39408}
39409
39410const (
39411	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
39412	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
39413
39414	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
39415	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
39416)
39417
39418// SseKmsEncryptedObjectsStatus_Values returns all elements of the SseKmsEncryptedObjectsStatus enum
39419func SseKmsEncryptedObjectsStatus_Values() []string {
39420	return []string{
39421		SseKmsEncryptedObjectsStatusEnabled,
39422		SseKmsEncryptedObjectsStatusDisabled,
39423	}
39424}
39425
39426const (
39427	// StorageClassStandard is a StorageClass enum value
39428	StorageClassStandard = "STANDARD"
39429
39430	// StorageClassReducedRedundancy is a StorageClass enum value
39431	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
39432
39433	// StorageClassStandardIa is a StorageClass enum value
39434	StorageClassStandardIa = "STANDARD_IA"
39435
39436	// StorageClassOnezoneIa is a StorageClass enum value
39437	StorageClassOnezoneIa = "ONEZONE_IA"
39438
39439	// StorageClassIntelligentTiering is a StorageClass enum value
39440	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39441
39442	// StorageClassGlacier is a StorageClass enum value
39443	StorageClassGlacier = "GLACIER"
39444
39445	// StorageClassDeepArchive is a StorageClass enum value
39446	StorageClassDeepArchive = "DEEP_ARCHIVE"
39447
39448	// StorageClassOutposts is a StorageClass enum value
39449	StorageClassOutposts = "OUTPOSTS"
39450)
39451
39452// StorageClass_Values returns all elements of the StorageClass enum
39453func StorageClass_Values() []string {
39454	return []string{
39455		StorageClassStandard,
39456		StorageClassReducedRedundancy,
39457		StorageClassStandardIa,
39458		StorageClassOnezoneIa,
39459		StorageClassIntelligentTiering,
39460		StorageClassGlacier,
39461		StorageClassDeepArchive,
39462		StorageClassOutposts,
39463	}
39464}
39465
39466const (
39467	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
39468	StorageClassAnalysisSchemaVersionV1 = "V_1"
39469)
39470
39471// StorageClassAnalysisSchemaVersion_Values returns all elements of the StorageClassAnalysisSchemaVersion enum
39472func StorageClassAnalysisSchemaVersion_Values() []string {
39473	return []string{
39474		StorageClassAnalysisSchemaVersionV1,
39475	}
39476}
39477
39478const (
39479	// TaggingDirectiveCopy is a TaggingDirective enum value
39480	TaggingDirectiveCopy = "COPY"
39481
39482	// TaggingDirectiveReplace is a TaggingDirective enum value
39483	TaggingDirectiveReplace = "REPLACE"
39484)
39485
39486// TaggingDirective_Values returns all elements of the TaggingDirective enum
39487func TaggingDirective_Values() []string {
39488	return []string{
39489		TaggingDirectiveCopy,
39490		TaggingDirectiveReplace,
39491	}
39492}
39493
39494const (
39495	// TierStandard is a Tier enum value
39496	TierStandard = "Standard"
39497
39498	// TierBulk is a Tier enum value
39499	TierBulk = "Bulk"
39500
39501	// TierExpedited is a Tier enum value
39502	TierExpedited = "Expedited"
39503)
39504
39505// Tier_Values returns all elements of the Tier enum
39506func Tier_Values() []string {
39507	return []string{
39508		TierStandard,
39509		TierBulk,
39510		TierExpedited,
39511	}
39512}
39513
39514const (
39515	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
39516	TransitionStorageClassGlacier = "GLACIER"
39517
39518	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
39519	TransitionStorageClassStandardIa = "STANDARD_IA"
39520
39521	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
39522	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
39523
39524	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
39525	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39526
39527	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
39528	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
39529)
39530
39531// TransitionStorageClass_Values returns all elements of the TransitionStorageClass enum
39532func TransitionStorageClass_Values() []string {
39533	return []string{
39534		TransitionStorageClassGlacier,
39535		TransitionStorageClassStandardIa,
39536		TransitionStorageClassOnezoneIa,
39537		TransitionStorageClassIntelligentTiering,
39538		TransitionStorageClassDeepArchive,
39539	}
39540}
39541
39542const (
39543	// TypeCanonicalUser is a Type enum value
39544	TypeCanonicalUser = "CanonicalUser"
39545
39546	// TypeAmazonCustomerByEmail is a Type enum value
39547	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
39548
39549	// TypeGroup is a Type enum value
39550	TypeGroup = "Group"
39551)
39552
39553// Type_Values returns all elements of the Type enum
39554func Type_Values() []string {
39555	return []string{
39556		TypeCanonicalUser,
39557		TypeAmazonCustomerByEmail,
39558		TypeGroup,
39559	}
39560}
39561