github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package s3
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"io"
     9  	"sync"
    10  	"time"
    11  
    12  	"github.com/aavshr/aws-sdk-go/aws"
    13  	"github.com/aavshr/aws-sdk-go/aws/awserr"
    14  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    15  	"github.com/aavshr/aws-sdk-go/aws/client"
    16  	"github.com/aavshr/aws-sdk-go/aws/request"
    17  	"github.com/aavshr/aws-sdk-go/aws/signer/v4"
    18  	"github.com/aavshr/aws-sdk-go/internal/s3shared/arn"
    19  	"github.com/aavshr/aws-sdk-go/private/checksum"
    20  	"github.com/aavshr/aws-sdk-go/private/protocol"
    21  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream"
    22  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
    23  	"github.com/aavshr/aws-sdk-go/private/protocol/rest"
    24  	"github.com/aavshr/aws-sdk-go/private/protocol/restxml"
    25  )
    26  
    27  const 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
    53  func (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
   109  func (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.
   123  func (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  
   130  const 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
   156  func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) (req *request.Request, output *CompleteMultipartUploadOutput) {
   157  	op := &request.Operation{
   158  		Name:       opCompleteMultipartUpload,
   159  		HTTPMethod: "POST",
   160  		HTTPPath:   "/{Bucket}/{Key+}",
   161  	}
   162  
   163  	if input == nil {
   164  		input = &CompleteMultipartUploadInput{}
   165  	}
   166  
   167  	output = &CompleteMultipartUploadOutput{}
   168  	req = c.newRequest(op, input, output)
   169  	return
   170  }
   171  
   172  // CompleteMultipartUpload API operation for Amazon Simple Storage Service.
   173  //
   174  // Completes a multipart upload by assembling previously uploaded parts.
   175  //
   176  // You first initiate the multipart upload and then upload all parts using the
   177  // UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
   178  // operation. After successfully uploading all relevant parts of an upload,
   179  // you call this action to complete the upload. Upon receiving this request,
   180  // Amazon S3 concatenates all the parts in ascending order by part number to
   181  // create a new object. In the Complete Multipart Upload request, you must provide
   182  // the parts list. You must ensure that the parts list is complete. This action
   183  // concatenates the parts that you provide in the list. For each part in the
   184  // list, you must provide the part number and the ETag value, returned after
   185  // that part was uploaded.
   186  //
   187  // Processing of a Complete Multipart Upload request could take several minutes
   188  // to complete. After Amazon S3 begins processing the request, it sends an HTTP
   189  // response header that specifies a 200 OK response. While processing is in
   190  // progress, Amazon S3 periodically sends white space characters to keep the
   191  // connection from timing out. Because a request could fail after the initial
   192  // 200 OK response has been sent, it is important that you check the response
   193  // body to determine whether the request succeeded.
   194  //
   195  // Note that if CompleteMultipartUpload fails, applications should be prepared
   196  // to retry the failed requests. For more information, see Amazon S3 Error Best
   197  // Practices (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html).
   198  //
   199  // For more information about multipart uploads, see Uploading Objects Using
   200  // Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
   201  //
   202  // For information about permissions required to use the multipart upload API,
   203  // see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
   204  //
   205  // CompleteMultipartUpload has the following special errors:
   206  //
   207  //    * Error code: EntityTooSmall Description: Your proposed upload is smaller
   208  //    than the minimum allowed object size. Each part must be at least 5 MB
   209  //    in size, except the last part. 400 Bad Request
   210  //
   211  //    * Error code: InvalidPart Description: One or more of the specified parts
   212  //    could not be found. The part might not have been uploaded, or the specified
   213  //    entity tag might not have matched the part's entity tag. 400 Bad Request
   214  //
   215  //    * Error code: InvalidPartOrder Description: The list of parts was not
   216  //    in ascending order. The parts list must be specified in order by part
   217  //    number. 400 Bad Request
   218  //
   219  //    * Error code: NoSuchUpload Description: The specified multipart upload
   220  //    does not exist. The upload ID might be invalid, or the multipart upload
   221  //    might have been aborted or completed. 404 Not Found
   222  //
   223  // The following operations are related to CompleteMultipartUpload:
   224  //
   225  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
   226  //
   227  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
   228  //
   229  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
   230  //
   231  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
   232  //
   233  //    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
   234  //
   235  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   236  // with awserr.Error's Code and Message methods to get detailed information about
   237  // the error.
   238  //
   239  // See the AWS API reference guide for Amazon Simple Storage Service's
   240  // API operation CompleteMultipartUpload for usage and error information.
   241  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
   242  func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) {
   243  	req, out := c.CompleteMultipartUploadRequest(input)
   244  	return out, req.Send()
   245  }
   246  
   247  // CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of
   248  // the ability to pass a context and additional request options.
   249  //
   250  // See CompleteMultipartUpload for details on how to use this API operation.
   251  //
   252  // The context must be non-nil and will be used for request cancellation. If
   253  // the context is nil a panic will occur. In the future the SDK may create
   254  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   255  // for more information on using Contexts.
   256  func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) {
   257  	req, out := c.CompleteMultipartUploadRequest(input)
   258  	req.SetContext(ctx)
   259  	req.ApplyOptions(opts...)
   260  	return out, req.Send()
   261  }
   262  
   263  const opCopyObject = "CopyObject"
   264  
   265  // CopyObjectRequest generates a "aws/request.Request" representing the
   266  // client's request for the CopyObject operation. The "output" return
   267  // value will be populated with the request's response once the request completes
   268  // successfully.
   269  //
   270  // Use "Send" method on the returned Request to send the API call to the service.
   271  // the "output" return value is not valid until after Send returns without error.
   272  //
   273  // See CopyObject for more information on using the CopyObject
   274  // API call, and error handling.
   275  //
   276  // This method is useful when you want to inject custom logic or configuration
   277  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   278  //
   279  //
   280  //    // Example sending a request using the CopyObjectRequest method.
   281  //    req, resp := client.CopyObjectRequest(params)
   282  //
   283  //    err := req.Send()
   284  //    if err == nil { // resp is now filled
   285  //        fmt.Println(resp)
   286  //    }
   287  //
   288  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
   289  func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) {
   290  	op := &request.Operation{
   291  		Name:       opCopyObject,
   292  		HTTPMethod: "PUT",
   293  		HTTPPath:   "/{Bucket}/{Key+}",
   294  	}
   295  
   296  	if input == nil {
   297  		input = &CopyObjectInput{}
   298  	}
   299  
   300  	output = &CopyObjectOutput{}
   301  	req = c.newRequest(op, input, output)
   302  	return
   303  }
   304  
   305  // CopyObject API operation for Amazon Simple Storage Service.
   306  //
   307  // Creates a copy of an object that is already stored in Amazon S3.
   308  //
   309  // You can store individual objects of up to 5 TB in Amazon S3. You create a
   310  // copy of your object up to 5 GB in size in a single atomic action using this
   311  // API. However, to copy an object greater than 5 GB, you must use the multipart
   312  // upload Upload Part - Copy API. For more information, see Copy Object Using
   313  // the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
   314  //
   315  // All copy requests must be authenticated. Additionally, you must have read
   316  // access to the source object and write access to the destination bucket. For
   317  // more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
   318  // Both the Region that you want to copy the object from and the Region that
   319  // you want to copy the object to must be enabled for your account.
   320  //
   321  // A copy request might return an error when Amazon S3 receives the copy request
   322  // or while Amazon S3 is copying the files. If the error occurs before the copy
   323  // action starts, you receive a standard Amazon S3 error. If the error occurs
   324  // during the copy operation, the error response is embedded in the 200 OK response.
   325  // This means that a 200 OK response can contain either a success or an error.
   326  // Design your application to parse the contents of the response and handle
   327  // it appropriately.
   328  //
   329  // If the copy is successful, you receive a response with information about
   330  // the copied object.
   331  //
   332  // If the request is an HTTP 1.1 request, the response is chunk encoded. If
   333  // it were not, it would not contain the content-length, and you would need
   334  // to read the entire body.
   335  //
   336  // The copy request charge is based on the storage class and Region that you
   337  // specify for the destination object. For pricing information, see Amazon S3
   338  // pricing (http://aws.amazon.com/s3/pricing/).
   339  //
   340  // Amazon S3 transfer acceleration does not support cross-Region copies. If
   341  // you request a cross-Region copy using a transfer acceleration endpoint, you
   342  // get a 400 Bad Request error. For more information, see Transfer Acceleration
   343  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
   344  //
   345  // Metadata
   346  //
   347  // When copying an object, you can preserve all metadata (default) or specify
   348  // new metadata. However, the ACL is not preserved and is set to private for
   349  // the user making the request. To override the default ACL setting, specify
   350  // a new ACL when generating a copy request. For more information, see Using
   351  // ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
   352  //
   353  // To specify whether you want the object metadata copied from the source object
   354  // or replaced with metadata provided in the request, you can optionally add
   355  // the x-amz-metadata-directive header. When you grant permissions, you can
   356  // use the s3:x-amz-metadata-directive condition key to enforce certain metadata
   357  // behavior when objects are uploaded. For more information, see Specifying
   358  // Conditions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html)
   359  // in the Amazon S3 User Guide. For a complete list of Amazon S3-specific condition
   360  // keys, see Actions, Resources, and Condition Keys for Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
   361  //
   362  //  x-amz-copy-source-if Headers
   363  //
   364  // To only copy an object under certain conditions, such as whether the Etag
   365  // matches or whether the object was modified before or after a specified date,
   366  // use the following request parameters:
   367  //
   368  //    * x-amz-copy-source-if-match
   369  //
   370  //    * x-amz-copy-source-if-none-match
   371  //
   372  //    * x-amz-copy-source-if-unmodified-since
   373  //
   374  //    * x-amz-copy-source-if-modified-since
   375  //
   376  // If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
   377  // headers are present in the request and evaluate as follows, Amazon S3 returns
   378  // 200 OK and copies the data:
   379  //
   380  //    * x-amz-copy-source-if-match condition evaluates to true
   381  //
   382  //    * x-amz-copy-source-if-unmodified-since condition evaluates to false
   383  //
   384  // If both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
   385  // headers are present in the request and evaluate as follows, Amazon S3 returns
   386  // the 412 Precondition Failed response code:
   387  //
   388  //    * x-amz-copy-source-if-none-match condition evaluates to false
   389  //
   390  //    * x-amz-copy-source-if-modified-since condition evaluates to true
   391  //
   392  // All headers with the x-amz- prefix, including x-amz-copy-source, must be
   393  // signed.
   394  //
   395  // Server-side encryption
   396  //
   397  // When you perform a CopyObject operation, you can optionally use the appropriate
   398  // encryption-related headers to encrypt the object using server-side encryption
   399  // with Amazon Web Services managed encryption keys (SSE-S3 or SSE-KMS) or a
   400  // customer-provided encryption key. With server-side encryption, Amazon S3
   401  // encrypts your data as it writes it to disks in its data centers and decrypts
   402  // the data when you access it. For more information about server-side encryption,
   403  // see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
   404  //
   405  // If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the
   406  // object. For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
   407  // in the Amazon S3 User Guide.
   408  //
   409  // Access Control List (ACL)-Specific Request Headers
   410  //
   411  // When copying an object, you can optionally use headers to grant ACL-based
   412  // permissions. By default, all objects are private. Only the owner has full
   413  // access control. When adding a new object, you can grant permissions to individual
   414  // Amazon Web Services accounts or to predefined groups defined by Amazon S3.
   415  // These permissions are then added to the ACL on the object. For more information,
   416  // see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
   417  // and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
   418  //
   419  // Storage Class Options
   420  //
   421  // You can use the CopyObject action to change the storage class of an object
   422  // that is already stored in Amazon S3 using the StorageClass parameter. For
   423  // more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
   424  // in the Amazon S3 User Guide.
   425  //
   426  // Versioning
   427  //
   428  // By default, x-amz-copy-source identifies the current version of an object
   429  // to copy. If the current version is a delete marker, Amazon S3 behaves as
   430  // if the object was deleted. To copy a different version, use the versionId
   431  // subresource.
   432  //
   433  // If you enable versioning on the target bucket, Amazon S3 generates a unique
   434  // version ID for the object being copied. This version ID is different from
   435  // the version ID of the source object. Amazon S3 returns the version ID of
   436  // the copied object in the x-amz-version-id response header in the response.
   437  //
   438  // If you do not enable versioning or suspend it on the target bucket, the version
   439  // ID that Amazon S3 generates is always null.
   440  //
   441  // If the source object's storage class is GLACIER, you must restore a copy
   442  // of this object before you can use it as a source object for the copy operation.
   443  // For more information, see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
   444  //
   445  // The following operations are related to CopyObject:
   446  //
   447  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
   448  //
   449  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
   450  //
   451  // For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
   452  //
   453  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   454  // with awserr.Error's Code and Message methods to get detailed information about
   455  // the error.
   456  //
   457  // See the AWS API reference guide for Amazon Simple Storage Service's
   458  // API operation CopyObject for usage and error information.
   459  //
   460  // Returned Error Codes:
   461  //   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
   462  //   The source object of the COPY action is not in the active tier and is only
   463  //   stored in Amazon S3 Glacier.
   464  //
   465  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
   466  func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
   467  	req, out := c.CopyObjectRequest(input)
   468  	return out, req.Send()
   469  }
   470  
   471  // CopyObjectWithContext is the same as CopyObject with the addition of
   472  // the ability to pass a context and additional request options.
   473  //
   474  // See CopyObject for details on how to use this API operation.
   475  //
   476  // The context must be non-nil and will be used for request cancellation. If
   477  // the context is nil a panic will occur. In the future the SDK may create
   478  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   479  // for more information on using Contexts.
   480  func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
   481  	req, out := c.CopyObjectRequest(input)
   482  	req.SetContext(ctx)
   483  	req.ApplyOptions(opts...)
   484  	return out, req.Send()
   485  }
   486  
   487  const opCreateBucket = "CreateBucket"
   488  
   489  // CreateBucketRequest generates a "aws/request.Request" representing the
   490  // client's request for the CreateBucket operation. The "output" return
   491  // value will be populated with the request's response once the request completes
   492  // successfully.
   493  //
   494  // Use "Send" method on the returned Request to send the API call to the service.
   495  // the "output" return value is not valid until after Send returns without error.
   496  //
   497  // See CreateBucket for more information on using the CreateBucket
   498  // API call, and error handling.
   499  //
   500  // This method is useful when you want to inject custom logic or configuration
   501  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   502  //
   503  //
   504  //    // Example sending a request using the CreateBucketRequest method.
   505  //    req, resp := client.CreateBucketRequest(params)
   506  //
   507  //    err := req.Send()
   508  //    if err == nil { // resp is now filled
   509  //        fmt.Println(resp)
   510  //    }
   511  //
   512  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
   513  func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
   514  	op := &request.Operation{
   515  		Name:       opCreateBucket,
   516  		HTTPMethod: "PUT",
   517  		HTTPPath:   "/{Bucket}",
   518  	}
   519  
   520  	if input == nil {
   521  		input = &CreateBucketInput{}
   522  	}
   523  
   524  	output = &CreateBucketOutput{}
   525  	req = c.newRequest(op, input, output)
   526  	return
   527  }
   528  
   529  // CreateBucket API operation for Amazon Simple Storage Service.
   530  //
   531  // Creates a new S3 bucket. To create a bucket, you must register with Amazon
   532  // S3 and have a valid Amazon Web Services Access Key ID to authenticate requests.
   533  // Anonymous requests are never allowed to create buckets. By creating the bucket,
   534  // you become the bucket owner.
   535  //
   536  // Not every string is an acceptable bucket name. For information about bucket
   537  // naming restrictions, see Bucket naming rules (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
   538  //
   539  // If you want to create an Amazon S3 on Outposts bucket, see Create Bucket
   540  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html).
   541  //
   542  // By default, the bucket is created in the US East (N. Virginia) Region. You
   543  // can optionally specify a Region in the request body. You might choose a Region
   544  // to optimize latency, minimize costs, or address regulatory requirements.
   545  // For example, if you reside in Europe, you will probably find it advantageous
   546  // to create buckets in the Europe (Ireland) Region. For more information, see
   547  // Accessing a bucket (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
   548  //
   549  // If you send your create bucket request to the s3.amazonaws.com endpoint,
   550  // the request goes to the us-east-1 Region. Accordingly, the signature calculations
   551  // in Signature Version 4 must use us-east-1 as the Region, even if the location
   552  // constraint in the request specifies another Region where the bucket is to
   553  // be created. If you create a bucket in a Region other than US East (N. Virginia),
   554  // your application must be able to handle 307 redirect. For more information,
   555  // see Virtual hosting of buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).
   556  //
   557  // When creating a bucket using this operation, you can optionally specify the
   558  // accounts or groups that should be granted specific permissions on the bucket.
   559  // There are two ways to grant the appropriate permissions using the request
   560  // headers.
   561  //
   562  //    * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports
   563  //    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
   564  //    predefined set of grantees and permissions. For more information, see
   565  //    Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
   566  //
   567  //    * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write,
   568  //    x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
   569  //    headers. These headers map to the set of permissions Amazon S3 supports
   570  //    in an ACL. For more information, see Access control list (ACL) overview
   571  //    (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You
   572  //    specify each grantee as a type=value pair, where the type is one of the
   573  //    following: id – if the value specified is the canonical user ID of an
   574  //    Amazon Web Services account uri – if you are granting permissions to
   575  //    a predefined group emailAddress – if the value specified is the email
   576  //    address of an Amazon Web Services account Using email addresses to specify
   577  //    a grantee is only supported in the following Amazon Web Services Regions:
   578  //    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
   579  //    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
   580  //    South America (São Paulo) For a list of all the Amazon S3 supported Regions
   581  //    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
   582  //    in the Amazon Web Services General Reference. For example, the following
   583  //    x-amz-grant-read header grants the Amazon Web Services accounts identified
   584  //    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
   585  //    id="11112222333", id="444455556666"
   586  //
   587  // You can use either a canned ACL or specify access permissions explicitly.
   588  // You cannot do both.
   589  //
   590  // Permissions
   591  //
   592  // If your CreateBucket request specifies ACL permissions and the ACL is public-read,
   593  // public-read-write, authenticated-read, or if you specify access permissions
   594  // explicitly through any other ACL, both s3:CreateBucket and s3:PutBucketAcl
   595  // permissions are needed. If the ACL the CreateBucket request is private, only
   596  // s3:CreateBucket permission is needed.
   597  //
   598  // If ObjectLockEnabledForBucket is set to true in your CreateBucket request,
   599  // s3:PutBucketObjectLockConfiguration and s3:PutBucketVersioning permissions
   600  // are required.
   601  //
   602  // The following operations are related to CreateBucket:
   603  //
   604  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
   605  //
   606  //    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
   607  //
   608  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   609  // with awserr.Error's Code and Message methods to get detailed information about
   610  // the error.
   611  //
   612  // See the AWS API reference guide for Amazon Simple Storage Service's
   613  // API operation CreateBucket for usage and error information.
   614  //
   615  // Returned Error Codes:
   616  //   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
   617  //   The requested bucket name is not available. The bucket namespace is shared
   618  //   by all users of the system. Select a different name and try again.
   619  //
   620  //   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
   621  //   The bucket you tried to create already exists, and you own it. Amazon S3
   622  //   returns this error in all Amazon Web Services Regions except in the North
   623  //   Virginia Region. For legacy compatibility, if you re-create an existing bucket
   624  //   that you already own in the North Virginia Region, Amazon S3 returns 200
   625  //   OK and resets the bucket access control lists (ACLs).
   626  //
   627  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
   628  func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
   629  	req, out := c.CreateBucketRequest(input)
   630  	return out, req.Send()
   631  }
   632  
   633  // CreateBucketWithContext is the same as CreateBucket with the addition of
   634  // the ability to pass a context and additional request options.
   635  //
   636  // See CreateBucket for details on how to use this API operation.
   637  //
   638  // The context must be non-nil and will be used for request cancellation. If
   639  // the context is nil a panic will occur. In the future the SDK may create
   640  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   641  // for more information on using Contexts.
   642  func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
   643  	req, out := c.CreateBucketRequest(input)
   644  	req.SetContext(ctx)
   645  	req.ApplyOptions(opts...)
   646  	return out, req.Send()
   647  }
   648  
   649  const opCreateMultipartUpload = "CreateMultipartUpload"
   650  
   651  // CreateMultipartUploadRequest generates a "aws/request.Request" representing the
   652  // client's request for the CreateMultipartUpload operation. The "output" return
   653  // value will be populated with the request's response once the request completes
   654  // successfully.
   655  //
   656  // Use "Send" method on the returned Request to send the API call to the service.
   657  // the "output" return value is not valid until after Send returns without error.
   658  //
   659  // See CreateMultipartUpload for more information on using the CreateMultipartUpload
   660  // API call, and error handling.
   661  //
   662  // This method is useful when you want to inject custom logic or configuration
   663  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   664  //
   665  //
   666  //    // Example sending a request using the CreateMultipartUploadRequest method.
   667  //    req, resp := client.CreateMultipartUploadRequest(params)
   668  //
   669  //    err := req.Send()
   670  //    if err == nil { // resp is now filled
   671  //        fmt.Println(resp)
   672  //    }
   673  //
   674  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
   675  func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
   676  	op := &request.Operation{
   677  		Name:       opCreateMultipartUpload,
   678  		HTTPMethod: "POST",
   679  		HTTPPath:   "/{Bucket}/{Key+}?uploads",
   680  	}
   681  
   682  	if input == nil {
   683  		input = &CreateMultipartUploadInput{}
   684  	}
   685  
   686  	output = &CreateMultipartUploadOutput{}
   687  	req = c.newRequest(op, input, output)
   688  	return
   689  }
   690  
   691  // CreateMultipartUpload API operation for Amazon Simple Storage Service.
   692  //
   693  // This action initiates a multipart upload and returns an upload ID. This upload
   694  // ID is used to associate all of the parts in the specific multipart upload.
   695  // You specify this upload ID in each of your subsequent upload part requests
   696  // (see UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)).
   697  // You also include this upload ID in the final request to either complete or
   698  // abort the multipart upload request.
   699  //
   700  // For more information about multipart uploads, see Multipart Upload Overview
   701  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html).
   702  //
   703  // If you have configured a lifecycle rule to abort incomplete multipart uploads,
   704  // the upload must complete within the number of days specified in the bucket
   705  // lifecycle configuration. Otherwise, the incomplete multipart upload becomes
   706  // eligible for an abort action and Amazon S3 aborts the multipart upload. For
   707  // more information, see Aborting Incomplete Multipart Uploads Using a Bucket
   708  // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
   709  //
   710  // For information about the permissions required to use the multipart upload
   711  // API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
   712  //
   713  // For request signing, multipart upload is just a series of regular requests.
   714  // You initiate a multipart upload, send one or more requests to upload parts,
   715  // and then complete the multipart upload process. You sign each request individually.
   716  // There is nothing special about signing multipart upload requests. For more
   717  // information about signing, see Authenticating Requests (Amazon Web Services
   718  // Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
   719  //
   720  // After you initiate a multipart upload and upload one or more parts, to stop
   721  // being charged for storing the uploaded parts, you must either complete or
   722  // abort the multipart upload. Amazon S3 frees up the space used to store the
   723  // parts and stop charging you for storing them only after you either complete
   724  // or abort a multipart upload.
   725  //
   726  // You can optionally request server-side encryption. For server-side encryption,
   727  // Amazon S3 encrypts your data as it writes it to disks in its data centers
   728  // and decrypts it when you access it. You can provide your own encryption key,
   729  // or use Amazon Web Services KMS keys or Amazon S3-managed encryption keys.
   730  // If you choose to provide your own encryption key, the request headers you
   731  // provide in UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
   732  // and UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
   733  // requests must match the headers you used in the request to initiate the upload
   734  // by using CreateMultipartUpload.
   735  //
   736  // To perform a multipart upload with encryption using an Amazon Web Services
   737  // KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey*
   738  // actions on the key. These permissions are required because Amazon S3 must
   739  // decrypt and read data from the encrypted file parts before it completes the
   740  // multipart upload. For more information, see Multipart upload API and permissions
   741  // (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
   742  // in the Amazon S3 User Guide.
   743  //
   744  // If your Identity and Access Management (IAM) user or role is in the same
   745  // Amazon Web Services account as the KMS key, then you must have these permissions
   746  // on the key policy. If your IAM user or role belongs to a different account
   747  // than the key, then you must have the permissions on both the key policy and
   748  // your IAM user or role.
   749  //
   750  // For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
   751  //
   752  // Access Permissions
   753  //
   754  // When copying an object, you can optionally specify the accounts or groups
   755  // that should be granted specific permissions on the new object. There are
   756  // two ways to grant the permissions using the request headers:
   757  //
   758  //    * Specify a canned ACL with the x-amz-acl request header. For more information,
   759  //    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
   760  //
   761  //    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
   762  //    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
   763  //    map to the set of permissions that Amazon S3 supports in an ACL. For more
   764  //    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
   765  //
   766  // You can use either a canned ACL or specify access permissions explicitly.
   767  // You cannot do both.
   768  //
   769  // Server-Side- Encryption-Specific Request Headers
   770  //
   771  // You can optionally tell Amazon S3 to encrypt data at rest using server-side
   772  // encryption. Server-side encryption is for data encryption at rest. Amazon
   773  // S3 encrypts your data as it writes it to disks in its data centers and decrypts
   774  // it when you access it. The option you use depends on whether you want to
   775  // use Amazon Web Services managed encryption keys or provide your own encryption
   776  // key.
   777  //
   778  //    * Use encryption keys managed by Amazon S3 or customer managed key stored
   779  //    in Amazon Web Services Key Management Service (Amazon Web Services KMS)
   780  //    – If you want Amazon Web Services to manage the keys used to encrypt
   781  //    data, specify the following headers in the request. x-amz-server-side-encryption
   782  //    x-amz-server-side-encryption-aws-kms-key-id x-amz-server-side-encryption-context
   783  //    If you specify x-amz-server-side-encryption:aws:kms, but don't provide
   784  //    x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon
   785  //    Web Services managed key in Amazon Web Services KMS to protect the data.
   786  //    All GET and PUT requests for an object protected by Amazon Web Services
   787  //    KMS fail if you don't make them with SSL or by using SigV4. For more information
   788  //    about server-side encryption with KMS key (SSE-KMS), see Protecting Data
   789  //    Using Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
   790  //
   791  //    * Use customer-provided encryption keys – If you want to manage your
   792  //    own encryption keys, provide all the following headers in the request.
   793  //    x-amz-server-side-encryption-customer-algorithm x-amz-server-side-encryption-customer-key
   794  //    x-amz-server-side-encryption-customer-key-MD5 For more information about
   795  //    server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using
   796  //    Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
   797  //
   798  // Access-Control-List (ACL)-Specific Request Headers
   799  //
   800  // You also can use the following access control–related headers with this
   801  // operation. By default, all objects are private. Only the owner has full access
   802  // control. When adding a new object, you can grant permissions to individual
   803  // Amazon Web Services accounts or to predefined groups defined by Amazon S3.
   804  // These permissions are then added to the access control list (ACL) on the
   805  // object. For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
   806  // With this operation, you can grant access permissions using one of the following
   807  // two methods:
   808  //
   809  //    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
   810  //    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
   811  //    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
   812  //
   813  //    * Specify access permissions explicitly — To explicitly grant access
   814  //    permissions to specific Amazon Web Services accounts or groups, use the
   815  //    following headers. Each header maps to specific permissions that Amazon
   816  //    S3 supports in an ACL. For more information, see Access Control List (ACL)
   817  //    Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
   818  //    In the header, you specify a list of grantees who get the specific permission.
   819  //    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
   820  //    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
   821  //    specify each grantee as a type=value pair, where the type is one of the
   822  //    following: id – if the value specified is the canonical user ID of an
   823  //    Amazon Web Services account uri – if you are granting permissions to
   824  //    a predefined group emailAddress – if the value specified is the email
   825  //    address of an Amazon Web Services account Using email addresses to specify
   826  //    a grantee is only supported in the following Amazon Web Services Regions:
   827  //    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
   828  //    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
   829  //    South America (São Paulo) For a list of all the Amazon S3 supported Regions
   830  //    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
   831  //    in the Amazon Web Services General Reference. For example, the following
   832  //    x-amz-grant-read header grants the Amazon Web Services accounts identified
   833  //    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
   834  //    id="11112222333", id="444455556666"
   835  //
   836  // The following operations are related to CreateMultipartUpload:
   837  //
   838  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
   839  //
   840  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
   841  //
   842  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
   843  //
   844  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
   845  //
   846  //    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
   847  //
   848  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   849  // with awserr.Error's Code and Message methods to get detailed information about
   850  // the error.
   851  //
   852  // See the AWS API reference guide for Amazon Simple Storage Service's
   853  // API operation CreateMultipartUpload for usage and error information.
   854  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
   855  func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
   856  	req, out := c.CreateMultipartUploadRequest(input)
   857  	return out, req.Send()
   858  }
   859  
   860  // CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
   861  // the ability to pass a context and additional request options.
   862  //
   863  // See CreateMultipartUpload for details on how to use this API operation.
   864  //
   865  // The context must be non-nil and will be used for request cancellation. If
   866  // the context is nil a panic will occur. In the future the SDK may create
   867  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   868  // for more information on using Contexts.
   869  func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
   870  	req, out := c.CreateMultipartUploadRequest(input)
   871  	req.SetContext(ctx)
   872  	req.ApplyOptions(opts...)
   873  	return out, req.Send()
   874  }
   875  
   876  const opDeleteBucket = "DeleteBucket"
   877  
   878  // DeleteBucketRequest generates a "aws/request.Request" representing the
   879  // client's request for the DeleteBucket operation. The "output" return
   880  // value will be populated with the request's response once the request completes
   881  // successfully.
   882  //
   883  // Use "Send" method on the returned Request to send the API call to the service.
   884  // the "output" return value is not valid until after Send returns without error.
   885  //
   886  // See DeleteBucket for more information on using the DeleteBucket
   887  // API call, and error handling.
   888  //
   889  // This method is useful when you want to inject custom logic or configuration
   890  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   891  //
   892  //
   893  //    // Example sending a request using the DeleteBucketRequest method.
   894  //    req, resp := client.DeleteBucketRequest(params)
   895  //
   896  //    err := req.Send()
   897  //    if err == nil { // resp is now filled
   898  //        fmt.Println(resp)
   899  //    }
   900  //
   901  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
   902  func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
   903  	op := &request.Operation{
   904  		Name:       opDeleteBucket,
   905  		HTTPMethod: "DELETE",
   906  		HTTPPath:   "/{Bucket}",
   907  	}
   908  
   909  	if input == nil {
   910  		input = &DeleteBucketInput{}
   911  	}
   912  
   913  	output = &DeleteBucketOutput{}
   914  	req = c.newRequest(op, input, output)
   915  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   916  	return
   917  }
   918  
   919  // DeleteBucket API operation for Amazon Simple Storage Service.
   920  //
   921  // Deletes the S3 bucket. All objects (including all object versions and delete
   922  // markers) in the bucket must be deleted before the bucket itself can be deleted.
   923  //
   924  // Related Resources
   925  //
   926  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
   927  //
   928  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
   929  //
   930  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   931  // with awserr.Error's Code and Message methods to get detailed information about
   932  // the error.
   933  //
   934  // See the AWS API reference guide for Amazon Simple Storage Service's
   935  // API operation DeleteBucket for usage and error information.
   936  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
   937  func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
   938  	req, out := c.DeleteBucketRequest(input)
   939  	return out, req.Send()
   940  }
   941  
   942  // DeleteBucketWithContext is the same as DeleteBucket with the addition of
   943  // the ability to pass a context and additional request options.
   944  //
   945  // See DeleteBucket for details on how to use this API operation.
   946  //
   947  // The context must be non-nil and will be used for request cancellation. If
   948  // the context is nil a panic will occur. In the future the SDK may create
   949  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   950  // for more information on using Contexts.
   951  func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
   952  	req, out := c.DeleteBucketRequest(input)
   953  	req.SetContext(ctx)
   954  	req.ApplyOptions(opts...)
   955  	return out, req.Send()
   956  }
   957  
   958  const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
   959  
   960  // DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
   961  // client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
   962  // value will be populated with the request's response once the request completes
   963  // successfully.
   964  //
   965  // Use "Send" method on the returned Request to send the API call to the service.
   966  // the "output" return value is not valid until after Send returns without error.
   967  //
   968  // See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
   969  // API call, and error handling.
   970  //
   971  // This method is useful when you want to inject custom logic or configuration
   972  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   973  //
   974  //
   975  //    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
   976  //    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
   977  //
   978  //    err := req.Send()
   979  //    if err == nil { // resp is now filled
   980  //        fmt.Println(resp)
   981  //    }
   982  //
   983  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
   984  func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
   985  	op := &request.Operation{
   986  		Name:       opDeleteBucketAnalyticsConfiguration,
   987  		HTTPMethod: "DELETE",
   988  		HTTPPath:   "/{Bucket}?analytics",
   989  	}
   990  
   991  	if input == nil {
   992  		input = &DeleteBucketAnalyticsConfigurationInput{}
   993  	}
   994  
   995  	output = &DeleteBucketAnalyticsConfigurationOutput{}
   996  	req = c.newRequest(op, input, output)
   997  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   998  	return
   999  }
  1000  
  1001  // DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
  1002  //
  1003  // Deletes an analytics configuration for the bucket (specified by the analytics
  1004  // configuration ID).
  1005  //
  1006  // To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
  1007  // action. The bucket owner has this permission by default. The bucket owner
  1008  // can grant this permission to others. For more information about permissions,
  1009  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  1010  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  1011  //
  1012  // For information about the Amazon S3 analytics feature, see Amazon S3 Analytics
  1013  // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
  1014  //
  1015  // The following operations are related to DeleteBucketAnalyticsConfiguration:
  1016  //
  1017  //    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
  1018  //
  1019  //    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
  1020  //
  1021  //    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
  1022  //
  1023  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1024  // with awserr.Error's Code and Message methods to get detailed information about
  1025  // the error.
  1026  //
  1027  // See the AWS API reference guide for Amazon Simple Storage Service's
  1028  // API operation DeleteBucketAnalyticsConfiguration for usage and error information.
  1029  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
  1030  func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
  1031  	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
  1032  	return out, req.Send()
  1033  }
  1034  
  1035  // DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
  1036  // the ability to pass a context and additional request options.
  1037  //
  1038  // See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
  1039  //
  1040  // The context must be non-nil and will be used for request cancellation. If
  1041  // the context is nil a panic will occur. In the future the SDK may create
  1042  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1043  // for more information on using Contexts.
  1044  func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
  1045  	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
  1046  	req.SetContext(ctx)
  1047  	req.ApplyOptions(opts...)
  1048  	return out, req.Send()
  1049  }
  1050  
  1051  const opDeleteBucketCors = "DeleteBucketCors"
  1052  
  1053  // DeleteBucketCorsRequest generates a "aws/request.Request" representing the
  1054  // client's request for the DeleteBucketCors operation. The "output" return
  1055  // value will be populated with the request's response once the request completes
  1056  // successfully.
  1057  //
  1058  // Use "Send" method on the returned Request to send the API call to the service.
  1059  // the "output" return value is not valid until after Send returns without error.
  1060  //
  1061  // See DeleteBucketCors for more information on using the DeleteBucketCors
  1062  // API call, and error handling.
  1063  //
  1064  // This method is useful when you want to inject custom logic or configuration
  1065  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1066  //
  1067  //
  1068  //    // Example sending a request using the DeleteBucketCorsRequest method.
  1069  //    req, resp := client.DeleteBucketCorsRequest(params)
  1070  //
  1071  //    err := req.Send()
  1072  //    if err == nil { // resp is now filled
  1073  //        fmt.Println(resp)
  1074  //    }
  1075  //
  1076  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
  1077  func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
  1078  	op := &request.Operation{
  1079  		Name:       opDeleteBucketCors,
  1080  		HTTPMethod: "DELETE",
  1081  		HTTPPath:   "/{Bucket}?cors",
  1082  	}
  1083  
  1084  	if input == nil {
  1085  		input = &DeleteBucketCorsInput{}
  1086  	}
  1087  
  1088  	output = &DeleteBucketCorsOutput{}
  1089  	req = c.newRequest(op, input, output)
  1090  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1091  	return
  1092  }
  1093  
  1094  // DeleteBucketCors API operation for Amazon Simple Storage Service.
  1095  //
  1096  // Deletes the cors configuration information set for the bucket.
  1097  //
  1098  // To use this operation, you must have permission to perform the s3:PutBucketCORS
  1099  // action. The bucket owner has this permission by default and can grant this
  1100  // permission to others.
  1101  //
  1102  // For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)
  1103  // in the Amazon S3 User Guide.
  1104  //
  1105  // Related Resources:
  1106  //
  1107  //    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
  1108  //
  1109  //    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
  1110  //
  1111  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1112  // with awserr.Error's Code and Message methods to get detailed information about
  1113  // the error.
  1114  //
  1115  // See the AWS API reference guide for Amazon Simple Storage Service's
  1116  // API operation DeleteBucketCors for usage and error information.
  1117  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
  1118  func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
  1119  	req, out := c.DeleteBucketCorsRequest(input)
  1120  	return out, req.Send()
  1121  }
  1122  
  1123  // DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
  1124  // the ability to pass a context and additional request options.
  1125  //
  1126  // See DeleteBucketCors for details on how to use this API operation.
  1127  //
  1128  // The context must be non-nil and will be used for request cancellation. If
  1129  // the context is nil a panic will occur. In the future the SDK may create
  1130  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1131  // for more information on using Contexts.
  1132  func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
  1133  	req, out := c.DeleteBucketCorsRequest(input)
  1134  	req.SetContext(ctx)
  1135  	req.ApplyOptions(opts...)
  1136  	return out, req.Send()
  1137  }
  1138  
  1139  const opDeleteBucketEncryption = "DeleteBucketEncryption"
  1140  
  1141  // DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
  1142  // client's request for the DeleteBucketEncryption operation. The "output" return
  1143  // value will be populated with the request's response once the request completes
  1144  // successfully.
  1145  //
  1146  // Use "Send" method on the returned Request to send the API call to the service.
  1147  // the "output" return value is not valid until after Send returns without error.
  1148  //
  1149  // See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
  1150  // API call, and error handling.
  1151  //
  1152  // This method is useful when you want to inject custom logic or configuration
  1153  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1154  //
  1155  //
  1156  //    // Example sending a request using the DeleteBucketEncryptionRequest method.
  1157  //    req, resp := client.DeleteBucketEncryptionRequest(params)
  1158  //
  1159  //    err := req.Send()
  1160  //    if err == nil { // resp is now filled
  1161  //        fmt.Println(resp)
  1162  //    }
  1163  //
  1164  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
  1165  func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
  1166  	op := &request.Operation{
  1167  		Name:       opDeleteBucketEncryption,
  1168  		HTTPMethod: "DELETE",
  1169  		HTTPPath:   "/{Bucket}?encryption",
  1170  	}
  1171  
  1172  	if input == nil {
  1173  		input = &DeleteBucketEncryptionInput{}
  1174  	}
  1175  
  1176  	output = &DeleteBucketEncryptionOutput{}
  1177  	req = c.newRequest(op, input, output)
  1178  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1179  	return
  1180  }
  1181  
  1182  // DeleteBucketEncryption API operation for Amazon Simple Storage Service.
  1183  //
  1184  // This implementation of the DELETE action removes default encryption from
  1185  // the bucket. For information about the Amazon S3 default encryption feature,
  1186  // see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
  1187  // in the Amazon S3 User Guide.
  1188  //
  1189  // To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
  1190  // action. The bucket owner has this permission by default. The bucket owner
  1191  // can grant this permission to others. For more information about permissions,
  1192  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  1193  // and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  1194  // in the Amazon S3 User Guide.
  1195  //
  1196  // Related Resources
  1197  //
  1198  //    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  1199  //
  1200  //    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  1201  //
  1202  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1203  // with awserr.Error's Code and Message methods to get detailed information about
  1204  // the error.
  1205  //
  1206  // See the AWS API reference guide for Amazon Simple Storage Service's
  1207  // API operation DeleteBucketEncryption for usage and error information.
  1208  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
  1209  func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
  1210  	req, out := c.DeleteBucketEncryptionRequest(input)
  1211  	return out, req.Send()
  1212  }
  1213  
  1214  // DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
  1215  // the ability to pass a context and additional request options.
  1216  //
  1217  // See DeleteBucketEncryption for details on how to use this API operation.
  1218  //
  1219  // The context must be non-nil and will be used for request cancellation. If
  1220  // the context is nil a panic will occur. In the future the SDK may create
  1221  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1222  // for more information on using Contexts.
  1223  func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
  1224  	req, out := c.DeleteBucketEncryptionRequest(input)
  1225  	req.SetContext(ctx)
  1226  	req.ApplyOptions(opts...)
  1227  	return out, req.Send()
  1228  }
  1229  
  1230  const opDeleteBucketIntelligentTieringConfiguration = "DeleteBucketIntelligentTieringConfiguration"
  1231  
  1232  // DeleteBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
  1233  // client's request for the DeleteBucketIntelligentTieringConfiguration operation. The "output" return
  1234  // value will be populated with the request's response once the request completes
  1235  // successfully.
  1236  //
  1237  // Use "Send" method on the returned Request to send the API call to the service.
  1238  // the "output" return value is not valid until after Send returns without error.
  1239  //
  1240  // See DeleteBucketIntelligentTieringConfiguration for more information on using the DeleteBucketIntelligentTieringConfiguration
  1241  // API call, and error handling.
  1242  //
  1243  // This method is useful when you want to inject custom logic or configuration
  1244  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1245  //
  1246  //
  1247  //    // Example sending a request using the DeleteBucketIntelligentTieringConfigurationRequest method.
  1248  //    req, resp := client.DeleteBucketIntelligentTieringConfigurationRequest(params)
  1249  //
  1250  //    err := req.Send()
  1251  //    if err == nil { // resp is now filled
  1252  //        fmt.Println(resp)
  1253  //    }
  1254  //
  1255  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
  1256  func (c *S3) DeleteBucketIntelligentTieringConfigurationRequest(input *DeleteBucketIntelligentTieringConfigurationInput) (req *request.Request, output *DeleteBucketIntelligentTieringConfigurationOutput) {
  1257  	op := &request.Operation{
  1258  		Name:       opDeleteBucketIntelligentTieringConfiguration,
  1259  		HTTPMethod: "DELETE",
  1260  		HTTPPath:   "/{Bucket}?intelligent-tiering",
  1261  	}
  1262  
  1263  	if input == nil {
  1264  		input = &DeleteBucketIntelligentTieringConfigurationInput{}
  1265  	}
  1266  
  1267  	output = &DeleteBucketIntelligentTieringConfigurationOutput{}
  1268  	req = c.newRequest(op, input, output)
  1269  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1270  	return
  1271  }
  1272  
  1273  // DeleteBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
  1274  //
  1275  // Deletes the S3 Intelligent-Tiering configuration from the specified bucket.
  1276  //
  1277  // The S3 Intelligent-Tiering storage class is designed to optimize storage
  1278  // costs by automatically moving data to the most cost-effective storage access
  1279  // tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  1280  // delivers automatic cost savings in two low latency and high throughput access
  1281  // tiers. For data that can be accessed asynchronously, you can choose to activate
  1282  // automatic archiving capabilities within the S3 Intelligent-Tiering storage
  1283  // class.
  1284  //
  1285  // The S3 Intelligent-Tiering storage class is the ideal storage class for data
  1286  // with unknown, changing, or unpredictable access patterns, independent of
  1287  // object size or retention period. If the size of an object is less than 128
  1288  // KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
  1289  // they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
  1290  // storage class.
  1291  //
  1292  // For more information, see Storage class for automatically optimizing frequently
  1293  // and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
  1294  //
  1295  // Operations related to DeleteBucketIntelligentTieringConfiguration include:
  1296  //
  1297  //    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
  1298  //
  1299  //    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
  1300  //
  1301  //    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
  1302  //
  1303  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1304  // with awserr.Error's Code and Message methods to get detailed information about
  1305  // the error.
  1306  //
  1307  // See the AWS API reference guide for Amazon Simple Storage Service's
  1308  // API operation DeleteBucketIntelligentTieringConfiguration for usage and error information.
  1309  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
  1310  func (c *S3) DeleteBucketIntelligentTieringConfiguration(input *DeleteBucketIntelligentTieringConfigurationInput) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
  1311  	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
  1312  	return out, req.Send()
  1313  }
  1314  
  1315  // DeleteBucketIntelligentTieringConfigurationWithContext is the same as DeleteBucketIntelligentTieringConfiguration with the addition of
  1316  // the ability to pass a context and additional request options.
  1317  //
  1318  // See DeleteBucketIntelligentTieringConfiguration for details on how to use this API operation.
  1319  //
  1320  // The context must be non-nil and will be used for request cancellation. If
  1321  // the context is nil a panic will occur. In the future the SDK may create
  1322  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1323  // for more information on using Contexts.
  1324  func (c *S3) DeleteBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *DeleteBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
  1325  	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
  1326  	req.SetContext(ctx)
  1327  	req.ApplyOptions(opts...)
  1328  	return out, req.Send()
  1329  }
  1330  
  1331  const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
  1332  
  1333  // DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
  1334  // client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
  1335  // value will be populated with the request's response once the request completes
  1336  // successfully.
  1337  //
  1338  // Use "Send" method on the returned Request to send the API call to the service.
  1339  // the "output" return value is not valid until after Send returns without error.
  1340  //
  1341  // See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
  1342  // API call, and error handling.
  1343  //
  1344  // This method is useful when you want to inject custom logic or configuration
  1345  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1346  //
  1347  //
  1348  //    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
  1349  //    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
  1350  //
  1351  //    err := req.Send()
  1352  //    if err == nil { // resp is now filled
  1353  //        fmt.Println(resp)
  1354  //    }
  1355  //
  1356  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
  1357  func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
  1358  	op := &request.Operation{
  1359  		Name:       opDeleteBucketInventoryConfiguration,
  1360  		HTTPMethod: "DELETE",
  1361  		HTTPPath:   "/{Bucket}?inventory",
  1362  	}
  1363  
  1364  	if input == nil {
  1365  		input = &DeleteBucketInventoryConfigurationInput{}
  1366  	}
  1367  
  1368  	output = &DeleteBucketInventoryConfigurationOutput{}
  1369  	req = c.newRequest(op, input, output)
  1370  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1371  	return
  1372  }
  1373  
  1374  // DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
  1375  //
  1376  // Deletes an inventory configuration (identified by the inventory ID) from
  1377  // the bucket.
  1378  //
  1379  // To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
  1380  // action. The bucket owner has this permission by default. The bucket owner
  1381  // can grant this permission to others. For more information about permissions,
  1382  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  1383  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  1384  //
  1385  // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
  1386  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
  1387  //
  1388  // Operations related to DeleteBucketInventoryConfiguration include:
  1389  //
  1390  //    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
  1391  //
  1392  //    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
  1393  //
  1394  //    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
  1395  //
  1396  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1397  // with awserr.Error's Code and Message methods to get detailed information about
  1398  // the error.
  1399  //
  1400  // See the AWS API reference guide for Amazon Simple Storage Service's
  1401  // API operation DeleteBucketInventoryConfiguration for usage and error information.
  1402  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
  1403  func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
  1404  	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
  1405  	return out, req.Send()
  1406  }
  1407  
  1408  // DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
  1409  // the ability to pass a context and additional request options.
  1410  //
  1411  // See DeleteBucketInventoryConfiguration for details on how to use this API operation.
  1412  //
  1413  // The context must be non-nil and will be used for request cancellation. If
  1414  // the context is nil a panic will occur. In the future the SDK may create
  1415  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1416  // for more information on using Contexts.
  1417  func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
  1418  	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
  1419  	req.SetContext(ctx)
  1420  	req.ApplyOptions(opts...)
  1421  	return out, req.Send()
  1422  }
  1423  
  1424  const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
  1425  
  1426  // DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
  1427  // client's request for the DeleteBucketLifecycle operation. The "output" return
  1428  // value will be populated with the request's response once the request completes
  1429  // successfully.
  1430  //
  1431  // Use "Send" method on the returned Request to send the API call to the service.
  1432  // the "output" return value is not valid until after Send returns without error.
  1433  //
  1434  // See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
  1435  // API call, and error handling.
  1436  //
  1437  // This method is useful when you want to inject custom logic or configuration
  1438  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1439  //
  1440  //
  1441  //    // Example sending a request using the DeleteBucketLifecycleRequest method.
  1442  //    req, resp := client.DeleteBucketLifecycleRequest(params)
  1443  //
  1444  //    err := req.Send()
  1445  //    if err == nil { // resp is now filled
  1446  //        fmt.Println(resp)
  1447  //    }
  1448  //
  1449  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
  1450  func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
  1451  	op := &request.Operation{
  1452  		Name:       opDeleteBucketLifecycle,
  1453  		HTTPMethod: "DELETE",
  1454  		HTTPPath:   "/{Bucket}?lifecycle",
  1455  	}
  1456  
  1457  	if input == nil {
  1458  		input = &DeleteBucketLifecycleInput{}
  1459  	}
  1460  
  1461  	output = &DeleteBucketLifecycleOutput{}
  1462  	req = c.newRequest(op, input, output)
  1463  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1464  	return
  1465  }
  1466  
  1467  // DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
  1468  //
  1469  // Deletes the lifecycle configuration from the specified bucket. Amazon S3
  1470  // removes all the lifecycle configuration rules in the lifecycle subresource
  1471  // associated with the bucket. Your objects never expire, and Amazon S3 no longer
  1472  // automatically deletes any objects on the basis of rules contained in the
  1473  // deleted lifecycle configuration.
  1474  //
  1475  // To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration
  1476  // action. By default, the bucket owner has this permission and the bucket owner
  1477  // can grant this permission to others.
  1478  //
  1479  // There is usually some time lag before lifecycle configuration deletion is
  1480  // fully propagated to all the Amazon S3 systems.
  1481  //
  1482  // For more information about the object expiration, see Elements to Describe
  1483  // Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
  1484  //
  1485  // Related actions include:
  1486  //
  1487  //    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
  1488  //
  1489  //    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
  1490  //
  1491  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1492  // with awserr.Error's Code and Message methods to get detailed information about
  1493  // the error.
  1494  //
  1495  // See the AWS API reference guide for Amazon Simple Storage Service's
  1496  // API operation DeleteBucketLifecycle for usage and error information.
  1497  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
  1498  func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
  1499  	req, out := c.DeleteBucketLifecycleRequest(input)
  1500  	return out, req.Send()
  1501  }
  1502  
  1503  // DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
  1504  // the ability to pass a context and additional request options.
  1505  //
  1506  // See DeleteBucketLifecycle for details on how to use this API operation.
  1507  //
  1508  // The context must be non-nil and will be used for request cancellation. If
  1509  // the context is nil a panic will occur. In the future the SDK may create
  1510  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1511  // for more information on using Contexts.
  1512  func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
  1513  	req, out := c.DeleteBucketLifecycleRequest(input)
  1514  	req.SetContext(ctx)
  1515  	req.ApplyOptions(opts...)
  1516  	return out, req.Send()
  1517  }
  1518  
  1519  const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
  1520  
  1521  // DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
  1522  // client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
  1523  // value will be populated with the request's response once the request completes
  1524  // successfully.
  1525  //
  1526  // Use "Send" method on the returned Request to send the API call to the service.
  1527  // the "output" return value is not valid until after Send returns without error.
  1528  //
  1529  // See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
  1530  // API call, and error handling.
  1531  //
  1532  // This method is useful when you want to inject custom logic or configuration
  1533  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1534  //
  1535  //
  1536  //    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
  1537  //    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
  1538  //
  1539  //    err := req.Send()
  1540  //    if err == nil { // resp is now filled
  1541  //        fmt.Println(resp)
  1542  //    }
  1543  //
  1544  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
  1545  func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
  1546  	op := &request.Operation{
  1547  		Name:       opDeleteBucketMetricsConfiguration,
  1548  		HTTPMethod: "DELETE",
  1549  		HTTPPath:   "/{Bucket}?metrics",
  1550  	}
  1551  
  1552  	if input == nil {
  1553  		input = &DeleteBucketMetricsConfigurationInput{}
  1554  	}
  1555  
  1556  	output = &DeleteBucketMetricsConfigurationOutput{}
  1557  	req = c.newRequest(op, input, output)
  1558  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1559  	return
  1560  }
  1561  
  1562  // DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
  1563  //
  1564  // Deletes a metrics configuration for the Amazon CloudWatch request metrics
  1565  // (specified by the metrics configuration ID) from the bucket. Note that this
  1566  // doesn't include the daily storage metrics.
  1567  //
  1568  // To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
  1569  // action. The bucket owner has this permission by default. The bucket owner
  1570  // can grant this permission to others. For more information about permissions,
  1571  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  1572  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  1573  //
  1574  // For information about CloudWatch request metrics for Amazon S3, see Monitoring
  1575  // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
  1576  //
  1577  // The following operations are related to DeleteBucketMetricsConfiguration:
  1578  //
  1579  //    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
  1580  //
  1581  //    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
  1582  //
  1583  //    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
  1584  //
  1585  //    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
  1586  //
  1587  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1588  // with awserr.Error's Code and Message methods to get detailed information about
  1589  // the error.
  1590  //
  1591  // See the AWS API reference guide for Amazon Simple Storage Service's
  1592  // API operation DeleteBucketMetricsConfiguration for usage and error information.
  1593  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
  1594  func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
  1595  	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
  1596  	return out, req.Send()
  1597  }
  1598  
  1599  // DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
  1600  // the ability to pass a context and additional request options.
  1601  //
  1602  // See DeleteBucketMetricsConfiguration for details on how to use this API operation.
  1603  //
  1604  // The context must be non-nil and will be used for request cancellation. If
  1605  // the context is nil a panic will occur. In the future the SDK may create
  1606  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1607  // for more information on using Contexts.
  1608  func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
  1609  	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
  1610  	req.SetContext(ctx)
  1611  	req.ApplyOptions(opts...)
  1612  	return out, req.Send()
  1613  }
  1614  
  1615  const opDeleteBucketOwnershipControls = "DeleteBucketOwnershipControls"
  1616  
  1617  // DeleteBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
  1618  // client's request for the DeleteBucketOwnershipControls operation. The "output" return
  1619  // value will be populated with the request's response once the request completes
  1620  // successfully.
  1621  //
  1622  // Use "Send" method on the returned Request to send the API call to the service.
  1623  // the "output" return value is not valid until after Send returns without error.
  1624  //
  1625  // See DeleteBucketOwnershipControls for more information on using the DeleteBucketOwnershipControls
  1626  // API call, and error handling.
  1627  //
  1628  // This method is useful when you want to inject custom logic or configuration
  1629  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1630  //
  1631  //
  1632  //    // Example sending a request using the DeleteBucketOwnershipControlsRequest method.
  1633  //    req, resp := client.DeleteBucketOwnershipControlsRequest(params)
  1634  //
  1635  //    err := req.Send()
  1636  //    if err == nil { // resp is now filled
  1637  //        fmt.Println(resp)
  1638  //    }
  1639  //
  1640  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
  1641  func (c *S3) DeleteBucketOwnershipControlsRequest(input *DeleteBucketOwnershipControlsInput) (req *request.Request, output *DeleteBucketOwnershipControlsOutput) {
  1642  	op := &request.Operation{
  1643  		Name:       opDeleteBucketOwnershipControls,
  1644  		HTTPMethod: "DELETE",
  1645  		HTTPPath:   "/{Bucket}?ownershipControls",
  1646  	}
  1647  
  1648  	if input == nil {
  1649  		input = &DeleteBucketOwnershipControlsInput{}
  1650  	}
  1651  
  1652  	output = &DeleteBucketOwnershipControlsOutput{}
  1653  	req = c.newRequest(op, input, output)
  1654  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1655  	return
  1656  }
  1657  
  1658  // DeleteBucketOwnershipControls API operation for Amazon Simple Storage Service.
  1659  //
  1660  // Removes OwnershipControls for an Amazon S3 bucket. To use this operation,
  1661  // you must have the s3:PutBucketOwnershipControls permission. For more information
  1662  // about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  1663  //
  1664  // For information about Amazon S3 Object Ownership, see Using Object Ownership
  1665  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
  1666  //
  1667  // The following operations are related to DeleteBucketOwnershipControls:
  1668  //
  1669  //    * GetBucketOwnershipControls
  1670  //
  1671  //    * PutBucketOwnershipControls
  1672  //
  1673  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1674  // with awserr.Error's Code and Message methods to get detailed information about
  1675  // the error.
  1676  //
  1677  // See the AWS API reference guide for Amazon Simple Storage Service's
  1678  // API operation DeleteBucketOwnershipControls for usage and error information.
  1679  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
  1680  func (c *S3) DeleteBucketOwnershipControls(input *DeleteBucketOwnershipControlsInput) (*DeleteBucketOwnershipControlsOutput, error) {
  1681  	req, out := c.DeleteBucketOwnershipControlsRequest(input)
  1682  	return out, req.Send()
  1683  }
  1684  
  1685  // DeleteBucketOwnershipControlsWithContext is the same as DeleteBucketOwnershipControls with the addition of
  1686  // the ability to pass a context and additional request options.
  1687  //
  1688  // See DeleteBucketOwnershipControls for details on how to use this API operation.
  1689  //
  1690  // The context must be non-nil and will be used for request cancellation. If
  1691  // the context is nil a panic will occur. In the future the SDK may create
  1692  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1693  // for more information on using Contexts.
  1694  func (c *S3) DeleteBucketOwnershipControlsWithContext(ctx aws.Context, input *DeleteBucketOwnershipControlsInput, opts ...request.Option) (*DeleteBucketOwnershipControlsOutput, error) {
  1695  	req, out := c.DeleteBucketOwnershipControlsRequest(input)
  1696  	req.SetContext(ctx)
  1697  	req.ApplyOptions(opts...)
  1698  	return out, req.Send()
  1699  }
  1700  
  1701  const opDeleteBucketPolicy = "DeleteBucketPolicy"
  1702  
  1703  // DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
  1704  // client's request for the DeleteBucketPolicy operation. The "output" return
  1705  // value will be populated with the request's response once the request completes
  1706  // successfully.
  1707  //
  1708  // Use "Send" method on the returned Request to send the API call to the service.
  1709  // the "output" return value is not valid until after Send returns without error.
  1710  //
  1711  // See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
  1712  // API call, and error handling.
  1713  //
  1714  // This method is useful when you want to inject custom logic or configuration
  1715  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1716  //
  1717  //
  1718  //    // Example sending a request using the DeleteBucketPolicyRequest method.
  1719  //    req, resp := client.DeleteBucketPolicyRequest(params)
  1720  //
  1721  //    err := req.Send()
  1722  //    if err == nil { // resp is now filled
  1723  //        fmt.Println(resp)
  1724  //    }
  1725  //
  1726  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
  1727  func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
  1728  	op := &request.Operation{
  1729  		Name:       opDeleteBucketPolicy,
  1730  		HTTPMethod: "DELETE",
  1731  		HTTPPath:   "/{Bucket}?policy",
  1732  	}
  1733  
  1734  	if input == nil {
  1735  		input = &DeleteBucketPolicyInput{}
  1736  	}
  1737  
  1738  	output = &DeleteBucketPolicyOutput{}
  1739  	req = c.newRequest(op, input, output)
  1740  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1741  	return
  1742  }
  1743  
  1744  // DeleteBucketPolicy API operation for Amazon Simple Storage Service.
  1745  //
  1746  // This implementation of the DELETE action uses the policy subresource to delete
  1747  // the policy of a specified bucket. If you are using an identity other than
  1748  // the root user of the Amazon Web Services account that owns the bucket, the
  1749  // calling identity must have the DeleteBucketPolicy permissions on the specified
  1750  // bucket and belong to the bucket owner's account to use this operation.
  1751  //
  1752  // If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403
  1753  // Access Denied error. If you have the correct permissions, but you're not
  1754  // using an identity that belongs to the bucket owner's account, Amazon S3 returns
  1755  // a 405 Method Not Allowed error.
  1756  //
  1757  // As a security precaution, the root user of the Amazon Web Services account
  1758  // that owns a bucket can always use this operation, even if the policy explicitly
  1759  // denies the root user the ability to perform this action.
  1760  //
  1761  // For more information about bucket policies, see Using Bucket Policies and
  1762  // UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
  1763  //
  1764  // The following operations are related to DeleteBucketPolicy
  1765  //
  1766  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  1767  //
  1768  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
  1769  //
  1770  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1771  // with awserr.Error's Code and Message methods to get detailed information about
  1772  // the error.
  1773  //
  1774  // See the AWS API reference guide for Amazon Simple Storage Service's
  1775  // API operation DeleteBucketPolicy for usage and error information.
  1776  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
  1777  func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
  1778  	req, out := c.DeleteBucketPolicyRequest(input)
  1779  	return out, req.Send()
  1780  }
  1781  
  1782  // DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
  1783  // the ability to pass a context and additional request options.
  1784  //
  1785  // See DeleteBucketPolicy for details on how to use this API operation.
  1786  //
  1787  // The context must be non-nil and will be used for request cancellation. If
  1788  // the context is nil a panic will occur. In the future the SDK may create
  1789  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1790  // for more information on using Contexts.
  1791  func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
  1792  	req, out := c.DeleteBucketPolicyRequest(input)
  1793  	req.SetContext(ctx)
  1794  	req.ApplyOptions(opts...)
  1795  	return out, req.Send()
  1796  }
  1797  
  1798  const opDeleteBucketReplication = "DeleteBucketReplication"
  1799  
  1800  // DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
  1801  // client's request for the DeleteBucketReplication operation. The "output" return
  1802  // value will be populated with the request's response once the request completes
  1803  // successfully.
  1804  //
  1805  // Use "Send" method on the returned Request to send the API call to the service.
  1806  // the "output" return value is not valid until after Send returns without error.
  1807  //
  1808  // See DeleteBucketReplication for more information on using the DeleteBucketReplication
  1809  // API call, and error handling.
  1810  //
  1811  // This method is useful when you want to inject custom logic or configuration
  1812  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1813  //
  1814  //
  1815  //    // Example sending a request using the DeleteBucketReplicationRequest method.
  1816  //    req, resp := client.DeleteBucketReplicationRequest(params)
  1817  //
  1818  //    err := req.Send()
  1819  //    if err == nil { // resp is now filled
  1820  //        fmt.Println(resp)
  1821  //    }
  1822  //
  1823  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
  1824  func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
  1825  	op := &request.Operation{
  1826  		Name:       opDeleteBucketReplication,
  1827  		HTTPMethod: "DELETE",
  1828  		HTTPPath:   "/{Bucket}?replication",
  1829  	}
  1830  
  1831  	if input == nil {
  1832  		input = &DeleteBucketReplicationInput{}
  1833  	}
  1834  
  1835  	output = &DeleteBucketReplicationOutput{}
  1836  	req = c.newRequest(op, input, output)
  1837  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1838  	return
  1839  }
  1840  
  1841  // DeleteBucketReplication API operation for Amazon Simple Storage Service.
  1842  //
  1843  // Deletes the replication configuration from the bucket.
  1844  //
  1845  // To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration
  1846  // action. The bucket owner has these permissions by default and can grant it
  1847  // to others. For more information about permissions, see Permissions Related
  1848  // to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  1849  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  1850  //
  1851  // It can take a while for the deletion of a replication configuration to fully
  1852  // propagate.
  1853  //
  1854  // For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
  1855  // in the Amazon S3 User Guide.
  1856  //
  1857  // The following operations are related to DeleteBucketReplication:
  1858  //
  1859  //    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
  1860  //
  1861  //    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
  1862  //
  1863  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1864  // with awserr.Error's Code and Message methods to get detailed information about
  1865  // the error.
  1866  //
  1867  // See the AWS API reference guide for Amazon Simple Storage Service's
  1868  // API operation DeleteBucketReplication for usage and error information.
  1869  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
  1870  func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
  1871  	req, out := c.DeleteBucketReplicationRequest(input)
  1872  	return out, req.Send()
  1873  }
  1874  
  1875  // DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
  1876  // the ability to pass a context and additional request options.
  1877  //
  1878  // See DeleteBucketReplication for details on how to use this API operation.
  1879  //
  1880  // The context must be non-nil and will be used for request cancellation. If
  1881  // the context is nil a panic will occur. In the future the SDK may create
  1882  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1883  // for more information on using Contexts.
  1884  func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
  1885  	req, out := c.DeleteBucketReplicationRequest(input)
  1886  	req.SetContext(ctx)
  1887  	req.ApplyOptions(opts...)
  1888  	return out, req.Send()
  1889  }
  1890  
  1891  const opDeleteBucketTagging = "DeleteBucketTagging"
  1892  
  1893  // DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
  1894  // client's request for the DeleteBucketTagging operation. The "output" return
  1895  // value will be populated with the request's response once the request completes
  1896  // successfully.
  1897  //
  1898  // Use "Send" method on the returned Request to send the API call to the service.
  1899  // the "output" return value is not valid until after Send returns without error.
  1900  //
  1901  // See DeleteBucketTagging for more information on using the DeleteBucketTagging
  1902  // API call, and error handling.
  1903  //
  1904  // This method is useful when you want to inject custom logic or configuration
  1905  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1906  //
  1907  //
  1908  //    // Example sending a request using the DeleteBucketTaggingRequest method.
  1909  //    req, resp := client.DeleteBucketTaggingRequest(params)
  1910  //
  1911  //    err := req.Send()
  1912  //    if err == nil { // resp is now filled
  1913  //        fmt.Println(resp)
  1914  //    }
  1915  //
  1916  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
  1917  func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
  1918  	op := &request.Operation{
  1919  		Name:       opDeleteBucketTagging,
  1920  		HTTPMethod: "DELETE",
  1921  		HTTPPath:   "/{Bucket}?tagging",
  1922  	}
  1923  
  1924  	if input == nil {
  1925  		input = &DeleteBucketTaggingInput{}
  1926  	}
  1927  
  1928  	output = &DeleteBucketTaggingOutput{}
  1929  	req = c.newRequest(op, input, output)
  1930  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1931  	return
  1932  }
  1933  
  1934  // DeleteBucketTagging API operation for Amazon Simple Storage Service.
  1935  //
  1936  // Deletes the tags from the bucket.
  1937  //
  1938  // To use this operation, you must have permission to perform the s3:PutBucketTagging
  1939  // action. By default, the bucket owner has this permission and can grant this
  1940  // permission to others.
  1941  //
  1942  // The following operations are related to DeleteBucketTagging:
  1943  //
  1944  //    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
  1945  //
  1946  //    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
  1947  //
  1948  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1949  // with awserr.Error's Code and Message methods to get detailed information about
  1950  // the error.
  1951  //
  1952  // See the AWS API reference guide for Amazon Simple Storage Service's
  1953  // API operation DeleteBucketTagging for usage and error information.
  1954  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
  1955  func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
  1956  	req, out := c.DeleteBucketTaggingRequest(input)
  1957  	return out, req.Send()
  1958  }
  1959  
  1960  // DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
  1961  // the ability to pass a context and additional request options.
  1962  //
  1963  // See DeleteBucketTagging for details on how to use this API operation.
  1964  //
  1965  // The context must be non-nil and will be used for request cancellation. If
  1966  // the context is nil a panic will occur. In the future the SDK may create
  1967  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1968  // for more information on using Contexts.
  1969  func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
  1970  	req, out := c.DeleteBucketTaggingRequest(input)
  1971  	req.SetContext(ctx)
  1972  	req.ApplyOptions(opts...)
  1973  	return out, req.Send()
  1974  }
  1975  
  1976  const opDeleteBucketWebsite = "DeleteBucketWebsite"
  1977  
  1978  // DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
  1979  // client's request for the DeleteBucketWebsite operation. The "output" return
  1980  // value will be populated with the request's response once the request completes
  1981  // successfully.
  1982  //
  1983  // Use "Send" method on the returned Request to send the API call to the service.
  1984  // the "output" return value is not valid until after Send returns without error.
  1985  //
  1986  // See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
  1987  // API call, and error handling.
  1988  //
  1989  // This method is useful when you want to inject custom logic or configuration
  1990  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1991  //
  1992  //
  1993  //    // Example sending a request using the DeleteBucketWebsiteRequest method.
  1994  //    req, resp := client.DeleteBucketWebsiteRequest(params)
  1995  //
  1996  //    err := req.Send()
  1997  //    if err == nil { // resp is now filled
  1998  //        fmt.Println(resp)
  1999  //    }
  2000  //
  2001  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
  2002  func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
  2003  	op := &request.Operation{
  2004  		Name:       opDeleteBucketWebsite,
  2005  		HTTPMethod: "DELETE",
  2006  		HTTPPath:   "/{Bucket}?website",
  2007  	}
  2008  
  2009  	if input == nil {
  2010  		input = &DeleteBucketWebsiteInput{}
  2011  	}
  2012  
  2013  	output = &DeleteBucketWebsiteOutput{}
  2014  	req = c.newRequest(op, input, output)
  2015  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2016  	return
  2017  }
  2018  
  2019  // DeleteBucketWebsite API operation for Amazon Simple Storage Service.
  2020  //
  2021  // This action removes the website configuration for a bucket. Amazon S3 returns
  2022  // a 200 OK response upon successfully deleting a website configuration on the
  2023  // specified bucket. You will get a 200 OK response if the website configuration
  2024  // you are trying to delete does not exist on the bucket. Amazon S3 returns
  2025  // a 404 response if the bucket specified in the request does not exist.
  2026  //
  2027  // This DELETE action requires the S3:DeleteBucketWebsite permission. By default,
  2028  // only the bucket owner can delete the website configuration attached to a
  2029  // bucket. However, bucket owners can grant other users permission to delete
  2030  // the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite
  2031  // permission.
  2032  //
  2033  // For more information about hosting websites, see Hosting Websites on Amazon
  2034  // S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
  2035  //
  2036  // The following operations are related to DeleteBucketWebsite:
  2037  //
  2038  //    * GetBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)
  2039  //
  2040  //    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
  2041  //
  2042  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2043  // with awserr.Error's Code and Message methods to get detailed information about
  2044  // the error.
  2045  //
  2046  // See the AWS API reference guide for Amazon Simple Storage Service's
  2047  // API operation DeleteBucketWebsite for usage and error information.
  2048  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
  2049  func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
  2050  	req, out := c.DeleteBucketWebsiteRequest(input)
  2051  	return out, req.Send()
  2052  }
  2053  
  2054  // DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
  2055  // the ability to pass a context and additional request options.
  2056  //
  2057  // See DeleteBucketWebsite for details on how to use this API operation.
  2058  //
  2059  // The context must be non-nil and will be used for request cancellation. If
  2060  // the context is nil a panic will occur. In the future the SDK may create
  2061  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2062  // for more information on using Contexts.
  2063  func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
  2064  	req, out := c.DeleteBucketWebsiteRequest(input)
  2065  	req.SetContext(ctx)
  2066  	req.ApplyOptions(opts...)
  2067  	return out, req.Send()
  2068  }
  2069  
  2070  const opDeleteObject = "DeleteObject"
  2071  
  2072  // DeleteObjectRequest generates a "aws/request.Request" representing the
  2073  // client's request for the DeleteObject operation. The "output" return
  2074  // value will be populated with the request's response once the request completes
  2075  // successfully.
  2076  //
  2077  // Use "Send" method on the returned Request to send the API call to the service.
  2078  // the "output" return value is not valid until after Send returns without error.
  2079  //
  2080  // See DeleteObject for more information on using the DeleteObject
  2081  // API call, and error handling.
  2082  //
  2083  // This method is useful when you want to inject custom logic or configuration
  2084  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2085  //
  2086  //
  2087  //    // Example sending a request using the DeleteObjectRequest method.
  2088  //    req, resp := client.DeleteObjectRequest(params)
  2089  //
  2090  //    err := req.Send()
  2091  //    if err == nil { // resp is now filled
  2092  //        fmt.Println(resp)
  2093  //    }
  2094  //
  2095  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
  2096  func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
  2097  	op := &request.Operation{
  2098  		Name:       opDeleteObject,
  2099  		HTTPMethod: "DELETE",
  2100  		HTTPPath:   "/{Bucket}/{Key+}",
  2101  	}
  2102  
  2103  	if input == nil {
  2104  		input = &DeleteObjectInput{}
  2105  	}
  2106  
  2107  	output = &DeleteObjectOutput{}
  2108  	req = c.newRequest(op, input, output)
  2109  	return
  2110  }
  2111  
  2112  // DeleteObject API operation for Amazon Simple Storage Service.
  2113  //
  2114  // Removes the null version (if there is one) of an object and inserts a delete
  2115  // marker, which becomes the latest version of the object. If there isn't a
  2116  // null version, Amazon S3 does not remove any objects but will still respond
  2117  // that the command was successful.
  2118  //
  2119  // To remove a specific version, you must be the bucket owner and you must use
  2120  // the version Id subresource. Using this subresource permanently deletes the
  2121  // version. If the object deleted is a delete marker, Amazon S3 sets the response
  2122  // header, x-amz-delete-marker, to true.
  2123  //
  2124  // If the object you want to delete is in a bucket where the bucket versioning
  2125  // configuration is MFA Delete enabled, you must include the x-amz-mfa request
  2126  // header in the DELETE versionId request. Requests that include x-amz-mfa must
  2127  // use HTTPS.
  2128  //
  2129  // For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html).
  2130  // To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
  2131  //
  2132  // You can delete objects by explicitly calling DELETE Object or configure its
  2133  // lifecycle (PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html))
  2134  // to enable Amazon S3 to remove them for you. If you want to block users or
  2135  // accounts from removing or deleting objects from your bucket, you must deny
  2136  // them the s3:DeleteObject, s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration
  2137  // actions.
  2138  //
  2139  // The following action is related to DeleteObject:
  2140  //
  2141  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  2142  //
  2143  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2144  // with awserr.Error's Code and Message methods to get detailed information about
  2145  // the error.
  2146  //
  2147  // See the AWS API reference guide for Amazon Simple Storage Service's
  2148  // API operation DeleteObject for usage and error information.
  2149  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
  2150  func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
  2151  	req, out := c.DeleteObjectRequest(input)
  2152  	return out, req.Send()
  2153  }
  2154  
  2155  // DeleteObjectWithContext is the same as DeleteObject with the addition of
  2156  // the ability to pass a context and additional request options.
  2157  //
  2158  // See DeleteObject for details on how to use this API operation.
  2159  //
  2160  // The context must be non-nil and will be used for request cancellation. If
  2161  // the context is nil a panic will occur. In the future the SDK may create
  2162  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2163  // for more information on using Contexts.
  2164  func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
  2165  	req, out := c.DeleteObjectRequest(input)
  2166  	req.SetContext(ctx)
  2167  	req.ApplyOptions(opts...)
  2168  	return out, req.Send()
  2169  }
  2170  
  2171  const opDeleteObjectTagging = "DeleteObjectTagging"
  2172  
  2173  // DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
  2174  // client's request for the DeleteObjectTagging operation. The "output" return
  2175  // value will be populated with the request's response once the request completes
  2176  // successfully.
  2177  //
  2178  // Use "Send" method on the returned Request to send the API call to the service.
  2179  // the "output" return value is not valid until after Send returns without error.
  2180  //
  2181  // See DeleteObjectTagging for more information on using the DeleteObjectTagging
  2182  // API call, and error handling.
  2183  //
  2184  // This method is useful when you want to inject custom logic or configuration
  2185  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2186  //
  2187  //
  2188  //    // Example sending a request using the DeleteObjectTaggingRequest method.
  2189  //    req, resp := client.DeleteObjectTaggingRequest(params)
  2190  //
  2191  //    err := req.Send()
  2192  //    if err == nil { // resp is now filled
  2193  //        fmt.Println(resp)
  2194  //    }
  2195  //
  2196  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
  2197  func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
  2198  	op := &request.Operation{
  2199  		Name:       opDeleteObjectTagging,
  2200  		HTTPMethod: "DELETE",
  2201  		HTTPPath:   "/{Bucket}/{Key+}?tagging",
  2202  	}
  2203  
  2204  	if input == nil {
  2205  		input = &DeleteObjectTaggingInput{}
  2206  	}
  2207  
  2208  	output = &DeleteObjectTaggingOutput{}
  2209  	req = c.newRequest(op, input, output)
  2210  	return
  2211  }
  2212  
  2213  // DeleteObjectTagging API operation for Amazon Simple Storage Service.
  2214  //
  2215  // Removes the entire tag set from the specified object. For more information
  2216  // about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
  2217  //
  2218  // To use this operation, you must have permission to perform the s3:DeleteObjectTagging
  2219  // action.
  2220  //
  2221  // To delete tags of a specific object version, add the versionId query parameter
  2222  // in the request. You will need permission for the s3:DeleteObjectVersionTagging
  2223  // action.
  2224  //
  2225  // The following operations are related to DeleteBucketMetricsConfiguration:
  2226  //
  2227  //    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
  2228  //
  2229  //    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
  2230  //
  2231  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2232  // with awserr.Error's Code and Message methods to get detailed information about
  2233  // the error.
  2234  //
  2235  // See the AWS API reference guide for Amazon Simple Storage Service's
  2236  // API operation DeleteObjectTagging for usage and error information.
  2237  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
  2238  func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
  2239  	req, out := c.DeleteObjectTaggingRequest(input)
  2240  	return out, req.Send()
  2241  }
  2242  
  2243  // DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
  2244  // the ability to pass a context and additional request options.
  2245  //
  2246  // See DeleteObjectTagging for details on how to use this API operation.
  2247  //
  2248  // The context must be non-nil and will be used for request cancellation. If
  2249  // the context is nil a panic will occur. In the future the SDK may create
  2250  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2251  // for more information on using Contexts.
  2252  func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
  2253  	req, out := c.DeleteObjectTaggingRequest(input)
  2254  	req.SetContext(ctx)
  2255  	req.ApplyOptions(opts...)
  2256  	return out, req.Send()
  2257  }
  2258  
  2259  const opDeleteObjects = "DeleteObjects"
  2260  
  2261  // DeleteObjectsRequest generates a "aws/request.Request" representing the
  2262  // client's request for the DeleteObjects operation. The "output" return
  2263  // value will be populated with the request's response once the request completes
  2264  // successfully.
  2265  //
  2266  // Use "Send" method on the returned Request to send the API call to the service.
  2267  // the "output" return value is not valid until after Send returns without error.
  2268  //
  2269  // See DeleteObjects for more information on using the DeleteObjects
  2270  // API call, and error handling.
  2271  //
  2272  // This method is useful when you want to inject custom logic or configuration
  2273  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2274  //
  2275  //
  2276  //    // Example sending a request using the DeleteObjectsRequest method.
  2277  //    req, resp := client.DeleteObjectsRequest(params)
  2278  //
  2279  //    err := req.Send()
  2280  //    if err == nil { // resp is now filled
  2281  //        fmt.Println(resp)
  2282  //    }
  2283  //
  2284  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
  2285  func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
  2286  	op := &request.Operation{
  2287  		Name:       opDeleteObjects,
  2288  		HTTPMethod: "POST",
  2289  		HTTPPath:   "/{Bucket}?delete",
  2290  	}
  2291  
  2292  	if input == nil {
  2293  		input = &DeleteObjectsInput{}
  2294  	}
  2295  
  2296  	output = &DeleteObjectsOutput{}
  2297  	req = c.newRequest(op, input, output)
  2298  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  2299  		Name: "contentMd5Handler",
  2300  		Fn:   checksum.AddBodyContentMD5Handler,
  2301  	})
  2302  	return
  2303  }
  2304  
  2305  // DeleteObjects API operation for Amazon Simple Storage Service.
  2306  //
  2307  // This action enables you to delete multiple objects from a bucket using a
  2308  // single HTTP request. If you know the object keys that you want to delete,
  2309  // then this action provides a suitable alternative to sending individual delete
  2310  // requests, reducing per-request overhead.
  2311  //
  2312  // The request contains a list of up to 1000 keys that you want to delete. In
  2313  // the XML, you provide the object key names, and optionally, version IDs if
  2314  // you want to delete a specific version of the object from a versioning-enabled
  2315  // bucket. For each key, Amazon S3 performs a delete action and returns the
  2316  // result of that delete, success, or failure, in the response. Note that if
  2317  // the object specified in the request is not found, Amazon S3 returns the result
  2318  // as deleted.
  2319  //
  2320  // The action supports two modes for the response: verbose and quiet. By default,
  2321  // the action uses verbose mode in which the response includes the result of
  2322  // deletion of each key in your request. In quiet mode the response includes
  2323  // only keys where the delete action encountered an error. For a successful
  2324  // deletion, the action does not return any information about the delete in
  2325  // the response body.
  2326  //
  2327  // When performing this action on an MFA Delete enabled bucket, that attempts
  2328  // to delete any versioned objects, you must include an MFA token. If you do
  2329  // not provide one, the entire request will fail, even if there are non-versioned
  2330  // objects you are trying to delete. If you provide an invalid token, whether
  2331  // there are versioned keys in the request or not, the entire Multi-Object Delete
  2332  // request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
  2333  //
  2334  // Finally, the Content-MD5 header is required for all Multi-Object Delete requests.
  2335  // Amazon S3 uses the header value to ensure that your request body has not
  2336  // been altered in transit.
  2337  //
  2338  // The following operations are related to DeleteObjects:
  2339  //
  2340  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
  2341  //
  2342  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
  2343  //
  2344  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  2345  //
  2346  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
  2347  //
  2348  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
  2349  //
  2350  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2351  // with awserr.Error's Code and Message methods to get detailed information about
  2352  // the error.
  2353  //
  2354  // See the AWS API reference guide for Amazon Simple Storage Service's
  2355  // API operation DeleteObjects for usage and error information.
  2356  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
  2357  func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
  2358  	req, out := c.DeleteObjectsRequest(input)
  2359  	return out, req.Send()
  2360  }
  2361  
  2362  // DeleteObjectsWithContext is the same as DeleteObjects with the addition of
  2363  // the ability to pass a context and additional request options.
  2364  //
  2365  // See DeleteObjects for details on how to use this API operation.
  2366  //
  2367  // The context must be non-nil and will be used for request cancellation. If
  2368  // the context is nil a panic will occur. In the future the SDK may create
  2369  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2370  // for more information on using Contexts.
  2371  func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
  2372  	req, out := c.DeleteObjectsRequest(input)
  2373  	req.SetContext(ctx)
  2374  	req.ApplyOptions(opts...)
  2375  	return out, req.Send()
  2376  }
  2377  
  2378  const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
  2379  
  2380  // DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
  2381  // client's request for the DeletePublicAccessBlock operation. The "output" return
  2382  // value will be populated with the request's response once the request completes
  2383  // successfully.
  2384  //
  2385  // Use "Send" method on the returned Request to send the API call to the service.
  2386  // the "output" return value is not valid until after Send returns without error.
  2387  //
  2388  // See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
  2389  // API call, and error handling.
  2390  //
  2391  // This method is useful when you want to inject custom logic or configuration
  2392  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2393  //
  2394  //
  2395  //    // Example sending a request using the DeletePublicAccessBlockRequest method.
  2396  //    req, resp := client.DeletePublicAccessBlockRequest(params)
  2397  //
  2398  //    err := req.Send()
  2399  //    if err == nil { // resp is now filled
  2400  //        fmt.Println(resp)
  2401  //    }
  2402  //
  2403  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
  2404  func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
  2405  	op := &request.Operation{
  2406  		Name:       opDeletePublicAccessBlock,
  2407  		HTTPMethod: "DELETE",
  2408  		HTTPPath:   "/{Bucket}?publicAccessBlock",
  2409  	}
  2410  
  2411  	if input == nil {
  2412  		input = &DeletePublicAccessBlockInput{}
  2413  	}
  2414  
  2415  	output = &DeletePublicAccessBlockOutput{}
  2416  	req = c.newRequest(op, input, output)
  2417  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2418  	return
  2419  }
  2420  
  2421  // DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
  2422  //
  2423  // Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use
  2424  // this operation, you must have the s3:PutBucketPublicAccessBlock permission.
  2425  // For more information about permissions, see Permissions Related to Bucket
  2426  // Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  2427  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  2428  //
  2429  // The following operations are related to DeletePublicAccessBlock:
  2430  //
  2431  //    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
  2432  //
  2433  //    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  2434  //
  2435  //    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  2436  //
  2437  //    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
  2438  //
  2439  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2440  // with awserr.Error's Code and Message methods to get detailed information about
  2441  // the error.
  2442  //
  2443  // See the AWS API reference guide for Amazon Simple Storage Service's
  2444  // API operation DeletePublicAccessBlock for usage and error information.
  2445  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
  2446  func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
  2447  	req, out := c.DeletePublicAccessBlockRequest(input)
  2448  	return out, req.Send()
  2449  }
  2450  
  2451  // DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
  2452  // the ability to pass a context and additional request options.
  2453  //
  2454  // See DeletePublicAccessBlock for details on how to use this API operation.
  2455  //
  2456  // The context must be non-nil and will be used for request cancellation. If
  2457  // the context is nil a panic will occur. In the future the SDK may create
  2458  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2459  // for more information on using Contexts.
  2460  func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
  2461  	req, out := c.DeletePublicAccessBlockRequest(input)
  2462  	req.SetContext(ctx)
  2463  	req.ApplyOptions(opts...)
  2464  	return out, req.Send()
  2465  }
  2466  
  2467  const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
  2468  
  2469  // GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
  2470  // client's request for the GetBucketAccelerateConfiguration operation. The "output" return
  2471  // value will be populated with the request's response once the request completes
  2472  // successfully.
  2473  //
  2474  // Use "Send" method on the returned Request to send the API call to the service.
  2475  // the "output" return value is not valid until after Send returns without error.
  2476  //
  2477  // See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
  2478  // API call, and error handling.
  2479  //
  2480  // This method is useful when you want to inject custom logic or configuration
  2481  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2482  //
  2483  //
  2484  //    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
  2485  //    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
  2486  //
  2487  //    err := req.Send()
  2488  //    if err == nil { // resp is now filled
  2489  //        fmt.Println(resp)
  2490  //    }
  2491  //
  2492  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
  2493  func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
  2494  	op := &request.Operation{
  2495  		Name:       opGetBucketAccelerateConfiguration,
  2496  		HTTPMethod: "GET",
  2497  		HTTPPath:   "/{Bucket}?accelerate",
  2498  	}
  2499  
  2500  	if input == nil {
  2501  		input = &GetBucketAccelerateConfigurationInput{}
  2502  	}
  2503  
  2504  	output = &GetBucketAccelerateConfigurationOutput{}
  2505  	req = c.newRequest(op, input, output)
  2506  	return
  2507  }
  2508  
  2509  // GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
  2510  //
  2511  // This implementation of the GET action uses the accelerate subresource to
  2512  // return the Transfer Acceleration state of a bucket, which is either Enabled
  2513  // or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
  2514  // enables you to perform faster data transfers to and from Amazon S3.
  2515  //
  2516  // To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration
  2517  // action. The bucket owner has this permission by default. The bucket owner
  2518  // can grant this permission to others. For more information about permissions,
  2519  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  2520  // and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  2521  // in the Amazon S3 User Guide.
  2522  //
  2523  // You set the Transfer Acceleration state of an existing bucket to Enabled
  2524  // or Suspended by using the PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
  2525  // operation.
  2526  //
  2527  // A GET accelerate request does not return a state value for a bucket that
  2528  // has no transfer acceleration state. A bucket has no Transfer Acceleration
  2529  // state if a state has never been set on the bucket.
  2530  //
  2531  // For more information about transfer acceleration, see Transfer Acceleration
  2532  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
  2533  // in the Amazon S3 User Guide.
  2534  //
  2535  // Related Resources
  2536  //
  2537  //    * PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
  2538  //
  2539  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2540  // with awserr.Error's Code and Message methods to get detailed information about
  2541  // the error.
  2542  //
  2543  // See the AWS API reference guide for Amazon Simple Storage Service's
  2544  // API operation GetBucketAccelerateConfiguration for usage and error information.
  2545  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
  2546  func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
  2547  	req, out := c.GetBucketAccelerateConfigurationRequest(input)
  2548  	return out, req.Send()
  2549  }
  2550  
  2551  // GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
  2552  // the ability to pass a context and additional request options.
  2553  //
  2554  // See GetBucketAccelerateConfiguration for details on how to use this API operation.
  2555  //
  2556  // The context must be non-nil and will be used for request cancellation. If
  2557  // the context is nil a panic will occur. In the future the SDK may create
  2558  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2559  // for more information on using Contexts.
  2560  func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
  2561  	req, out := c.GetBucketAccelerateConfigurationRequest(input)
  2562  	req.SetContext(ctx)
  2563  	req.ApplyOptions(opts...)
  2564  	return out, req.Send()
  2565  }
  2566  
  2567  const opGetBucketAcl = "GetBucketAcl"
  2568  
  2569  // GetBucketAclRequest generates a "aws/request.Request" representing the
  2570  // client's request for the GetBucketAcl operation. The "output" return
  2571  // value will be populated with the request's response once the request completes
  2572  // successfully.
  2573  //
  2574  // Use "Send" method on the returned Request to send the API call to the service.
  2575  // the "output" return value is not valid until after Send returns without error.
  2576  //
  2577  // See GetBucketAcl for more information on using the GetBucketAcl
  2578  // API call, and error handling.
  2579  //
  2580  // This method is useful when you want to inject custom logic or configuration
  2581  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2582  //
  2583  //
  2584  //    // Example sending a request using the GetBucketAclRequest method.
  2585  //    req, resp := client.GetBucketAclRequest(params)
  2586  //
  2587  //    err := req.Send()
  2588  //    if err == nil { // resp is now filled
  2589  //        fmt.Println(resp)
  2590  //    }
  2591  //
  2592  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
  2593  func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
  2594  	op := &request.Operation{
  2595  		Name:       opGetBucketAcl,
  2596  		HTTPMethod: "GET",
  2597  		HTTPPath:   "/{Bucket}?acl",
  2598  	}
  2599  
  2600  	if input == nil {
  2601  		input = &GetBucketAclInput{}
  2602  	}
  2603  
  2604  	output = &GetBucketAclOutput{}
  2605  	req = c.newRequest(op, input, output)
  2606  	return
  2607  }
  2608  
  2609  // GetBucketAcl API operation for Amazon Simple Storage Service.
  2610  //
  2611  // This implementation of the GET action uses the acl subresource to return
  2612  // the access control list (ACL) of a bucket. To use GET to return the ACL of
  2613  // the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission
  2614  // is granted to the anonymous user, you can return the ACL of the bucket without
  2615  // using an authorization header.
  2616  //
  2617  // Related Resources
  2618  //
  2619  //    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
  2620  //
  2621  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2622  // with awserr.Error's Code and Message methods to get detailed information about
  2623  // the error.
  2624  //
  2625  // See the AWS API reference guide for Amazon Simple Storage Service's
  2626  // API operation GetBucketAcl for usage and error information.
  2627  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
  2628  func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
  2629  	req, out := c.GetBucketAclRequest(input)
  2630  	return out, req.Send()
  2631  }
  2632  
  2633  // GetBucketAclWithContext is the same as GetBucketAcl with the addition of
  2634  // the ability to pass a context and additional request options.
  2635  //
  2636  // See GetBucketAcl for details on how to use this API operation.
  2637  //
  2638  // The context must be non-nil and will be used for request cancellation. If
  2639  // the context is nil a panic will occur. In the future the SDK may create
  2640  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2641  // for more information on using Contexts.
  2642  func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
  2643  	req, out := c.GetBucketAclRequest(input)
  2644  	req.SetContext(ctx)
  2645  	req.ApplyOptions(opts...)
  2646  	return out, req.Send()
  2647  }
  2648  
  2649  const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
  2650  
  2651  // GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
  2652  // client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
  2653  // value will be populated with the request's response once the request completes
  2654  // successfully.
  2655  //
  2656  // Use "Send" method on the returned Request to send the API call to the service.
  2657  // the "output" return value is not valid until after Send returns without error.
  2658  //
  2659  // See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
  2660  // API call, and error handling.
  2661  //
  2662  // This method is useful when you want to inject custom logic or configuration
  2663  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2664  //
  2665  //
  2666  //    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
  2667  //    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
  2668  //
  2669  //    err := req.Send()
  2670  //    if err == nil { // resp is now filled
  2671  //        fmt.Println(resp)
  2672  //    }
  2673  //
  2674  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
  2675  func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
  2676  	op := &request.Operation{
  2677  		Name:       opGetBucketAnalyticsConfiguration,
  2678  		HTTPMethod: "GET",
  2679  		HTTPPath:   "/{Bucket}?analytics",
  2680  	}
  2681  
  2682  	if input == nil {
  2683  		input = &GetBucketAnalyticsConfigurationInput{}
  2684  	}
  2685  
  2686  	output = &GetBucketAnalyticsConfigurationOutput{}
  2687  	req = c.newRequest(op, input, output)
  2688  	return
  2689  }
  2690  
  2691  // GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
  2692  //
  2693  // This implementation of the GET action returns an analytics configuration
  2694  // (identified by the analytics configuration ID) from the bucket.
  2695  //
  2696  // To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
  2697  // action. The bucket owner has this permission by default. The bucket owner
  2698  // can grant this permission to others. For more information about permissions,
  2699  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  2700  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  2701  // in the Amazon S3 User Guide.
  2702  //
  2703  // For information about Amazon S3 analytics feature, see Amazon S3 Analytics
  2704  // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
  2705  // in the Amazon S3 User Guide.
  2706  //
  2707  // Related Resources
  2708  //
  2709  //    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
  2710  //
  2711  //    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
  2712  //
  2713  //    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
  2714  //
  2715  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2716  // with awserr.Error's Code and Message methods to get detailed information about
  2717  // the error.
  2718  //
  2719  // See the AWS API reference guide for Amazon Simple Storage Service's
  2720  // API operation GetBucketAnalyticsConfiguration for usage and error information.
  2721  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
  2722  func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
  2723  	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
  2724  	return out, req.Send()
  2725  }
  2726  
  2727  // GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
  2728  // the ability to pass a context and additional request options.
  2729  //
  2730  // See GetBucketAnalyticsConfiguration for details on how to use this API operation.
  2731  //
  2732  // The context must be non-nil and will be used for request cancellation. If
  2733  // the context is nil a panic will occur. In the future the SDK may create
  2734  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2735  // for more information on using Contexts.
  2736  func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
  2737  	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
  2738  	req.SetContext(ctx)
  2739  	req.ApplyOptions(opts...)
  2740  	return out, req.Send()
  2741  }
  2742  
  2743  const opGetBucketCors = "GetBucketCors"
  2744  
  2745  // GetBucketCorsRequest generates a "aws/request.Request" representing the
  2746  // client's request for the GetBucketCors operation. The "output" return
  2747  // value will be populated with the request's response once the request completes
  2748  // successfully.
  2749  //
  2750  // Use "Send" method on the returned Request to send the API call to the service.
  2751  // the "output" return value is not valid until after Send returns without error.
  2752  //
  2753  // See GetBucketCors for more information on using the GetBucketCors
  2754  // API call, and error handling.
  2755  //
  2756  // This method is useful when you want to inject custom logic or configuration
  2757  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2758  //
  2759  //
  2760  //    // Example sending a request using the GetBucketCorsRequest method.
  2761  //    req, resp := client.GetBucketCorsRequest(params)
  2762  //
  2763  //    err := req.Send()
  2764  //    if err == nil { // resp is now filled
  2765  //        fmt.Println(resp)
  2766  //    }
  2767  //
  2768  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
  2769  func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
  2770  	op := &request.Operation{
  2771  		Name:       opGetBucketCors,
  2772  		HTTPMethod: "GET",
  2773  		HTTPPath:   "/{Bucket}?cors",
  2774  	}
  2775  
  2776  	if input == nil {
  2777  		input = &GetBucketCorsInput{}
  2778  	}
  2779  
  2780  	output = &GetBucketCorsOutput{}
  2781  	req = c.newRequest(op, input, output)
  2782  	return
  2783  }
  2784  
  2785  // GetBucketCors API operation for Amazon Simple Storage Service.
  2786  //
  2787  // Returns the cors configuration information set for the bucket.
  2788  //
  2789  // To use this operation, you must have permission to perform the s3:GetBucketCORS
  2790  // action. By default, the bucket owner has this permission and can grant it
  2791  // to others.
  2792  //
  2793  // For more information about cors, see Enabling Cross-Origin Resource Sharing
  2794  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html).
  2795  //
  2796  // The following operations are related to GetBucketCors:
  2797  //
  2798  //    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
  2799  //
  2800  //    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
  2801  //
  2802  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2803  // with awserr.Error's Code and Message methods to get detailed information about
  2804  // the error.
  2805  //
  2806  // See the AWS API reference guide for Amazon Simple Storage Service's
  2807  // API operation GetBucketCors for usage and error information.
  2808  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
  2809  func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
  2810  	req, out := c.GetBucketCorsRequest(input)
  2811  	return out, req.Send()
  2812  }
  2813  
  2814  // GetBucketCorsWithContext is the same as GetBucketCors with the addition of
  2815  // the ability to pass a context and additional request options.
  2816  //
  2817  // See GetBucketCors for details on how to use this API operation.
  2818  //
  2819  // The context must be non-nil and will be used for request cancellation. If
  2820  // the context is nil a panic will occur. In the future the SDK may create
  2821  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2822  // for more information on using Contexts.
  2823  func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
  2824  	req, out := c.GetBucketCorsRequest(input)
  2825  	req.SetContext(ctx)
  2826  	req.ApplyOptions(opts...)
  2827  	return out, req.Send()
  2828  }
  2829  
  2830  const opGetBucketEncryption = "GetBucketEncryption"
  2831  
  2832  // GetBucketEncryptionRequest generates a "aws/request.Request" representing the
  2833  // client's request for the GetBucketEncryption operation. The "output" return
  2834  // value will be populated with the request's response once the request completes
  2835  // successfully.
  2836  //
  2837  // Use "Send" method on the returned Request to send the API call to the service.
  2838  // the "output" return value is not valid until after Send returns without error.
  2839  //
  2840  // See GetBucketEncryption for more information on using the GetBucketEncryption
  2841  // API call, and error handling.
  2842  //
  2843  // This method is useful when you want to inject custom logic or configuration
  2844  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2845  //
  2846  //
  2847  //    // Example sending a request using the GetBucketEncryptionRequest method.
  2848  //    req, resp := client.GetBucketEncryptionRequest(params)
  2849  //
  2850  //    err := req.Send()
  2851  //    if err == nil { // resp is now filled
  2852  //        fmt.Println(resp)
  2853  //    }
  2854  //
  2855  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
  2856  func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
  2857  	op := &request.Operation{
  2858  		Name:       opGetBucketEncryption,
  2859  		HTTPMethod: "GET",
  2860  		HTTPPath:   "/{Bucket}?encryption",
  2861  	}
  2862  
  2863  	if input == nil {
  2864  		input = &GetBucketEncryptionInput{}
  2865  	}
  2866  
  2867  	output = &GetBucketEncryptionOutput{}
  2868  	req = c.newRequest(op, input, output)
  2869  	return
  2870  }
  2871  
  2872  // GetBucketEncryption API operation for Amazon Simple Storage Service.
  2873  //
  2874  // Returns the default encryption configuration for an Amazon S3 bucket. If
  2875  // the bucket does not have a default encryption configuration, GetBucketEncryption
  2876  // returns ServerSideEncryptionConfigurationNotFoundError.
  2877  //
  2878  // For information about the Amazon S3 default encryption feature, see Amazon
  2879  // S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
  2880  //
  2881  // To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration
  2882  // action. The bucket owner has this permission by default. The bucket owner
  2883  // can grant this permission to others. For more information about permissions,
  2884  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  2885  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  2886  //
  2887  // The following operations are related to GetBucketEncryption:
  2888  //
  2889  //    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  2890  //
  2891  //    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
  2892  //
  2893  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2894  // with awserr.Error's Code and Message methods to get detailed information about
  2895  // the error.
  2896  //
  2897  // See the AWS API reference guide for Amazon Simple Storage Service's
  2898  // API operation GetBucketEncryption for usage and error information.
  2899  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
  2900  func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
  2901  	req, out := c.GetBucketEncryptionRequest(input)
  2902  	return out, req.Send()
  2903  }
  2904  
  2905  // GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
  2906  // the ability to pass a context and additional request options.
  2907  //
  2908  // See GetBucketEncryption for details on how to use this API operation.
  2909  //
  2910  // The context must be non-nil and will be used for request cancellation. If
  2911  // the context is nil a panic will occur. In the future the SDK may create
  2912  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2913  // for more information on using Contexts.
  2914  func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
  2915  	req, out := c.GetBucketEncryptionRequest(input)
  2916  	req.SetContext(ctx)
  2917  	req.ApplyOptions(opts...)
  2918  	return out, req.Send()
  2919  }
  2920  
  2921  const opGetBucketIntelligentTieringConfiguration = "GetBucketIntelligentTieringConfiguration"
  2922  
  2923  // GetBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
  2924  // client's request for the GetBucketIntelligentTieringConfiguration operation. The "output" return
  2925  // value will be populated with the request's response once the request completes
  2926  // successfully.
  2927  //
  2928  // Use "Send" method on the returned Request to send the API call to the service.
  2929  // the "output" return value is not valid until after Send returns without error.
  2930  //
  2931  // See GetBucketIntelligentTieringConfiguration for more information on using the GetBucketIntelligentTieringConfiguration
  2932  // API call, and error handling.
  2933  //
  2934  // This method is useful when you want to inject custom logic or configuration
  2935  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2936  //
  2937  //
  2938  //    // Example sending a request using the GetBucketIntelligentTieringConfigurationRequest method.
  2939  //    req, resp := client.GetBucketIntelligentTieringConfigurationRequest(params)
  2940  //
  2941  //    err := req.Send()
  2942  //    if err == nil { // resp is now filled
  2943  //        fmt.Println(resp)
  2944  //    }
  2945  //
  2946  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
  2947  func (c *S3) GetBucketIntelligentTieringConfigurationRequest(input *GetBucketIntelligentTieringConfigurationInput) (req *request.Request, output *GetBucketIntelligentTieringConfigurationOutput) {
  2948  	op := &request.Operation{
  2949  		Name:       opGetBucketIntelligentTieringConfiguration,
  2950  		HTTPMethod: "GET",
  2951  		HTTPPath:   "/{Bucket}?intelligent-tiering",
  2952  	}
  2953  
  2954  	if input == nil {
  2955  		input = &GetBucketIntelligentTieringConfigurationInput{}
  2956  	}
  2957  
  2958  	output = &GetBucketIntelligentTieringConfigurationOutput{}
  2959  	req = c.newRequest(op, input, output)
  2960  	return
  2961  }
  2962  
  2963  // GetBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
  2964  //
  2965  // Gets the S3 Intelligent-Tiering configuration from the specified bucket.
  2966  //
  2967  // The S3 Intelligent-Tiering storage class is designed to optimize storage
  2968  // costs by automatically moving data to the most cost-effective storage access
  2969  // tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  2970  // delivers automatic cost savings in two low latency and high throughput access
  2971  // tiers. For data that can be accessed asynchronously, you can choose to activate
  2972  // automatic archiving capabilities within the S3 Intelligent-Tiering storage
  2973  // class.
  2974  //
  2975  // The S3 Intelligent-Tiering storage class is the ideal storage class for data
  2976  // with unknown, changing, or unpredictable access patterns, independent of
  2977  // object size or retention period. If the size of an object is less than 128
  2978  // KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
  2979  // they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
  2980  // storage class.
  2981  //
  2982  // For more information, see Storage class for automatically optimizing frequently
  2983  // and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
  2984  //
  2985  // Operations related to GetBucketIntelligentTieringConfiguration include:
  2986  //
  2987  //    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
  2988  //
  2989  //    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
  2990  //
  2991  //    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
  2992  //
  2993  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2994  // with awserr.Error's Code and Message methods to get detailed information about
  2995  // the error.
  2996  //
  2997  // See the AWS API reference guide for Amazon Simple Storage Service's
  2998  // API operation GetBucketIntelligentTieringConfiguration for usage and error information.
  2999  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
  3000  func (c *S3) GetBucketIntelligentTieringConfiguration(input *GetBucketIntelligentTieringConfigurationInput) (*GetBucketIntelligentTieringConfigurationOutput, error) {
  3001  	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
  3002  	return out, req.Send()
  3003  }
  3004  
  3005  // GetBucketIntelligentTieringConfigurationWithContext is the same as GetBucketIntelligentTieringConfiguration with the addition of
  3006  // the ability to pass a context and additional request options.
  3007  //
  3008  // See GetBucketIntelligentTieringConfiguration for details on how to use this API operation.
  3009  //
  3010  // The context must be non-nil and will be used for request cancellation. If
  3011  // the context is nil a panic will occur. In the future the SDK may create
  3012  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3013  // for more information on using Contexts.
  3014  func (c *S3) GetBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *GetBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*GetBucketIntelligentTieringConfigurationOutput, error) {
  3015  	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
  3016  	req.SetContext(ctx)
  3017  	req.ApplyOptions(opts...)
  3018  	return out, req.Send()
  3019  }
  3020  
  3021  const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
  3022  
  3023  // GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
  3024  // client's request for the GetBucketInventoryConfiguration operation. The "output" return
  3025  // value will be populated with the request's response once the request completes
  3026  // successfully.
  3027  //
  3028  // Use "Send" method on the returned Request to send the API call to the service.
  3029  // the "output" return value is not valid until after Send returns without error.
  3030  //
  3031  // See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
  3032  // API call, and error handling.
  3033  //
  3034  // This method is useful when you want to inject custom logic or configuration
  3035  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3036  //
  3037  //
  3038  //    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
  3039  //    req, resp := client.GetBucketInventoryConfigurationRequest(params)
  3040  //
  3041  //    err := req.Send()
  3042  //    if err == nil { // resp is now filled
  3043  //        fmt.Println(resp)
  3044  //    }
  3045  //
  3046  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
  3047  func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
  3048  	op := &request.Operation{
  3049  		Name:       opGetBucketInventoryConfiguration,
  3050  		HTTPMethod: "GET",
  3051  		HTTPPath:   "/{Bucket}?inventory",
  3052  	}
  3053  
  3054  	if input == nil {
  3055  		input = &GetBucketInventoryConfigurationInput{}
  3056  	}
  3057  
  3058  	output = &GetBucketInventoryConfigurationOutput{}
  3059  	req = c.newRequest(op, input, output)
  3060  	return
  3061  }
  3062  
  3063  // GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
  3064  //
  3065  // Returns an inventory configuration (identified by the inventory configuration
  3066  // ID) from the bucket.
  3067  //
  3068  // To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
  3069  // action. The bucket owner has this permission by default and can grant this
  3070  // permission to others. For more information about permissions, see Permissions
  3071  // Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  3072  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  3073  //
  3074  // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
  3075  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
  3076  //
  3077  // The following operations are related to GetBucketInventoryConfiguration:
  3078  //
  3079  //    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
  3080  //
  3081  //    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
  3082  //
  3083  //    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
  3084  //
  3085  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3086  // with awserr.Error's Code and Message methods to get detailed information about
  3087  // the error.
  3088  //
  3089  // See the AWS API reference guide for Amazon Simple Storage Service's
  3090  // API operation GetBucketInventoryConfiguration for usage and error information.
  3091  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
  3092  func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
  3093  	req, out := c.GetBucketInventoryConfigurationRequest(input)
  3094  	return out, req.Send()
  3095  }
  3096  
  3097  // GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
  3098  // the ability to pass a context and additional request options.
  3099  //
  3100  // See GetBucketInventoryConfiguration for details on how to use this API operation.
  3101  //
  3102  // The context must be non-nil and will be used for request cancellation. If
  3103  // the context is nil a panic will occur. In the future the SDK may create
  3104  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3105  // for more information on using Contexts.
  3106  func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
  3107  	req, out := c.GetBucketInventoryConfigurationRequest(input)
  3108  	req.SetContext(ctx)
  3109  	req.ApplyOptions(opts...)
  3110  	return out, req.Send()
  3111  }
  3112  
  3113  const opGetBucketLifecycle = "GetBucketLifecycle"
  3114  
  3115  // GetBucketLifecycleRequest generates a "aws/request.Request" representing the
  3116  // client's request for the GetBucketLifecycle operation. The "output" return
  3117  // value will be populated with the request's response once the request completes
  3118  // successfully.
  3119  //
  3120  // Use "Send" method on the returned Request to send the API call to the service.
  3121  // the "output" return value is not valid until after Send returns without error.
  3122  //
  3123  // See GetBucketLifecycle for more information on using the GetBucketLifecycle
  3124  // API call, and error handling.
  3125  //
  3126  // This method is useful when you want to inject custom logic or configuration
  3127  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3128  //
  3129  //
  3130  //    // Example sending a request using the GetBucketLifecycleRequest method.
  3131  //    req, resp := client.GetBucketLifecycleRequest(params)
  3132  //
  3133  //    err := req.Send()
  3134  //    if err == nil { // resp is now filled
  3135  //        fmt.Println(resp)
  3136  //    }
  3137  //
  3138  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
  3139  //
  3140  // Deprecated: GetBucketLifecycle has been deprecated
  3141  func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
  3142  	if c.Client.Config.Logger != nil {
  3143  		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
  3144  	}
  3145  	op := &request.Operation{
  3146  		Name:       opGetBucketLifecycle,
  3147  		HTTPMethod: "GET",
  3148  		HTTPPath:   "/{Bucket}?lifecycle",
  3149  	}
  3150  
  3151  	if input == nil {
  3152  		input = &GetBucketLifecycleInput{}
  3153  	}
  3154  
  3155  	output = &GetBucketLifecycleOutput{}
  3156  	req = c.newRequest(op, input, output)
  3157  	return
  3158  }
  3159  
  3160  // GetBucketLifecycle API operation for Amazon Simple Storage Service.
  3161  //
  3162  //
  3163  // For an updated version of this API, see GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html).
  3164  // If you configured a bucket lifecycle using the filter element, you should
  3165  // see the updated version of this topic. This topic is provided for backward
  3166  // compatibility.
  3167  //
  3168  // Returns the lifecycle configuration information set on the bucket. For information
  3169  // about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
  3170  //
  3171  // To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
  3172  // action. The bucket owner has this permission by default. The bucket owner
  3173  // can grant this permission to others. For more information about permissions,
  3174  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  3175  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  3176  //
  3177  // GetBucketLifecycle has the following special error:
  3178  //
  3179  //    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
  3180  //    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
  3181  //    Code Prefix: Client
  3182  //
  3183  // The following operations are related to GetBucketLifecycle:
  3184  //
  3185  //    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
  3186  //
  3187  //    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
  3188  //
  3189  //    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
  3190  //
  3191  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3192  // with awserr.Error's Code and Message methods to get detailed information about
  3193  // the error.
  3194  //
  3195  // See the AWS API reference guide for Amazon Simple Storage Service's
  3196  // API operation GetBucketLifecycle for usage and error information.
  3197  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
  3198  //
  3199  // Deprecated: GetBucketLifecycle has been deprecated
  3200  func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
  3201  	req, out := c.GetBucketLifecycleRequest(input)
  3202  	return out, req.Send()
  3203  }
  3204  
  3205  // GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
  3206  // the ability to pass a context and additional request options.
  3207  //
  3208  // See GetBucketLifecycle for details on how to use this API operation.
  3209  //
  3210  // The context must be non-nil and will be used for request cancellation. If
  3211  // the context is nil a panic will occur. In the future the SDK may create
  3212  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3213  // for more information on using Contexts.
  3214  //
  3215  // Deprecated: GetBucketLifecycleWithContext has been deprecated
  3216  func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
  3217  	req, out := c.GetBucketLifecycleRequest(input)
  3218  	req.SetContext(ctx)
  3219  	req.ApplyOptions(opts...)
  3220  	return out, req.Send()
  3221  }
  3222  
  3223  const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
  3224  
  3225  // GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
  3226  // client's request for the GetBucketLifecycleConfiguration operation. The "output" return
  3227  // value will be populated with the request's response once the request completes
  3228  // successfully.
  3229  //
  3230  // Use "Send" method on the returned Request to send the API call to the service.
  3231  // the "output" return value is not valid until after Send returns without error.
  3232  //
  3233  // See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
  3234  // API call, and error handling.
  3235  //
  3236  // This method is useful when you want to inject custom logic or configuration
  3237  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3238  //
  3239  //
  3240  //    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
  3241  //    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
  3242  //
  3243  //    err := req.Send()
  3244  //    if err == nil { // resp is now filled
  3245  //        fmt.Println(resp)
  3246  //    }
  3247  //
  3248  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
  3249  func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
  3250  	op := &request.Operation{
  3251  		Name:       opGetBucketLifecycleConfiguration,
  3252  		HTTPMethod: "GET",
  3253  		HTTPPath:   "/{Bucket}?lifecycle",
  3254  	}
  3255  
  3256  	if input == nil {
  3257  		input = &GetBucketLifecycleConfigurationInput{}
  3258  	}
  3259  
  3260  	output = &GetBucketLifecycleConfigurationOutput{}
  3261  	req = c.newRequest(op, input, output)
  3262  	return
  3263  }
  3264  
  3265  // GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
  3266  //
  3267  //
  3268  // Bucket lifecycle configuration now supports specifying a lifecycle rule using
  3269  // an object key name prefix, one or more object tags, or a combination of both.
  3270  // Accordingly, this section describes the latest API. The response describes
  3271  // the new filter element that you can use to specify a filter to select a subset
  3272  // of objects to which the rule applies. If you are using a previous version
  3273  // of the lifecycle configuration, it still works. For the earlier action, see
  3274  // GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html).
  3275  //
  3276  // Returns the lifecycle configuration information set on the bucket. For information
  3277  // about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
  3278  //
  3279  // To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
  3280  // action. The bucket owner has this permission, by default. The bucket owner
  3281  // can grant this permission to others. For more information about permissions,
  3282  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  3283  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  3284  //
  3285  // GetBucketLifecycleConfiguration has the following special error:
  3286  //
  3287  //    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
  3288  //    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
  3289  //    Code Prefix: Client
  3290  //
  3291  // The following operations are related to GetBucketLifecycleConfiguration:
  3292  //
  3293  //    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)
  3294  //
  3295  //    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
  3296  //
  3297  //    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
  3298  //
  3299  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3300  // with awserr.Error's Code and Message methods to get detailed information about
  3301  // the error.
  3302  //
  3303  // See the AWS API reference guide for Amazon Simple Storage Service's
  3304  // API operation GetBucketLifecycleConfiguration for usage and error information.
  3305  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
  3306  func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
  3307  	req, out := c.GetBucketLifecycleConfigurationRequest(input)
  3308  	return out, req.Send()
  3309  }
  3310  
  3311  // GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
  3312  // the ability to pass a context and additional request options.
  3313  //
  3314  // See GetBucketLifecycleConfiguration for details on how to use this API operation.
  3315  //
  3316  // The context must be non-nil and will be used for request cancellation. If
  3317  // the context is nil a panic will occur. In the future the SDK may create
  3318  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3319  // for more information on using Contexts.
  3320  func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
  3321  	req, out := c.GetBucketLifecycleConfigurationRequest(input)
  3322  	req.SetContext(ctx)
  3323  	req.ApplyOptions(opts...)
  3324  	return out, req.Send()
  3325  }
  3326  
  3327  const opGetBucketLocation = "GetBucketLocation"
  3328  
  3329  // GetBucketLocationRequest generates a "aws/request.Request" representing the
  3330  // client's request for the GetBucketLocation operation. The "output" return
  3331  // value will be populated with the request's response once the request completes
  3332  // successfully.
  3333  //
  3334  // Use "Send" method on the returned Request to send the API call to the service.
  3335  // the "output" return value is not valid until after Send returns without error.
  3336  //
  3337  // See GetBucketLocation for more information on using the GetBucketLocation
  3338  // API call, and error handling.
  3339  //
  3340  // This method is useful when you want to inject custom logic or configuration
  3341  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3342  //
  3343  //
  3344  //    // Example sending a request using the GetBucketLocationRequest method.
  3345  //    req, resp := client.GetBucketLocationRequest(params)
  3346  //
  3347  //    err := req.Send()
  3348  //    if err == nil { // resp is now filled
  3349  //        fmt.Println(resp)
  3350  //    }
  3351  //
  3352  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
  3353  func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
  3354  	op := &request.Operation{
  3355  		Name:       opGetBucketLocation,
  3356  		HTTPMethod: "GET",
  3357  		HTTPPath:   "/{Bucket}?location",
  3358  	}
  3359  
  3360  	if input == nil {
  3361  		input = &GetBucketLocationInput{}
  3362  	}
  3363  
  3364  	output = &GetBucketLocationOutput{}
  3365  	req = c.newRequest(op, input, output)
  3366  	return
  3367  }
  3368  
  3369  // GetBucketLocation API operation for Amazon Simple Storage Service.
  3370  //
  3371  // Returns the Region the bucket resides in. You set the bucket's Region using
  3372  // the LocationConstraint request parameter in a CreateBucket request. For more
  3373  // information, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
  3374  //
  3375  // To use this implementation of the operation, you must be the bucket owner.
  3376  //
  3377  // To use this API against an access point, provide the alias of the access
  3378  // point in place of the bucket name.
  3379  //
  3380  // The following operations are related to GetBucketLocation:
  3381  //
  3382  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  3383  //
  3384  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  3385  //
  3386  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3387  // with awserr.Error's Code and Message methods to get detailed information about
  3388  // the error.
  3389  //
  3390  // See the AWS API reference guide for Amazon Simple Storage Service's
  3391  // API operation GetBucketLocation for usage and error information.
  3392  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
  3393  func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
  3394  	req, out := c.GetBucketLocationRequest(input)
  3395  	return out, req.Send()
  3396  }
  3397  
  3398  // GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
  3399  // the ability to pass a context and additional request options.
  3400  //
  3401  // See GetBucketLocation for details on how to use this API operation.
  3402  //
  3403  // The context must be non-nil and will be used for request cancellation. If
  3404  // the context is nil a panic will occur. In the future the SDK may create
  3405  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3406  // for more information on using Contexts.
  3407  func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
  3408  	req, out := c.GetBucketLocationRequest(input)
  3409  	req.SetContext(ctx)
  3410  	req.ApplyOptions(opts...)
  3411  	return out, req.Send()
  3412  }
  3413  
  3414  const opGetBucketLogging = "GetBucketLogging"
  3415  
  3416  // GetBucketLoggingRequest generates a "aws/request.Request" representing the
  3417  // client's request for the GetBucketLogging operation. The "output" return
  3418  // value will be populated with the request's response once the request completes
  3419  // successfully.
  3420  //
  3421  // Use "Send" method on the returned Request to send the API call to the service.
  3422  // the "output" return value is not valid until after Send returns without error.
  3423  //
  3424  // See GetBucketLogging for more information on using the GetBucketLogging
  3425  // API call, and error handling.
  3426  //
  3427  // This method is useful when you want to inject custom logic or configuration
  3428  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3429  //
  3430  //
  3431  //    // Example sending a request using the GetBucketLoggingRequest method.
  3432  //    req, resp := client.GetBucketLoggingRequest(params)
  3433  //
  3434  //    err := req.Send()
  3435  //    if err == nil { // resp is now filled
  3436  //        fmt.Println(resp)
  3437  //    }
  3438  //
  3439  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
  3440  func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
  3441  	op := &request.Operation{
  3442  		Name:       opGetBucketLogging,
  3443  		HTTPMethod: "GET",
  3444  		HTTPPath:   "/{Bucket}?logging",
  3445  	}
  3446  
  3447  	if input == nil {
  3448  		input = &GetBucketLoggingInput{}
  3449  	}
  3450  
  3451  	output = &GetBucketLoggingOutput{}
  3452  	req = c.newRequest(op, input, output)
  3453  	return
  3454  }
  3455  
  3456  // GetBucketLogging API operation for Amazon Simple Storage Service.
  3457  //
  3458  // Returns the logging status of a bucket and the permissions users have to
  3459  // view and modify that status. To use GET, you must be the bucket owner.
  3460  //
  3461  // The following operations are related to GetBucketLogging:
  3462  //
  3463  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  3464  //
  3465  //    * PutBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)
  3466  //
  3467  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3468  // with awserr.Error's Code and Message methods to get detailed information about
  3469  // the error.
  3470  //
  3471  // See the AWS API reference guide for Amazon Simple Storage Service's
  3472  // API operation GetBucketLogging for usage and error information.
  3473  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
  3474  func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
  3475  	req, out := c.GetBucketLoggingRequest(input)
  3476  	return out, req.Send()
  3477  }
  3478  
  3479  // GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
  3480  // the ability to pass a context and additional request options.
  3481  //
  3482  // See GetBucketLogging for details on how to use this API operation.
  3483  //
  3484  // The context must be non-nil and will be used for request cancellation. If
  3485  // the context is nil a panic will occur. In the future the SDK may create
  3486  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3487  // for more information on using Contexts.
  3488  func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
  3489  	req, out := c.GetBucketLoggingRequest(input)
  3490  	req.SetContext(ctx)
  3491  	req.ApplyOptions(opts...)
  3492  	return out, req.Send()
  3493  }
  3494  
  3495  const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
  3496  
  3497  // GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
  3498  // client's request for the GetBucketMetricsConfiguration operation. The "output" return
  3499  // value will be populated with the request's response once the request completes
  3500  // successfully.
  3501  //
  3502  // Use "Send" method on the returned Request to send the API call to the service.
  3503  // the "output" return value is not valid until after Send returns without error.
  3504  //
  3505  // See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
  3506  // API call, and error handling.
  3507  //
  3508  // This method is useful when you want to inject custom logic or configuration
  3509  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3510  //
  3511  //
  3512  //    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
  3513  //    req, resp := client.GetBucketMetricsConfigurationRequest(params)
  3514  //
  3515  //    err := req.Send()
  3516  //    if err == nil { // resp is now filled
  3517  //        fmt.Println(resp)
  3518  //    }
  3519  //
  3520  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
  3521  func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
  3522  	op := &request.Operation{
  3523  		Name:       opGetBucketMetricsConfiguration,
  3524  		HTTPMethod: "GET",
  3525  		HTTPPath:   "/{Bucket}?metrics",
  3526  	}
  3527  
  3528  	if input == nil {
  3529  		input = &GetBucketMetricsConfigurationInput{}
  3530  	}
  3531  
  3532  	output = &GetBucketMetricsConfigurationOutput{}
  3533  	req = c.newRequest(op, input, output)
  3534  	return
  3535  }
  3536  
  3537  // GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
  3538  //
  3539  // Gets a metrics configuration (specified by the metrics configuration ID)
  3540  // from the bucket. Note that this doesn't include the daily storage metrics.
  3541  //
  3542  // To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
  3543  // action. The bucket owner has this permission by default. The bucket owner
  3544  // can grant this permission to others. For more information about permissions,
  3545  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  3546  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  3547  //
  3548  // For information about CloudWatch request metrics for Amazon S3, see Monitoring
  3549  // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
  3550  //
  3551  // The following operations are related to GetBucketMetricsConfiguration:
  3552  //
  3553  //    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
  3554  //
  3555  //    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
  3556  //
  3557  //    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
  3558  //
  3559  //    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
  3560  //
  3561  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3562  // with awserr.Error's Code and Message methods to get detailed information about
  3563  // the error.
  3564  //
  3565  // See the AWS API reference guide for Amazon Simple Storage Service's
  3566  // API operation GetBucketMetricsConfiguration for usage and error information.
  3567  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
  3568  func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
  3569  	req, out := c.GetBucketMetricsConfigurationRequest(input)
  3570  	return out, req.Send()
  3571  }
  3572  
  3573  // GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
  3574  // the ability to pass a context and additional request options.
  3575  //
  3576  // See GetBucketMetricsConfiguration for details on how to use this API operation.
  3577  //
  3578  // The context must be non-nil and will be used for request cancellation. If
  3579  // the context is nil a panic will occur. In the future the SDK may create
  3580  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3581  // for more information on using Contexts.
  3582  func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
  3583  	req, out := c.GetBucketMetricsConfigurationRequest(input)
  3584  	req.SetContext(ctx)
  3585  	req.ApplyOptions(opts...)
  3586  	return out, req.Send()
  3587  }
  3588  
  3589  const opGetBucketNotification = "GetBucketNotification"
  3590  
  3591  // GetBucketNotificationRequest generates a "aws/request.Request" representing the
  3592  // client's request for the GetBucketNotification operation. The "output" return
  3593  // value will be populated with the request's response once the request completes
  3594  // successfully.
  3595  //
  3596  // Use "Send" method on the returned Request to send the API call to the service.
  3597  // the "output" return value is not valid until after Send returns without error.
  3598  //
  3599  // See GetBucketNotification for more information on using the GetBucketNotification
  3600  // API call, and error handling.
  3601  //
  3602  // This method is useful when you want to inject custom logic or configuration
  3603  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3604  //
  3605  //
  3606  //    // Example sending a request using the GetBucketNotificationRequest method.
  3607  //    req, resp := client.GetBucketNotificationRequest(params)
  3608  //
  3609  //    err := req.Send()
  3610  //    if err == nil { // resp is now filled
  3611  //        fmt.Println(resp)
  3612  //    }
  3613  //
  3614  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
  3615  //
  3616  // Deprecated: GetBucketNotification has been deprecated
  3617  func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
  3618  	if c.Client.Config.Logger != nil {
  3619  		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
  3620  	}
  3621  	op := &request.Operation{
  3622  		Name:       opGetBucketNotification,
  3623  		HTTPMethod: "GET",
  3624  		HTTPPath:   "/{Bucket}?notification",
  3625  	}
  3626  
  3627  	if input == nil {
  3628  		input = &GetBucketNotificationConfigurationRequest{}
  3629  	}
  3630  
  3631  	output = &NotificationConfigurationDeprecated{}
  3632  	req = c.newRequest(op, input, output)
  3633  	return
  3634  }
  3635  
  3636  // GetBucketNotification API operation for Amazon Simple Storage Service.
  3637  //
  3638  // No longer used, see GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html).
  3639  //
  3640  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3641  // with awserr.Error's Code and Message methods to get detailed information about
  3642  // the error.
  3643  //
  3644  // See the AWS API reference guide for Amazon Simple Storage Service's
  3645  // API operation GetBucketNotification for usage and error information.
  3646  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
  3647  //
  3648  // Deprecated: GetBucketNotification has been deprecated
  3649  func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
  3650  	req, out := c.GetBucketNotificationRequest(input)
  3651  	return out, req.Send()
  3652  }
  3653  
  3654  // GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
  3655  // the ability to pass a context and additional request options.
  3656  //
  3657  // See GetBucketNotification for details on how to use this API operation.
  3658  //
  3659  // The context must be non-nil and will be used for request cancellation. If
  3660  // the context is nil a panic will occur. In the future the SDK may create
  3661  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3662  // for more information on using Contexts.
  3663  //
  3664  // Deprecated: GetBucketNotificationWithContext has been deprecated
  3665  func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
  3666  	req, out := c.GetBucketNotificationRequest(input)
  3667  	req.SetContext(ctx)
  3668  	req.ApplyOptions(opts...)
  3669  	return out, req.Send()
  3670  }
  3671  
  3672  const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
  3673  
  3674  // GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
  3675  // client's request for the GetBucketNotificationConfiguration operation. The "output" return
  3676  // value will be populated with the request's response once the request completes
  3677  // successfully.
  3678  //
  3679  // Use "Send" method on the returned Request to send the API call to the service.
  3680  // the "output" return value is not valid until after Send returns without error.
  3681  //
  3682  // See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
  3683  // API call, and error handling.
  3684  //
  3685  // This method is useful when you want to inject custom logic or configuration
  3686  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3687  //
  3688  //
  3689  //    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
  3690  //    req, resp := client.GetBucketNotificationConfigurationRequest(params)
  3691  //
  3692  //    err := req.Send()
  3693  //    if err == nil { // resp is now filled
  3694  //        fmt.Println(resp)
  3695  //    }
  3696  //
  3697  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
  3698  func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
  3699  	op := &request.Operation{
  3700  		Name:       opGetBucketNotificationConfiguration,
  3701  		HTTPMethod: "GET",
  3702  		HTTPPath:   "/{Bucket}?notification",
  3703  	}
  3704  
  3705  	if input == nil {
  3706  		input = &GetBucketNotificationConfigurationRequest{}
  3707  	}
  3708  
  3709  	output = &NotificationConfiguration{}
  3710  	req = c.newRequest(op, input, output)
  3711  	return
  3712  }
  3713  
  3714  // GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
  3715  //
  3716  // Returns the notification configuration of a bucket.
  3717  //
  3718  // If notifications are not enabled on the bucket, the action returns an empty
  3719  // NotificationConfiguration element.
  3720  //
  3721  // By default, you must be the bucket owner to read the notification configuration
  3722  // of a bucket. However, the bucket owner can use a bucket policy to grant permission
  3723  // to other users to read this configuration with the s3:GetBucketNotification
  3724  // permission.
  3725  //
  3726  // For more information about setting and reading the notification configuration
  3727  // on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
  3728  // For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
  3729  //
  3730  // The following action is related to GetBucketNotification:
  3731  //
  3732  //    * PutBucketNotification (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html)
  3733  //
  3734  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3735  // with awserr.Error's Code and Message methods to get detailed information about
  3736  // the error.
  3737  //
  3738  // See the AWS API reference guide for Amazon Simple Storage Service's
  3739  // API operation GetBucketNotificationConfiguration for usage and error information.
  3740  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
  3741  func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
  3742  	req, out := c.GetBucketNotificationConfigurationRequest(input)
  3743  	return out, req.Send()
  3744  }
  3745  
  3746  // GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
  3747  // the ability to pass a context and additional request options.
  3748  //
  3749  // See GetBucketNotificationConfiguration for details on how to use this API operation.
  3750  //
  3751  // The context must be non-nil and will be used for request cancellation. If
  3752  // the context is nil a panic will occur. In the future the SDK may create
  3753  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3754  // for more information on using Contexts.
  3755  func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
  3756  	req, out := c.GetBucketNotificationConfigurationRequest(input)
  3757  	req.SetContext(ctx)
  3758  	req.ApplyOptions(opts...)
  3759  	return out, req.Send()
  3760  }
  3761  
  3762  const opGetBucketOwnershipControls = "GetBucketOwnershipControls"
  3763  
  3764  // GetBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
  3765  // client's request for the GetBucketOwnershipControls operation. The "output" return
  3766  // value will be populated with the request's response once the request completes
  3767  // successfully.
  3768  //
  3769  // Use "Send" method on the returned Request to send the API call to the service.
  3770  // the "output" return value is not valid until after Send returns without error.
  3771  //
  3772  // See GetBucketOwnershipControls for more information on using the GetBucketOwnershipControls
  3773  // API call, and error handling.
  3774  //
  3775  // This method is useful when you want to inject custom logic or configuration
  3776  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3777  //
  3778  //
  3779  //    // Example sending a request using the GetBucketOwnershipControlsRequest method.
  3780  //    req, resp := client.GetBucketOwnershipControlsRequest(params)
  3781  //
  3782  //    err := req.Send()
  3783  //    if err == nil { // resp is now filled
  3784  //        fmt.Println(resp)
  3785  //    }
  3786  //
  3787  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
  3788  func (c *S3) GetBucketOwnershipControlsRequest(input *GetBucketOwnershipControlsInput) (req *request.Request, output *GetBucketOwnershipControlsOutput) {
  3789  	op := &request.Operation{
  3790  		Name:       opGetBucketOwnershipControls,
  3791  		HTTPMethod: "GET",
  3792  		HTTPPath:   "/{Bucket}?ownershipControls",
  3793  	}
  3794  
  3795  	if input == nil {
  3796  		input = &GetBucketOwnershipControlsInput{}
  3797  	}
  3798  
  3799  	output = &GetBucketOwnershipControlsOutput{}
  3800  	req = c.newRequest(op, input, output)
  3801  	return
  3802  }
  3803  
  3804  // GetBucketOwnershipControls API operation for Amazon Simple Storage Service.
  3805  //
  3806  // Retrieves OwnershipControls for an Amazon S3 bucket. To use this operation,
  3807  // you must have the s3:GetBucketOwnershipControls permission. For more information
  3808  // about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  3809  //
  3810  // For information about Amazon S3 Object Ownership, see Using Object Ownership
  3811  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
  3812  //
  3813  // The following operations are related to GetBucketOwnershipControls:
  3814  //
  3815  //    * PutBucketOwnershipControls
  3816  //
  3817  //    * DeleteBucketOwnershipControls
  3818  //
  3819  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3820  // with awserr.Error's Code and Message methods to get detailed information about
  3821  // the error.
  3822  //
  3823  // See the AWS API reference guide for Amazon Simple Storage Service's
  3824  // API operation GetBucketOwnershipControls for usage and error information.
  3825  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
  3826  func (c *S3) GetBucketOwnershipControls(input *GetBucketOwnershipControlsInput) (*GetBucketOwnershipControlsOutput, error) {
  3827  	req, out := c.GetBucketOwnershipControlsRequest(input)
  3828  	return out, req.Send()
  3829  }
  3830  
  3831  // GetBucketOwnershipControlsWithContext is the same as GetBucketOwnershipControls with the addition of
  3832  // the ability to pass a context and additional request options.
  3833  //
  3834  // See GetBucketOwnershipControls for details on how to use this API operation.
  3835  //
  3836  // The context must be non-nil and will be used for request cancellation. If
  3837  // the context is nil a panic will occur. In the future the SDK may create
  3838  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3839  // for more information on using Contexts.
  3840  func (c *S3) GetBucketOwnershipControlsWithContext(ctx aws.Context, input *GetBucketOwnershipControlsInput, opts ...request.Option) (*GetBucketOwnershipControlsOutput, error) {
  3841  	req, out := c.GetBucketOwnershipControlsRequest(input)
  3842  	req.SetContext(ctx)
  3843  	req.ApplyOptions(opts...)
  3844  	return out, req.Send()
  3845  }
  3846  
  3847  const opGetBucketPolicy = "GetBucketPolicy"
  3848  
  3849  // GetBucketPolicyRequest generates a "aws/request.Request" representing the
  3850  // client's request for the GetBucketPolicy operation. The "output" return
  3851  // value will be populated with the request's response once the request completes
  3852  // successfully.
  3853  //
  3854  // Use "Send" method on the returned Request to send the API call to the service.
  3855  // the "output" return value is not valid until after Send returns without error.
  3856  //
  3857  // See GetBucketPolicy for more information on using the GetBucketPolicy
  3858  // API call, and error handling.
  3859  //
  3860  // This method is useful when you want to inject custom logic or configuration
  3861  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3862  //
  3863  //
  3864  //    // Example sending a request using the GetBucketPolicyRequest method.
  3865  //    req, resp := client.GetBucketPolicyRequest(params)
  3866  //
  3867  //    err := req.Send()
  3868  //    if err == nil { // resp is now filled
  3869  //        fmt.Println(resp)
  3870  //    }
  3871  //
  3872  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
  3873  func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
  3874  	op := &request.Operation{
  3875  		Name:       opGetBucketPolicy,
  3876  		HTTPMethod: "GET",
  3877  		HTTPPath:   "/{Bucket}?policy",
  3878  	}
  3879  
  3880  	if input == nil {
  3881  		input = &GetBucketPolicyInput{}
  3882  	}
  3883  
  3884  	output = &GetBucketPolicyOutput{}
  3885  	req = c.newRequest(op, input, output)
  3886  	return
  3887  }
  3888  
  3889  // GetBucketPolicy API operation for Amazon Simple Storage Service.
  3890  //
  3891  // Returns the policy of a specified bucket. If you are using an identity other
  3892  // than the root user of the Amazon Web Services account that owns the bucket,
  3893  // the calling identity must have the GetBucketPolicy permissions on the specified
  3894  // bucket and belong to the bucket owner's account in order to use this operation.
  3895  //
  3896  // If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
  3897  // Denied error. If you have the correct permissions, but you're not using an
  3898  // identity that belongs to the bucket owner's account, Amazon S3 returns a
  3899  // 405 Method Not Allowed error.
  3900  //
  3901  // As a security precaution, the root user of the Amazon Web Services account
  3902  // that owns a bucket can always use this operation, even if the policy explicitly
  3903  // denies the root user the ability to perform this action.
  3904  //
  3905  // For more information about bucket policies, see Using Bucket Policies and
  3906  // User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
  3907  //
  3908  // The following action is related to GetBucketPolicy:
  3909  //
  3910  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  3911  //
  3912  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3913  // with awserr.Error's Code and Message methods to get detailed information about
  3914  // the error.
  3915  //
  3916  // See the AWS API reference guide for Amazon Simple Storage Service's
  3917  // API operation GetBucketPolicy for usage and error information.
  3918  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
  3919  func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
  3920  	req, out := c.GetBucketPolicyRequest(input)
  3921  	return out, req.Send()
  3922  }
  3923  
  3924  // GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
  3925  // the ability to pass a context and additional request options.
  3926  //
  3927  // See GetBucketPolicy for details on how to use this API operation.
  3928  //
  3929  // The context must be non-nil and will be used for request cancellation. If
  3930  // the context is nil a panic will occur. In the future the SDK may create
  3931  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3932  // for more information on using Contexts.
  3933  func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
  3934  	req, out := c.GetBucketPolicyRequest(input)
  3935  	req.SetContext(ctx)
  3936  	req.ApplyOptions(opts...)
  3937  	return out, req.Send()
  3938  }
  3939  
  3940  const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
  3941  
  3942  // GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
  3943  // client's request for the GetBucketPolicyStatus operation. The "output" return
  3944  // value will be populated with the request's response once the request completes
  3945  // successfully.
  3946  //
  3947  // Use "Send" method on the returned Request to send the API call to the service.
  3948  // the "output" return value is not valid until after Send returns without error.
  3949  //
  3950  // See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
  3951  // API call, and error handling.
  3952  //
  3953  // This method is useful when you want to inject custom logic or configuration
  3954  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3955  //
  3956  //
  3957  //    // Example sending a request using the GetBucketPolicyStatusRequest method.
  3958  //    req, resp := client.GetBucketPolicyStatusRequest(params)
  3959  //
  3960  //    err := req.Send()
  3961  //    if err == nil { // resp is now filled
  3962  //        fmt.Println(resp)
  3963  //    }
  3964  //
  3965  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
  3966  func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
  3967  	op := &request.Operation{
  3968  		Name:       opGetBucketPolicyStatus,
  3969  		HTTPMethod: "GET",
  3970  		HTTPPath:   "/{Bucket}?policyStatus",
  3971  	}
  3972  
  3973  	if input == nil {
  3974  		input = &GetBucketPolicyStatusInput{}
  3975  	}
  3976  
  3977  	output = &GetBucketPolicyStatusOutput{}
  3978  	req = c.newRequest(op, input, output)
  3979  	return
  3980  }
  3981  
  3982  // GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
  3983  //
  3984  // Retrieves the policy status for an Amazon S3 bucket, indicating whether the
  3985  // bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus
  3986  // permission. For more information about Amazon S3 permissions, see Specifying
  3987  // Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  3988  //
  3989  // For more information about when Amazon S3 considers a bucket public, see
  3990  // The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
  3991  //
  3992  // The following operations are related to GetBucketPolicyStatus:
  3993  //
  3994  //    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
  3995  //
  3996  //    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  3997  //
  3998  //    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  3999  //
  4000  //    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  4001  //
  4002  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4003  // with awserr.Error's Code and Message methods to get detailed information about
  4004  // the error.
  4005  //
  4006  // See the AWS API reference guide for Amazon Simple Storage Service's
  4007  // API operation GetBucketPolicyStatus for usage and error information.
  4008  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
  4009  func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
  4010  	req, out := c.GetBucketPolicyStatusRequest(input)
  4011  	return out, req.Send()
  4012  }
  4013  
  4014  // GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
  4015  // the ability to pass a context and additional request options.
  4016  //
  4017  // See GetBucketPolicyStatus for details on how to use this API operation.
  4018  //
  4019  // The context must be non-nil and will be used for request cancellation. If
  4020  // the context is nil a panic will occur. In the future the SDK may create
  4021  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4022  // for more information on using Contexts.
  4023  func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
  4024  	req, out := c.GetBucketPolicyStatusRequest(input)
  4025  	req.SetContext(ctx)
  4026  	req.ApplyOptions(opts...)
  4027  	return out, req.Send()
  4028  }
  4029  
  4030  const opGetBucketReplication = "GetBucketReplication"
  4031  
  4032  // GetBucketReplicationRequest generates a "aws/request.Request" representing the
  4033  // client's request for the GetBucketReplication operation. The "output" return
  4034  // value will be populated with the request's response once the request completes
  4035  // successfully.
  4036  //
  4037  // Use "Send" method on the returned Request to send the API call to the service.
  4038  // the "output" return value is not valid until after Send returns without error.
  4039  //
  4040  // See GetBucketReplication for more information on using the GetBucketReplication
  4041  // API call, and error handling.
  4042  //
  4043  // This method is useful when you want to inject custom logic or configuration
  4044  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4045  //
  4046  //
  4047  //    // Example sending a request using the GetBucketReplicationRequest method.
  4048  //    req, resp := client.GetBucketReplicationRequest(params)
  4049  //
  4050  //    err := req.Send()
  4051  //    if err == nil { // resp is now filled
  4052  //        fmt.Println(resp)
  4053  //    }
  4054  //
  4055  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
  4056  func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
  4057  	op := &request.Operation{
  4058  		Name:       opGetBucketReplication,
  4059  		HTTPMethod: "GET",
  4060  		HTTPPath:   "/{Bucket}?replication",
  4061  	}
  4062  
  4063  	if input == nil {
  4064  		input = &GetBucketReplicationInput{}
  4065  	}
  4066  
  4067  	output = &GetBucketReplicationOutput{}
  4068  	req = c.newRequest(op, input, output)
  4069  	return
  4070  }
  4071  
  4072  // GetBucketReplication API operation for Amazon Simple Storage Service.
  4073  //
  4074  // Returns the replication configuration of a bucket.
  4075  //
  4076  // It can take a while to propagate the put or delete a replication configuration
  4077  // to all Amazon S3 systems. Therefore, a get request soon after put or delete
  4078  // can return a wrong result.
  4079  //
  4080  // For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
  4081  // in the Amazon S3 User Guide.
  4082  //
  4083  // This action requires permissions for the s3:GetReplicationConfiguration action.
  4084  // For more information about permissions, see Using Bucket Policies and User
  4085  // Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
  4086  //
  4087  // If you include the Filter element in a replication configuration, you must
  4088  // also include the DeleteMarkerReplication and Priority elements. The response
  4089  // also returns those elements.
  4090  //
  4091  // For information about GetBucketReplication errors, see List of replication-related
  4092  // error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
  4093  //
  4094  // The following operations are related to GetBucketReplication:
  4095  //
  4096  //    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
  4097  //
  4098  //    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
  4099  //
  4100  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4101  // with awserr.Error's Code and Message methods to get detailed information about
  4102  // the error.
  4103  //
  4104  // See the AWS API reference guide for Amazon Simple Storage Service's
  4105  // API operation GetBucketReplication for usage and error information.
  4106  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
  4107  func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
  4108  	req, out := c.GetBucketReplicationRequest(input)
  4109  	return out, req.Send()
  4110  }
  4111  
  4112  // GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
  4113  // the ability to pass a context and additional request options.
  4114  //
  4115  // See GetBucketReplication for details on how to use this API operation.
  4116  //
  4117  // The context must be non-nil and will be used for request cancellation. If
  4118  // the context is nil a panic will occur. In the future the SDK may create
  4119  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4120  // for more information on using Contexts.
  4121  func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
  4122  	req, out := c.GetBucketReplicationRequest(input)
  4123  	req.SetContext(ctx)
  4124  	req.ApplyOptions(opts...)
  4125  	return out, req.Send()
  4126  }
  4127  
  4128  const opGetBucketRequestPayment = "GetBucketRequestPayment"
  4129  
  4130  // GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
  4131  // client's request for the GetBucketRequestPayment operation. The "output" return
  4132  // value will be populated with the request's response once the request completes
  4133  // successfully.
  4134  //
  4135  // Use "Send" method on the returned Request to send the API call to the service.
  4136  // the "output" return value is not valid until after Send returns without error.
  4137  //
  4138  // See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
  4139  // API call, and error handling.
  4140  //
  4141  // This method is useful when you want to inject custom logic or configuration
  4142  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4143  //
  4144  //
  4145  //    // Example sending a request using the GetBucketRequestPaymentRequest method.
  4146  //    req, resp := client.GetBucketRequestPaymentRequest(params)
  4147  //
  4148  //    err := req.Send()
  4149  //    if err == nil { // resp is now filled
  4150  //        fmt.Println(resp)
  4151  //    }
  4152  //
  4153  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
  4154  func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
  4155  	op := &request.Operation{
  4156  		Name:       opGetBucketRequestPayment,
  4157  		HTTPMethod: "GET",
  4158  		HTTPPath:   "/{Bucket}?requestPayment",
  4159  	}
  4160  
  4161  	if input == nil {
  4162  		input = &GetBucketRequestPaymentInput{}
  4163  	}
  4164  
  4165  	output = &GetBucketRequestPaymentOutput{}
  4166  	req = c.newRequest(op, input, output)
  4167  	return
  4168  }
  4169  
  4170  // GetBucketRequestPayment API operation for Amazon Simple Storage Service.
  4171  //
  4172  // Returns the request payment configuration of a bucket. To use this version
  4173  // of the operation, you must be the bucket owner. For more information, see
  4174  // Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
  4175  //
  4176  // The following operations are related to GetBucketRequestPayment:
  4177  //
  4178  //    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
  4179  //
  4180  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4181  // with awserr.Error's Code and Message methods to get detailed information about
  4182  // the error.
  4183  //
  4184  // See the AWS API reference guide for Amazon Simple Storage Service's
  4185  // API operation GetBucketRequestPayment for usage and error information.
  4186  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
  4187  func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
  4188  	req, out := c.GetBucketRequestPaymentRequest(input)
  4189  	return out, req.Send()
  4190  }
  4191  
  4192  // GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
  4193  // the ability to pass a context and additional request options.
  4194  //
  4195  // See GetBucketRequestPayment for details on how to use this API operation.
  4196  //
  4197  // The context must be non-nil and will be used for request cancellation. If
  4198  // the context is nil a panic will occur. In the future the SDK may create
  4199  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4200  // for more information on using Contexts.
  4201  func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
  4202  	req, out := c.GetBucketRequestPaymentRequest(input)
  4203  	req.SetContext(ctx)
  4204  	req.ApplyOptions(opts...)
  4205  	return out, req.Send()
  4206  }
  4207  
  4208  const opGetBucketTagging = "GetBucketTagging"
  4209  
  4210  // GetBucketTaggingRequest generates a "aws/request.Request" representing the
  4211  // client's request for the GetBucketTagging operation. The "output" return
  4212  // value will be populated with the request's response once the request completes
  4213  // successfully.
  4214  //
  4215  // Use "Send" method on the returned Request to send the API call to the service.
  4216  // the "output" return value is not valid until after Send returns without error.
  4217  //
  4218  // See GetBucketTagging for more information on using the GetBucketTagging
  4219  // API call, and error handling.
  4220  //
  4221  // This method is useful when you want to inject custom logic or configuration
  4222  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4223  //
  4224  //
  4225  //    // Example sending a request using the GetBucketTaggingRequest method.
  4226  //    req, resp := client.GetBucketTaggingRequest(params)
  4227  //
  4228  //    err := req.Send()
  4229  //    if err == nil { // resp is now filled
  4230  //        fmt.Println(resp)
  4231  //    }
  4232  //
  4233  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
  4234  func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
  4235  	op := &request.Operation{
  4236  		Name:       opGetBucketTagging,
  4237  		HTTPMethod: "GET",
  4238  		HTTPPath:   "/{Bucket}?tagging",
  4239  	}
  4240  
  4241  	if input == nil {
  4242  		input = &GetBucketTaggingInput{}
  4243  	}
  4244  
  4245  	output = &GetBucketTaggingOutput{}
  4246  	req = c.newRequest(op, input, output)
  4247  	return
  4248  }
  4249  
  4250  // GetBucketTagging API operation for Amazon Simple Storage Service.
  4251  //
  4252  // Returns the tag set associated with the bucket.
  4253  //
  4254  // To use this operation, you must have permission to perform the s3:GetBucketTagging
  4255  // action. By default, the bucket owner has this permission and can grant this
  4256  // permission to others.
  4257  //
  4258  // GetBucketTagging has the following special error:
  4259  //
  4260  //    * Error code: NoSuchTagSetError Description: There is no tag set associated
  4261  //    with the bucket.
  4262  //
  4263  // The following operations are related to GetBucketTagging:
  4264  //
  4265  //    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
  4266  //
  4267  //    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
  4268  //
  4269  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4270  // with awserr.Error's Code and Message methods to get detailed information about
  4271  // the error.
  4272  //
  4273  // See the AWS API reference guide for Amazon Simple Storage Service's
  4274  // API operation GetBucketTagging for usage and error information.
  4275  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
  4276  func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
  4277  	req, out := c.GetBucketTaggingRequest(input)
  4278  	return out, req.Send()
  4279  }
  4280  
  4281  // GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
  4282  // the ability to pass a context and additional request options.
  4283  //
  4284  // See GetBucketTagging for details on how to use this API operation.
  4285  //
  4286  // The context must be non-nil and will be used for request cancellation. If
  4287  // the context is nil a panic will occur. In the future the SDK may create
  4288  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4289  // for more information on using Contexts.
  4290  func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
  4291  	req, out := c.GetBucketTaggingRequest(input)
  4292  	req.SetContext(ctx)
  4293  	req.ApplyOptions(opts...)
  4294  	return out, req.Send()
  4295  }
  4296  
  4297  const opGetBucketVersioning = "GetBucketVersioning"
  4298  
  4299  // GetBucketVersioningRequest generates a "aws/request.Request" representing the
  4300  // client's request for the GetBucketVersioning operation. The "output" return
  4301  // value will be populated with the request's response once the request completes
  4302  // successfully.
  4303  //
  4304  // Use "Send" method on the returned Request to send the API call to the service.
  4305  // the "output" return value is not valid until after Send returns without error.
  4306  //
  4307  // See GetBucketVersioning for more information on using the GetBucketVersioning
  4308  // API call, and error handling.
  4309  //
  4310  // This method is useful when you want to inject custom logic or configuration
  4311  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4312  //
  4313  //
  4314  //    // Example sending a request using the GetBucketVersioningRequest method.
  4315  //    req, resp := client.GetBucketVersioningRequest(params)
  4316  //
  4317  //    err := req.Send()
  4318  //    if err == nil { // resp is now filled
  4319  //        fmt.Println(resp)
  4320  //    }
  4321  //
  4322  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
  4323  func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
  4324  	op := &request.Operation{
  4325  		Name:       opGetBucketVersioning,
  4326  		HTTPMethod: "GET",
  4327  		HTTPPath:   "/{Bucket}?versioning",
  4328  	}
  4329  
  4330  	if input == nil {
  4331  		input = &GetBucketVersioningInput{}
  4332  	}
  4333  
  4334  	output = &GetBucketVersioningOutput{}
  4335  	req = c.newRequest(op, input, output)
  4336  	return
  4337  }
  4338  
  4339  // GetBucketVersioning API operation for Amazon Simple Storage Service.
  4340  //
  4341  // Returns the versioning state of a bucket.
  4342  //
  4343  // To retrieve the versioning state of a bucket, you must be the bucket owner.
  4344  //
  4345  // This implementation also returns the MFA Delete status of the versioning
  4346  // state. If the MFA Delete status is enabled, the bucket owner must use an
  4347  // authentication device to change the versioning state of the bucket.
  4348  //
  4349  // The following operations are related to GetBucketVersioning:
  4350  //
  4351  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  4352  //
  4353  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  4354  //
  4355  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
  4356  //
  4357  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4358  // with awserr.Error's Code and Message methods to get detailed information about
  4359  // the error.
  4360  //
  4361  // See the AWS API reference guide for Amazon Simple Storage Service's
  4362  // API operation GetBucketVersioning for usage and error information.
  4363  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
  4364  func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
  4365  	req, out := c.GetBucketVersioningRequest(input)
  4366  	return out, req.Send()
  4367  }
  4368  
  4369  // GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
  4370  // the ability to pass a context and additional request options.
  4371  //
  4372  // See GetBucketVersioning for details on how to use this API operation.
  4373  //
  4374  // The context must be non-nil and will be used for request cancellation. If
  4375  // the context is nil a panic will occur. In the future the SDK may create
  4376  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4377  // for more information on using Contexts.
  4378  func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
  4379  	req, out := c.GetBucketVersioningRequest(input)
  4380  	req.SetContext(ctx)
  4381  	req.ApplyOptions(opts...)
  4382  	return out, req.Send()
  4383  }
  4384  
  4385  const opGetBucketWebsite = "GetBucketWebsite"
  4386  
  4387  // GetBucketWebsiteRequest generates a "aws/request.Request" representing the
  4388  // client's request for the GetBucketWebsite operation. The "output" return
  4389  // value will be populated with the request's response once the request completes
  4390  // successfully.
  4391  //
  4392  // Use "Send" method on the returned Request to send the API call to the service.
  4393  // the "output" return value is not valid until after Send returns without error.
  4394  //
  4395  // See GetBucketWebsite for more information on using the GetBucketWebsite
  4396  // API call, and error handling.
  4397  //
  4398  // This method is useful when you want to inject custom logic or configuration
  4399  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4400  //
  4401  //
  4402  //    // Example sending a request using the GetBucketWebsiteRequest method.
  4403  //    req, resp := client.GetBucketWebsiteRequest(params)
  4404  //
  4405  //    err := req.Send()
  4406  //    if err == nil { // resp is now filled
  4407  //        fmt.Println(resp)
  4408  //    }
  4409  //
  4410  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
  4411  func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
  4412  	op := &request.Operation{
  4413  		Name:       opGetBucketWebsite,
  4414  		HTTPMethod: "GET",
  4415  		HTTPPath:   "/{Bucket}?website",
  4416  	}
  4417  
  4418  	if input == nil {
  4419  		input = &GetBucketWebsiteInput{}
  4420  	}
  4421  
  4422  	output = &GetBucketWebsiteOutput{}
  4423  	req = c.newRequest(op, input, output)
  4424  	return
  4425  }
  4426  
  4427  // GetBucketWebsite API operation for Amazon Simple Storage Service.
  4428  //
  4429  // Returns the website configuration for a bucket. To host website on Amazon
  4430  // S3, you can configure a bucket as website by adding a website configuration.
  4431  // For more information about hosting websites, see Hosting Websites on Amazon
  4432  // S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
  4433  //
  4434  // This GET action requires the S3:GetBucketWebsite permission. By default,
  4435  // only the bucket owner can read the bucket website configuration. However,
  4436  // bucket owners can allow other users to read the website configuration by
  4437  // writing a bucket policy granting them the S3:GetBucketWebsite permission.
  4438  //
  4439  // The following operations are related to DeleteBucketWebsite:
  4440  //
  4441  //    * DeleteBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html)
  4442  //
  4443  //    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
  4444  //
  4445  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4446  // with awserr.Error's Code and Message methods to get detailed information about
  4447  // the error.
  4448  //
  4449  // See the AWS API reference guide for Amazon Simple Storage Service's
  4450  // API operation GetBucketWebsite for usage and error information.
  4451  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
  4452  func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
  4453  	req, out := c.GetBucketWebsiteRequest(input)
  4454  	return out, req.Send()
  4455  }
  4456  
  4457  // GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
  4458  // the ability to pass a context and additional request options.
  4459  //
  4460  // See GetBucketWebsite for details on how to use this API operation.
  4461  //
  4462  // The context must be non-nil and will be used for request cancellation. If
  4463  // the context is nil a panic will occur. In the future the SDK may create
  4464  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4465  // for more information on using Contexts.
  4466  func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
  4467  	req, out := c.GetBucketWebsiteRequest(input)
  4468  	req.SetContext(ctx)
  4469  	req.ApplyOptions(opts...)
  4470  	return out, req.Send()
  4471  }
  4472  
  4473  const opGetObject = "GetObject"
  4474  
  4475  // GetObjectRequest generates a "aws/request.Request" representing the
  4476  // client's request for the GetObject operation. The "output" return
  4477  // value will be populated with the request's response once the request completes
  4478  // successfully.
  4479  //
  4480  // Use "Send" method on the returned Request to send the API call to the service.
  4481  // the "output" return value is not valid until after Send returns without error.
  4482  //
  4483  // See GetObject for more information on using the GetObject
  4484  // API call, and error handling.
  4485  //
  4486  // This method is useful when you want to inject custom logic or configuration
  4487  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4488  //
  4489  //
  4490  //    // Example sending a request using the GetObjectRequest method.
  4491  //    req, resp := client.GetObjectRequest(params)
  4492  //
  4493  //    err := req.Send()
  4494  //    if err == nil { // resp is now filled
  4495  //        fmt.Println(resp)
  4496  //    }
  4497  //
  4498  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
  4499  func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
  4500  	op := &request.Operation{
  4501  		Name:       opGetObject,
  4502  		HTTPMethod: "GET",
  4503  		HTTPPath:   "/{Bucket}/{Key+}",
  4504  	}
  4505  
  4506  	if input == nil {
  4507  		input = &GetObjectInput{}
  4508  	}
  4509  
  4510  	output = &GetObjectOutput{}
  4511  	req = c.newRequest(op, input, output)
  4512  	return
  4513  }
  4514  
  4515  // GetObject API operation for Amazon Simple Storage Service.
  4516  //
  4517  // Retrieves objects from Amazon S3. To use GET, you must have READ access to
  4518  // the object. If you grant READ access to the anonymous user, you can return
  4519  // the object without using an authorization header.
  4520  //
  4521  // An Amazon S3 bucket has no directory hierarchy such as you would find in
  4522  // a typical computer file system. You can, however, create a logical hierarchy
  4523  // by using object key names that imply a folder structure. For example, instead
  4524  // of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg.
  4525  //
  4526  // To get an object from such a logical hierarchy, specify the full key name
  4527  // for the object in the GET operation. For a virtual hosted-style request example,
  4528  // if you have the object photos/2006/February/sample.jpg, specify the resource
  4529  // as /photos/2006/February/sample.jpg. For a path-style request example, if
  4530  // you have the object photos/2006/February/sample.jpg in the bucket named examplebucket,
  4531  // specify the resource as /examplebucket/photos/2006/February/sample.jpg. For
  4532  // more information about request types, see HTTP Host Header Bucket Specification
  4533  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
  4534  //
  4535  // To distribute large files to many people, you can save bandwidth costs by
  4536  // using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
  4537  // For more information about returning the ACL of an object, see GetObjectAcl
  4538  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html).
  4539  //
  4540  // If the object you are retrieving is stored in the S3 Glacier or S3 Glacier
  4541  // Deep Archive storage class, or S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering
  4542  // Deep Archive tiers, before you can retrieve the object you must first restore
  4543  // a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
  4544  // Otherwise, this action returns an InvalidObjectStateError error. For information
  4545  // about restoring archived objects, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
  4546  //
  4547  // Encryption request headers, like x-amz-server-side-encryption, should not
  4548  // be sent for GET requests if your object uses server-side encryption with
  4549  // KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed encryption
  4550  // keys (SSE-S3). If your object does use these types of keys, you’ll get
  4551  // an HTTP 400 BadRequest error.
  4552  //
  4553  // If you encrypt an object by using server-side encryption with customer-provided
  4554  // encryption keys (SSE-C) when you store the object in Amazon S3, then when
  4555  // you GET the object, you must use the following headers:
  4556  //
  4557  //    * x-amz-server-side-encryption-customer-algorithm
  4558  //
  4559  //    * x-amz-server-side-encryption-customer-key
  4560  //
  4561  //    * x-amz-server-side-encryption-customer-key-MD5
  4562  //
  4563  // For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
  4564  // Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
  4565  //
  4566  // Assuming you have the relevant permission to read object tags, the response
  4567  // also returns the x-amz-tagging-count header that provides the count of number
  4568  // of tags associated with the object. You can use GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
  4569  // to retrieve the tag set associated with an object.
  4570  //
  4571  // Permissions
  4572  //
  4573  // You need the relevant read object (or version) permission for this operation.
  4574  // For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  4575  // If the object you request does not exist, the error Amazon S3 returns depends
  4576  // on whether you also have the s3:ListBucket permission.
  4577  //
  4578  //    * If you have the s3:ListBucket permission on the bucket, Amazon S3 will
  4579  //    return an HTTP status code 404 ("no such key") error.
  4580  //
  4581  //    * If you don’t have the s3:ListBucket permission, Amazon S3 will return
  4582  //    an HTTP status code 403 ("access denied") error.
  4583  //
  4584  // Versioning
  4585  //
  4586  // By default, the GET action returns the current version of an object. To return
  4587  // a different version, use the versionId subresource.
  4588  //
  4589  //    * You need the s3:GetObjectVersion permission to access a specific version
  4590  //    of an object.
  4591  //
  4592  //    * If the current version of the object is a delete marker, Amazon S3 behaves
  4593  //    as if the object was deleted and includes x-amz-delete-marker: true in
  4594  //    the response.
  4595  //
  4596  // For more information about versioning, see PutBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html).
  4597  //
  4598  // Overriding Response Header Values
  4599  //
  4600  // There are times when you want to override certain response header values
  4601  // in a GET response. For example, you might override the Content-Disposition
  4602  // response header value in your GET request.
  4603  //
  4604  // You can override values for a set of response headers using the following
  4605  // query parameters. These response header values are sent only on a successful
  4606  // request, that is, when status code 200 OK is returned. The set of headers
  4607  // you can override using these parameters is a subset of the headers that Amazon
  4608  // S3 accepts when you create an object. The response headers that you can override
  4609  // for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
  4610  // Content-Disposition, and Content-Encoding. To override these header values
  4611  // in the GET response, you use the following request parameters.
  4612  //
  4613  // You must sign the request, either using an Authorization header or a presigned
  4614  // URL, when using these parameters. They cannot be used with an unsigned (anonymous)
  4615  // request.
  4616  //
  4617  //    * response-content-type
  4618  //
  4619  //    * response-content-language
  4620  //
  4621  //    * response-expires
  4622  //
  4623  //    * response-cache-control
  4624  //
  4625  //    * response-content-disposition
  4626  //
  4627  //    * response-content-encoding
  4628  //
  4629  // Additional Considerations about Request Headers
  4630  //
  4631  // If both of the If-Match and If-Unmodified-Since headers are present in the
  4632  // request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
  4633  // condition evaluates to false; then, S3 returns 200 OK and the data requested.
  4634  //
  4635  // If both of the If-None-Match and If-Modified-Since headers are present in
  4636  // the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since
  4637  // condition evaluates to true; then, S3 returns 304 Not Modified response code.
  4638  //
  4639  // For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
  4640  //
  4641  // The following operations are related to GetObject:
  4642  //
  4643  //    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
  4644  //
  4645  //    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
  4646  //
  4647  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4648  // with awserr.Error's Code and Message methods to get detailed information about
  4649  // the error.
  4650  //
  4651  // See the AWS API reference guide for Amazon Simple Storage Service's
  4652  // API operation GetObject for usage and error information.
  4653  //
  4654  // Returned Error Codes:
  4655  //   * ErrCodeNoSuchKey "NoSuchKey"
  4656  //   The specified key does not exist.
  4657  //
  4658  //   * ErrCodeInvalidObjectState "InvalidObjectState"
  4659  //   Object is archived and inaccessible until restored.
  4660  //
  4661  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
  4662  func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
  4663  	req, out := c.GetObjectRequest(input)
  4664  	return out, req.Send()
  4665  }
  4666  
  4667  // GetObjectWithContext is the same as GetObject with the addition of
  4668  // the ability to pass a context and additional request options.
  4669  //
  4670  // See GetObject for details on how to use this API operation.
  4671  //
  4672  // The context must be non-nil and will be used for request cancellation. If
  4673  // the context is nil a panic will occur. In the future the SDK may create
  4674  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4675  // for more information on using Contexts.
  4676  func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
  4677  	req, out := c.GetObjectRequest(input)
  4678  	req.SetContext(ctx)
  4679  	req.ApplyOptions(opts...)
  4680  	return out, req.Send()
  4681  }
  4682  
  4683  const opGetObjectAcl = "GetObjectAcl"
  4684  
  4685  // GetObjectAclRequest generates a "aws/request.Request" representing the
  4686  // client's request for the GetObjectAcl operation. The "output" return
  4687  // value will be populated with the request's response once the request completes
  4688  // successfully.
  4689  //
  4690  // Use "Send" method on the returned Request to send the API call to the service.
  4691  // the "output" return value is not valid until after Send returns without error.
  4692  //
  4693  // See GetObjectAcl for more information on using the GetObjectAcl
  4694  // API call, and error handling.
  4695  //
  4696  // This method is useful when you want to inject custom logic or configuration
  4697  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4698  //
  4699  //
  4700  //    // Example sending a request using the GetObjectAclRequest method.
  4701  //    req, resp := client.GetObjectAclRequest(params)
  4702  //
  4703  //    err := req.Send()
  4704  //    if err == nil { // resp is now filled
  4705  //        fmt.Println(resp)
  4706  //    }
  4707  //
  4708  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
  4709  func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
  4710  	op := &request.Operation{
  4711  		Name:       opGetObjectAcl,
  4712  		HTTPMethod: "GET",
  4713  		HTTPPath:   "/{Bucket}/{Key+}?acl",
  4714  	}
  4715  
  4716  	if input == nil {
  4717  		input = &GetObjectAclInput{}
  4718  	}
  4719  
  4720  	output = &GetObjectAclOutput{}
  4721  	req = c.newRequest(op, input, output)
  4722  	return
  4723  }
  4724  
  4725  // GetObjectAcl API operation for Amazon Simple Storage Service.
  4726  //
  4727  // Returns the access control list (ACL) of an object. To use this operation,
  4728  // you must have READ_ACP access to the object.
  4729  //
  4730  // This action is not supported by Amazon S3 on Outposts.
  4731  //
  4732  // Versioning
  4733  //
  4734  // By default, GET returns ACL information about the current version of an object.
  4735  // To return ACL information about a different version, use the versionId subresource.
  4736  //
  4737  // The following operations are related to GetObjectAcl:
  4738  //
  4739  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  4740  //
  4741  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
  4742  //
  4743  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  4744  //
  4745  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4746  // with awserr.Error's Code and Message methods to get detailed information about
  4747  // the error.
  4748  //
  4749  // See the AWS API reference guide for Amazon Simple Storage Service's
  4750  // API operation GetObjectAcl for usage and error information.
  4751  //
  4752  // Returned Error Codes:
  4753  //   * ErrCodeNoSuchKey "NoSuchKey"
  4754  //   The specified key does not exist.
  4755  //
  4756  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
  4757  func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
  4758  	req, out := c.GetObjectAclRequest(input)
  4759  	return out, req.Send()
  4760  }
  4761  
  4762  // GetObjectAclWithContext is the same as GetObjectAcl with the addition of
  4763  // the ability to pass a context and additional request options.
  4764  //
  4765  // See GetObjectAcl for details on how to use this API operation.
  4766  //
  4767  // The context must be non-nil and will be used for request cancellation. If
  4768  // the context is nil a panic will occur. In the future the SDK may create
  4769  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4770  // for more information on using Contexts.
  4771  func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
  4772  	req, out := c.GetObjectAclRequest(input)
  4773  	req.SetContext(ctx)
  4774  	req.ApplyOptions(opts...)
  4775  	return out, req.Send()
  4776  }
  4777  
  4778  const opGetObjectLegalHold = "GetObjectLegalHold"
  4779  
  4780  // GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
  4781  // client's request for the GetObjectLegalHold operation. The "output" return
  4782  // value will be populated with the request's response once the request completes
  4783  // successfully.
  4784  //
  4785  // Use "Send" method on the returned Request to send the API call to the service.
  4786  // the "output" return value is not valid until after Send returns without error.
  4787  //
  4788  // See GetObjectLegalHold for more information on using the GetObjectLegalHold
  4789  // API call, and error handling.
  4790  //
  4791  // This method is useful when you want to inject custom logic or configuration
  4792  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4793  //
  4794  //
  4795  //    // Example sending a request using the GetObjectLegalHoldRequest method.
  4796  //    req, resp := client.GetObjectLegalHoldRequest(params)
  4797  //
  4798  //    err := req.Send()
  4799  //    if err == nil { // resp is now filled
  4800  //        fmt.Println(resp)
  4801  //    }
  4802  //
  4803  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
  4804  func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
  4805  	op := &request.Operation{
  4806  		Name:       opGetObjectLegalHold,
  4807  		HTTPMethod: "GET",
  4808  		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
  4809  	}
  4810  
  4811  	if input == nil {
  4812  		input = &GetObjectLegalHoldInput{}
  4813  	}
  4814  
  4815  	output = &GetObjectLegalHoldOutput{}
  4816  	req = c.newRequest(op, input, output)
  4817  	return
  4818  }
  4819  
  4820  // GetObjectLegalHold API operation for Amazon Simple Storage Service.
  4821  //
  4822  // Gets an object's current Legal Hold status. For more information, see Locking
  4823  // Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  4824  //
  4825  // This action is not supported by Amazon S3 on Outposts.
  4826  //
  4827  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4828  // with awserr.Error's Code and Message methods to get detailed information about
  4829  // the error.
  4830  //
  4831  // See the AWS API reference guide for Amazon Simple Storage Service's
  4832  // API operation GetObjectLegalHold for usage and error information.
  4833  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
  4834  func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
  4835  	req, out := c.GetObjectLegalHoldRequest(input)
  4836  	return out, req.Send()
  4837  }
  4838  
  4839  // GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
  4840  // the ability to pass a context and additional request options.
  4841  //
  4842  // See GetObjectLegalHold for details on how to use this API operation.
  4843  //
  4844  // The context must be non-nil and will be used for request cancellation. If
  4845  // the context is nil a panic will occur. In the future the SDK may create
  4846  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4847  // for more information on using Contexts.
  4848  func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
  4849  	req, out := c.GetObjectLegalHoldRequest(input)
  4850  	req.SetContext(ctx)
  4851  	req.ApplyOptions(opts...)
  4852  	return out, req.Send()
  4853  }
  4854  
  4855  const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
  4856  
  4857  // GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
  4858  // client's request for the GetObjectLockConfiguration operation. The "output" return
  4859  // value will be populated with the request's response once the request completes
  4860  // successfully.
  4861  //
  4862  // Use "Send" method on the returned Request to send the API call to the service.
  4863  // the "output" return value is not valid until after Send returns without error.
  4864  //
  4865  // See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
  4866  // API call, and error handling.
  4867  //
  4868  // This method is useful when you want to inject custom logic or configuration
  4869  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4870  //
  4871  //
  4872  //    // Example sending a request using the GetObjectLockConfigurationRequest method.
  4873  //    req, resp := client.GetObjectLockConfigurationRequest(params)
  4874  //
  4875  //    err := req.Send()
  4876  //    if err == nil { // resp is now filled
  4877  //        fmt.Println(resp)
  4878  //    }
  4879  //
  4880  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
  4881  func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
  4882  	op := &request.Operation{
  4883  		Name:       opGetObjectLockConfiguration,
  4884  		HTTPMethod: "GET",
  4885  		HTTPPath:   "/{Bucket}?object-lock",
  4886  	}
  4887  
  4888  	if input == nil {
  4889  		input = &GetObjectLockConfigurationInput{}
  4890  	}
  4891  
  4892  	output = &GetObjectLockConfigurationOutput{}
  4893  	req = c.newRequest(op, input, output)
  4894  	return
  4895  }
  4896  
  4897  // GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
  4898  //
  4899  // Gets the Object Lock configuration for a bucket. The rule specified in the
  4900  // Object Lock configuration will be applied by default to every new object
  4901  // placed in the specified bucket. For more information, see Locking Objects
  4902  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  4903  //
  4904  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4905  // with awserr.Error's Code and Message methods to get detailed information about
  4906  // the error.
  4907  //
  4908  // See the AWS API reference guide for Amazon Simple Storage Service's
  4909  // API operation GetObjectLockConfiguration for usage and error information.
  4910  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
  4911  func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
  4912  	req, out := c.GetObjectLockConfigurationRequest(input)
  4913  	return out, req.Send()
  4914  }
  4915  
  4916  // GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
  4917  // the ability to pass a context and additional request options.
  4918  //
  4919  // See GetObjectLockConfiguration for details on how to use this API operation.
  4920  //
  4921  // The context must be non-nil and will be used for request cancellation. If
  4922  // the context is nil a panic will occur. In the future the SDK may create
  4923  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4924  // for more information on using Contexts.
  4925  func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
  4926  	req, out := c.GetObjectLockConfigurationRequest(input)
  4927  	req.SetContext(ctx)
  4928  	req.ApplyOptions(opts...)
  4929  	return out, req.Send()
  4930  }
  4931  
  4932  const opGetObjectRetention = "GetObjectRetention"
  4933  
  4934  // GetObjectRetentionRequest generates a "aws/request.Request" representing the
  4935  // client's request for the GetObjectRetention operation. The "output" return
  4936  // value will be populated with the request's response once the request completes
  4937  // successfully.
  4938  //
  4939  // Use "Send" method on the returned Request to send the API call to the service.
  4940  // the "output" return value is not valid until after Send returns without error.
  4941  //
  4942  // See GetObjectRetention for more information on using the GetObjectRetention
  4943  // API call, and error handling.
  4944  //
  4945  // This method is useful when you want to inject custom logic or configuration
  4946  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4947  //
  4948  //
  4949  //    // Example sending a request using the GetObjectRetentionRequest method.
  4950  //    req, resp := client.GetObjectRetentionRequest(params)
  4951  //
  4952  //    err := req.Send()
  4953  //    if err == nil { // resp is now filled
  4954  //        fmt.Println(resp)
  4955  //    }
  4956  //
  4957  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
  4958  func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
  4959  	op := &request.Operation{
  4960  		Name:       opGetObjectRetention,
  4961  		HTTPMethod: "GET",
  4962  		HTTPPath:   "/{Bucket}/{Key+}?retention",
  4963  	}
  4964  
  4965  	if input == nil {
  4966  		input = &GetObjectRetentionInput{}
  4967  	}
  4968  
  4969  	output = &GetObjectRetentionOutput{}
  4970  	req = c.newRequest(op, input, output)
  4971  	return
  4972  }
  4973  
  4974  // GetObjectRetention API operation for Amazon Simple Storage Service.
  4975  //
  4976  // Retrieves an object's retention settings. For more information, see Locking
  4977  // Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  4978  //
  4979  // This action is not supported by Amazon S3 on Outposts.
  4980  //
  4981  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4982  // with awserr.Error's Code and Message methods to get detailed information about
  4983  // the error.
  4984  //
  4985  // See the AWS API reference guide for Amazon Simple Storage Service's
  4986  // API operation GetObjectRetention for usage and error information.
  4987  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
  4988  func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
  4989  	req, out := c.GetObjectRetentionRequest(input)
  4990  	return out, req.Send()
  4991  }
  4992  
  4993  // GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
  4994  // the ability to pass a context and additional request options.
  4995  //
  4996  // See GetObjectRetention for details on how to use this API operation.
  4997  //
  4998  // The context must be non-nil and will be used for request cancellation. If
  4999  // the context is nil a panic will occur. In the future the SDK may create
  5000  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5001  // for more information on using Contexts.
  5002  func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
  5003  	req, out := c.GetObjectRetentionRequest(input)
  5004  	req.SetContext(ctx)
  5005  	req.ApplyOptions(opts...)
  5006  	return out, req.Send()
  5007  }
  5008  
  5009  const opGetObjectTagging = "GetObjectTagging"
  5010  
  5011  // GetObjectTaggingRequest generates a "aws/request.Request" representing the
  5012  // client's request for the GetObjectTagging operation. The "output" return
  5013  // value will be populated with the request's response once the request completes
  5014  // successfully.
  5015  //
  5016  // Use "Send" method on the returned Request to send the API call to the service.
  5017  // the "output" return value is not valid until after Send returns without error.
  5018  //
  5019  // See GetObjectTagging for more information on using the GetObjectTagging
  5020  // API call, and error handling.
  5021  //
  5022  // This method is useful when you want to inject custom logic or configuration
  5023  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5024  //
  5025  //
  5026  //    // Example sending a request using the GetObjectTaggingRequest method.
  5027  //    req, resp := client.GetObjectTaggingRequest(params)
  5028  //
  5029  //    err := req.Send()
  5030  //    if err == nil { // resp is now filled
  5031  //        fmt.Println(resp)
  5032  //    }
  5033  //
  5034  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
  5035  func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
  5036  	op := &request.Operation{
  5037  		Name:       opGetObjectTagging,
  5038  		HTTPMethod: "GET",
  5039  		HTTPPath:   "/{Bucket}/{Key+}?tagging",
  5040  	}
  5041  
  5042  	if input == nil {
  5043  		input = &GetObjectTaggingInput{}
  5044  	}
  5045  
  5046  	output = &GetObjectTaggingOutput{}
  5047  	req = c.newRequest(op, input, output)
  5048  	return
  5049  }
  5050  
  5051  // GetObjectTagging API operation for Amazon Simple Storage Service.
  5052  //
  5053  // Returns the tag-set of an object. You send the GET request against the tagging
  5054  // subresource associated with the object.
  5055  //
  5056  // To use this operation, you must have permission to perform the s3:GetObjectTagging
  5057  // action. By default, the GET action returns information about current version
  5058  // of an object. For a versioned bucket, you can have multiple versions of an
  5059  // object in your bucket. To retrieve tags of any other version, use the versionId
  5060  // query parameter. You also need permission for the s3:GetObjectVersionTagging
  5061  // action.
  5062  //
  5063  // By default, the bucket owner has this permission and can grant this permission
  5064  // to others.
  5065  //
  5066  // For information about the Amazon S3 object tagging feature, see Object Tagging
  5067  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
  5068  //
  5069  // The following action is related to GetObjectTagging:
  5070  //
  5071  //    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
  5072  //
  5073  //    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
  5074  //
  5075  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5076  // with awserr.Error's Code and Message methods to get detailed information about
  5077  // the error.
  5078  //
  5079  // See the AWS API reference guide for Amazon Simple Storage Service's
  5080  // API operation GetObjectTagging for usage and error information.
  5081  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
  5082  func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
  5083  	req, out := c.GetObjectTaggingRequest(input)
  5084  	return out, req.Send()
  5085  }
  5086  
  5087  // GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
  5088  // the ability to pass a context and additional request options.
  5089  //
  5090  // See GetObjectTagging for details on how to use this API operation.
  5091  //
  5092  // The context must be non-nil and will be used for request cancellation. If
  5093  // the context is nil a panic will occur. In the future the SDK may create
  5094  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5095  // for more information on using Contexts.
  5096  func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
  5097  	req, out := c.GetObjectTaggingRequest(input)
  5098  	req.SetContext(ctx)
  5099  	req.ApplyOptions(opts...)
  5100  	return out, req.Send()
  5101  }
  5102  
  5103  const opGetObjectTorrent = "GetObjectTorrent"
  5104  
  5105  // GetObjectTorrentRequest generates a "aws/request.Request" representing the
  5106  // client's request for the GetObjectTorrent operation. The "output" return
  5107  // value will be populated with the request's response once the request completes
  5108  // successfully.
  5109  //
  5110  // Use "Send" method on the returned Request to send the API call to the service.
  5111  // the "output" return value is not valid until after Send returns without error.
  5112  //
  5113  // See GetObjectTorrent for more information on using the GetObjectTorrent
  5114  // API call, and error handling.
  5115  //
  5116  // This method is useful when you want to inject custom logic or configuration
  5117  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5118  //
  5119  //
  5120  //    // Example sending a request using the GetObjectTorrentRequest method.
  5121  //    req, resp := client.GetObjectTorrentRequest(params)
  5122  //
  5123  //    err := req.Send()
  5124  //    if err == nil { // resp is now filled
  5125  //        fmt.Println(resp)
  5126  //    }
  5127  //
  5128  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
  5129  func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
  5130  	op := &request.Operation{
  5131  		Name:       opGetObjectTorrent,
  5132  		HTTPMethod: "GET",
  5133  		HTTPPath:   "/{Bucket}/{Key+}?torrent",
  5134  	}
  5135  
  5136  	if input == nil {
  5137  		input = &GetObjectTorrentInput{}
  5138  	}
  5139  
  5140  	output = &GetObjectTorrentOutput{}
  5141  	req = c.newRequest(op, input, output)
  5142  	return
  5143  }
  5144  
  5145  // GetObjectTorrent API operation for Amazon Simple Storage Service.
  5146  //
  5147  // Returns torrent files from a bucket. BitTorrent can save you bandwidth when
  5148  // you're distributing large files. For more information about BitTorrent, see
  5149  // Using BitTorrent with Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
  5150  //
  5151  // You can get torrent only for objects that are less than 5 GB in size, and
  5152  // that are not encrypted using server-side encryption with a customer-provided
  5153  // encryption key.
  5154  //
  5155  // To use GET, you must have READ access to the object.
  5156  //
  5157  // This action is not supported by Amazon S3 on Outposts.
  5158  //
  5159  // The following action is related to GetObjectTorrent:
  5160  //
  5161  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  5162  //
  5163  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5164  // with awserr.Error's Code and Message methods to get detailed information about
  5165  // the error.
  5166  //
  5167  // See the AWS API reference guide for Amazon Simple Storage Service's
  5168  // API operation GetObjectTorrent for usage and error information.
  5169  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
  5170  func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
  5171  	req, out := c.GetObjectTorrentRequest(input)
  5172  	return out, req.Send()
  5173  }
  5174  
  5175  // GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
  5176  // the ability to pass a context and additional request options.
  5177  //
  5178  // See GetObjectTorrent for details on how to use this API operation.
  5179  //
  5180  // The context must be non-nil and will be used for request cancellation. If
  5181  // the context is nil a panic will occur. In the future the SDK may create
  5182  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5183  // for more information on using Contexts.
  5184  func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
  5185  	req, out := c.GetObjectTorrentRequest(input)
  5186  	req.SetContext(ctx)
  5187  	req.ApplyOptions(opts...)
  5188  	return out, req.Send()
  5189  }
  5190  
  5191  const opGetPublicAccessBlock = "GetPublicAccessBlock"
  5192  
  5193  // GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
  5194  // client's request for the GetPublicAccessBlock operation. The "output" return
  5195  // value will be populated with the request's response once the request completes
  5196  // successfully.
  5197  //
  5198  // Use "Send" method on the returned Request to send the API call to the service.
  5199  // the "output" return value is not valid until after Send returns without error.
  5200  //
  5201  // See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
  5202  // API call, and error handling.
  5203  //
  5204  // This method is useful when you want to inject custom logic or configuration
  5205  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5206  //
  5207  //
  5208  //    // Example sending a request using the GetPublicAccessBlockRequest method.
  5209  //    req, resp := client.GetPublicAccessBlockRequest(params)
  5210  //
  5211  //    err := req.Send()
  5212  //    if err == nil { // resp is now filled
  5213  //        fmt.Println(resp)
  5214  //    }
  5215  //
  5216  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
  5217  func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
  5218  	op := &request.Operation{
  5219  		Name:       opGetPublicAccessBlock,
  5220  		HTTPMethod: "GET",
  5221  		HTTPPath:   "/{Bucket}?publicAccessBlock",
  5222  	}
  5223  
  5224  	if input == nil {
  5225  		input = &GetPublicAccessBlockInput{}
  5226  	}
  5227  
  5228  	output = &GetPublicAccessBlockOutput{}
  5229  	req = c.newRequest(op, input, output)
  5230  	return
  5231  }
  5232  
  5233  // GetPublicAccessBlock API operation for Amazon Simple Storage Service.
  5234  //
  5235  // Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To
  5236  // use this operation, you must have the s3:GetBucketPublicAccessBlock permission.
  5237  // For more information about Amazon S3 permissions, see Specifying Permissions
  5238  // in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  5239  //
  5240  // When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
  5241  // or an object, it checks the PublicAccessBlock configuration for both the
  5242  // bucket (or the bucket that contains the object) and the bucket owner's account.
  5243  // If the PublicAccessBlock settings are different between the bucket and the
  5244  // account, Amazon S3 uses the most restrictive combination of the bucket-level
  5245  // and account-level settings.
  5246  //
  5247  // For more information about when Amazon S3 considers a bucket or an object
  5248  // public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
  5249  //
  5250  // The following operations are related to GetPublicAccessBlock:
  5251  //
  5252  //    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
  5253  //
  5254  //    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
  5255  //
  5256  //    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  5257  //
  5258  //    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  5259  //
  5260  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5261  // with awserr.Error's Code and Message methods to get detailed information about
  5262  // the error.
  5263  //
  5264  // See the AWS API reference guide for Amazon Simple Storage Service's
  5265  // API operation GetPublicAccessBlock for usage and error information.
  5266  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
  5267  func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
  5268  	req, out := c.GetPublicAccessBlockRequest(input)
  5269  	return out, req.Send()
  5270  }
  5271  
  5272  // GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
  5273  // the ability to pass a context and additional request options.
  5274  //
  5275  // See GetPublicAccessBlock for details on how to use this API operation.
  5276  //
  5277  // The context must be non-nil and will be used for request cancellation. If
  5278  // the context is nil a panic will occur. In the future the SDK may create
  5279  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5280  // for more information on using Contexts.
  5281  func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
  5282  	req, out := c.GetPublicAccessBlockRequest(input)
  5283  	req.SetContext(ctx)
  5284  	req.ApplyOptions(opts...)
  5285  	return out, req.Send()
  5286  }
  5287  
  5288  const opHeadBucket = "HeadBucket"
  5289  
  5290  // HeadBucketRequest generates a "aws/request.Request" representing the
  5291  // client's request for the HeadBucket operation. The "output" return
  5292  // value will be populated with the request's response once the request completes
  5293  // successfully.
  5294  //
  5295  // Use "Send" method on the returned Request to send the API call to the service.
  5296  // the "output" return value is not valid until after Send returns without error.
  5297  //
  5298  // See HeadBucket for more information on using the HeadBucket
  5299  // API call, and error handling.
  5300  //
  5301  // This method is useful when you want to inject custom logic or configuration
  5302  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5303  //
  5304  //
  5305  //    // Example sending a request using the HeadBucketRequest method.
  5306  //    req, resp := client.HeadBucketRequest(params)
  5307  //
  5308  //    err := req.Send()
  5309  //    if err == nil { // resp is now filled
  5310  //        fmt.Println(resp)
  5311  //    }
  5312  //
  5313  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
  5314  func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
  5315  	op := &request.Operation{
  5316  		Name:       opHeadBucket,
  5317  		HTTPMethod: "HEAD",
  5318  		HTTPPath:   "/{Bucket}",
  5319  	}
  5320  
  5321  	if input == nil {
  5322  		input = &HeadBucketInput{}
  5323  	}
  5324  
  5325  	output = &HeadBucketOutput{}
  5326  	req = c.newRequest(op, input, output)
  5327  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  5328  	return
  5329  }
  5330  
  5331  // HeadBucket API operation for Amazon Simple Storage Service.
  5332  //
  5333  // This action is useful to determine if a bucket exists and you have permission
  5334  // to access it. The action returns a 200 OK if the bucket exists and you have
  5335  // permission to access it.
  5336  //
  5337  // If the bucket does not exist or you do not have permission to access it,
  5338  // the HEAD request returns a generic 404 Not Found or 403 Forbidden code. A
  5339  // message body is not included, so you cannot determine the exception beyond
  5340  // these error codes.
  5341  //
  5342  // To use this operation, you must have permissions to perform the s3:ListBucket
  5343  // action. The bucket owner has this permission by default and can grant this
  5344  // permission to others. For more information about permissions, see Permissions
  5345  // Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  5346  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  5347  //
  5348  // To use this API against an access point, you must provide the alias of the
  5349  // access point in place of the bucket name or specify the access point ARN.
  5350  // When using the access point ARN, you must direct requests to the access point
  5351  // hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
  5352  // When using the Amazon Web Services SDKs, you provide the ARN in place of
  5353  // the bucket name. For more information see, Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html).
  5354  //
  5355  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5356  // with awserr.Error's Code and Message methods to get detailed information about
  5357  // the error.
  5358  //
  5359  // See the AWS API reference guide for Amazon Simple Storage Service's
  5360  // API operation HeadBucket for usage and error information.
  5361  //
  5362  // Returned Error Codes:
  5363  //   * ErrCodeNoSuchBucket "NoSuchBucket"
  5364  //   The specified bucket does not exist.
  5365  //
  5366  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
  5367  func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
  5368  	req, out := c.HeadBucketRequest(input)
  5369  	return out, req.Send()
  5370  }
  5371  
  5372  // HeadBucketWithContext is the same as HeadBucket with the addition of
  5373  // the ability to pass a context and additional request options.
  5374  //
  5375  // See HeadBucket for details on how to use this API operation.
  5376  //
  5377  // The context must be non-nil and will be used for request cancellation. If
  5378  // the context is nil a panic will occur. In the future the SDK may create
  5379  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5380  // for more information on using Contexts.
  5381  func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
  5382  	req, out := c.HeadBucketRequest(input)
  5383  	req.SetContext(ctx)
  5384  	req.ApplyOptions(opts...)
  5385  	return out, req.Send()
  5386  }
  5387  
  5388  const opHeadObject = "HeadObject"
  5389  
  5390  // HeadObjectRequest generates a "aws/request.Request" representing the
  5391  // client's request for the HeadObject operation. The "output" return
  5392  // value will be populated with the request's response once the request completes
  5393  // successfully.
  5394  //
  5395  // Use "Send" method on the returned Request to send the API call to the service.
  5396  // the "output" return value is not valid until after Send returns without error.
  5397  //
  5398  // See HeadObject for more information on using the HeadObject
  5399  // API call, and error handling.
  5400  //
  5401  // This method is useful when you want to inject custom logic or configuration
  5402  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5403  //
  5404  //
  5405  //    // Example sending a request using the HeadObjectRequest method.
  5406  //    req, resp := client.HeadObjectRequest(params)
  5407  //
  5408  //    err := req.Send()
  5409  //    if err == nil { // resp is now filled
  5410  //        fmt.Println(resp)
  5411  //    }
  5412  //
  5413  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
  5414  func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
  5415  	op := &request.Operation{
  5416  		Name:       opHeadObject,
  5417  		HTTPMethod: "HEAD",
  5418  		HTTPPath:   "/{Bucket}/{Key+}",
  5419  	}
  5420  
  5421  	if input == nil {
  5422  		input = &HeadObjectInput{}
  5423  	}
  5424  
  5425  	output = &HeadObjectOutput{}
  5426  	req = c.newRequest(op, input, output)
  5427  	return
  5428  }
  5429  
  5430  // HeadObject API operation for Amazon Simple Storage Service.
  5431  //
  5432  // The HEAD action retrieves metadata from an object without returning the object
  5433  // itself. This action is useful if you're only interested in an object's metadata.
  5434  // To use HEAD, you must have READ access to the object.
  5435  //
  5436  // A HEAD request has the same options as a GET action on an object. The response
  5437  // is identical to the GET response except that there is no response body. Because
  5438  // of this, if the HEAD request generates an error, it returns a generic 404
  5439  // Not Found or 403 Forbidden code. It is not possible to retrieve the exact
  5440  // exception beyond these error codes.
  5441  //
  5442  // If you encrypt an object by using server-side encryption with customer-provided
  5443  // encryption keys (SSE-C) when you store the object in Amazon S3, then when
  5444  // you retrieve the metadata from the object, you must use the following headers:
  5445  //
  5446  //    * x-amz-server-side-encryption-customer-algorithm
  5447  //
  5448  //    * x-amz-server-side-encryption-customer-key
  5449  //
  5450  //    * x-amz-server-side-encryption-customer-key-MD5
  5451  //
  5452  // For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
  5453  // Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
  5454  //
  5455  //    * Encryption request headers, like x-amz-server-side-encryption, should
  5456  //    not be sent for GET requests if your object uses server-side encryption
  5457  //    with KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed
  5458  //    encryption keys (SSE-S3). If your object does use these types of keys,
  5459  //    you’ll get an HTTP 400 BadRequest error.
  5460  //
  5461  //    * The last modified property in this case is the creation date of the
  5462  //    object.
  5463  //
  5464  // Request headers are limited to 8 KB in size. For more information, see Common
  5465  // Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
  5466  //
  5467  // Consider the following when using request headers:
  5468  //
  5469  //    * Consideration 1 – If both of the If-Match and If-Unmodified-Since
  5470  //    headers are present in the request as follows: If-Match condition evaluates
  5471  //    to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon
  5472  //    S3 returns 200 OK and the data requested.
  5473  //
  5474  //    * Consideration 2 – If both of the If-None-Match and If-Modified-Since
  5475  //    headers are present in the request as follows: If-None-Match condition
  5476  //    evaluates to false, and; If-Modified-Since condition evaluates to true;
  5477  //    Then Amazon S3 returns the 304 Not Modified response code.
  5478  //
  5479  // For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
  5480  //
  5481  // Permissions
  5482  //
  5483  // You need the relevant read object (or version) permission for this operation.
  5484  // For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  5485  // If the object you request does not exist, the error Amazon S3 returns depends
  5486  // on whether you also have the s3:ListBucket permission.
  5487  //
  5488  //    * If you have the s3:ListBucket permission on the bucket, Amazon S3 returns
  5489  //    an HTTP status code 404 ("no such key") error.
  5490  //
  5491  //    * If you don’t have the s3:ListBucket permission, Amazon S3 returns
  5492  //    an HTTP status code 403 ("access denied") error.
  5493  //
  5494  // The following action is related to HeadObject:
  5495  //
  5496  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  5497  //
  5498  // See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
  5499  // for more information on returned errors.
  5500  //
  5501  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5502  // with awserr.Error's Code and Message methods to get detailed information about
  5503  // the error.
  5504  //
  5505  // See the AWS API reference guide for Amazon Simple Storage Service's
  5506  // API operation HeadObject for usage and error information.
  5507  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
  5508  func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
  5509  	req, out := c.HeadObjectRequest(input)
  5510  	return out, req.Send()
  5511  }
  5512  
  5513  // HeadObjectWithContext is the same as HeadObject with the addition of
  5514  // the ability to pass a context and additional request options.
  5515  //
  5516  // See HeadObject for details on how to use this API operation.
  5517  //
  5518  // The context must be non-nil and will be used for request cancellation. If
  5519  // the context is nil a panic will occur. In the future the SDK may create
  5520  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5521  // for more information on using Contexts.
  5522  func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
  5523  	req, out := c.HeadObjectRequest(input)
  5524  	req.SetContext(ctx)
  5525  	req.ApplyOptions(opts...)
  5526  	return out, req.Send()
  5527  }
  5528  
  5529  const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
  5530  
  5531  // ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
  5532  // client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
  5533  // value will be populated with the request's response once the request completes
  5534  // successfully.
  5535  //
  5536  // Use "Send" method on the returned Request to send the API call to the service.
  5537  // the "output" return value is not valid until after Send returns without error.
  5538  //
  5539  // See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
  5540  // API call, and error handling.
  5541  //
  5542  // This method is useful when you want to inject custom logic or configuration
  5543  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5544  //
  5545  //
  5546  //    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
  5547  //    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
  5548  //
  5549  //    err := req.Send()
  5550  //    if err == nil { // resp is now filled
  5551  //        fmt.Println(resp)
  5552  //    }
  5553  //
  5554  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
  5555  func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
  5556  	op := &request.Operation{
  5557  		Name:       opListBucketAnalyticsConfigurations,
  5558  		HTTPMethod: "GET",
  5559  		HTTPPath:   "/{Bucket}?analytics",
  5560  	}
  5561  
  5562  	if input == nil {
  5563  		input = &ListBucketAnalyticsConfigurationsInput{}
  5564  	}
  5565  
  5566  	output = &ListBucketAnalyticsConfigurationsOutput{}
  5567  	req = c.newRequest(op, input, output)
  5568  	return
  5569  }
  5570  
  5571  // ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
  5572  //
  5573  // Lists the analytics configurations for the bucket. You can have up to 1,000
  5574  // analytics configurations per bucket.
  5575  //
  5576  // This action supports list pagination and does not return more than 100 configurations
  5577  // at a time. You should always check the IsTruncated element in the response.
  5578  // If there are no more configurations to list, IsTruncated is set to false.
  5579  // If there are more configurations to list, IsTruncated is set to true, and
  5580  // there will be a value in NextContinuationToken. You use the NextContinuationToken
  5581  // value to continue the pagination of the list by passing the value in continuation-token
  5582  // in the request to GET the next page.
  5583  //
  5584  // To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
  5585  // action. The bucket owner has this permission by default. The bucket owner
  5586  // can grant this permission to others. For more information about permissions,
  5587  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  5588  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  5589  //
  5590  // For information about Amazon S3 analytics feature, see Amazon S3 Analytics
  5591  // – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
  5592  //
  5593  // The following operations are related to ListBucketAnalyticsConfigurations:
  5594  //
  5595  //    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
  5596  //
  5597  //    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
  5598  //
  5599  //    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
  5600  //
  5601  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5602  // with awserr.Error's Code and Message methods to get detailed information about
  5603  // the error.
  5604  //
  5605  // See the AWS API reference guide for Amazon Simple Storage Service's
  5606  // API operation ListBucketAnalyticsConfigurations for usage and error information.
  5607  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
  5608  func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
  5609  	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
  5610  	return out, req.Send()
  5611  }
  5612  
  5613  // ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
  5614  // the ability to pass a context and additional request options.
  5615  //
  5616  // See ListBucketAnalyticsConfigurations for details on how to use this API operation.
  5617  //
  5618  // The context must be non-nil and will be used for request cancellation. If
  5619  // the context is nil a panic will occur. In the future the SDK may create
  5620  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5621  // for more information on using Contexts.
  5622  func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
  5623  	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
  5624  	req.SetContext(ctx)
  5625  	req.ApplyOptions(opts...)
  5626  	return out, req.Send()
  5627  }
  5628  
  5629  const opListBucketIntelligentTieringConfigurations = "ListBucketIntelligentTieringConfigurations"
  5630  
  5631  // ListBucketIntelligentTieringConfigurationsRequest generates a "aws/request.Request" representing the
  5632  // client's request for the ListBucketIntelligentTieringConfigurations operation. The "output" return
  5633  // value will be populated with the request's response once the request completes
  5634  // successfully.
  5635  //
  5636  // Use "Send" method on the returned Request to send the API call to the service.
  5637  // the "output" return value is not valid until after Send returns without error.
  5638  //
  5639  // See ListBucketIntelligentTieringConfigurations for more information on using the ListBucketIntelligentTieringConfigurations
  5640  // API call, and error handling.
  5641  //
  5642  // This method is useful when you want to inject custom logic or configuration
  5643  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5644  //
  5645  //
  5646  //    // Example sending a request using the ListBucketIntelligentTieringConfigurationsRequest method.
  5647  //    req, resp := client.ListBucketIntelligentTieringConfigurationsRequest(params)
  5648  //
  5649  //    err := req.Send()
  5650  //    if err == nil { // resp is now filled
  5651  //        fmt.Println(resp)
  5652  //    }
  5653  //
  5654  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
  5655  func (c *S3) ListBucketIntelligentTieringConfigurationsRequest(input *ListBucketIntelligentTieringConfigurationsInput) (req *request.Request, output *ListBucketIntelligentTieringConfigurationsOutput) {
  5656  	op := &request.Operation{
  5657  		Name:       opListBucketIntelligentTieringConfigurations,
  5658  		HTTPMethod: "GET",
  5659  		HTTPPath:   "/{Bucket}?intelligent-tiering",
  5660  	}
  5661  
  5662  	if input == nil {
  5663  		input = &ListBucketIntelligentTieringConfigurationsInput{}
  5664  	}
  5665  
  5666  	output = &ListBucketIntelligentTieringConfigurationsOutput{}
  5667  	req = c.newRequest(op, input, output)
  5668  	return
  5669  }
  5670  
  5671  // ListBucketIntelligentTieringConfigurations API operation for Amazon Simple Storage Service.
  5672  //
  5673  // Lists the S3 Intelligent-Tiering configuration from the specified bucket.
  5674  //
  5675  // The S3 Intelligent-Tiering storage class is designed to optimize storage
  5676  // costs by automatically moving data to the most cost-effective storage access
  5677  // tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  5678  // delivers automatic cost savings in two low latency and high throughput access
  5679  // tiers. For data that can be accessed asynchronously, you can choose to activate
  5680  // automatic archiving capabilities within the S3 Intelligent-Tiering storage
  5681  // class.
  5682  //
  5683  // The S3 Intelligent-Tiering storage class is the ideal storage class for data
  5684  // with unknown, changing, or unpredictable access patterns, independent of
  5685  // object size or retention period. If the size of an object is less than 128
  5686  // KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
  5687  // they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
  5688  // storage class.
  5689  //
  5690  // For more information, see Storage class for automatically optimizing frequently
  5691  // and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
  5692  //
  5693  // Operations related to ListBucketIntelligentTieringConfigurations include:
  5694  //
  5695  //    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
  5696  //
  5697  //    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
  5698  //
  5699  //    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
  5700  //
  5701  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5702  // with awserr.Error's Code and Message methods to get detailed information about
  5703  // the error.
  5704  //
  5705  // See the AWS API reference guide for Amazon Simple Storage Service's
  5706  // API operation ListBucketIntelligentTieringConfigurations for usage and error information.
  5707  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
  5708  func (c *S3) ListBucketIntelligentTieringConfigurations(input *ListBucketIntelligentTieringConfigurationsInput) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
  5709  	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
  5710  	return out, req.Send()
  5711  }
  5712  
  5713  // ListBucketIntelligentTieringConfigurationsWithContext is the same as ListBucketIntelligentTieringConfigurations with the addition of
  5714  // the ability to pass a context and additional request options.
  5715  //
  5716  // See ListBucketIntelligentTieringConfigurations for details on how to use this API operation.
  5717  //
  5718  // The context must be non-nil and will be used for request cancellation. If
  5719  // the context is nil a panic will occur. In the future the SDK may create
  5720  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5721  // for more information on using Contexts.
  5722  func (c *S3) ListBucketIntelligentTieringConfigurationsWithContext(ctx aws.Context, input *ListBucketIntelligentTieringConfigurationsInput, opts ...request.Option) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
  5723  	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
  5724  	req.SetContext(ctx)
  5725  	req.ApplyOptions(opts...)
  5726  	return out, req.Send()
  5727  }
  5728  
  5729  const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
  5730  
  5731  // ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
  5732  // client's request for the ListBucketInventoryConfigurations operation. The "output" return
  5733  // value will be populated with the request's response once the request completes
  5734  // successfully.
  5735  //
  5736  // Use "Send" method on the returned Request to send the API call to the service.
  5737  // the "output" return value is not valid until after Send returns without error.
  5738  //
  5739  // See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
  5740  // API call, and error handling.
  5741  //
  5742  // This method is useful when you want to inject custom logic or configuration
  5743  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5744  //
  5745  //
  5746  //    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
  5747  //    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
  5748  //
  5749  //    err := req.Send()
  5750  //    if err == nil { // resp is now filled
  5751  //        fmt.Println(resp)
  5752  //    }
  5753  //
  5754  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
  5755  func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
  5756  	op := &request.Operation{
  5757  		Name:       opListBucketInventoryConfigurations,
  5758  		HTTPMethod: "GET",
  5759  		HTTPPath:   "/{Bucket}?inventory",
  5760  	}
  5761  
  5762  	if input == nil {
  5763  		input = &ListBucketInventoryConfigurationsInput{}
  5764  	}
  5765  
  5766  	output = &ListBucketInventoryConfigurationsOutput{}
  5767  	req = c.newRequest(op, input, output)
  5768  	return
  5769  }
  5770  
  5771  // ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
  5772  //
  5773  // Returns a list of inventory configurations for the bucket. You can have up
  5774  // to 1,000 analytics configurations per bucket.
  5775  //
  5776  // This action supports list pagination and does not return more than 100 configurations
  5777  // at a time. Always check the IsTruncated element in the response. If there
  5778  // are no more configurations to list, IsTruncated is set to false. If there
  5779  // are more configurations to list, IsTruncated is set to true, and there is
  5780  // a value in NextContinuationToken. You use the NextContinuationToken value
  5781  // to continue the pagination of the list by passing the value in continuation-token
  5782  // in the request to GET the next page.
  5783  //
  5784  // To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
  5785  // action. The bucket owner has this permission by default. The bucket owner
  5786  // can grant this permission to others. For more information about permissions,
  5787  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  5788  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  5789  //
  5790  // For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
  5791  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
  5792  //
  5793  // The following operations are related to ListBucketInventoryConfigurations:
  5794  //
  5795  //    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
  5796  //
  5797  //    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
  5798  //
  5799  //    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
  5800  //
  5801  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5802  // with awserr.Error's Code and Message methods to get detailed information about
  5803  // the error.
  5804  //
  5805  // See the AWS API reference guide for Amazon Simple Storage Service's
  5806  // API operation ListBucketInventoryConfigurations for usage and error information.
  5807  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
  5808  func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
  5809  	req, out := c.ListBucketInventoryConfigurationsRequest(input)
  5810  	return out, req.Send()
  5811  }
  5812  
  5813  // ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
  5814  // the ability to pass a context and additional request options.
  5815  //
  5816  // See ListBucketInventoryConfigurations for details on how to use this API operation.
  5817  //
  5818  // The context must be non-nil and will be used for request cancellation. If
  5819  // the context is nil a panic will occur. In the future the SDK may create
  5820  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5821  // for more information on using Contexts.
  5822  func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
  5823  	req, out := c.ListBucketInventoryConfigurationsRequest(input)
  5824  	req.SetContext(ctx)
  5825  	req.ApplyOptions(opts...)
  5826  	return out, req.Send()
  5827  }
  5828  
  5829  const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
  5830  
  5831  // ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
  5832  // client's request for the ListBucketMetricsConfigurations operation. The "output" return
  5833  // value will be populated with the request's response once the request completes
  5834  // successfully.
  5835  //
  5836  // Use "Send" method on the returned Request to send the API call to the service.
  5837  // the "output" return value is not valid until after Send returns without error.
  5838  //
  5839  // See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
  5840  // API call, and error handling.
  5841  //
  5842  // This method is useful when you want to inject custom logic or configuration
  5843  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5844  //
  5845  //
  5846  //    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
  5847  //    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
  5848  //
  5849  //    err := req.Send()
  5850  //    if err == nil { // resp is now filled
  5851  //        fmt.Println(resp)
  5852  //    }
  5853  //
  5854  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
  5855  func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
  5856  	op := &request.Operation{
  5857  		Name:       opListBucketMetricsConfigurations,
  5858  		HTTPMethod: "GET",
  5859  		HTTPPath:   "/{Bucket}?metrics",
  5860  	}
  5861  
  5862  	if input == nil {
  5863  		input = &ListBucketMetricsConfigurationsInput{}
  5864  	}
  5865  
  5866  	output = &ListBucketMetricsConfigurationsOutput{}
  5867  	req = c.newRequest(op, input, output)
  5868  	return
  5869  }
  5870  
  5871  // ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
  5872  //
  5873  // Lists the metrics configurations for the bucket. The metrics configurations
  5874  // are only for the request metrics of the bucket and do not provide information
  5875  // on daily storage metrics. You can have up to 1,000 configurations per bucket.
  5876  //
  5877  // This action supports list pagination and does not return more than 100 configurations
  5878  // at a time. Always check the IsTruncated element in the response. If there
  5879  // are no more configurations to list, IsTruncated is set to false. If there
  5880  // are more configurations to list, IsTruncated is set to true, and there is
  5881  // a value in NextContinuationToken. You use the NextContinuationToken value
  5882  // to continue the pagination of the list by passing the value in continuation-token
  5883  // in the request to GET the next page.
  5884  //
  5885  // To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
  5886  // action. The bucket owner has this permission by default. The bucket owner
  5887  // can grant this permission to others. For more information about permissions,
  5888  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  5889  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  5890  //
  5891  // For more information about metrics configurations and CloudWatch request
  5892  // metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
  5893  //
  5894  // The following operations are related to ListBucketMetricsConfigurations:
  5895  //
  5896  //    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
  5897  //
  5898  //    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
  5899  //
  5900  //    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
  5901  //
  5902  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5903  // with awserr.Error's Code and Message methods to get detailed information about
  5904  // the error.
  5905  //
  5906  // See the AWS API reference guide for Amazon Simple Storage Service's
  5907  // API operation ListBucketMetricsConfigurations for usage and error information.
  5908  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
  5909  func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
  5910  	req, out := c.ListBucketMetricsConfigurationsRequest(input)
  5911  	return out, req.Send()
  5912  }
  5913  
  5914  // ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
  5915  // the ability to pass a context and additional request options.
  5916  //
  5917  // See ListBucketMetricsConfigurations for details on how to use this API operation.
  5918  //
  5919  // The context must be non-nil and will be used for request cancellation. If
  5920  // the context is nil a panic will occur. In the future the SDK may create
  5921  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5922  // for more information on using Contexts.
  5923  func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
  5924  	req, out := c.ListBucketMetricsConfigurationsRequest(input)
  5925  	req.SetContext(ctx)
  5926  	req.ApplyOptions(opts...)
  5927  	return out, req.Send()
  5928  }
  5929  
  5930  const opListBuckets = "ListBuckets"
  5931  
  5932  // ListBucketsRequest generates a "aws/request.Request" representing the
  5933  // client's request for the ListBuckets operation. The "output" return
  5934  // value will be populated with the request's response once the request completes
  5935  // successfully.
  5936  //
  5937  // Use "Send" method on the returned Request to send the API call to the service.
  5938  // the "output" return value is not valid until after Send returns without error.
  5939  //
  5940  // See ListBuckets for more information on using the ListBuckets
  5941  // API call, and error handling.
  5942  //
  5943  // This method is useful when you want to inject custom logic or configuration
  5944  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5945  //
  5946  //
  5947  //    // Example sending a request using the ListBucketsRequest method.
  5948  //    req, resp := client.ListBucketsRequest(params)
  5949  //
  5950  //    err := req.Send()
  5951  //    if err == nil { // resp is now filled
  5952  //        fmt.Println(resp)
  5953  //    }
  5954  //
  5955  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
  5956  func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
  5957  	op := &request.Operation{
  5958  		Name:       opListBuckets,
  5959  		HTTPMethod: "GET",
  5960  		HTTPPath:   "/",
  5961  	}
  5962  
  5963  	if input == nil {
  5964  		input = &ListBucketsInput{}
  5965  	}
  5966  
  5967  	output = &ListBucketsOutput{}
  5968  	req = c.newRequest(op, input, output)
  5969  	return
  5970  }
  5971  
  5972  // ListBuckets API operation for Amazon Simple Storage Service.
  5973  //
  5974  // Returns a list of all buckets owned by the authenticated sender of the request.
  5975  //
  5976  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5977  // with awserr.Error's Code and Message methods to get detailed information about
  5978  // the error.
  5979  //
  5980  // See the AWS API reference guide for Amazon Simple Storage Service's
  5981  // API operation ListBuckets for usage and error information.
  5982  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
  5983  func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
  5984  	req, out := c.ListBucketsRequest(input)
  5985  	return out, req.Send()
  5986  }
  5987  
  5988  // ListBucketsWithContext is the same as ListBuckets with the addition of
  5989  // the ability to pass a context and additional request options.
  5990  //
  5991  // See ListBuckets for details on how to use this API operation.
  5992  //
  5993  // The context must be non-nil and will be used for request cancellation. If
  5994  // the context is nil a panic will occur. In the future the SDK may create
  5995  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5996  // for more information on using Contexts.
  5997  func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
  5998  	req, out := c.ListBucketsRequest(input)
  5999  	req.SetContext(ctx)
  6000  	req.ApplyOptions(opts...)
  6001  	return out, req.Send()
  6002  }
  6003  
  6004  const opListMultipartUploads = "ListMultipartUploads"
  6005  
  6006  // ListMultipartUploadsRequest generates a "aws/request.Request" representing the
  6007  // client's request for the ListMultipartUploads operation. The "output" return
  6008  // value will be populated with the request's response once the request completes
  6009  // successfully.
  6010  //
  6011  // Use "Send" method on the returned Request to send the API call to the service.
  6012  // the "output" return value is not valid until after Send returns without error.
  6013  //
  6014  // See ListMultipartUploads for more information on using the ListMultipartUploads
  6015  // API call, and error handling.
  6016  //
  6017  // This method is useful when you want to inject custom logic or configuration
  6018  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6019  //
  6020  //
  6021  //    // Example sending a request using the ListMultipartUploadsRequest method.
  6022  //    req, resp := client.ListMultipartUploadsRequest(params)
  6023  //
  6024  //    err := req.Send()
  6025  //    if err == nil { // resp is now filled
  6026  //        fmt.Println(resp)
  6027  //    }
  6028  //
  6029  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
  6030  func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
  6031  	op := &request.Operation{
  6032  		Name:       opListMultipartUploads,
  6033  		HTTPMethod: "GET",
  6034  		HTTPPath:   "/{Bucket}?uploads",
  6035  		Paginator: &request.Paginator{
  6036  			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
  6037  			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
  6038  			LimitToken:      "MaxUploads",
  6039  			TruncationToken: "IsTruncated",
  6040  		},
  6041  	}
  6042  
  6043  	if input == nil {
  6044  		input = &ListMultipartUploadsInput{}
  6045  	}
  6046  
  6047  	output = &ListMultipartUploadsOutput{}
  6048  	req = c.newRequest(op, input, output)
  6049  	return
  6050  }
  6051  
  6052  // ListMultipartUploads API operation for Amazon Simple Storage Service.
  6053  //
  6054  // This action lists in-progress multipart uploads. An in-progress multipart
  6055  // upload is a multipart upload that has been initiated using the Initiate Multipart
  6056  // Upload request, but has not yet been completed or aborted.
  6057  //
  6058  // This action returns at most 1,000 multipart uploads in the response. 1,000
  6059  // multipart uploads is the maximum number of uploads a response can include,
  6060  // which is also the default value. You can further limit the number of uploads
  6061  // in a response by specifying the max-uploads parameter in the response. If
  6062  // additional multipart uploads satisfy the list criteria, the response will
  6063  // contain an IsTruncated element with the value true. To list the additional
  6064  // multipart uploads, use the key-marker and upload-id-marker request parameters.
  6065  //
  6066  // In the response, the uploads are sorted by key. If your application has initiated
  6067  // more than one multipart upload using the same object key, then uploads in
  6068  // the response are first sorted by key. Additionally, uploads are sorted in
  6069  // ascending order within each key by the upload initiation time.
  6070  //
  6071  // For more information on multipart uploads, see Uploading Objects Using Multipart
  6072  // Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
  6073  //
  6074  // For information on permissions required to use the multipart upload API,
  6075  // see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
  6076  //
  6077  // The following operations are related to ListMultipartUploads:
  6078  //
  6079  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
  6080  //
  6081  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
  6082  //
  6083  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  6084  //
  6085  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
  6086  //
  6087  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
  6088  //
  6089  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6090  // with awserr.Error's Code and Message methods to get detailed information about
  6091  // the error.
  6092  //
  6093  // See the AWS API reference guide for Amazon Simple Storage Service's
  6094  // API operation ListMultipartUploads for usage and error information.
  6095  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
  6096  func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
  6097  	req, out := c.ListMultipartUploadsRequest(input)
  6098  	return out, req.Send()
  6099  }
  6100  
  6101  // ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
  6102  // the ability to pass a context and additional request options.
  6103  //
  6104  // See ListMultipartUploads for details on how to use this API operation.
  6105  //
  6106  // The context must be non-nil and will be used for request cancellation. If
  6107  // the context is nil a panic will occur. In the future the SDK may create
  6108  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6109  // for more information on using Contexts.
  6110  func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
  6111  	req, out := c.ListMultipartUploadsRequest(input)
  6112  	req.SetContext(ctx)
  6113  	req.ApplyOptions(opts...)
  6114  	return out, req.Send()
  6115  }
  6116  
  6117  // ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
  6118  // calling the "fn" function with the response data for each page. To stop
  6119  // iterating, return false from the fn function.
  6120  //
  6121  // See ListMultipartUploads method for more information on how to use this operation.
  6122  //
  6123  // Note: This operation can generate multiple requests to a service.
  6124  //
  6125  //    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
  6126  //    pageNum := 0
  6127  //    err := client.ListMultipartUploadsPages(params,
  6128  //        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
  6129  //            pageNum++
  6130  //            fmt.Println(page)
  6131  //            return pageNum <= 3
  6132  //        })
  6133  //
  6134  func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
  6135  	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
  6136  }
  6137  
  6138  // ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
  6139  // it takes a Context and allows setting request options on the pages.
  6140  //
  6141  // The context must be non-nil and will be used for request cancellation. If
  6142  // the context is nil a panic will occur. In the future the SDK may create
  6143  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6144  // for more information on using Contexts.
  6145  func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
  6146  	p := request.Pagination{
  6147  		NewRequest: func() (*request.Request, error) {
  6148  			var inCpy *ListMultipartUploadsInput
  6149  			if input != nil {
  6150  				tmp := *input
  6151  				inCpy = &tmp
  6152  			}
  6153  			req, _ := c.ListMultipartUploadsRequest(inCpy)
  6154  			req.SetContext(ctx)
  6155  			req.ApplyOptions(opts...)
  6156  			return req, nil
  6157  		},
  6158  	}
  6159  
  6160  	for p.Next() {
  6161  		if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) {
  6162  			break
  6163  		}
  6164  	}
  6165  
  6166  	return p.Err()
  6167  }
  6168  
  6169  const opListObjectVersions = "ListObjectVersions"
  6170  
  6171  // ListObjectVersionsRequest generates a "aws/request.Request" representing the
  6172  // client's request for the ListObjectVersions operation. The "output" return
  6173  // value will be populated with the request's response once the request completes
  6174  // successfully.
  6175  //
  6176  // Use "Send" method on the returned Request to send the API call to the service.
  6177  // the "output" return value is not valid until after Send returns without error.
  6178  //
  6179  // See ListObjectVersions for more information on using the ListObjectVersions
  6180  // API call, and error handling.
  6181  //
  6182  // This method is useful when you want to inject custom logic or configuration
  6183  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6184  //
  6185  //
  6186  //    // Example sending a request using the ListObjectVersionsRequest method.
  6187  //    req, resp := client.ListObjectVersionsRequest(params)
  6188  //
  6189  //    err := req.Send()
  6190  //    if err == nil { // resp is now filled
  6191  //        fmt.Println(resp)
  6192  //    }
  6193  //
  6194  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
  6195  func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
  6196  	op := &request.Operation{
  6197  		Name:       opListObjectVersions,
  6198  		HTTPMethod: "GET",
  6199  		HTTPPath:   "/{Bucket}?versions",
  6200  		Paginator: &request.Paginator{
  6201  			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
  6202  			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
  6203  			LimitToken:      "MaxKeys",
  6204  			TruncationToken: "IsTruncated",
  6205  		},
  6206  	}
  6207  
  6208  	if input == nil {
  6209  		input = &ListObjectVersionsInput{}
  6210  	}
  6211  
  6212  	output = &ListObjectVersionsOutput{}
  6213  	req = c.newRequest(op, input, output)
  6214  	return
  6215  }
  6216  
  6217  // ListObjectVersions API operation for Amazon Simple Storage Service.
  6218  //
  6219  // Returns metadata about all versions of the objects in a bucket. You can also
  6220  // use request parameters as selection criteria to return metadata about a subset
  6221  // of all the object versions.
  6222  //
  6223  // To use this operation, you must have permissions to perform the s3:ListBucketVersions
  6224  // action. Be aware of the name difference.
  6225  //
  6226  // A 200 OK response can contain valid or invalid XML. Make sure to design your
  6227  // application to parse the contents of the response and handle it appropriately.
  6228  //
  6229  // To use this operation, you must have READ access to the bucket.
  6230  //
  6231  // This action is not supported by Amazon S3 on Outposts.
  6232  //
  6233  // The following operations are related to ListObjectVersions:
  6234  //
  6235  //    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
  6236  //
  6237  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  6238  //
  6239  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  6240  //
  6241  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
  6242  //
  6243  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6244  // with awserr.Error's Code and Message methods to get detailed information about
  6245  // the error.
  6246  //
  6247  // See the AWS API reference guide for Amazon Simple Storage Service's
  6248  // API operation ListObjectVersions for usage and error information.
  6249  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
  6250  func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
  6251  	req, out := c.ListObjectVersionsRequest(input)
  6252  	return out, req.Send()
  6253  }
  6254  
  6255  // ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
  6256  // the ability to pass a context and additional request options.
  6257  //
  6258  // See ListObjectVersions for details on how to use this API operation.
  6259  //
  6260  // The context must be non-nil and will be used for request cancellation. If
  6261  // the context is nil a panic will occur. In the future the SDK may create
  6262  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6263  // for more information on using Contexts.
  6264  func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
  6265  	req, out := c.ListObjectVersionsRequest(input)
  6266  	req.SetContext(ctx)
  6267  	req.ApplyOptions(opts...)
  6268  	return out, req.Send()
  6269  }
  6270  
  6271  // ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
  6272  // calling the "fn" function with the response data for each page. To stop
  6273  // iterating, return false from the fn function.
  6274  //
  6275  // See ListObjectVersions method for more information on how to use this operation.
  6276  //
  6277  // Note: This operation can generate multiple requests to a service.
  6278  //
  6279  //    // Example iterating over at most 3 pages of a ListObjectVersions operation.
  6280  //    pageNum := 0
  6281  //    err := client.ListObjectVersionsPages(params,
  6282  //        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
  6283  //            pageNum++
  6284  //            fmt.Println(page)
  6285  //            return pageNum <= 3
  6286  //        })
  6287  //
  6288  func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
  6289  	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
  6290  }
  6291  
  6292  // ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
  6293  // it takes a Context and allows setting request options on the pages.
  6294  //
  6295  // The context must be non-nil and will be used for request cancellation. If
  6296  // the context is nil a panic will occur. In the future the SDK may create
  6297  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6298  // for more information on using Contexts.
  6299  func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
  6300  	p := request.Pagination{
  6301  		NewRequest: func() (*request.Request, error) {
  6302  			var inCpy *ListObjectVersionsInput
  6303  			if input != nil {
  6304  				tmp := *input
  6305  				inCpy = &tmp
  6306  			}
  6307  			req, _ := c.ListObjectVersionsRequest(inCpy)
  6308  			req.SetContext(ctx)
  6309  			req.ApplyOptions(opts...)
  6310  			return req, nil
  6311  		},
  6312  	}
  6313  
  6314  	for p.Next() {
  6315  		if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) {
  6316  			break
  6317  		}
  6318  	}
  6319  
  6320  	return p.Err()
  6321  }
  6322  
  6323  const opListObjects = "ListObjects"
  6324  
  6325  // ListObjectsRequest generates a "aws/request.Request" representing the
  6326  // client's request for the ListObjects operation. The "output" return
  6327  // value will be populated with the request's response once the request completes
  6328  // successfully.
  6329  //
  6330  // Use "Send" method on the returned Request to send the API call to the service.
  6331  // the "output" return value is not valid until after Send returns without error.
  6332  //
  6333  // See ListObjects for more information on using the ListObjects
  6334  // API call, and error handling.
  6335  //
  6336  // This method is useful when you want to inject custom logic or configuration
  6337  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6338  //
  6339  //
  6340  //    // Example sending a request using the ListObjectsRequest method.
  6341  //    req, resp := client.ListObjectsRequest(params)
  6342  //
  6343  //    err := req.Send()
  6344  //    if err == nil { // resp is now filled
  6345  //        fmt.Println(resp)
  6346  //    }
  6347  //
  6348  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
  6349  func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
  6350  	op := &request.Operation{
  6351  		Name:       opListObjects,
  6352  		HTTPMethod: "GET",
  6353  		HTTPPath:   "/{Bucket}",
  6354  		Paginator: &request.Paginator{
  6355  			InputTokens:     []string{"Marker"},
  6356  			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
  6357  			LimitToken:      "MaxKeys",
  6358  			TruncationToken: "IsTruncated",
  6359  		},
  6360  	}
  6361  
  6362  	if input == nil {
  6363  		input = &ListObjectsInput{}
  6364  	}
  6365  
  6366  	output = &ListObjectsOutput{}
  6367  	req = c.newRequest(op, input, output)
  6368  	return
  6369  }
  6370  
  6371  // ListObjects API operation for Amazon Simple Storage Service.
  6372  //
  6373  // Returns some or all (up to 1,000) of the objects in a bucket. You can use
  6374  // the request parameters as selection criteria to return a subset of the objects
  6375  // in a bucket. A 200 OK response can contain valid or invalid XML. Be sure
  6376  // to design your application to parse the contents of the response and handle
  6377  // it appropriately.
  6378  //
  6379  // This action has been revised. We recommend that you use the newer version,
  6380  // ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html),
  6381  // when developing applications. For backward compatibility, Amazon S3 continues
  6382  // to support ListObjects.
  6383  //
  6384  // The following operations are related to ListObjects:
  6385  //
  6386  //    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
  6387  //
  6388  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  6389  //
  6390  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  6391  //
  6392  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  6393  //
  6394  //    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
  6395  //
  6396  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6397  // with awserr.Error's Code and Message methods to get detailed information about
  6398  // the error.
  6399  //
  6400  // See the AWS API reference guide for Amazon Simple Storage Service's
  6401  // API operation ListObjects for usage and error information.
  6402  //
  6403  // Returned Error Codes:
  6404  //   * ErrCodeNoSuchBucket "NoSuchBucket"
  6405  //   The specified bucket does not exist.
  6406  //
  6407  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
  6408  func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
  6409  	req, out := c.ListObjectsRequest(input)
  6410  	return out, req.Send()
  6411  }
  6412  
  6413  // ListObjectsWithContext is the same as ListObjects with the addition of
  6414  // the ability to pass a context and additional request options.
  6415  //
  6416  // See ListObjects for details on how to use this API operation.
  6417  //
  6418  // The context must be non-nil and will be used for request cancellation. If
  6419  // the context is nil a panic will occur. In the future the SDK may create
  6420  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6421  // for more information on using Contexts.
  6422  func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
  6423  	req, out := c.ListObjectsRequest(input)
  6424  	req.SetContext(ctx)
  6425  	req.ApplyOptions(opts...)
  6426  	return out, req.Send()
  6427  }
  6428  
  6429  // ListObjectsPages iterates over the pages of a ListObjects operation,
  6430  // calling the "fn" function with the response data for each page. To stop
  6431  // iterating, return false from the fn function.
  6432  //
  6433  // See ListObjects method for more information on how to use this operation.
  6434  //
  6435  // Note: This operation can generate multiple requests to a service.
  6436  //
  6437  //    // Example iterating over at most 3 pages of a ListObjects operation.
  6438  //    pageNum := 0
  6439  //    err := client.ListObjectsPages(params,
  6440  //        func(page *s3.ListObjectsOutput, lastPage bool) bool {
  6441  //            pageNum++
  6442  //            fmt.Println(page)
  6443  //            return pageNum <= 3
  6444  //        })
  6445  //
  6446  func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
  6447  	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
  6448  }
  6449  
  6450  // ListObjectsPagesWithContext same as ListObjectsPages except
  6451  // it takes a Context and allows setting request options on the pages.
  6452  //
  6453  // The context must be non-nil and will be used for request cancellation. If
  6454  // the context is nil a panic will occur. In the future the SDK may create
  6455  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6456  // for more information on using Contexts.
  6457  func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
  6458  	p := request.Pagination{
  6459  		NewRequest: func() (*request.Request, error) {
  6460  			var inCpy *ListObjectsInput
  6461  			if input != nil {
  6462  				tmp := *input
  6463  				inCpy = &tmp
  6464  			}
  6465  			req, _ := c.ListObjectsRequest(inCpy)
  6466  			req.SetContext(ctx)
  6467  			req.ApplyOptions(opts...)
  6468  			return req, nil
  6469  		},
  6470  	}
  6471  
  6472  	for p.Next() {
  6473  		if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) {
  6474  			break
  6475  		}
  6476  	}
  6477  
  6478  	return p.Err()
  6479  }
  6480  
  6481  const opListObjectsV2 = "ListObjectsV2"
  6482  
  6483  // ListObjectsV2Request generates a "aws/request.Request" representing the
  6484  // client's request for the ListObjectsV2 operation. The "output" return
  6485  // value will be populated with the request's response once the request completes
  6486  // successfully.
  6487  //
  6488  // Use "Send" method on the returned Request to send the API call to the service.
  6489  // the "output" return value is not valid until after Send returns without error.
  6490  //
  6491  // See ListObjectsV2 for more information on using the ListObjectsV2
  6492  // API call, and error handling.
  6493  //
  6494  // This method is useful when you want to inject custom logic or configuration
  6495  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6496  //
  6497  //
  6498  //    // Example sending a request using the ListObjectsV2Request method.
  6499  //    req, resp := client.ListObjectsV2Request(params)
  6500  //
  6501  //    err := req.Send()
  6502  //    if err == nil { // resp is now filled
  6503  //        fmt.Println(resp)
  6504  //    }
  6505  //
  6506  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
  6507  func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
  6508  	op := &request.Operation{
  6509  		Name:       opListObjectsV2,
  6510  		HTTPMethod: "GET",
  6511  		HTTPPath:   "/{Bucket}?list-type=2",
  6512  		Paginator: &request.Paginator{
  6513  			InputTokens:     []string{"ContinuationToken"},
  6514  			OutputTokens:    []string{"NextContinuationToken"},
  6515  			LimitToken:      "MaxKeys",
  6516  			TruncationToken: "",
  6517  		},
  6518  	}
  6519  
  6520  	if input == nil {
  6521  		input = &ListObjectsV2Input{}
  6522  	}
  6523  
  6524  	output = &ListObjectsV2Output{}
  6525  	req = c.newRequest(op, input, output)
  6526  	return
  6527  }
  6528  
  6529  // ListObjectsV2 API operation for Amazon Simple Storage Service.
  6530  //
  6531  // Returns some or all (up to 1,000) of the objects in a bucket with each request.
  6532  // You can use the request parameters as selection criteria to return a subset
  6533  // of the objects in a bucket. A 200 OK response can contain valid or invalid
  6534  // XML. Make sure to design your application to parse the contents of the response
  6535  // and handle it appropriately. Objects are returned sorted in an ascending
  6536  // order of the respective key names in the list. For more information about
  6537  // listing objects, see Listing object keys programmatically (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)
  6538  //
  6539  // To use this operation, you must have READ access to the bucket.
  6540  //
  6541  // To use this action in an Identity and Access Management (IAM) policy, you
  6542  // must have permissions to perform the s3:ListBucket action. The bucket owner
  6543  // has this permission by default and can grant this permission to others. For
  6544  // more information about permissions, see Permissions Related to Bucket Subresource
  6545  // Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  6546  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  6547  //
  6548  // This section describes the latest revision of this action. We recommend that
  6549  // you use this revised API for application development. For backward compatibility,
  6550  // Amazon S3 continues to support the prior version of this API, ListObjects
  6551  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html).
  6552  //
  6553  // To get a list of your buckets, see ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html).
  6554  //
  6555  // The following operations are related to ListObjectsV2:
  6556  //
  6557  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  6558  //
  6559  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  6560  //
  6561  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  6562  //
  6563  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6564  // with awserr.Error's Code and Message methods to get detailed information about
  6565  // the error.
  6566  //
  6567  // See the AWS API reference guide for Amazon Simple Storage Service's
  6568  // API operation ListObjectsV2 for usage and error information.
  6569  //
  6570  // Returned Error Codes:
  6571  //   * ErrCodeNoSuchBucket "NoSuchBucket"
  6572  //   The specified bucket does not exist.
  6573  //
  6574  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
  6575  func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
  6576  	req, out := c.ListObjectsV2Request(input)
  6577  	return out, req.Send()
  6578  }
  6579  
  6580  // ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
  6581  // the ability to pass a context and additional request options.
  6582  //
  6583  // See ListObjectsV2 for details on how to use this API operation.
  6584  //
  6585  // The context must be non-nil and will be used for request cancellation. If
  6586  // the context is nil a panic will occur. In the future the SDK may create
  6587  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6588  // for more information on using Contexts.
  6589  func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
  6590  	req, out := c.ListObjectsV2Request(input)
  6591  	req.SetContext(ctx)
  6592  	req.ApplyOptions(opts...)
  6593  	return out, req.Send()
  6594  }
  6595  
  6596  // ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
  6597  // calling the "fn" function with the response data for each page. To stop
  6598  // iterating, return false from the fn function.
  6599  //
  6600  // See ListObjectsV2 method for more information on how to use this operation.
  6601  //
  6602  // Note: This operation can generate multiple requests to a service.
  6603  //
  6604  //    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
  6605  //    pageNum := 0
  6606  //    err := client.ListObjectsV2Pages(params,
  6607  //        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
  6608  //            pageNum++
  6609  //            fmt.Println(page)
  6610  //            return pageNum <= 3
  6611  //        })
  6612  //
  6613  func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
  6614  	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
  6615  }
  6616  
  6617  // ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
  6618  // it takes a Context and allows setting request options on the pages.
  6619  //
  6620  // The context must be non-nil and will be used for request cancellation. If
  6621  // the context is nil a panic will occur. In the future the SDK may create
  6622  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6623  // for more information on using Contexts.
  6624  func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
  6625  	p := request.Pagination{
  6626  		NewRequest: func() (*request.Request, error) {
  6627  			var inCpy *ListObjectsV2Input
  6628  			if input != nil {
  6629  				tmp := *input
  6630  				inCpy = &tmp
  6631  			}
  6632  			req, _ := c.ListObjectsV2Request(inCpy)
  6633  			req.SetContext(ctx)
  6634  			req.ApplyOptions(opts...)
  6635  			return req, nil
  6636  		},
  6637  	}
  6638  
  6639  	for p.Next() {
  6640  		if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) {
  6641  			break
  6642  		}
  6643  	}
  6644  
  6645  	return p.Err()
  6646  }
  6647  
  6648  const opListParts = "ListParts"
  6649  
  6650  // ListPartsRequest generates a "aws/request.Request" representing the
  6651  // client's request for the ListParts operation. The "output" return
  6652  // value will be populated with the request's response once the request completes
  6653  // successfully.
  6654  //
  6655  // Use "Send" method on the returned Request to send the API call to the service.
  6656  // the "output" return value is not valid until after Send returns without error.
  6657  //
  6658  // See ListParts for more information on using the ListParts
  6659  // API call, and error handling.
  6660  //
  6661  // This method is useful when you want to inject custom logic or configuration
  6662  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6663  //
  6664  //
  6665  //    // Example sending a request using the ListPartsRequest method.
  6666  //    req, resp := client.ListPartsRequest(params)
  6667  //
  6668  //    err := req.Send()
  6669  //    if err == nil { // resp is now filled
  6670  //        fmt.Println(resp)
  6671  //    }
  6672  //
  6673  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
  6674  func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
  6675  	op := &request.Operation{
  6676  		Name:       opListParts,
  6677  		HTTPMethod: "GET",
  6678  		HTTPPath:   "/{Bucket}/{Key+}",
  6679  		Paginator: &request.Paginator{
  6680  			InputTokens:     []string{"PartNumberMarker"},
  6681  			OutputTokens:    []string{"NextPartNumberMarker"},
  6682  			LimitToken:      "MaxParts",
  6683  			TruncationToken: "IsTruncated",
  6684  		},
  6685  	}
  6686  
  6687  	if input == nil {
  6688  		input = &ListPartsInput{}
  6689  	}
  6690  
  6691  	output = &ListPartsOutput{}
  6692  	req = c.newRequest(op, input, output)
  6693  	return
  6694  }
  6695  
  6696  // ListParts API operation for Amazon Simple Storage Service.
  6697  //
  6698  // Lists the parts that have been uploaded for a specific multipart upload.
  6699  // This operation must include the upload ID, which you obtain by sending the
  6700  // initiate multipart upload request (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)).
  6701  // This request returns a maximum of 1,000 uploaded parts. The default number
  6702  // of parts returned is 1,000 parts. You can restrict the number of parts returned
  6703  // by specifying the max-parts request parameter. If your multipart upload consists
  6704  // of more than 1,000 parts, the response returns an IsTruncated field with
  6705  // the value of true, and a NextPartNumberMarker element. In subsequent ListParts
  6706  // requests you can include the part-number-marker query string parameter and
  6707  // set its value to the NextPartNumberMarker field value from the previous response.
  6708  //
  6709  // For more information on multipart uploads, see Uploading Objects Using Multipart
  6710  // Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
  6711  //
  6712  // For information on permissions required to use the multipart upload API,
  6713  // see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
  6714  //
  6715  // The following operations are related to ListParts:
  6716  //
  6717  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
  6718  //
  6719  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
  6720  //
  6721  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  6722  //
  6723  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
  6724  //
  6725  //    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
  6726  //
  6727  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6728  // with awserr.Error's Code and Message methods to get detailed information about
  6729  // the error.
  6730  //
  6731  // See the AWS API reference guide for Amazon Simple Storage Service's
  6732  // API operation ListParts for usage and error information.
  6733  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
  6734  func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
  6735  	req, out := c.ListPartsRequest(input)
  6736  	return out, req.Send()
  6737  }
  6738  
  6739  // ListPartsWithContext is the same as ListParts with the addition of
  6740  // the ability to pass a context and additional request options.
  6741  //
  6742  // See ListParts for details on how to use this API operation.
  6743  //
  6744  // The context must be non-nil and will be used for request cancellation. If
  6745  // the context is nil a panic will occur. In the future the SDK may create
  6746  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6747  // for more information on using Contexts.
  6748  func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
  6749  	req, out := c.ListPartsRequest(input)
  6750  	req.SetContext(ctx)
  6751  	req.ApplyOptions(opts...)
  6752  	return out, req.Send()
  6753  }
  6754  
  6755  // ListPartsPages iterates over the pages of a ListParts operation,
  6756  // calling the "fn" function with the response data for each page. To stop
  6757  // iterating, return false from the fn function.
  6758  //
  6759  // See ListParts method for more information on how to use this operation.
  6760  //
  6761  // Note: This operation can generate multiple requests to a service.
  6762  //
  6763  //    // Example iterating over at most 3 pages of a ListParts operation.
  6764  //    pageNum := 0
  6765  //    err := client.ListPartsPages(params,
  6766  //        func(page *s3.ListPartsOutput, lastPage bool) bool {
  6767  //            pageNum++
  6768  //            fmt.Println(page)
  6769  //            return pageNum <= 3
  6770  //        })
  6771  //
  6772  func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
  6773  	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
  6774  }
  6775  
  6776  // ListPartsPagesWithContext same as ListPartsPages except
  6777  // it takes a Context and allows setting request options on the pages.
  6778  //
  6779  // The context must be non-nil and will be used for request cancellation. If
  6780  // the context is nil a panic will occur. In the future the SDK may create
  6781  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6782  // for more information on using Contexts.
  6783  func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
  6784  	p := request.Pagination{
  6785  		NewRequest: func() (*request.Request, error) {
  6786  			var inCpy *ListPartsInput
  6787  			if input != nil {
  6788  				tmp := *input
  6789  				inCpy = &tmp
  6790  			}
  6791  			req, _ := c.ListPartsRequest(inCpy)
  6792  			req.SetContext(ctx)
  6793  			req.ApplyOptions(opts...)
  6794  			return req, nil
  6795  		},
  6796  	}
  6797  
  6798  	for p.Next() {
  6799  		if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) {
  6800  			break
  6801  		}
  6802  	}
  6803  
  6804  	return p.Err()
  6805  }
  6806  
  6807  const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
  6808  
  6809  // PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
  6810  // client's request for the PutBucketAccelerateConfiguration operation. The "output" return
  6811  // value will be populated with the request's response once the request completes
  6812  // successfully.
  6813  //
  6814  // Use "Send" method on the returned Request to send the API call to the service.
  6815  // the "output" return value is not valid until after Send returns without error.
  6816  //
  6817  // See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
  6818  // API call, and error handling.
  6819  //
  6820  // This method is useful when you want to inject custom logic or configuration
  6821  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6822  //
  6823  //
  6824  //    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
  6825  //    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
  6826  //
  6827  //    err := req.Send()
  6828  //    if err == nil { // resp is now filled
  6829  //        fmt.Println(resp)
  6830  //    }
  6831  //
  6832  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
  6833  func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
  6834  	op := &request.Operation{
  6835  		Name:       opPutBucketAccelerateConfiguration,
  6836  		HTTPMethod: "PUT",
  6837  		HTTPPath:   "/{Bucket}?accelerate",
  6838  	}
  6839  
  6840  	if input == nil {
  6841  		input = &PutBucketAccelerateConfigurationInput{}
  6842  	}
  6843  
  6844  	output = &PutBucketAccelerateConfigurationOutput{}
  6845  	req = c.newRequest(op, input, output)
  6846  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  6847  	return
  6848  }
  6849  
  6850  // PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
  6851  //
  6852  // Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
  6853  // Acceleration is a bucket-level feature that enables you to perform faster
  6854  // data transfers to Amazon S3.
  6855  //
  6856  // To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration
  6857  // action. The bucket owner has this permission by default. The bucket owner
  6858  // can grant this permission to others. For more information about permissions,
  6859  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  6860  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  6861  //
  6862  // The Transfer Acceleration state of a bucket can be set to one of the following
  6863  // two values:
  6864  //
  6865  //    * Enabled – Enables accelerated data transfers to the bucket.
  6866  //
  6867  //    * Suspended – Disables accelerated data transfers to the bucket.
  6868  //
  6869  // The GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
  6870  // action returns the transfer acceleration state of a bucket.
  6871  //
  6872  // After setting the Transfer Acceleration state of a bucket to Enabled, it
  6873  // might take up to thirty minutes before the data transfer rates to the bucket
  6874  // increase.
  6875  //
  6876  // The name of the bucket used for Transfer Acceleration must be DNS-compliant
  6877  // and must not contain periods (".").
  6878  //
  6879  // For more information about transfer acceleration, see Transfer Acceleration
  6880  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
  6881  //
  6882  // The following operations are related to PutBucketAccelerateConfiguration:
  6883  //
  6884  //    * GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
  6885  //
  6886  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  6887  //
  6888  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6889  // with awserr.Error's Code and Message methods to get detailed information about
  6890  // the error.
  6891  //
  6892  // See the AWS API reference guide for Amazon Simple Storage Service's
  6893  // API operation PutBucketAccelerateConfiguration for usage and error information.
  6894  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
  6895  func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
  6896  	req, out := c.PutBucketAccelerateConfigurationRequest(input)
  6897  	return out, req.Send()
  6898  }
  6899  
  6900  // PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
  6901  // the ability to pass a context and additional request options.
  6902  //
  6903  // See PutBucketAccelerateConfiguration for details on how to use this API operation.
  6904  //
  6905  // The context must be non-nil and will be used for request cancellation. If
  6906  // the context is nil a panic will occur. In the future the SDK may create
  6907  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6908  // for more information on using Contexts.
  6909  func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
  6910  	req, out := c.PutBucketAccelerateConfigurationRequest(input)
  6911  	req.SetContext(ctx)
  6912  	req.ApplyOptions(opts...)
  6913  	return out, req.Send()
  6914  }
  6915  
  6916  const opPutBucketAcl = "PutBucketAcl"
  6917  
  6918  // PutBucketAclRequest generates a "aws/request.Request" representing the
  6919  // client's request for the PutBucketAcl operation. The "output" return
  6920  // value will be populated with the request's response once the request completes
  6921  // successfully.
  6922  //
  6923  // Use "Send" method on the returned Request to send the API call to the service.
  6924  // the "output" return value is not valid until after Send returns without error.
  6925  //
  6926  // See PutBucketAcl for more information on using the PutBucketAcl
  6927  // API call, and error handling.
  6928  //
  6929  // This method is useful when you want to inject custom logic or configuration
  6930  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6931  //
  6932  //
  6933  //    // Example sending a request using the PutBucketAclRequest method.
  6934  //    req, resp := client.PutBucketAclRequest(params)
  6935  //
  6936  //    err := req.Send()
  6937  //    if err == nil { // resp is now filled
  6938  //        fmt.Println(resp)
  6939  //    }
  6940  //
  6941  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
  6942  func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
  6943  	op := &request.Operation{
  6944  		Name:       opPutBucketAcl,
  6945  		HTTPMethod: "PUT",
  6946  		HTTPPath:   "/{Bucket}?acl",
  6947  	}
  6948  
  6949  	if input == nil {
  6950  		input = &PutBucketAclInput{}
  6951  	}
  6952  
  6953  	output = &PutBucketAclOutput{}
  6954  	req = c.newRequest(op, input, output)
  6955  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  6956  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  6957  		Name: "contentMd5Handler",
  6958  		Fn:   checksum.AddBodyContentMD5Handler,
  6959  	})
  6960  	return
  6961  }
  6962  
  6963  // PutBucketAcl API operation for Amazon Simple Storage Service.
  6964  //
  6965  // Sets the permissions on an existing bucket using access control lists (ACL).
  6966  // For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
  6967  // To set the ACL of a bucket, you must have WRITE_ACP permission.
  6968  //
  6969  // You can use one of the following two ways to set a bucket's permissions:
  6970  //
  6971  //    * Specify the ACL in the request body
  6972  //
  6973  //    * Specify permissions using request headers
  6974  //
  6975  // You cannot specify access permission using both the body and the request
  6976  // headers.
  6977  //
  6978  // Depending on your application needs, you may choose to set the ACL on a bucket
  6979  // using either the request body or the headers. For example, if you have an
  6980  // existing application that updates a bucket ACL using the request body, then
  6981  // you can continue to use that approach.
  6982  //
  6983  // Access Permissions
  6984  //
  6985  // You can set access permissions using one of the following methods:
  6986  //
  6987  //    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
  6988  //    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
  6989  //    predefined set of grantees and permissions. Specify the canned ACL name
  6990  //    as the value of x-amz-acl. If you use this header, you cannot use other
  6991  //    access control-specific headers in your request. For more information,
  6992  //    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
  6993  //
  6994  //    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
  6995  //    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
  6996  //    these headers, you specify explicit access permissions and grantees (Amazon
  6997  //    Web Services accounts or Amazon S3 groups) who will receive the permission.
  6998  //    If you use these ACL-specific headers, you cannot use the x-amz-acl header
  6999  //    to set a canned ACL. These parameters map to the set of permissions that
  7000  //    Amazon S3 supports in an ACL. For more information, see Access Control
  7001  //    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
  7002  //    You specify each grantee as a type=value pair, where the type is one of
  7003  //    the following: id – if the value specified is the canonical user ID
  7004  //    of an Amazon Web Services account uri – if you are granting permissions
  7005  //    to a predefined group emailAddress – if the value specified is the email
  7006  //    address of an Amazon Web Services account Using email addresses to specify
  7007  //    a grantee is only supported in the following Amazon Web Services Regions:
  7008  //    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
  7009  //    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
  7010  //    South America (São Paulo) For a list of all the Amazon S3 supported Regions
  7011  //    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
  7012  //    in the Amazon Web Services General Reference. For example, the following
  7013  //    x-amz-grant-write header grants create, overwrite, and delete objects
  7014  //    permission to LogDelivery group predefined by Amazon S3 and two Amazon
  7015  //    Web Services accounts identified by their email addresses. x-amz-grant-write:
  7016  //    uri="http://acs.amazonaws.com/groups/s3/LogDelivery", id="111122223333",
  7017  //    id="555566667777"
  7018  //
  7019  // You can use either a canned ACL or specify access permissions explicitly.
  7020  // You cannot do both.
  7021  //
  7022  // Grantee Values
  7023  //
  7024  // You can specify the person (grantee) to whom you're assigning access rights
  7025  // (using request elements) in the following ways:
  7026  //
  7027  //    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7028  //    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
  7029  //    </Grantee> DisplayName is optional and ignored in the request
  7030  //
  7031  //    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7032  //    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
  7033  //
  7034  //    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7035  //    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
  7036  //    The grantee is resolved to the CanonicalUser and, in a response to a GET
  7037  //    Object acl request, appears as the CanonicalUser. Using email addresses
  7038  //    to specify a grantee is only supported in the following Amazon Web Services
  7039  //    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
  7040  //    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
  7041  //    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
  7042  //    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
  7043  //    in the Amazon Web Services General Reference.
  7044  //
  7045  // Related Resources
  7046  //
  7047  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  7048  //
  7049  //    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
  7050  //
  7051  //    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
  7052  //
  7053  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7054  // with awserr.Error's Code and Message methods to get detailed information about
  7055  // the error.
  7056  //
  7057  // See the AWS API reference guide for Amazon Simple Storage Service's
  7058  // API operation PutBucketAcl for usage and error information.
  7059  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
  7060  func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
  7061  	req, out := c.PutBucketAclRequest(input)
  7062  	return out, req.Send()
  7063  }
  7064  
  7065  // PutBucketAclWithContext is the same as PutBucketAcl with the addition of
  7066  // the ability to pass a context and additional request options.
  7067  //
  7068  // See PutBucketAcl for details on how to use this API operation.
  7069  //
  7070  // The context must be non-nil and will be used for request cancellation. If
  7071  // the context is nil a panic will occur. In the future the SDK may create
  7072  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7073  // for more information on using Contexts.
  7074  func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
  7075  	req, out := c.PutBucketAclRequest(input)
  7076  	req.SetContext(ctx)
  7077  	req.ApplyOptions(opts...)
  7078  	return out, req.Send()
  7079  }
  7080  
  7081  const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
  7082  
  7083  // PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
  7084  // client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
  7085  // value will be populated with the request's response once the request completes
  7086  // successfully.
  7087  //
  7088  // Use "Send" method on the returned Request to send the API call to the service.
  7089  // the "output" return value is not valid until after Send returns without error.
  7090  //
  7091  // See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
  7092  // API call, and error handling.
  7093  //
  7094  // This method is useful when you want to inject custom logic or configuration
  7095  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7096  //
  7097  //
  7098  //    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
  7099  //    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
  7100  //
  7101  //    err := req.Send()
  7102  //    if err == nil { // resp is now filled
  7103  //        fmt.Println(resp)
  7104  //    }
  7105  //
  7106  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
  7107  func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
  7108  	op := &request.Operation{
  7109  		Name:       opPutBucketAnalyticsConfiguration,
  7110  		HTTPMethod: "PUT",
  7111  		HTTPPath:   "/{Bucket}?analytics",
  7112  	}
  7113  
  7114  	if input == nil {
  7115  		input = &PutBucketAnalyticsConfigurationInput{}
  7116  	}
  7117  
  7118  	output = &PutBucketAnalyticsConfigurationOutput{}
  7119  	req = c.newRequest(op, input, output)
  7120  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7121  	return
  7122  }
  7123  
  7124  // PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
  7125  //
  7126  // Sets an analytics configuration for the bucket (specified by the analytics
  7127  // configuration ID). You can have up to 1,000 analytics configurations per
  7128  // bucket.
  7129  //
  7130  // You can choose to have storage class analysis export analysis reports sent
  7131  // to a comma-separated values (CSV) flat file. See the DataExport request element.
  7132  // Reports are updated daily and are based on the object filters that you configure.
  7133  // When selecting data export, you specify a destination bucket and an optional
  7134  // destination prefix where the file is written. You can export the data to
  7135  // a destination bucket in a different account. However, the destination bucket
  7136  // must be in the same Region as the bucket that you are making the PUT analytics
  7137  // configuration to. For more information, see Amazon S3 Analytics – Storage
  7138  // Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
  7139  //
  7140  // You must create a bucket policy on the destination bucket where the exported
  7141  // file is written to grant permissions to Amazon S3 to write objects to the
  7142  // bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
  7143  // and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
  7144  //
  7145  // To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
  7146  // action. The bucket owner has this permission by default. The bucket owner
  7147  // can grant this permission to others. For more information about permissions,
  7148  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  7149  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  7150  //
  7151  // Special Errors
  7152  //
  7153  //    * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid
  7154  //    argument.
  7155  //
  7156  //    * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause:
  7157  //    You are attempting to create a new configuration but have already reached
  7158  //    the 1,000-configuration limit.
  7159  //
  7160  //    * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not
  7161  //    the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration
  7162  //    bucket permission to set the configuration on the bucket.
  7163  //
  7164  // Related Resources
  7165  //
  7166  //    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
  7167  //
  7168  //    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
  7169  //
  7170  //    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
  7171  //
  7172  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7173  // with awserr.Error's Code and Message methods to get detailed information about
  7174  // the error.
  7175  //
  7176  // See the AWS API reference guide for Amazon Simple Storage Service's
  7177  // API operation PutBucketAnalyticsConfiguration for usage and error information.
  7178  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
  7179  func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
  7180  	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
  7181  	return out, req.Send()
  7182  }
  7183  
  7184  // PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
  7185  // the ability to pass a context and additional request options.
  7186  //
  7187  // See PutBucketAnalyticsConfiguration for details on how to use this API operation.
  7188  //
  7189  // The context must be non-nil and will be used for request cancellation. If
  7190  // the context is nil a panic will occur. In the future the SDK may create
  7191  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7192  // for more information on using Contexts.
  7193  func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
  7194  	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
  7195  	req.SetContext(ctx)
  7196  	req.ApplyOptions(opts...)
  7197  	return out, req.Send()
  7198  }
  7199  
  7200  const opPutBucketCors = "PutBucketCors"
  7201  
  7202  // PutBucketCorsRequest generates a "aws/request.Request" representing the
  7203  // client's request for the PutBucketCors operation. The "output" return
  7204  // value will be populated with the request's response once the request completes
  7205  // successfully.
  7206  //
  7207  // Use "Send" method on the returned Request to send the API call to the service.
  7208  // the "output" return value is not valid until after Send returns without error.
  7209  //
  7210  // See PutBucketCors for more information on using the PutBucketCors
  7211  // API call, and error handling.
  7212  //
  7213  // This method is useful when you want to inject custom logic or configuration
  7214  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7215  //
  7216  //
  7217  //    // Example sending a request using the PutBucketCorsRequest method.
  7218  //    req, resp := client.PutBucketCorsRequest(params)
  7219  //
  7220  //    err := req.Send()
  7221  //    if err == nil { // resp is now filled
  7222  //        fmt.Println(resp)
  7223  //    }
  7224  //
  7225  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
  7226  func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
  7227  	op := &request.Operation{
  7228  		Name:       opPutBucketCors,
  7229  		HTTPMethod: "PUT",
  7230  		HTTPPath:   "/{Bucket}?cors",
  7231  	}
  7232  
  7233  	if input == nil {
  7234  		input = &PutBucketCorsInput{}
  7235  	}
  7236  
  7237  	output = &PutBucketCorsOutput{}
  7238  	req = c.newRequest(op, input, output)
  7239  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7240  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  7241  		Name: "contentMd5Handler",
  7242  		Fn:   checksum.AddBodyContentMD5Handler,
  7243  	})
  7244  	return
  7245  }
  7246  
  7247  // PutBucketCors API operation for Amazon Simple Storage Service.
  7248  //
  7249  // Sets the cors configuration for your bucket. If the configuration exists,
  7250  // Amazon S3 replaces it.
  7251  //
  7252  // To use this operation, you must be allowed to perform the s3:PutBucketCORS
  7253  // action. By default, the bucket owner has this permission and can grant it
  7254  // to others.
  7255  //
  7256  // You set this configuration on a bucket so that the bucket can service cross-origin
  7257  // requests. For example, you might want to enable a request whose origin is
  7258  // http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com
  7259  // by using the browser's XMLHttpRequest capability.
  7260  //
  7261  // To enable cross-origin resource sharing (CORS) on a bucket, you add the cors
  7262  // subresource to the bucket. The cors subresource is an XML document in which
  7263  // you configure rules that identify origins and the HTTP methods that can be
  7264  // executed on your bucket. The document is limited to 64 KB in size.
  7265  //
  7266  // When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request)
  7267  // against a bucket, it evaluates the cors configuration on the bucket and uses
  7268  // the first CORSRule rule that matches the incoming browser request to enable
  7269  // a cross-origin request. For a rule to match, the following conditions must
  7270  // be met:
  7271  //
  7272  //    * The request's Origin header must match AllowedOrigin elements.
  7273  //
  7274  //    * The request method (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
  7275  //    header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
  7276  //    elements.
  7277  //
  7278  //    * Every header specified in the Access-Control-Request-Headers request
  7279  //    header of a pre-flight request must match an AllowedHeader element.
  7280  //
  7281  // For more information about CORS, go to Enabling Cross-Origin Resource Sharing
  7282  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
  7283  // S3 User Guide.
  7284  //
  7285  // Related Resources
  7286  //
  7287  //    * GetBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)
  7288  //
  7289  //    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
  7290  //
  7291  //    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
  7292  //
  7293  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7294  // with awserr.Error's Code and Message methods to get detailed information about
  7295  // the error.
  7296  //
  7297  // See the AWS API reference guide for Amazon Simple Storage Service's
  7298  // API operation PutBucketCors for usage and error information.
  7299  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
  7300  func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
  7301  	req, out := c.PutBucketCorsRequest(input)
  7302  	return out, req.Send()
  7303  }
  7304  
  7305  // PutBucketCorsWithContext is the same as PutBucketCors with the addition of
  7306  // the ability to pass a context and additional request options.
  7307  //
  7308  // See PutBucketCors for details on how to use this API operation.
  7309  //
  7310  // The context must be non-nil and will be used for request cancellation. If
  7311  // the context is nil a panic will occur. In the future the SDK may create
  7312  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7313  // for more information on using Contexts.
  7314  func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
  7315  	req, out := c.PutBucketCorsRequest(input)
  7316  	req.SetContext(ctx)
  7317  	req.ApplyOptions(opts...)
  7318  	return out, req.Send()
  7319  }
  7320  
  7321  const opPutBucketEncryption = "PutBucketEncryption"
  7322  
  7323  // PutBucketEncryptionRequest generates a "aws/request.Request" representing the
  7324  // client's request for the PutBucketEncryption operation. The "output" return
  7325  // value will be populated with the request's response once the request completes
  7326  // successfully.
  7327  //
  7328  // Use "Send" method on the returned Request to send the API call to the service.
  7329  // the "output" return value is not valid until after Send returns without error.
  7330  //
  7331  // See PutBucketEncryption for more information on using the PutBucketEncryption
  7332  // API call, and error handling.
  7333  //
  7334  // This method is useful when you want to inject custom logic or configuration
  7335  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7336  //
  7337  //
  7338  //    // Example sending a request using the PutBucketEncryptionRequest method.
  7339  //    req, resp := client.PutBucketEncryptionRequest(params)
  7340  //
  7341  //    err := req.Send()
  7342  //    if err == nil { // resp is now filled
  7343  //        fmt.Println(resp)
  7344  //    }
  7345  //
  7346  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
  7347  func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
  7348  	op := &request.Operation{
  7349  		Name:       opPutBucketEncryption,
  7350  		HTTPMethod: "PUT",
  7351  		HTTPPath:   "/{Bucket}?encryption",
  7352  	}
  7353  
  7354  	if input == nil {
  7355  		input = &PutBucketEncryptionInput{}
  7356  	}
  7357  
  7358  	output = &PutBucketEncryptionOutput{}
  7359  	req = c.newRequest(op, input, output)
  7360  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7361  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  7362  		Name: "contentMd5Handler",
  7363  		Fn:   checksum.AddBodyContentMD5Handler,
  7364  	})
  7365  	return
  7366  }
  7367  
  7368  // PutBucketEncryption API operation for Amazon Simple Storage Service.
  7369  //
  7370  // This action uses the encryption subresource to configure default encryption
  7371  // and Amazon S3 Bucket Key for an existing bucket.
  7372  //
  7373  // Default encryption for a bucket can use server-side encryption with Amazon
  7374  // S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). If you specify
  7375  // default encryption using SSE-KMS, you can also configure Amazon S3 Bucket
  7376  // Key. For information about default encryption, see Amazon S3 default bucket
  7377  // encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
  7378  // in the Amazon S3 User Guide. For more information about S3 Bucket Keys, see
  7379  // Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
  7380  // in the Amazon S3 User Guide.
  7381  //
  7382  // This action requires Amazon Web Services Signature Version 4. For more information,
  7383  // see Authenticating Requests (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
  7384  //
  7385  // To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
  7386  // action. The bucket owner has this permission by default. The bucket owner
  7387  // can grant this permission to others. For more information about permissions,
  7388  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  7389  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  7390  // in the Amazon S3 User Guide.
  7391  //
  7392  // Related Resources
  7393  //
  7394  //    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  7395  //
  7396  //    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
  7397  //
  7398  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7399  // with awserr.Error's Code and Message methods to get detailed information about
  7400  // the error.
  7401  //
  7402  // See the AWS API reference guide for Amazon Simple Storage Service's
  7403  // API operation PutBucketEncryption for usage and error information.
  7404  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
  7405  func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
  7406  	req, out := c.PutBucketEncryptionRequest(input)
  7407  	return out, req.Send()
  7408  }
  7409  
  7410  // PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
  7411  // the ability to pass a context and additional request options.
  7412  //
  7413  // See PutBucketEncryption for details on how to use this API operation.
  7414  //
  7415  // The context must be non-nil and will be used for request cancellation. If
  7416  // the context is nil a panic will occur. In the future the SDK may create
  7417  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7418  // for more information on using Contexts.
  7419  func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
  7420  	req, out := c.PutBucketEncryptionRequest(input)
  7421  	req.SetContext(ctx)
  7422  	req.ApplyOptions(opts...)
  7423  	return out, req.Send()
  7424  }
  7425  
  7426  const opPutBucketIntelligentTieringConfiguration = "PutBucketIntelligentTieringConfiguration"
  7427  
  7428  // PutBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
  7429  // client's request for the PutBucketIntelligentTieringConfiguration operation. The "output" return
  7430  // value will be populated with the request's response once the request completes
  7431  // successfully.
  7432  //
  7433  // Use "Send" method on the returned Request to send the API call to the service.
  7434  // the "output" return value is not valid until after Send returns without error.
  7435  //
  7436  // See PutBucketIntelligentTieringConfiguration for more information on using the PutBucketIntelligentTieringConfiguration
  7437  // API call, and error handling.
  7438  //
  7439  // This method is useful when you want to inject custom logic or configuration
  7440  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7441  //
  7442  //
  7443  //    // Example sending a request using the PutBucketIntelligentTieringConfigurationRequest method.
  7444  //    req, resp := client.PutBucketIntelligentTieringConfigurationRequest(params)
  7445  //
  7446  //    err := req.Send()
  7447  //    if err == nil { // resp is now filled
  7448  //        fmt.Println(resp)
  7449  //    }
  7450  //
  7451  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
  7452  func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketIntelligentTieringConfigurationInput) (req *request.Request, output *PutBucketIntelligentTieringConfigurationOutput) {
  7453  	op := &request.Operation{
  7454  		Name:       opPutBucketIntelligentTieringConfiguration,
  7455  		HTTPMethod: "PUT",
  7456  		HTTPPath:   "/{Bucket}?intelligent-tiering",
  7457  	}
  7458  
  7459  	if input == nil {
  7460  		input = &PutBucketIntelligentTieringConfigurationInput{}
  7461  	}
  7462  
  7463  	output = &PutBucketIntelligentTieringConfigurationOutput{}
  7464  	req = c.newRequest(op, input, output)
  7465  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7466  	return
  7467  }
  7468  
  7469  // PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
  7470  //
  7471  // Puts a S3 Intelligent-Tiering configuration to the specified bucket. You
  7472  // can have up to 1,000 S3 Intelligent-Tiering configurations per bucket.
  7473  //
  7474  // The S3 Intelligent-Tiering storage class is designed to optimize storage
  7475  // costs by automatically moving data to the most cost-effective storage access
  7476  // tier, without performance impact or operational overhead. S3 Intelligent-Tiering
  7477  // delivers automatic cost savings in two low latency and high throughput access
  7478  // tiers. For data that can be accessed asynchronously, you can choose to activate
  7479  // automatic archiving capabilities within the S3 Intelligent-Tiering storage
  7480  // class.
  7481  //
  7482  // The S3 Intelligent-Tiering storage class is the ideal storage class for data
  7483  // with unknown, changing, or unpredictable access patterns, independent of
  7484  // object size or retention period. If the size of an object is less than 128
  7485  // KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
  7486  // they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
  7487  // storage class.
  7488  //
  7489  // For more information, see Storage class for automatically optimizing frequently
  7490  // and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
  7491  //
  7492  // Operations related to PutBucketIntelligentTieringConfiguration include:
  7493  //
  7494  //    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
  7495  //
  7496  //    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
  7497  //
  7498  //    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
  7499  //
  7500  // You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically
  7501  // move objects stored in the S3 Intelligent-Tiering storage class to the Archive
  7502  // Access or Deep Archive Access tier.
  7503  //
  7504  // Special Errors
  7505  //
  7506  //    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
  7507  //
  7508  //    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
  7509  //    attempting to create a new configuration but have already reached the
  7510  //    1,000-configuration limit.
  7511  //
  7512  //    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
  7513  //    of the specified bucket, or you do not have the s3:PutIntelligentTieringConfiguration
  7514  //    bucket permission to set the configuration on the bucket.
  7515  //
  7516  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7517  // with awserr.Error's Code and Message methods to get detailed information about
  7518  // the error.
  7519  //
  7520  // See the AWS API reference guide for Amazon Simple Storage Service's
  7521  // API operation PutBucketIntelligentTieringConfiguration for usage and error information.
  7522  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
  7523  func (c *S3) PutBucketIntelligentTieringConfiguration(input *PutBucketIntelligentTieringConfigurationInput) (*PutBucketIntelligentTieringConfigurationOutput, error) {
  7524  	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
  7525  	return out, req.Send()
  7526  }
  7527  
  7528  // PutBucketIntelligentTieringConfigurationWithContext is the same as PutBucketIntelligentTieringConfiguration with the addition of
  7529  // the ability to pass a context and additional request options.
  7530  //
  7531  // See PutBucketIntelligentTieringConfiguration for details on how to use this API operation.
  7532  //
  7533  // The context must be non-nil and will be used for request cancellation. If
  7534  // the context is nil a panic will occur. In the future the SDK may create
  7535  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7536  // for more information on using Contexts.
  7537  func (c *S3) PutBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *PutBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*PutBucketIntelligentTieringConfigurationOutput, error) {
  7538  	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
  7539  	req.SetContext(ctx)
  7540  	req.ApplyOptions(opts...)
  7541  	return out, req.Send()
  7542  }
  7543  
  7544  const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
  7545  
  7546  // PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
  7547  // client's request for the PutBucketInventoryConfiguration operation. The "output" return
  7548  // value will be populated with the request's response once the request completes
  7549  // successfully.
  7550  //
  7551  // Use "Send" method on the returned Request to send the API call to the service.
  7552  // the "output" return value is not valid until after Send returns without error.
  7553  //
  7554  // See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
  7555  // API call, and error handling.
  7556  //
  7557  // This method is useful when you want to inject custom logic or configuration
  7558  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7559  //
  7560  //
  7561  //    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
  7562  //    req, resp := client.PutBucketInventoryConfigurationRequest(params)
  7563  //
  7564  //    err := req.Send()
  7565  //    if err == nil { // resp is now filled
  7566  //        fmt.Println(resp)
  7567  //    }
  7568  //
  7569  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
  7570  func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
  7571  	op := &request.Operation{
  7572  		Name:       opPutBucketInventoryConfiguration,
  7573  		HTTPMethod: "PUT",
  7574  		HTTPPath:   "/{Bucket}?inventory",
  7575  	}
  7576  
  7577  	if input == nil {
  7578  		input = &PutBucketInventoryConfigurationInput{}
  7579  	}
  7580  
  7581  	output = &PutBucketInventoryConfigurationOutput{}
  7582  	req = c.newRequest(op, input, output)
  7583  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7584  	return
  7585  }
  7586  
  7587  // PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
  7588  //
  7589  // This implementation of the PUT action adds an inventory configuration (identified
  7590  // by the inventory ID) to the bucket. You can have up to 1,000 inventory configurations
  7591  // per bucket.
  7592  //
  7593  // Amazon S3 inventory generates inventories of the objects in the bucket on
  7594  // a daily or weekly basis, and the results are published to a flat file. The
  7595  // bucket that is inventoried is called the source bucket, and the bucket where
  7596  // the inventory flat file is stored is called the destination bucket. The destination
  7597  // bucket must be in the same Amazon Web Services Region as the source bucket.
  7598  //
  7599  // When you configure an inventory for a source bucket, you specify the destination
  7600  // bucket where you want the inventory to be stored, and whether to generate
  7601  // the inventory daily or weekly. You can also configure what object metadata
  7602  // to include and whether to inventory all object versions or only current versions.
  7603  // For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
  7604  // in the Amazon S3 User Guide.
  7605  //
  7606  // You must create a bucket policy on the destination bucket to grant permissions
  7607  // to Amazon S3 to write objects to the bucket in the defined location. For
  7608  // an example policy, see Granting Permissions for Amazon S3 Inventory and Storage
  7609  // Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
  7610  //
  7611  // To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
  7612  // action. The bucket owner has this permission by default and can grant this
  7613  // permission to others. For more information about permissions, see Permissions
  7614  // Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  7615  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  7616  // in the Amazon S3 User Guide.
  7617  //
  7618  // Special Errors
  7619  //
  7620  //    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
  7621  //
  7622  //    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
  7623  //    attempting to create a new configuration but have already reached the
  7624  //    1,000-configuration limit.
  7625  //
  7626  //    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
  7627  //    of the specified bucket, or you do not have the s3:PutInventoryConfiguration
  7628  //    bucket permission to set the configuration on the bucket.
  7629  //
  7630  // Related Resources
  7631  //
  7632  //    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
  7633  //
  7634  //    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
  7635  //
  7636  //    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
  7637  //
  7638  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7639  // with awserr.Error's Code and Message methods to get detailed information about
  7640  // the error.
  7641  //
  7642  // See the AWS API reference guide for Amazon Simple Storage Service's
  7643  // API operation PutBucketInventoryConfiguration for usage and error information.
  7644  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
  7645  func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
  7646  	req, out := c.PutBucketInventoryConfigurationRequest(input)
  7647  	return out, req.Send()
  7648  }
  7649  
  7650  // PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
  7651  // the ability to pass a context and additional request options.
  7652  //
  7653  // See PutBucketInventoryConfiguration for details on how to use this API operation.
  7654  //
  7655  // The context must be non-nil and will be used for request cancellation. If
  7656  // the context is nil a panic will occur. In the future the SDK may create
  7657  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7658  // for more information on using Contexts.
  7659  func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
  7660  	req, out := c.PutBucketInventoryConfigurationRequest(input)
  7661  	req.SetContext(ctx)
  7662  	req.ApplyOptions(opts...)
  7663  	return out, req.Send()
  7664  }
  7665  
  7666  const opPutBucketLifecycle = "PutBucketLifecycle"
  7667  
  7668  // PutBucketLifecycleRequest generates a "aws/request.Request" representing the
  7669  // client's request for the PutBucketLifecycle operation. The "output" return
  7670  // value will be populated with the request's response once the request completes
  7671  // successfully.
  7672  //
  7673  // Use "Send" method on the returned Request to send the API call to the service.
  7674  // the "output" return value is not valid until after Send returns without error.
  7675  //
  7676  // See PutBucketLifecycle for more information on using the PutBucketLifecycle
  7677  // API call, and error handling.
  7678  //
  7679  // This method is useful when you want to inject custom logic or configuration
  7680  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7681  //
  7682  //
  7683  //    // Example sending a request using the PutBucketLifecycleRequest method.
  7684  //    req, resp := client.PutBucketLifecycleRequest(params)
  7685  //
  7686  //    err := req.Send()
  7687  //    if err == nil { // resp is now filled
  7688  //        fmt.Println(resp)
  7689  //    }
  7690  //
  7691  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
  7692  //
  7693  // Deprecated: PutBucketLifecycle has been deprecated
  7694  func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
  7695  	if c.Client.Config.Logger != nil {
  7696  		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
  7697  	}
  7698  	op := &request.Operation{
  7699  		Name:       opPutBucketLifecycle,
  7700  		HTTPMethod: "PUT",
  7701  		HTTPPath:   "/{Bucket}?lifecycle",
  7702  	}
  7703  
  7704  	if input == nil {
  7705  		input = &PutBucketLifecycleInput{}
  7706  	}
  7707  
  7708  	output = &PutBucketLifecycleOutput{}
  7709  	req = c.newRequest(op, input, output)
  7710  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7711  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  7712  		Name: "contentMd5Handler",
  7713  		Fn:   checksum.AddBodyContentMD5Handler,
  7714  	})
  7715  	return
  7716  }
  7717  
  7718  // PutBucketLifecycle API operation for Amazon Simple Storage Service.
  7719  //
  7720  //
  7721  // For an updated version of this API, see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html).
  7722  // This version has been deprecated. Existing lifecycle configurations will
  7723  // work. For new lifecycle configurations, use the updated API.
  7724  //
  7725  // Creates a new lifecycle configuration for the bucket or replaces an existing
  7726  // lifecycle configuration. For information about lifecycle configuration, see
  7727  // Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
  7728  // in the Amazon S3 User Guide.
  7729  //
  7730  // By default, all Amazon S3 resources, including buckets, objects, and related
  7731  // subresources (for example, lifecycle configuration and website configuration)
  7732  // are private. Only the resource owner, the Amazon Web Services account that
  7733  // created the resource, can access it. The resource owner can optionally grant
  7734  // access permissions to others by writing an access policy. For this operation,
  7735  // users must get the s3:PutLifecycleConfiguration permission.
  7736  //
  7737  // You can also explicitly deny permissions. Explicit denial also supersedes
  7738  // any other permissions. If you want to prevent users or accounts from removing
  7739  // or deleting objects from your bucket, you must deny them permissions for
  7740  // the following actions:
  7741  //
  7742  //    * s3:DeleteObject
  7743  //
  7744  //    * s3:DeleteObjectVersion
  7745  //
  7746  //    * s3:PutLifecycleConfiguration
  7747  //
  7748  // For more information about permissions, see Managing Access Permissions to
  7749  // your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  7750  // in the Amazon S3 User Guide.
  7751  //
  7752  // For more examples of transitioning objects to storage classes such as STANDARD_IA
  7753  // or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#lifecycle-configuration-examples).
  7754  //
  7755  // Related Resources
  7756  //
  7757  //    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)(Deprecated)
  7758  //
  7759  //    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
  7760  //
  7761  //    * RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
  7762  //
  7763  //    * By default, a resource owner—in this case, a bucket owner, which is
  7764  //    the Amazon Web Services account that created the bucket—can perform
  7765  //    any of the operations. A resource owner can also grant others permission
  7766  //    to perform the operation. For more information, see the following topics
  7767  //    in the Amazon S3 User Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
  7768  //    Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
  7769  //
  7770  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7771  // with awserr.Error's Code and Message methods to get detailed information about
  7772  // the error.
  7773  //
  7774  // See the AWS API reference guide for Amazon Simple Storage Service's
  7775  // API operation PutBucketLifecycle for usage and error information.
  7776  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
  7777  //
  7778  // Deprecated: PutBucketLifecycle has been deprecated
  7779  func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
  7780  	req, out := c.PutBucketLifecycleRequest(input)
  7781  	return out, req.Send()
  7782  }
  7783  
  7784  // PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
  7785  // the ability to pass a context and additional request options.
  7786  //
  7787  // See PutBucketLifecycle for details on how to use this API operation.
  7788  //
  7789  // The context must be non-nil and will be used for request cancellation. If
  7790  // the context is nil a panic will occur. In the future the SDK may create
  7791  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7792  // for more information on using Contexts.
  7793  //
  7794  // Deprecated: PutBucketLifecycleWithContext has been deprecated
  7795  func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
  7796  	req, out := c.PutBucketLifecycleRequest(input)
  7797  	req.SetContext(ctx)
  7798  	req.ApplyOptions(opts...)
  7799  	return out, req.Send()
  7800  }
  7801  
  7802  const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
  7803  
  7804  // PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
  7805  // client's request for the PutBucketLifecycleConfiguration operation. The "output" return
  7806  // value will be populated with the request's response once the request completes
  7807  // successfully.
  7808  //
  7809  // Use "Send" method on the returned Request to send the API call to the service.
  7810  // the "output" return value is not valid until after Send returns without error.
  7811  //
  7812  // See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
  7813  // API call, and error handling.
  7814  //
  7815  // This method is useful when you want to inject custom logic or configuration
  7816  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7817  //
  7818  //
  7819  //    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
  7820  //    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
  7821  //
  7822  //    err := req.Send()
  7823  //    if err == nil { // resp is now filled
  7824  //        fmt.Println(resp)
  7825  //    }
  7826  //
  7827  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
  7828  func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
  7829  	op := &request.Operation{
  7830  		Name:       opPutBucketLifecycleConfiguration,
  7831  		HTTPMethod: "PUT",
  7832  		HTTPPath:   "/{Bucket}?lifecycle",
  7833  	}
  7834  
  7835  	if input == nil {
  7836  		input = &PutBucketLifecycleConfigurationInput{}
  7837  	}
  7838  
  7839  	output = &PutBucketLifecycleConfigurationOutput{}
  7840  	req = c.newRequest(op, input, output)
  7841  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7842  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  7843  		Name: "contentMd5Handler",
  7844  		Fn:   checksum.AddBodyContentMD5Handler,
  7845  	})
  7846  	return
  7847  }
  7848  
  7849  // PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
  7850  //
  7851  // Creates a new lifecycle configuration for the bucket or replaces an existing
  7852  // lifecycle configuration. For information about lifecycle configuration, see
  7853  // Managing your storage lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html).
  7854  //
  7855  // Bucket lifecycle configuration now supports specifying a lifecycle rule using
  7856  // an object key name prefix, one or more object tags, or a combination of both.
  7857  // Accordingly, this section describes the latest API. The previous version
  7858  // of the API supported filtering based only on an object key name prefix, which
  7859  // is supported for backward compatibility. For the related API description,
  7860  // see PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html).
  7861  //
  7862  // Rules
  7863  //
  7864  // You specify the lifecycle configuration in your request body. The lifecycle
  7865  // configuration is specified as XML consisting of one or more rules. Each rule
  7866  // consists of the following:
  7867  //
  7868  //    * Filter identifying a subset of objects to which the rule applies. The
  7869  //    filter can be based on a key name prefix, object tags, or a combination
  7870  //    of both.
  7871  //
  7872  //    * Status whether the rule is in effect.
  7873  //
  7874  //    * One or more lifecycle transition and expiration actions that you want
  7875  //    Amazon S3 to perform on the objects identified by the filter. If the state
  7876  //    of your bucket is versioning-enabled or versioning-suspended, you can
  7877  //    have many versions of the same object (one current version and zero or
  7878  //    more noncurrent versions). Amazon S3 provides predefined actions that
  7879  //    you can specify for current and noncurrent object versions.
  7880  //
  7881  // For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
  7882  // and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
  7883  //
  7884  // Permissions
  7885  //
  7886  // By default, all Amazon S3 resources are private, including buckets, objects,
  7887  // and related subresources (for example, lifecycle configuration and website
  7888  // configuration). Only the resource owner (that is, the Amazon Web Services
  7889  // account that created it) can access the resource. The resource owner can
  7890  // optionally grant access permissions to others by writing an access policy.
  7891  // For this operation, a user must get the s3:PutLifecycleConfiguration permission.
  7892  //
  7893  // You can also explicitly deny permissions. Explicit deny also supersedes any
  7894  // other permissions. If you want to block users or accounts from removing or
  7895  // deleting objects from your bucket, you must deny them permissions for the
  7896  // following actions:
  7897  //
  7898  //    * s3:DeleteObject
  7899  //
  7900  //    * s3:DeleteObjectVersion
  7901  //
  7902  //    * s3:PutLifecycleConfiguration
  7903  //
  7904  // For more information about permissions, see Managing Access Permissions to
  7905  // Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  7906  //
  7907  // The following are related to PutBucketLifecycleConfiguration:
  7908  //
  7909  //    * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
  7910  //
  7911  //    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
  7912  //
  7913  //    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
  7914  //
  7915  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7916  // with awserr.Error's Code and Message methods to get detailed information about
  7917  // the error.
  7918  //
  7919  // See the AWS API reference guide for Amazon Simple Storage Service's
  7920  // API operation PutBucketLifecycleConfiguration for usage and error information.
  7921  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
  7922  func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
  7923  	req, out := c.PutBucketLifecycleConfigurationRequest(input)
  7924  	return out, req.Send()
  7925  }
  7926  
  7927  // PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
  7928  // the ability to pass a context and additional request options.
  7929  //
  7930  // See PutBucketLifecycleConfiguration for details on how to use this API operation.
  7931  //
  7932  // The context must be non-nil and will be used for request cancellation. If
  7933  // the context is nil a panic will occur. In the future the SDK may create
  7934  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7935  // for more information on using Contexts.
  7936  func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
  7937  	req, out := c.PutBucketLifecycleConfigurationRequest(input)
  7938  	req.SetContext(ctx)
  7939  	req.ApplyOptions(opts...)
  7940  	return out, req.Send()
  7941  }
  7942  
  7943  const opPutBucketLogging = "PutBucketLogging"
  7944  
  7945  // PutBucketLoggingRequest generates a "aws/request.Request" representing the
  7946  // client's request for the PutBucketLogging operation. The "output" return
  7947  // value will be populated with the request's response once the request completes
  7948  // successfully.
  7949  //
  7950  // Use "Send" method on the returned Request to send the API call to the service.
  7951  // the "output" return value is not valid until after Send returns without error.
  7952  //
  7953  // See PutBucketLogging for more information on using the PutBucketLogging
  7954  // API call, and error handling.
  7955  //
  7956  // This method is useful when you want to inject custom logic or configuration
  7957  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7958  //
  7959  //
  7960  //    // Example sending a request using the PutBucketLoggingRequest method.
  7961  //    req, resp := client.PutBucketLoggingRequest(params)
  7962  //
  7963  //    err := req.Send()
  7964  //    if err == nil { // resp is now filled
  7965  //        fmt.Println(resp)
  7966  //    }
  7967  //
  7968  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
  7969  func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
  7970  	op := &request.Operation{
  7971  		Name:       opPutBucketLogging,
  7972  		HTTPMethod: "PUT",
  7973  		HTTPPath:   "/{Bucket}?logging",
  7974  	}
  7975  
  7976  	if input == nil {
  7977  		input = &PutBucketLoggingInput{}
  7978  	}
  7979  
  7980  	output = &PutBucketLoggingOutput{}
  7981  	req = c.newRequest(op, input, output)
  7982  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  7983  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  7984  		Name: "contentMd5Handler",
  7985  		Fn:   checksum.AddBodyContentMD5Handler,
  7986  	})
  7987  	return
  7988  }
  7989  
  7990  // PutBucketLogging API operation for Amazon Simple Storage Service.
  7991  //
  7992  // Set the logging parameters for a bucket and to specify permissions for who
  7993  // can view and modify the logging parameters. All logs are saved to buckets
  7994  // in the same Amazon Web Services Region as the source bucket. To set the logging
  7995  // status of a bucket, you must be the bucket owner.
  7996  //
  7997  // The bucket owner is automatically granted FULL_CONTROL to all logs. You use
  7998  // the Grantee request element to grant access to other people. The Permissions
  7999  // request element specifies the kind of access the grantee has to the logs.
  8000  //
  8001  // Grantee Values
  8002  //
  8003  // You can specify the person (grantee) to whom you're assigning access rights
  8004  // (using request elements) in the following ways:
  8005  //
  8006  //    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8007  //    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
  8008  //    </Grantee> DisplayName is optional and ignored in the request.
  8009  //
  8010  //    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8011  //    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress></Grantee>
  8012  //    The grantee is resolved to the CanonicalUser and, in a response to a GET
  8013  //    Object acl request, appears as the CanonicalUser.
  8014  //
  8015  //    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8016  //    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
  8017  //
  8018  // To enable logging, you use LoggingEnabled and its children request elements.
  8019  // To disable logging, you use an empty BucketLoggingStatus request element:
  8020  //
  8021  // <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
  8022  //
  8023  // For more information about server access logging, see Server Access Logging
  8024  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
  8025  //
  8026  // For more information about creating a bucket, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
  8027  // For more information about returning the logging status of a bucket, see
  8028  // GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html).
  8029  //
  8030  // The following operations are related to PutBucketLogging:
  8031  //
  8032  //    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
  8033  //
  8034  //    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
  8035  //
  8036  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  8037  //
  8038  //    * GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)
  8039  //
  8040  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8041  // with awserr.Error's Code and Message methods to get detailed information about
  8042  // the error.
  8043  //
  8044  // See the AWS API reference guide for Amazon Simple Storage Service's
  8045  // API operation PutBucketLogging for usage and error information.
  8046  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
  8047  func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
  8048  	req, out := c.PutBucketLoggingRequest(input)
  8049  	return out, req.Send()
  8050  }
  8051  
  8052  // PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
  8053  // the ability to pass a context and additional request options.
  8054  //
  8055  // See PutBucketLogging for details on how to use this API operation.
  8056  //
  8057  // The context must be non-nil and will be used for request cancellation. If
  8058  // the context is nil a panic will occur. In the future the SDK may create
  8059  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8060  // for more information on using Contexts.
  8061  func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
  8062  	req, out := c.PutBucketLoggingRequest(input)
  8063  	req.SetContext(ctx)
  8064  	req.ApplyOptions(opts...)
  8065  	return out, req.Send()
  8066  }
  8067  
  8068  const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
  8069  
  8070  // PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
  8071  // client's request for the PutBucketMetricsConfiguration operation. The "output" return
  8072  // value will be populated with the request's response once the request completes
  8073  // successfully.
  8074  //
  8075  // Use "Send" method on the returned Request to send the API call to the service.
  8076  // the "output" return value is not valid until after Send returns without error.
  8077  //
  8078  // See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
  8079  // API call, and error handling.
  8080  //
  8081  // This method is useful when you want to inject custom logic or configuration
  8082  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8083  //
  8084  //
  8085  //    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
  8086  //    req, resp := client.PutBucketMetricsConfigurationRequest(params)
  8087  //
  8088  //    err := req.Send()
  8089  //    if err == nil { // resp is now filled
  8090  //        fmt.Println(resp)
  8091  //    }
  8092  //
  8093  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
  8094  func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
  8095  	op := &request.Operation{
  8096  		Name:       opPutBucketMetricsConfiguration,
  8097  		HTTPMethod: "PUT",
  8098  		HTTPPath:   "/{Bucket}?metrics",
  8099  	}
  8100  
  8101  	if input == nil {
  8102  		input = &PutBucketMetricsConfigurationInput{}
  8103  	}
  8104  
  8105  	output = &PutBucketMetricsConfigurationOutput{}
  8106  	req = c.newRequest(op, input, output)
  8107  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8108  	return
  8109  }
  8110  
  8111  // PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
  8112  //
  8113  // Sets a metrics configuration (specified by the metrics configuration ID)
  8114  // for the bucket. You can have up to 1,000 metrics configurations per bucket.
  8115  // If you're updating an existing metrics configuration, note that this is a
  8116  // full replacement of the existing metrics configuration. If you don't include
  8117  // the elements you want to keep, they are erased.
  8118  //
  8119  // To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
  8120  // action. The bucket owner has this permission by default. The bucket owner
  8121  // can grant this permission to others. For more information about permissions,
  8122  // see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  8123  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  8124  //
  8125  // For information about CloudWatch request metrics for Amazon S3, see Monitoring
  8126  // Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
  8127  //
  8128  // The following operations are related to PutBucketMetricsConfiguration:
  8129  //
  8130  //    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
  8131  //
  8132  //    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
  8133  //
  8134  //    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
  8135  //
  8136  // GetBucketLifecycle has the following special error:
  8137  //
  8138  //    * Error code: TooManyConfigurations Description: You are attempting to
  8139  //    create a new configuration but have already reached the 1,000-configuration
  8140  //    limit. HTTP Status Code: HTTP 400 Bad Request
  8141  //
  8142  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8143  // with awserr.Error's Code and Message methods to get detailed information about
  8144  // the error.
  8145  //
  8146  // See the AWS API reference guide for Amazon Simple Storage Service's
  8147  // API operation PutBucketMetricsConfiguration for usage and error information.
  8148  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
  8149  func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
  8150  	req, out := c.PutBucketMetricsConfigurationRequest(input)
  8151  	return out, req.Send()
  8152  }
  8153  
  8154  // PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
  8155  // the ability to pass a context and additional request options.
  8156  //
  8157  // See PutBucketMetricsConfiguration for details on how to use this API operation.
  8158  //
  8159  // The context must be non-nil and will be used for request cancellation. If
  8160  // the context is nil a panic will occur. In the future the SDK may create
  8161  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8162  // for more information on using Contexts.
  8163  func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
  8164  	req, out := c.PutBucketMetricsConfigurationRequest(input)
  8165  	req.SetContext(ctx)
  8166  	req.ApplyOptions(opts...)
  8167  	return out, req.Send()
  8168  }
  8169  
  8170  const opPutBucketNotification = "PutBucketNotification"
  8171  
  8172  // PutBucketNotificationRequest generates a "aws/request.Request" representing the
  8173  // client's request for the PutBucketNotification operation. The "output" return
  8174  // value will be populated with the request's response once the request completes
  8175  // successfully.
  8176  //
  8177  // Use "Send" method on the returned Request to send the API call to the service.
  8178  // the "output" return value is not valid until after Send returns without error.
  8179  //
  8180  // See PutBucketNotification for more information on using the PutBucketNotification
  8181  // API call, and error handling.
  8182  //
  8183  // This method is useful when you want to inject custom logic or configuration
  8184  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8185  //
  8186  //
  8187  //    // Example sending a request using the PutBucketNotificationRequest method.
  8188  //    req, resp := client.PutBucketNotificationRequest(params)
  8189  //
  8190  //    err := req.Send()
  8191  //    if err == nil { // resp is now filled
  8192  //        fmt.Println(resp)
  8193  //    }
  8194  //
  8195  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
  8196  //
  8197  // Deprecated: PutBucketNotification has been deprecated
  8198  func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
  8199  	if c.Client.Config.Logger != nil {
  8200  		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
  8201  	}
  8202  	op := &request.Operation{
  8203  		Name:       opPutBucketNotification,
  8204  		HTTPMethod: "PUT",
  8205  		HTTPPath:   "/{Bucket}?notification",
  8206  	}
  8207  
  8208  	if input == nil {
  8209  		input = &PutBucketNotificationInput{}
  8210  	}
  8211  
  8212  	output = &PutBucketNotificationOutput{}
  8213  	req = c.newRequest(op, input, output)
  8214  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8215  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8216  		Name: "contentMd5Handler",
  8217  		Fn:   checksum.AddBodyContentMD5Handler,
  8218  	})
  8219  	return
  8220  }
  8221  
  8222  // PutBucketNotification API operation for Amazon Simple Storage Service.
  8223  //
  8224  // No longer used, see the PutBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)
  8225  // operation.
  8226  //
  8227  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8228  // with awserr.Error's Code and Message methods to get detailed information about
  8229  // the error.
  8230  //
  8231  // See the AWS API reference guide for Amazon Simple Storage Service's
  8232  // API operation PutBucketNotification for usage and error information.
  8233  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
  8234  //
  8235  // Deprecated: PutBucketNotification has been deprecated
  8236  func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
  8237  	req, out := c.PutBucketNotificationRequest(input)
  8238  	return out, req.Send()
  8239  }
  8240  
  8241  // PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
  8242  // the ability to pass a context and additional request options.
  8243  //
  8244  // See PutBucketNotification for details on how to use this API operation.
  8245  //
  8246  // The context must be non-nil and will be used for request cancellation. If
  8247  // the context is nil a panic will occur. In the future the SDK may create
  8248  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8249  // for more information on using Contexts.
  8250  //
  8251  // Deprecated: PutBucketNotificationWithContext has been deprecated
  8252  func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
  8253  	req, out := c.PutBucketNotificationRequest(input)
  8254  	req.SetContext(ctx)
  8255  	req.ApplyOptions(opts...)
  8256  	return out, req.Send()
  8257  }
  8258  
  8259  const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
  8260  
  8261  // PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
  8262  // client's request for the PutBucketNotificationConfiguration operation. The "output" return
  8263  // value will be populated with the request's response once the request completes
  8264  // successfully.
  8265  //
  8266  // Use "Send" method on the returned Request to send the API call to the service.
  8267  // the "output" return value is not valid until after Send returns without error.
  8268  //
  8269  // See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
  8270  // API call, and error handling.
  8271  //
  8272  // This method is useful when you want to inject custom logic or configuration
  8273  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8274  //
  8275  //
  8276  //    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
  8277  //    req, resp := client.PutBucketNotificationConfigurationRequest(params)
  8278  //
  8279  //    err := req.Send()
  8280  //    if err == nil { // resp is now filled
  8281  //        fmt.Println(resp)
  8282  //    }
  8283  //
  8284  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
  8285  func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
  8286  	op := &request.Operation{
  8287  		Name:       opPutBucketNotificationConfiguration,
  8288  		HTTPMethod: "PUT",
  8289  		HTTPPath:   "/{Bucket}?notification",
  8290  	}
  8291  
  8292  	if input == nil {
  8293  		input = &PutBucketNotificationConfigurationInput{}
  8294  	}
  8295  
  8296  	output = &PutBucketNotificationConfigurationOutput{}
  8297  	req = c.newRequest(op, input, output)
  8298  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8299  	return
  8300  }
  8301  
  8302  // PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
  8303  //
  8304  // Enables notifications of specified events for a bucket. For more information
  8305  // about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
  8306  //
  8307  // Using this API, you can replace an existing notification configuration. The
  8308  // configuration is an XML file that defines the event types that you want Amazon
  8309  // S3 to publish and the destination where you want Amazon S3 to publish an
  8310  // event notification when it detects an event of the specified type.
  8311  //
  8312  // By default, your bucket has no event notifications configured. That is, the
  8313  // notification configuration will be an empty NotificationConfiguration.
  8314  //
  8315  // <NotificationConfiguration>
  8316  //
  8317  // </NotificationConfiguration>
  8318  //
  8319  // This action replaces the existing notification configuration with the configuration
  8320  // you include in the request body.
  8321  //
  8322  // After Amazon S3 receives this request, it first verifies that any Amazon
  8323  // Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon
  8324  // SQS) destination exists, and that the bucket owner has permission to publish
  8325  // to it by sending a test notification. In the case of Lambda destinations,
  8326  // Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission
  8327  // to invoke the function from the Amazon S3 bucket. For more information, see
  8328  // Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
  8329  //
  8330  // You can disable notifications by adding the empty NotificationConfiguration
  8331  // element.
  8332  //
  8333  // By default, only the bucket owner can configure notifications on a bucket.
  8334  // However, bucket owners can use a bucket policy to grant permission to other
  8335  // users to set this configuration with s3:PutBucketNotification permission.
  8336  //
  8337  // The PUT notification is an atomic operation. For example, suppose your notification
  8338  // configuration includes SNS topic, SQS queue, and Lambda function configurations.
  8339  // When you send a PUT request with this configuration, Amazon S3 sends test
  8340  // messages to your SNS topic. If the message fails, the entire PUT action will
  8341  // fail, and Amazon S3 will not add the configuration to your bucket.
  8342  //
  8343  // Responses
  8344  //
  8345  // If the configuration in the request body includes only one TopicConfiguration
  8346  // specifying only the s3:ReducedRedundancyLostObject event type, the response
  8347  // will also include the x-amz-sns-test-message-id header containing the message
  8348  // ID of the test notification sent to the topic.
  8349  //
  8350  // The following action is related to PutBucketNotificationConfiguration:
  8351  //
  8352  //    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
  8353  //
  8354  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8355  // with awserr.Error's Code and Message methods to get detailed information about
  8356  // the error.
  8357  //
  8358  // See the AWS API reference guide for Amazon Simple Storage Service's
  8359  // API operation PutBucketNotificationConfiguration for usage and error information.
  8360  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
  8361  func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
  8362  	req, out := c.PutBucketNotificationConfigurationRequest(input)
  8363  	return out, req.Send()
  8364  }
  8365  
  8366  // PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
  8367  // the ability to pass a context and additional request options.
  8368  //
  8369  // See PutBucketNotificationConfiguration for details on how to use this API operation.
  8370  //
  8371  // The context must be non-nil and will be used for request cancellation. If
  8372  // the context is nil a panic will occur. In the future the SDK may create
  8373  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8374  // for more information on using Contexts.
  8375  func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
  8376  	req, out := c.PutBucketNotificationConfigurationRequest(input)
  8377  	req.SetContext(ctx)
  8378  	req.ApplyOptions(opts...)
  8379  	return out, req.Send()
  8380  }
  8381  
  8382  const opPutBucketOwnershipControls = "PutBucketOwnershipControls"
  8383  
  8384  // PutBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
  8385  // client's request for the PutBucketOwnershipControls operation. The "output" return
  8386  // value will be populated with the request's response once the request completes
  8387  // successfully.
  8388  //
  8389  // Use "Send" method on the returned Request to send the API call to the service.
  8390  // the "output" return value is not valid until after Send returns without error.
  8391  //
  8392  // See PutBucketOwnershipControls for more information on using the PutBucketOwnershipControls
  8393  // API call, and error handling.
  8394  //
  8395  // This method is useful when you want to inject custom logic or configuration
  8396  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8397  //
  8398  //
  8399  //    // Example sending a request using the PutBucketOwnershipControlsRequest method.
  8400  //    req, resp := client.PutBucketOwnershipControlsRequest(params)
  8401  //
  8402  //    err := req.Send()
  8403  //    if err == nil { // resp is now filled
  8404  //        fmt.Println(resp)
  8405  //    }
  8406  //
  8407  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
  8408  func (c *S3) PutBucketOwnershipControlsRequest(input *PutBucketOwnershipControlsInput) (req *request.Request, output *PutBucketOwnershipControlsOutput) {
  8409  	op := &request.Operation{
  8410  		Name:       opPutBucketOwnershipControls,
  8411  		HTTPMethod: "PUT",
  8412  		HTTPPath:   "/{Bucket}?ownershipControls",
  8413  	}
  8414  
  8415  	if input == nil {
  8416  		input = &PutBucketOwnershipControlsInput{}
  8417  	}
  8418  
  8419  	output = &PutBucketOwnershipControlsOutput{}
  8420  	req = c.newRequest(op, input, output)
  8421  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8422  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8423  		Name: "contentMd5Handler",
  8424  		Fn:   checksum.AddBodyContentMD5Handler,
  8425  	})
  8426  	return
  8427  }
  8428  
  8429  // PutBucketOwnershipControls API operation for Amazon Simple Storage Service.
  8430  //
  8431  // Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this
  8432  // operation, you must have the s3:PutBucketOwnershipControls permission. For
  8433  // more information about Amazon S3 permissions, see Specifying Permissions
  8434  // in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  8435  //
  8436  // For information about Amazon S3 Object Ownership, see Using Object Ownership
  8437  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
  8438  //
  8439  // The following operations are related to PutBucketOwnershipControls:
  8440  //
  8441  //    * GetBucketOwnershipControls
  8442  //
  8443  //    * DeleteBucketOwnershipControls
  8444  //
  8445  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8446  // with awserr.Error's Code and Message methods to get detailed information about
  8447  // the error.
  8448  //
  8449  // See the AWS API reference guide for Amazon Simple Storage Service's
  8450  // API operation PutBucketOwnershipControls for usage and error information.
  8451  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
  8452  func (c *S3) PutBucketOwnershipControls(input *PutBucketOwnershipControlsInput) (*PutBucketOwnershipControlsOutput, error) {
  8453  	req, out := c.PutBucketOwnershipControlsRequest(input)
  8454  	return out, req.Send()
  8455  }
  8456  
  8457  // PutBucketOwnershipControlsWithContext is the same as PutBucketOwnershipControls with the addition of
  8458  // the ability to pass a context and additional request options.
  8459  //
  8460  // See PutBucketOwnershipControls for details on how to use this API operation.
  8461  //
  8462  // The context must be non-nil and will be used for request cancellation. If
  8463  // the context is nil a panic will occur. In the future the SDK may create
  8464  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8465  // for more information on using Contexts.
  8466  func (c *S3) PutBucketOwnershipControlsWithContext(ctx aws.Context, input *PutBucketOwnershipControlsInput, opts ...request.Option) (*PutBucketOwnershipControlsOutput, error) {
  8467  	req, out := c.PutBucketOwnershipControlsRequest(input)
  8468  	req.SetContext(ctx)
  8469  	req.ApplyOptions(opts...)
  8470  	return out, req.Send()
  8471  }
  8472  
  8473  const opPutBucketPolicy = "PutBucketPolicy"
  8474  
  8475  // PutBucketPolicyRequest generates a "aws/request.Request" representing the
  8476  // client's request for the PutBucketPolicy operation. The "output" return
  8477  // value will be populated with the request's response once the request completes
  8478  // successfully.
  8479  //
  8480  // Use "Send" method on the returned Request to send the API call to the service.
  8481  // the "output" return value is not valid until after Send returns without error.
  8482  //
  8483  // See PutBucketPolicy for more information on using the PutBucketPolicy
  8484  // API call, and error handling.
  8485  //
  8486  // This method is useful when you want to inject custom logic or configuration
  8487  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8488  //
  8489  //
  8490  //    // Example sending a request using the PutBucketPolicyRequest method.
  8491  //    req, resp := client.PutBucketPolicyRequest(params)
  8492  //
  8493  //    err := req.Send()
  8494  //    if err == nil { // resp is now filled
  8495  //        fmt.Println(resp)
  8496  //    }
  8497  //
  8498  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
  8499  func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
  8500  	op := &request.Operation{
  8501  		Name:       opPutBucketPolicy,
  8502  		HTTPMethod: "PUT",
  8503  		HTTPPath:   "/{Bucket}?policy",
  8504  	}
  8505  
  8506  	if input == nil {
  8507  		input = &PutBucketPolicyInput{}
  8508  	}
  8509  
  8510  	output = &PutBucketPolicyOutput{}
  8511  	req = c.newRequest(op, input, output)
  8512  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8513  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8514  		Name: "contentMd5Handler",
  8515  		Fn:   checksum.AddBodyContentMD5Handler,
  8516  	})
  8517  	return
  8518  }
  8519  
  8520  // PutBucketPolicy API operation for Amazon Simple Storage Service.
  8521  //
  8522  // Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
  8523  // an identity other than the root user of the Amazon Web Services account that
  8524  // owns the bucket, the calling identity must have the PutBucketPolicy permissions
  8525  // on the specified bucket and belong to the bucket owner's account in order
  8526  // to use this operation.
  8527  //
  8528  // If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access
  8529  // Denied error. If you have the correct permissions, but you're not using an
  8530  // identity that belongs to the bucket owner's account, Amazon S3 returns a
  8531  // 405 Method Not Allowed error.
  8532  //
  8533  // As a security precaution, the root user of the Amazon Web Services account
  8534  // that owns a bucket can always use this operation, even if the policy explicitly
  8535  // denies the root user the ability to perform this action.
  8536  //
  8537  // For more information, see Bucket policy examples (https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).
  8538  //
  8539  // The following operations are related to PutBucketPolicy:
  8540  //
  8541  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  8542  //
  8543  //    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
  8544  //
  8545  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8546  // with awserr.Error's Code and Message methods to get detailed information about
  8547  // the error.
  8548  //
  8549  // See the AWS API reference guide for Amazon Simple Storage Service's
  8550  // API operation PutBucketPolicy for usage and error information.
  8551  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
  8552  func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
  8553  	req, out := c.PutBucketPolicyRequest(input)
  8554  	return out, req.Send()
  8555  }
  8556  
  8557  // PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
  8558  // the ability to pass a context and additional request options.
  8559  //
  8560  // See PutBucketPolicy for details on how to use this API operation.
  8561  //
  8562  // The context must be non-nil and will be used for request cancellation. If
  8563  // the context is nil a panic will occur. In the future the SDK may create
  8564  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8565  // for more information on using Contexts.
  8566  func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
  8567  	req, out := c.PutBucketPolicyRequest(input)
  8568  	req.SetContext(ctx)
  8569  	req.ApplyOptions(opts...)
  8570  	return out, req.Send()
  8571  }
  8572  
  8573  const opPutBucketReplication = "PutBucketReplication"
  8574  
  8575  // PutBucketReplicationRequest generates a "aws/request.Request" representing the
  8576  // client's request for the PutBucketReplication operation. The "output" return
  8577  // value will be populated with the request's response once the request completes
  8578  // successfully.
  8579  //
  8580  // Use "Send" method on the returned Request to send the API call to the service.
  8581  // the "output" return value is not valid until after Send returns without error.
  8582  //
  8583  // See PutBucketReplication for more information on using the PutBucketReplication
  8584  // API call, and error handling.
  8585  //
  8586  // This method is useful when you want to inject custom logic or configuration
  8587  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8588  //
  8589  //
  8590  //    // Example sending a request using the PutBucketReplicationRequest method.
  8591  //    req, resp := client.PutBucketReplicationRequest(params)
  8592  //
  8593  //    err := req.Send()
  8594  //    if err == nil { // resp is now filled
  8595  //        fmt.Println(resp)
  8596  //    }
  8597  //
  8598  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
  8599  func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
  8600  	op := &request.Operation{
  8601  		Name:       opPutBucketReplication,
  8602  		HTTPMethod: "PUT",
  8603  		HTTPPath:   "/{Bucket}?replication",
  8604  	}
  8605  
  8606  	if input == nil {
  8607  		input = &PutBucketReplicationInput{}
  8608  	}
  8609  
  8610  	output = &PutBucketReplicationOutput{}
  8611  	req = c.newRequest(op, input, output)
  8612  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8613  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8614  		Name: "contentMd5Handler",
  8615  		Fn:   checksum.AddBodyContentMD5Handler,
  8616  	})
  8617  	return
  8618  }
  8619  
  8620  // PutBucketReplication API operation for Amazon Simple Storage Service.
  8621  //
  8622  // Creates a replication configuration or replaces an existing one. For more
  8623  // information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
  8624  // in the Amazon S3 User Guide.
  8625  //
  8626  // Specify the replication configuration in the request body. In the replication
  8627  // configuration, you provide the name of the destination bucket or buckets
  8628  // where you want Amazon S3 to replicate objects, the IAM role that Amazon S3
  8629  // can assume to replicate objects on your behalf, and other relevant information.
  8630  //
  8631  // A replication configuration must include at least one rule, and can contain
  8632  // a maximum of 1,000. Each rule identifies a subset of objects to replicate
  8633  // by filtering the objects in the source bucket. To choose additional subsets
  8634  // of objects to replicate, add a rule for each subset.
  8635  //
  8636  // To specify a subset of the objects in the source bucket to apply a replication
  8637  // rule to, add the Filter element as a child of the Rule element. You can filter
  8638  // objects based on an object key prefix, one or more object tags, or both.
  8639  // When you add the Filter element in the configuration, you must also add the
  8640  // following elements: DeleteMarkerReplication, Status, and Priority.
  8641  //
  8642  // If you are using an earlier version of the replication configuration, Amazon
  8643  // S3 handles replication of delete markers differently. For more information,
  8644  // see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
  8645  //
  8646  // For information about enabling versioning on a bucket, see Using Versioning
  8647  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).
  8648  //
  8649  // Handling Replication of Encrypted Objects
  8650  //
  8651  // By default, Amazon S3 doesn't replicate objects that are stored at rest using
  8652  // server-side encryption with KMS keys. To replicate Amazon Web Services KMS-encrypted
  8653  // objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects,
  8654  // Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about
  8655  // replication configuration, see Replicating Objects Created with SSE Using
  8656  // KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
  8657  //
  8658  // For information on PutBucketReplication errors, see List of replication-related
  8659  // error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
  8660  //
  8661  // Permissions
  8662  //
  8663  // To create a PutBucketReplication request, you must have s3:PutReplicationConfiguration
  8664  // permissions for the bucket.
  8665  //
  8666  // By default, a resource owner, in this case the Amazon Web Services account
  8667  // that created the bucket, can perform this operation. The resource owner can
  8668  // also grant others permissions to perform the operation. For more information
  8669  // about permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
  8670  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  8671  //
  8672  // To perform this operation, the user or role performing the action must have
  8673  // the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
  8674  // permission.
  8675  //
  8676  // The following operations are related to PutBucketReplication:
  8677  //
  8678  //    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
  8679  //
  8680  //    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
  8681  //
  8682  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8683  // with awserr.Error's Code and Message methods to get detailed information about
  8684  // the error.
  8685  //
  8686  // See the AWS API reference guide for Amazon Simple Storage Service's
  8687  // API operation PutBucketReplication for usage and error information.
  8688  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
  8689  func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
  8690  	req, out := c.PutBucketReplicationRequest(input)
  8691  	return out, req.Send()
  8692  }
  8693  
  8694  // PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
  8695  // the ability to pass a context and additional request options.
  8696  //
  8697  // See PutBucketReplication for details on how to use this API operation.
  8698  //
  8699  // The context must be non-nil and will be used for request cancellation. If
  8700  // the context is nil a panic will occur. In the future the SDK may create
  8701  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8702  // for more information on using Contexts.
  8703  func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
  8704  	req, out := c.PutBucketReplicationRequest(input)
  8705  	req.SetContext(ctx)
  8706  	req.ApplyOptions(opts...)
  8707  	return out, req.Send()
  8708  }
  8709  
  8710  const opPutBucketRequestPayment = "PutBucketRequestPayment"
  8711  
  8712  // PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
  8713  // client's request for the PutBucketRequestPayment operation. The "output" return
  8714  // value will be populated with the request's response once the request completes
  8715  // successfully.
  8716  //
  8717  // Use "Send" method on the returned Request to send the API call to the service.
  8718  // the "output" return value is not valid until after Send returns without error.
  8719  //
  8720  // See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
  8721  // API call, and error handling.
  8722  //
  8723  // This method is useful when you want to inject custom logic or configuration
  8724  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8725  //
  8726  //
  8727  //    // Example sending a request using the PutBucketRequestPaymentRequest method.
  8728  //    req, resp := client.PutBucketRequestPaymentRequest(params)
  8729  //
  8730  //    err := req.Send()
  8731  //    if err == nil { // resp is now filled
  8732  //        fmt.Println(resp)
  8733  //    }
  8734  //
  8735  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
  8736  func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
  8737  	op := &request.Operation{
  8738  		Name:       opPutBucketRequestPayment,
  8739  		HTTPMethod: "PUT",
  8740  		HTTPPath:   "/{Bucket}?requestPayment",
  8741  	}
  8742  
  8743  	if input == nil {
  8744  		input = &PutBucketRequestPaymentInput{}
  8745  	}
  8746  
  8747  	output = &PutBucketRequestPaymentOutput{}
  8748  	req = c.newRequest(op, input, output)
  8749  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8750  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8751  		Name: "contentMd5Handler",
  8752  		Fn:   checksum.AddBodyContentMD5Handler,
  8753  	})
  8754  	return
  8755  }
  8756  
  8757  // PutBucketRequestPayment API operation for Amazon Simple Storage Service.
  8758  //
  8759  // Sets the request payment configuration for a bucket. By default, the bucket
  8760  // owner pays for downloads from the bucket. This configuration parameter enables
  8761  // the bucket owner (only) to specify that the person requesting the download
  8762  // will be charged for the download. For more information, see Requester Pays
  8763  // Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
  8764  //
  8765  // The following operations are related to PutBucketRequestPayment:
  8766  //
  8767  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  8768  //
  8769  //    * GetBucketRequestPayment (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)
  8770  //
  8771  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8772  // with awserr.Error's Code and Message methods to get detailed information about
  8773  // the error.
  8774  //
  8775  // See the AWS API reference guide for Amazon Simple Storage Service's
  8776  // API operation PutBucketRequestPayment for usage and error information.
  8777  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
  8778  func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
  8779  	req, out := c.PutBucketRequestPaymentRequest(input)
  8780  	return out, req.Send()
  8781  }
  8782  
  8783  // PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
  8784  // the ability to pass a context and additional request options.
  8785  //
  8786  // See PutBucketRequestPayment for details on how to use this API operation.
  8787  //
  8788  // The context must be non-nil and will be used for request cancellation. If
  8789  // the context is nil a panic will occur. In the future the SDK may create
  8790  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8791  // for more information on using Contexts.
  8792  func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
  8793  	req, out := c.PutBucketRequestPaymentRequest(input)
  8794  	req.SetContext(ctx)
  8795  	req.ApplyOptions(opts...)
  8796  	return out, req.Send()
  8797  }
  8798  
  8799  const opPutBucketTagging = "PutBucketTagging"
  8800  
  8801  // PutBucketTaggingRequest generates a "aws/request.Request" representing the
  8802  // client's request for the PutBucketTagging operation. The "output" return
  8803  // value will be populated with the request's response once the request completes
  8804  // successfully.
  8805  //
  8806  // Use "Send" method on the returned Request to send the API call to the service.
  8807  // the "output" return value is not valid until after Send returns without error.
  8808  //
  8809  // See PutBucketTagging for more information on using the PutBucketTagging
  8810  // API call, and error handling.
  8811  //
  8812  // This method is useful when you want to inject custom logic or configuration
  8813  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8814  //
  8815  //
  8816  //    // Example sending a request using the PutBucketTaggingRequest method.
  8817  //    req, resp := client.PutBucketTaggingRequest(params)
  8818  //
  8819  //    err := req.Send()
  8820  //    if err == nil { // resp is now filled
  8821  //        fmt.Println(resp)
  8822  //    }
  8823  //
  8824  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
  8825  func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
  8826  	op := &request.Operation{
  8827  		Name:       opPutBucketTagging,
  8828  		HTTPMethod: "PUT",
  8829  		HTTPPath:   "/{Bucket}?tagging",
  8830  	}
  8831  
  8832  	if input == nil {
  8833  		input = &PutBucketTaggingInput{}
  8834  	}
  8835  
  8836  	output = &PutBucketTaggingOutput{}
  8837  	req = c.newRequest(op, input, output)
  8838  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8839  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8840  		Name: "contentMd5Handler",
  8841  		Fn:   checksum.AddBodyContentMD5Handler,
  8842  	})
  8843  	return
  8844  }
  8845  
  8846  // PutBucketTagging API operation for Amazon Simple Storage Service.
  8847  //
  8848  // Sets the tags for a bucket.
  8849  //
  8850  // Use tags to organize your Amazon Web Services bill to reflect your own cost
  8851  // structure. To do this, sign up to get your Amazon Web Services account bill
  8852  // with tag key values included. Then, to see the cost of combined resources,
  8853  // organize your billing information according to resources with the same tag
  8854  // key values. For example, you can tag several resources with a specific application
  8855  // name, and then organize your billing information to see the total cost of
  8856  // that application across several services. For more information, see Cost
  8857  // Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
  8858  // and Using Cost Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html).
  8859  //
  8860  // When this operation sets the tags for a bucket, it will overwrite any current
  8861  // tags the bucket already has. You cannot use this operation to add tags to
  8862  // an existing list of tags.
  8863  //
  8864  // To use this operation, you must have permissions to perform the s3:PutBucketTagging
  8865  // action. The bucket owner has this permission by default and can grant this
  8866  // permission to others. For more information about permissions, see Permissions
  8867  // Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
  8868  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
  8869  //
  8870  // PutBucketTagging has the following special errors:
  8871  //
  8872  //    * Error code: InvalidTagError Description: The tag provided was not a
  8873  //    valid tag. This error can occur if the tag did not pass input validation.
  8874  //    For information about tag restrictions, see User-Defined Tag Restrictions
  8875  //    (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)
  8876  //    and Amazon Web Services-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html).
  8877  //
  8878  //    * Error code: MalformedXMLError Description: The XML provided does not
  8879  //    match the schema.
  8880  //
  8881  //    * Error code: OperationAbortedError Description: A conflicting conditional
  8882  //    action is currently in progress against this resource. Please try again.
  8883  //
  8884  //    * Error code: InternalError Description: The service was unable to apply
  8885  //    the provided tag to the bucket.
  8886  //
  8887  // The following operations are related to PutBucketTagging:
  8888  //
  8889  //    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
  8890  //
  8891  //    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
  8892  //
  8893  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  8894  // with awserr.Error's Code and Message methods to get detailed information about
  8895  // the error.
  8896  //
  8897  // See the AWS API reference guide for Amazon Simple Storage Service's
  8898  // API operation PutBucketTagging for usage and error information.
  8899  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
  8900  func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
  8901  	req, out := c.PutBucketTaggingRequest(input)
  8902  	return out, req.Send()
  8903  }
  8904  
  8905  // PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
  8906  // the ability to pass a context and additional request options.
  8907  //
  8908  // See PutBucketTagging for details on how to use this API operation.
  8909  //
  8910  // The context must be non-nil and will be used for request cancellation. If
  8911  // the context is nil a panic will occur. In the future the SDK may create
  8912  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  8913  // for more information on using Contexts.
  8914  func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
  8915  	req, out := c.PutBucketTaggingRequest(input)
  8916  	req.SetContext(ctx)
  8917  	req.ApplyOptions(opts...)
  8918  	return out, req.Send()
  8919  }
  8920  
  8921  const opPutBucketVersioning = "PutBucketVersioning"
  8922  
  8923  // PutBucketVersioningRequest generates a "aws/request.Request" representing the
  8924  // client's request for the PutBucketVersioning operation. The "output" return
  8925  // value will be populated with the request's response once the request completes
  8926  // successfully.
  8927  //
  8928  // Use "Send" method on the returned Request to send the API call to the service.
  8929  // the "output" return value is not valid until after Send returns without error.
  8930  //
  8931  // See PutBucketVersioning for more information on using the PutBucketVersioning
  8932  // API call, and error handling.
  8933  //
  8934  // This method is useful when you want to inject custom logic or configuration
  8935  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  8936  //
  8937  //
  8938  //    // Example sending a request using the PutBucketVersioningRequest method.
  8939  //    req, resp := client.PutBucketVersioningRequest(params)
  8940  //
  8941  //    err := req.Send()
  8942  //    if err == nil { // resp is now filled
  8943  //        fmt.Println(resp)
  8944  //    }
  8945  //
  8946  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
  8947  func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
  8948  	op := &request.Operation{
  8949  		Name:       opPutBucketVersioning,
  8950  		HTTPMethod: "PUT",
  8951  		HTTPPath:   "/{Bucket}?versioning",
  8952  	}
  8953  
  8954  	if input == nil {
  8955  		input = &PutBucketVersioningInput{}
  8956  	}
  8957  
  8958  	output = &PutBucketVersioningOutput{}
  8959  	req = c.newRequest(op, input, output)
  8960  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  8961  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  8962  		Name: "contentMd5Handler",
  8963  		Fn:   checksum.AddBodyContentMD5Handler,
  8964  	})
  8965  	return
  8966  }
  8967  
  8968  // PutBucketVersioning API operation for Amazon Simple Storage Service.
  8969  //
  8970  // Sets the versioning state of an existing bucket. To set the versioning state,
  8971  // you must be the bucket owner.
  8972  //
  8973  // You can set the versioning state with one of the following values:
  8974  //
  8975  // Enabled—Enables versioning for the objects in the bucket. All objects added
  8976  // to the bucket receive a unique version ID.
  8977  //
  8978  // Suspended—Disables versioning for the objects in the bucket. All objects
  8979  // added to the bucket receive the version ID null.
  8980  //
  8981  // If the versioning state has never been set on a bucket, it has no versioning
  8982  // state; a GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
  8983  // request does not return a versioning state value.
  8984  //
  8985  // If the bucket owner enables MFA Delete in the bucket versioning configuration,
  8986  // the bucket owner must include the x-amz-mfa request header and the Status
  8987  // and the MfaDelete request elements in a request to set the versioning state
  8988  // of the bucket.
  8989  //
  8990  // If you have an object expiration lifecycle policy in your non-versioned bucket
  8991  // and you want to maintain the same permanent delete behavior when you enable
  8992  // versioning, you must add a noncurrent expiration policy. The noncurrent expiration
  8993  // lifecycle policy will manage the deletes of the noncurrent object versions
  8994  // in the version-enabled bucket. (A version-enabled bucket maintains one current
  8995  // and zero or more noncurrent object versions.) For more information, see Lifecycle
  8996  // and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
  8997  //
  8998  // Related Resources
  8999  //
  9000  //    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
  9001  //
  9002  //    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
  9003  //
  9004  //    * GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
  9005  //
  9006  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9007  // with awserr.Error's Code and Message methods to get detailed information about
  9008  // the error.
  9009  //
  9010  // See the AWS API reference guide for Amazon Simple Storage Service's
  9011  // API operation PutBucketVersioning for usage and error information.
  9012  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
  9013  func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
  9014  	req, out := c.PutBucketVersioningRequest(input)
  9015  	return out, req.Send()
  9016  }
  9017  
  9018  // PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
  9019  // the ability to pass a context and additional request options.
  9020  //
  9021  // See PutBucketVersioning for details on how to use this API operation.
  9022  //
  9023  // The context must be non-nil and will be used for request cancellation. If
  9024  // the context is nil a panic will occur. In the future the SDK may create
  9025  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9026  // for more information on using Contexts.
  9027  func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
  9028  	req, out := c.PutBucketVersioningRequest(input)
  9029  	req.SetContext(ctx)
  9030  	req.ApplyOptions(opts...)
  9031  	return out, req.Send()
  9032  }
  9033  
  9034  const opPutBucketWebsite = "PutBucketWebsite"
  9035  
  9036  // PutBucketWebsiteRequest generates a "aws/request.Request" representing the
  9037  // client's request for the PutBucketWebsite operation. The "output" return
  9038  // value will be populated with the request's response once the request completes
  9039  // successfully.
  9040  //
  9041  // Use "Send" method on the returned Request to send the API call to the service.
  9042  // the "output" return value is not valid until after Send returns without error.
  9043  //
  9044  // See PutBucketWebsite for more information on using the PutBucketWebsite
  9045  // API call, and error handling.
  9046  //
  9047  // This method is useful when you want to inject custom logic or configuration
  9048  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9049  //
  9050  //
  9051  //    // Example sending a request using the PutBucketWebsiteRequest method.
  9052  //    req, resp := client.PutBucketWebsiteRequest(params)
  9053  //
  9054  //    err := req.Send()
  9055  //    if err == nil { // resp is now filled
  9056  //        fmt.Println(resp)
  9057  //    }
  9058  //
  9059  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
  9060  func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
  9061  	op := &request.Operation{
  9062  		Name:       opPutBucketWebsite,
  9063  		HTTPMethod: "PUT",
  9064  		HTTPPath:   "/{Bucket}?website",
  9065  	}
  9066  
  9067  	if input == nil {
  9068  		input = &PutBucketWebsiteInput{}
  9069  	}
  9070  
  9071  	output = &PutBucketWebsiteOutput{}
  9072  	req = c.newRequest(op, input, output)
  9073  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  9074  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9075  		Name: "contentMd5Handler",
  9076  		Fn:   checksum.AddBodyContentMD5Handler,
  9077  	})
  9078  	return
  9079  }
  9080  
  9081  // PutBucketWebsite API operation for Amazon Simple Storage Service.
  9082  //
  9083  // Sets the configuration of the website that is specified in the website subresource.
  9084  // To configure a bucket as a website, you can add this subresource on the bucket
  9085  // with website configuration information such as the file name of the index
  9086  // document and any redirect rules. For more information, see Hosting Websites
  9087  // on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
  9088  //
  9089  // This PUT action requires the S3:PutBucketWebsite permission. By default,
  9090  // only the bucket owner can configure the website attached to a bucket; however,
  9091  // bucket owners can allow other users to set the website configuration by writing
  9092  // a bucket policy that grants them the S3:PutBucketWebsite permission.
  9093  //
  9094  // To redirect all website requests sent to the bucket's website endpoint, you
  9095  // add a website configuration with the following elements. Because all requests
  9096  // are sent to another website, you don't need to provide index document name
  9097  // for the bucket.
  9098  //
  9099  //    * WebsiteConfiguration
  9100  //
  9101  //    * RedirectAllRequestsTo
  9102  //
  9103  //    * HostName
  9104  //
  9105  //    * Protocol
  9106  //
  9107  // If you want granular control over redirects, you can use the following elements
  9108  // to add routing rules that describe conditions for redirecting requests and
  9109  // information about the redirect destination. In this case, the website configuration
  9110  // must provide an index document for the bucket, because some requests might
  9111  // not be redirected.
  9112  //
  9113  //    * WebsiteConfiguration
  9114  //
  9115  //    * IndexDocument
  9116  //
  9117  //    * Suffix
  9118  //
  9119  //    * ErrorDocument
  9120  //
  9121  //    * Key
  9122  //
  9123  //    * RoutingRules
  9124  //
  9125  //    * RoutingRule
  9126  //
  9127  //    * Condition
  9128  //
  9129  //    * HttpErrorCodeReturnedEquals
  9130  //
  9131  //    * KeyPrefixEquals
  9132  //
  9133  //    * Redirect
  9134  //
  9135  //    * Protocol
  9136  //
  9137  //    * HostName
  9138  //
  9139  //    * ReplaceKeyPrefixWith
  9140  //
  9141  //    * ReplaceKeyWith
  9142  //
  9143  //    * HttpRedirectCode
  9144  //
  9145  // Amazon S3 has a limitation of 50 routing rules per website configuration.
  9146  // If you require more than 50 routing rules, you can use object redirect. For
  9147  // more information, see Configuring an Object Redirect (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html)
  9148  // in the Amazon S3 User Guide.
  9149  //
  9150  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9151  // with awserr.Error's Code and Message methods to get detailed information about
  9152  // the error.
  9153  //
  9154  // See the AWS API reference guide for Amazon Simple Storage Service's
  9155  // API operation PutBucketWebsite for usage and error information.
  9156  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
  9157  func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
  9158  	req, out := c.PutBucketWebsiteRequest(input)
  9159  	return out, req.Send()
  9160  }
  9161  
  9162  // PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
  9163  // the ability to pass a context and additional request options.
  9164  //
  9165  // See PutBucketWebsite for details on how to use this API operation.
  9166  //
  9167  // The context must be non-nil and will be used for request cancellation. If
  9168  // the context is nil a panic will occur. In the future the SDK may create
  9169  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9170  // for more information on using Contexts.
  9171  func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
  9172  	req, out := c.PutBucketWebsiteRequest(input)
  9173  	req.SetContext(ctx)
  9174  	req.ApplyOptions(opts...)
  9175  	return out, req.Send()
  9176  }
  9177  
  9178  const opPutObject = "PutObject"
  9179  
  9180  // PutObjectRequest generates a "aws/request.Request" representing the
  9181  // client's request for the PutObject operation. The "output" return
  9182  // value will be populated with the request's response once the request completes
  9183  // successfully.
  9184  //
  9185  // Use "Send" method on the returned Request to send the API call to the service.
  9186  // the "output" return value is not valid until after Send returns without error.
  9187  //
  9188  // See PutObject for more information on using the PutObject
  9189  // API call, and error handling.
  9190  //
  9191  // This method is useful when you want to inject custom logic or configuration
  9192  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9193  //
  9194  //
  9195  //    // Example sending a request using the PutObjectRequest method.
  9196  //    req, resp := client.PutObjectRequest(params)
  9197  //
  9198  //    err := req.Send()
  9199  //    if err == nil { // resp is now filled
  9200  //        fmt.Println(resp)
  9201  //    }
  9202  //
  9203  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
  9204  func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
  9205  	op := &request.Operation{
  9206  		Name:       opPutObject,
  9207  		HTTPMethod: "PUT",
  9208  		HTTPPath:   "/{Bucket}/{Key+}",
  9209  	}
  9210  
  9211  	if input == nil {
  9212  		input = &PutObjectInput{}
  9213  	}
  9214  
  9215  	output = &PutObjectOutput{}
  9216  	req = c.newRequest(op, input, output)
  9217  	return
  9218  }
  9219  
  9220  // PutObject API operation for Amazon Simple Storage Service.
  9221  //
  9222  // Adds an object to a bucket. You must have WRITE permissions on a bucket to
  9223  // add an object to it.
  9224  //
  9225  // Amazon S3 never adds partial objects; if you receive a success response,
  9226  // Amazon S3 added the entire object to the bucket.
  9227  //
  9228  // Amazon S3 is a distributed system. If it receives multiple write requests
  9229  // for the same object simultaneously, it overwrites all but the last object
  9230  // written. Amazon S3 does not provide object locking; if you need this, make
  9231  // sure to build it into your application layer or use versioning instead.
  9232  //
  9233  // To ensure that data is not corrupted traversing the network, use the Content-MD5
  9234  // header. When you use this header, Amazon S3 checks the object against the
  9235  // provided MD5 value and, if they do not match, returns an error. Additionally,
  9236  // you can calculate the MD5 while putting an object to Amazon S3 and compare
  9237  // the returned ETag to the calculated MD5 value.
  9238  //
  9239  //    * To successfully complete the PutObject request, you must have the s3:PutObject
  9240  //    in your IAM permissions.
  9241  //
  9242  //    * To successfully change the objects acl of your PutObject request, you
  9243  //    must have the s3:PutObjectAcl in your IAM permissions.
  9244  //
  9245  //    * The Content-MD5 header is required for any request to upload an object
  9246  //    with a retention period configured using Amazon S3 Object Lock. For more
  9247  //    information about Amazon S3 Object Lock, see Amazon S3 Object Lock Overview
  9248  //    (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)
  9249  //    in the Amazon S3 User Guide.
  9250  //
  9251  // Server-side Encryption
  9252  //
  9253  // You can optionally request server-side encryption. With server-side encryption,
  9254  // Amazon S3 encrypts your data as it writes it to disks in its data centers
  9255  // and decrypts the data when you access it. You have the option to provide
  9256  // your own encryption key or use Amazon Web Services managed encryption keys
  9257  // (SSE-S3 or SSE-KMS). For more information, see Using Server-Side Encryption
  9258  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
  9259  //
  9260  // If you request server-side encryption using Amazon Web Services Key Management
  9261  // Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For
  9262  // more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
  9263  // in the Amazon S3 User Guide.
  9264  //
  9265  // Access Control List (ACL)-Specific Request Headers
  9266  //
  9267  // You can use headers to grant ACL- based permissions. By default, all objects
  9268  // are private. Only the owner has full access control. When adding a new object,
  9269  // you can grant permissions to individual Amazon Web Services accounts or to
  9270  // predefined groups defined by Amazon S3. These permissions are then added
  9271  // to the ACL on the object. For more information, see Access Control List (ACL)
  9272  // Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
  9273  // and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
  9274  //
  9275  // Storage Class Options
  9276  //
  9277  // By default, Amazon S3 uses the STANDARD Storage Class to store newly created
  9278  // objects. The STANDARD storage class provides high durability and high availability.
  9279  // Depending on performance needs, you can specify a different Storage Class.
  9280  // Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
  9281  // see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
  9282  // in the Amazon S3 User Guide.
  9283  //
  9284  // Versioning
  9285  //
  9286  // If you enable versioning for a bucket, Amazon S3 automatically generates
  9287  // a unique version ID for the object being stored. Amazon S3 returns this ID
  9288  // in the response. When you enable versioning for a bucket, if Amazon S3 receives
  9289  // multiple write requests for the same object simultaneously, it stores all
  9290  // of the objects.
  9291  //
  9292  // For more information about versioning, see Adding Objects to Versioning Enabled
  9293  // Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
  9294  // For information about returning the versioning state of a bucket, see GetBucketVersioning
  9295  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html).
  9296  //
  9297  // Related Resources
  9298  //
  9299  //    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
  9300  //
  9301  //    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
  9302  //
  9303  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9304  // with awserr.Error's Code and Message methods to get detailed information about
  9305  // the error.
  9306  //
  9307  // See the AWS API reference guide for Amazon Simple Storage Service's
  9308  // API operation PutObject for usage and error information.
  9309  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
  9310  func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
  9311  	req, out := c.PutObjectRequest(input)
  9312  	return out, req.Send()
  9313  }
  9314  
  9315  // PutObjectWithContext is the same as PutObject with the addition of
  9316  // the ability to pass a context and additional request options.
  9317  //
  9318  // See PutObject for details on how to use this API operation.
  9319  //
  9320  // The context must be non-nil and will be used for request cancellation. If
  9321  // the context is nil a panic will occur. In the future the SDK may create
  9322  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9323  // for more information on using Contexts.
  9324  func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
  9325  	req, out := c.PutObjectRequest(input)
  9326  	req.SetContext(ctx)
  9327  	req.ApplyOptions(opts...)
  9328  	return out, req.Send()
  9329  }
  9330  
  9331  const opPutObjectAcl = "PutObjectAcl"
  9332  
  9333  // PutObjectAclRequest generates a "aws/request.Request" representing the
  9334  // client's request for the PutObjectAcl operation. The "output" return
  9335  // value will be populated with the request's response once the request completes
  9336  // successfully.
  9337  //
  9338  // Use "Send" method on the returned Request to send the API call to the service.
  9339  // the "output" return value is not valid until after Send returns without error.
  9340  //
  9341  // See PutObjectAcl for more information on using the PutObjectAcl
  9342  // API call, and error handling.
  9343  //
  9344  // This method is useful when you want to inject custom logic or configuration
  9345  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9346  //
  9347  //
  9348  //    // Example sending a request using the PutObjectAclRequest method.
  9349  //    req, resp := client.PutObjectAclRequest(params)
  9350  //
  9351  //    err := req.Send()
  9352  //    if err == nil { // resp is now filled
  9353  //        fmt.Println(resp)
  9354  //    }
  9355  //
  9356  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
  9357  func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
  9358  	op := &request.Operation{
  9359  		Name:       opPutObjectAcl,
  9360  		HTTPMethod: "PUT",
  9361  		HTTPPath:   "/{Bucket}/{Key+}?acl",
  9362  	}
  9363  
  9364  	if input == nil {
  9365  		input = &PutObjectAclInput{}
  9366  	}
  9367  
  9368  	output = &PutObjectAclOutput{}
  9369  	req = c.newRequest(op, input, output)
  9370  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9371  		Name: "contentMd5Handler",
  9372  		Fn:   checksum.AddBodyContentMD5Handler,
  9373  	})
  9374  	return
  9375  }
  9376  
  9377  // PutObjectAcl API operation for Amazon Simple Storage Service.
  9378  //
  9379  // Uses the acl subresource to set the access control list (ACL) permissions
  9380  // for a new or existing object in an S3 bucket. You must have WRITE_ACP permission
  9381  // to set the ACL of an object. For more information, see What permissions can
  9382  // I grant? (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions)
  9383  // in the Amazon S3 User Guide.
  9384  //
  9385  // This action is not supported by Amazon S3 on Outposts.
  9386  //
  9387  // Depending on your application needs, you can choose to set the ACL on an
  9388  // object using either the request body or the headers. For example, if you
  9389  // have an existing application that updates a bucket ACL using the request
  9390  // body, you can continue to use that approach. For more information, see Access
  9391  // Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
  9392  // in the Amazon S3 User Guide.
  9393  //
  9394  // Access Permissions
  9395  //
  9396  // You can set access permissions using one of the following methods:
  9397  //
  9398  //    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
  9399  //    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
  9400  //    predefined set of grantees and permissions. Specify the canned ACL name
  9401  //    as the value of x-amz-acl. If you use this header, you cannot use other
  9402  //    access control-specific headers in your request. For more information,
  9403  //    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
  9404  //
  9405  //    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
  9406  //    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
  9407  //    these headers, you specify explicit access permissions and grantees (Amazon
  9408  //    Web Services accounts or Amazon S3 groups) who will receive the permission.
  9409  //    If you use these ACL-specific headers, you cannot use x-amz-acl header
  9410  //    to set a canned ACL. These parameters map to the set of permissions that
  9411  //    Amazon S3 supports in an ACL. For more information, see Access Control
  9412  //    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
  9413  //    You specify each grantee as a type=value pair, where the type is one of
  9414  //    the following: id – if the value specified is the canonical user ID
  9415  //    of an Amazon Web Services account uri – if you are granting permissions
  9416  //    to a predefined group emailAddress – if the value specified is the email
  9417  //    address of an Amazon Web Services account Using email addresses to specify
  9418  //    a grantee is only supported in the following Amazon Web Services Regions:
  9419  //    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
  9420  //    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
  9421  //    South America (São Paulo) For a list of all the Amazon S3 supported Regions
  9422  //    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
  9423  //    in the Amazon Web Services General Reference. For example, the following
  9424  //    x-amz-grant-read header grants list objects permission to the two Amazon
  9425  //    Web Services accounts identified by their email addresses. x-amz-grant-read:
  9426  //    emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
  9427  //
  9428  // You can use either a canned ACL or specify access permissions explicitly.
  9429  // You cannot do both.
  9430  //
  9431  // Grantee Values
  9432  //
  9433  // You can specify the person (grantee) to whom you're assigning access rights
  9434  // (using request elements) in the following ways:
  9435  //
  9436  //    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9437  //    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
  9438  //    </Grantee> DisplayName is optional and ignored in the request.
  9439  //
  9440  //    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9441  //    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
  9442  //
  9443  //    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9444  //    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
  9445  //    The grantee is resolved to the CanonicalUser and, in a response to a GET
  9446  //    Object acl request, appears as the CanonicalUser. Using email addresses
  9447  //    to specify a grantee is only supported in the following Amazon Web Services
  9448  //    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
  9449  //    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
  9450  //    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
  9451  //    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
  9452  //    in the Amazon Web Services General Reference.
  9453  //
  9454  // Versioning
  9455  //
  9456  // The ACL of an object is set at the object version level. By default, PUT
  9457  // sets the ACL of the current version of an object. To set the ACL of a different
  9458  // version, use the versionId subresource.
  9459  //
  9460  // Related Resources
  9461  //
  9462  //    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
  9463  //
  9464  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
  9465  //
  9466  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9467  // with awserr.Error's Code and Message methods to get detailed information about
  9468  // the error.
  9469  //
  9470  // See the AWS API reference guide for Amazon Simple Storage Service's
  9471  // API operation PutObjectAcl for usage and error information.
  9472  //
  9473  // Returned Error Codes:
  9474  //   * ErrCodeNoSuchKey "NoSuchKey"
  9475  //   The specified key does not exist.
  9476  //
  9477  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
  9478  func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
  9479  	req, out := c.PutObjectAclRequest(input)
  9480  	return out, req.Send()
  9481  }
  9482  
  9483  // PutObjectAclWithContext is the same as PutObjectAcl with the addition of
  9484  // the ability to pass a context and additional request options.
  9485  //
  9486  // See PutObjectAcl for details on how to use this API operation.
  9487  //
  9488  // The context must be non-nil and will be used for request cancellation. If
  9489  // the context is nil a panic will occur. In the future the SDK may create
  9490  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9491  // for more information on using Contexts.
  9492  func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
  9493  	req, out := c.PutObjectAclRequest(input)
  9494  	req.SetContext(ctx)
  9495  	req.ApplyOptions(opts...)
  9496  	return out, req.Send()
  9497  }
  9498  
  9499  const opPutObjectLegalHold = "PutObjectLegalHold"
  9500  
  9501  // PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
  9502  // client's request for the PutObjectLegalHold operation. The "output" return
  9503  // value will be populated with the request's response once the request completes
  9504  // successfully.
  9505  //
  9506  // Use "Send" method on the returned Request to send the API call to the service.
  9507  // the "output" return value is not valid until after Send returns without error.
  9508  //
  9509  // See PutObjectLegalHold for more information on using the PutObjectLegalHold
  9510  // API call, and error handling.
  9511  //
  9512  // This method is useful when you want to inject custom logic or configuration
  9513  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9514  //
  9515  //
  9516  //    // Example sending a request using the PutObjectLegalHoldRequest method.
  9517  //    req, resp := client.PutObjectLegalHoldRequest(params)
  9518  //
  9519  //    err := req.Send()
  9520  //    if err == nil { // resp is now filled
  9521  //        fmt.Println(resp)
  9522  //    }
  9523  //
  9524  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
  9525  func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
  9526  	op := &request.Operation{
  9527  		Name:       opPutObjectLegalHold,
  9528  		HTTPMethod: "PUT",
  9529  		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
  9530  	}
  9531  
  9532  	if input == nil {
  9533  		input = &PutObjectLegalHoldInput{}
  9534  	}
  9535  
  9536  	output = &PutObjectLegalHoldOutput{}
  9537  	req = c.newRequest(op, input, output)
  9538  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9539  		Name: "contentMd5Handler",
  9540  		Fn:   checksum.AddBodyContentMD5Handler,
  9541  	})
  9542  	return
  9543  }
  9544  
  9545  // PutObjectLegalHold API operation for Amazon Simple Storage Service.
  9546  //
  9547  // Applies a Legal Hold configuration to the specified object. For more information,
  9548  // see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  9549  //
  9550  // This action is not supported by Amazon S3 on Outposts.
  9551  //
  9552  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9553  // with awserr.Error's Code and Message methods to get detailed information about
  9554  // the error.
  9555  //
  9556  // See the AWS API reference guide for Amazon Simple Storage Service's
  9557  // API operation PutObjectLegalHold for usage and error information.
  9558  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
  9559  func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
  9560  	req, out := c.PutObjectLegalHoldRequest(input)
  9561  	return out, req.Send()
  9562  }
  9563  
  9564  // PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
  9565  // the ability to pass a context and additional request options.
  9566  //
  9567  // See PutObjectLegalHold for details on how to use this API operation.
  9568  //
  9569  // The context must be non-nil and will be used for request cancellation. If
  9570  // the context is nil a panic will occur. In the future the SDK may create
  9571  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9572  // for more information on using Contexts.
  9573  func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
  9574  	req, out := c.PutObjectLegalHoldRequest(input)
  9575  	req.SetContext(ctx)
  9576  	req.ApplyOptions(opts...)
  9577  	return out, req.Send()
  9578  }
  9579  
  9580  const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
  9581  
  9582  // PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
  9583  // client's request for the PutObjectLockConfiguration operation. The "output" return
  9584  // value will be populated with the request's response once the request completes
  9585  // successfully.
  9586  //
  9587  // Use "Send" method on the returned Request to send the API call to the service.
  9588  // the "output" return value is not valid until after Send returns without error.
  9589  //
  9590  // See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
  9591  // API call, and error handling.
  9592  //
  9593  // This method is useful when you want to inject custom logic or configuration
  9594  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9595  //
  9596  //
  9597  //    // Example sending a request using the PutObjectLockConfigurationRequest method.
  9598  //    req, resp := client.PutObjectLockConfigurationRequest(params)
  9599  //
  9600  //    err := req.Send()
  9601  //    if err == nil { // resp is now filled
  9602  //        fmt.Println(resp)
  9603  //    }
  9604  //
  9605  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
  9606  func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
  9607  	op := &request.Operation{
  9608  		Name:       opPutObjectLockConfiguration,
  9609  		HTTPMethod: "PUT",
  9610  		HTTPPath:   "/{Bucket}?object-lock",
  9611  	}
  9612  
  9613  	if input == nil {
  9614  		input = &PutObjectLockConfigurationInput{}
  9615  	}
  9616  
  9617  	output = &PutObjectLockConfigurationOutput{}
  9618  	req = c.newRequest(op, input, output)
  9619  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9620  		Name: "contentMd5Handler",
  9621  		Fn:   checksum.AddBodyContentMD5Handler,
  9622  	})
  9623  	return
  9624  }
  9625  
  9626  // PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
  9627  //
  9628  // Places an Object Lock configuration on the specified bucket. The rule specified
  9629  // in the Object Lock configuration will be applied by default to every new
  9630  // object placed in the specified bucket. For more information, see Locking
  9631  // Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  9632  //
  9633  //    * The DefaultRetention settings require both a mode and a period.
  9634  //
  9635  //    * The DefaultRetention period can be either Days or Years but you must
  9636  //    select one. You cannot specify Days and Years at the same time.
  9637  //
  9638  //    * You can only enable Object Lock for new buckets. If you want to turn
  9639  //    on Object Lock for an existing bucket, contact Amazon Web Services Support.
  9640  //
  9641  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9642  // with awserr.Error's Code and Message methods to get detailed information about
  9643  // the error.
  9644  //
  9645  // See the AWS API reference guide for Amazon Simple Storage Service's
  9646  // API operation PutObjectLockConfiguration for usage and error information.
  9647  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
  9648  func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
  9649  	req, out := c.PutObjectLockConfigurationRequest(input)
  9650  	return out, req.Send()
  9651  }
  9652  
  9653  // PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
  9654  // the ability to pass a context and additional request options.
  9655  //
  9656  // See PutObjectLockConfiguration for details on how to use this API operation.
  9657  //
  9658  // The context must be non-nil and will be used for request cancellation. If
  9659  // the context is nil a panic will occur. In the future the SDK may create
  9660  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9661  // for more information on using Contexts.
  9662  func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
  9663  	req, out := c.PutObjectLockConfigurationRequest(input)
  9664  	req.SetContext(ctx)
  9665  	req.ApplyOptions(opts...)
  9666  	return out, req.Send()
  9667  }
  9668  
  9669  const opPutObjectRetention = "PutObjectRetention"
  9670  
  9671  // PutObjectRetentionRequest generates a "aws/request.Request" representing the
  9672  // client's request for the PutObjectRetention operation. The "output" return
  9673  // value will be populated with the request's response once the request completes
  9674  // successfully.
  9675  //
  9676  // Use "Send" method on the returned Request to send the API call to the service.
  9677  // the "output" return value is not valid until after Send returns without error.
  9678  //
  9679  // See PutObjectRetention for more information on using the PutObjectRetention
  9680  // API call, and error handling.
  9681  //
  9682  // This method is useful when you want to inject custom logic or configuration
  9683  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9684  //
  9685  //
  9686  //    // Example sending a request using the PutObjectRetentionRequest method.
  9687  //    req, resp := client.PutObjectRetentionRequest(params)
  9688  //
  9689  //    err := req.Send()
  9690  //    if err == nil { // resp is now filled
  9691  //        fmt.Println(resp)
  9692  //    }
  9693  //
  9694  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
  9695  func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
  9696  	op := &request.Operation{
  9697  		Name:       opPutObjectRetention,
  9698  		HTTPMethod: "PUT",
  9699  		HTTPPath:   "/{Bucket}/{Key+}?retention",
  9700  	}
  9701  
  9702  	if input == nil {
  9703  		input = &PutObjectRetentionInput{}
  9704  	}
  9705  
  9706  	output = &PutObjectRetentionOutput{}
  9707  	req = c.newRequest(op, input, output)
  9708  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9709  		Name: "contentMd5Handler",
  9710  		Fn:   checksum.AddBodyContentMD5Handler,
  9711  	})
  9712  	return
  9713  }
  9714  
  9715  // PutObjectRetention API operation for Amazon Simple Storage Service.
  9716  //
  9717  // Places an Object Retention configuration on an object. For more information,
  9718  // see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
  9719  // Users or accounts require the s3:PutObjectRetention permission in order to
  9720  // place an Object Retention configuration on objects. Bypassing a Governance
  9721  // Retention configuration requires the s3:BypassGovernanceRetention permission.
  9722  //
  9723  // This action is not supported by Amazon S3 on Outposts.
  9724  //
  9725  // Permissions
  9726  //
  9727  // When the Object Lock retention mode is set to compliance, you need s3:PutObjectRetention
  9728  // and s3:BypassGovernanceRetention permissions. For other requests to PutObjectRetention,
  9729  // only s3:PutObjectRetention permissions are required.
  9730  //
  9731  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9732  // with awserr.Error's Code and Message methods to get detailed information about
  9733  // the error.
  9734  //
  9735  // See the AWS API reference guide for Amazon Simple Storage Service's
  9736  // API operation PutObjectRetention for usage and error information.
  9737  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
  9738  func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
  9739  	req, out := c.PutObjectRetentionRequest(input)
  9740  	return out, req.Send()
  9741  }
  9742  
  9743  // PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
  9744  // the ability to pass a context and additional request options.
  9745  //
  9746  // See PutObjectRetention for details on how to use this API operation.
  9747  //
  9748  // The context must be non-nil and will be used for request cancellation. If
  9749  // the context is nil a panic will occur. In the future the SDK may create
  9750  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9751  // for more information on using Contexts.
  9752  func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
  9753  	req, out := c.PutObjectRetentionRequest(input)
  9754  	req.SetContext(ctx)
  9755  	req.ApplyOptions(opts...)
  9756  	return out, req.Send()
  9757  }
  9758  
  9759  const opPutObjectTagging = "PutObjectTagging"
  9760  
  9761  // PutObjectTaggingRequest generates a "aws/request.Request" representing the
  9762  // client's request for the PutObjectTagging operation. The "output" return
  9763  // value will be populated with the request's response once the request completes
  9764  // successfully.
  9765  //
  9766  // Use "Send" method on the returned Request to send the API call to the service.
  9767  // the "output" return value is not valid until after Send returns without error.
  9768  //
  9769  // See PutObjectTagging for more information on using the PutObjectTagging
  9770  // API call, and error handling.
  9771  //
  9772  // This method is useful when you want to inject custom logic or configuration
  9773  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9774  //
  9775  //
  9776  //    // Example sending a request using the PutObjectTaggingRequest method.
  9777  //    req, resp := client.PutObjectTaggingRequest(params)
  9778  //
  9779  //    err := req.Send()
  9780  //    if err == nil { // resp is now filled
  9781  //        fmt.Println(resp)
  9782  //    }
  9783  //
  9784  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
  9785  func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
  9786  	op := &request.Operation{
  9787  		Name:       opPutObjectTagging,
  9788  		HTTPMethod: "PUT",
  9789  		HTTPPath:   "/{Bucket}/{Key+}?tagging",
  9790  	}
  9791  
  9792  	if input == nil {
  9793  		input = &PutObjectTaggingInput{}
  9794  	}
  9795  
  9796  	output = &PutObjectTaggingOutput{}
  9797  	req = c.newRequest(op, input, output)
  9798  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9799  		Name: "contentMd5Handler",
  9800  		Fn:   checksum.AddBodyContentMD5Handler,
  9801  	})
  9802  	return
  9803  }
  9804  
  9805  // PutObjectTagging API operation for Amazon Simple Storage Service.
  9806  //
  9807  // Sets the supplied tag-set to an object that already exists in a bucket.
  9808  //
  9809  // A tag is a key-value pair. You can associate tags with an object by sending
  9810  // a PUT request against the tagging subresource that is associated with the
  9811  // object. You can retrieve tags by sending a GET request. For more information,
  9812  // see GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html).
  9813  //
  9814  // For tagging-related restrictions related to characters and encodings, see
  9815  // Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
  9816  // Note that Amazon S3 limits the maximum number of tags to 10 tags per object.
  9817  //
  9818  // To use this operation, you must have permission to perform the s3:PutObjectTagging
  9819  // action. By default, the bucket owner has this permission and can grant this
  9820  // permission to others.
  9821  //
  9822  // To put tags of any other version, use the versionId query parameter. You
  9823  // also need permission for the s3:PutObjectVersionTagging action.
  9824  //
  9825  // For information about the Amazon S3 object tagging feature, see Object Tagging
  9826  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
  9827  //
  9828  // Special Errors
  9829  //
  9830  //    * Code: InvalidTagError Cause: The tag provided was not a valid tag. This
  9831  //    error can occur if the tag did not pass input validation. For more information,
  9832  //    see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
  9833  //
  9834  //    * Code: MalformedXMLError Cause: The XML provided does not match the schema.
  9835  //
  9836  //    * Code: OperationAbortedError Cause: A conflicting conditional action
  9837  //    is currently in progress against this resource. Please try again.
  9838  //
  9839  //    * Code: InternalError Cause: The service was unable to apply the provided
  9840  //    tag to the object.
  9841  //
  9842  // Related Resources
  9843  //
  9844  //    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
  9845  //
  9846  //    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
  9847  //
  9848  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9849  // with awserr.Error's Code and Message methods to get detailed information about
  9850  // the error.
  9851  //
  9852  // See the AWS API reference guide for Amazon Simple Storage Service's
  9853  // API operation PutObjectTagging for usage and error information.
  9854  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
  9855  func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
  9856  	req, out := c.PutObjectTaggingRequest(input)
  9857  	return out, req.Send()
  9858  }
  9859  
  9860  // PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
  9861  // the ability to pass a context and additional request options.
  9862  //
  9863  // See PutObjectTagging for details on how to use this API operation.
  9864  //
  9865  // The context must be non-nil and will be used for request cancellation. If
  9866  // the context is nil a panic will occur. In the future the SDK may create
  9867  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9868  // for more information on using Contexts.
  9869  func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
  9870  	req, out := c.PutObjectTaggingRequest(input)
  9871  	req.SetContext(ctx)
  9872  	req.ApplyOptions(opts...)
  9873  	return out, req.Send()
  9874  }
  9875  
  9876  const opPutPublicAccessBlock = "PutPublicAccessBlock"
  9877  
  9878  // PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
  9879  // client's request for the PutPublicAccessBlock operation. The "output" return
  9880  // value will be populated with the request's response once the request completes
  9881  // successfully.
  9882  //
  9883  // Use "Send" method on the returned Request to send the API call to the service.
  9884  // the "output" return value is not valid until after Send returns without error.
  9885  //
  9886  // See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
  9887  // API call, and error handling.
  9888  //
  9889  // This method is useful when you want to inject custom logic or configuration
  9890  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9891  //
  9892  //
  9893  //    // Example sending a request using the PutPublicAccessBlockRequest method.
  9894  //    req, resp := client.PutPublicAccessBlockRequest(params)
  9895  //
  9896  //    err := req.Send()
  9897  //    if err == nil { // resp is now filled
  9898  //        fmt.Println(resp)
  9899  //    }
  9900  //
  9901  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
  9902  func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
  9903  	op := &request.Operation{
  9904  		Name:       opPutPublicAccessBlock,
  9905  		HTTPMethod: "PUT",
  9906  		HTTPPath:   "/{Bucket}?publicAccessBlock",
  9907  	}
  9908  
  9909  	if input == nil {
  9910  		input = &PutPublicAccessBlockInput{}
  9911  	}
  9912  
  9913  	output = &PutPublicAccessBlockOutput{}
  9914  	req = c.newRequest(op, input, output)
  9915  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  9916  	req.Handlers.Build.PushBackNamed(request.NamedHandler{
  9917  		Name: "contentMd5Handler",
  9918  		Fn:   checksum.AddBodyContentMD5Handler,
  9919  	})
  9920  	return
  9921  }
  9922  
  9923  // PutPublicAccessBlock API operation for Amazon Simple Storage Service.
  9924  //
  9925  // Creates or modifies the PublicAccessBlock configuration for an Amazon S3
  9926  // bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock
  9927  // permission. For more information about Amazon S3 permissions, see Specifying
  9928  // Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
  9929  //
  9930  // When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
  9931  // or an object, it checks the PublicAccessBlock configuration for both the
  9932  // bucket (or the bucket that contains the object) and the bucket owner's account.
  9933  // If the PublicAccessBlock configurations are different between the bucket
  9934  // and the account, Amazon S3 uses the most restrictive combination of the bucket-level
  9935  // and account-level settings.
  9936  //
  9937  // For more information about when Amazon S3 considers a bucket or an object
  9938  // public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
  9939  //
  9940  // Related Resources
  9941  //
  9942  //    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
  9943  //
  9944  //    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
  9945  //
  9946  //    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
  9947  //
  9948  //    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
  9949  //
  9950  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  9951  // with awserr.Error's Code and Message methods to get detailed information about
  9952  // the error.
  9953  //
  9954  // See the AWS API reference guide for Amazon Simple Storage Service's
  9955  // API operation PutPublicAccessBlock for usage and error information.
  9956  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
  9957  func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
  9958  	req, out := c.PutPublicAccessBlockRequest(input)
  9959  	return out, req.Send()
  9960  }
  9961  
  9962  // PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
  9963  // the ability to pass a context and additional request options.
  9964  //
  9965  // See PutPublicAccessBlock for details on how to use this API operation.
  9966  //
  9967  // The context must be non-nil and will be used for request cancellation. If
  9968  // the context is nil a panic will occur. In the future the SDK may create
  9969  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  9970  // for more information on using Contexts.
  9971  func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
  9972  	req, out := c.PutPublicAccessBlockRequest(input)
  9973  	req.SetContext(ctx)
  9974  	req.ApplyOptions(opts...)
  9975  	return out, req.Send()
  9976  }
  9977  
  9978  const opRestoreObject = "RestoreObject"
  9979  
  9980  // RestoreObjectRequest generates a "aws/request.Request" representing the
  9981  // client's request for the RestoreObject operation. The "output" return
  9982  // value will be populated with the request's response once the request completes
  9983  // successfully.
  9984  //
  9985  // Use "Send" method on the returned Request to send the API call to the service.
  9986  // the "output" return value is not valid until after Send returns without error.
  9987  //
  9988  // See RestoreObject for more information on using the RestoreObject
  9989  // API call, and error handling.
  9990  //
  9991  // This method is useful when you want to inject custom logic or configuration
  9992  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  9993  //
  9994  //
  9995  //    // Example sending a request using the RestoreObjectRequest method.
  9996  //    req, resp := client.RestoreObjectRequest(params)
  9997  //
  9998  //    err := req.Send()
  9999  //    if err == nil { // resp is now filled
 10000  //        fmt.Println(resp)
 10001  //    }
 10002  //
 10003  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
 10004  func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
 10005  	op := &request.Operation{
 10006  		Name:       opRestoreObject,
 10007  		HTTPMethod: "POST",
 10008  		HTTPPath:   "/{Bucket}/{Key+}?restore",
 10009  	}
 10010  
 10011  	if input == nil {
 10012  		input = &RestoreObjectInput{}
 10013  	}
 10014  
 10015  	output = &RestoreObjectOutput{}
 10016  	req = c.newRequest(op, input, output)
 10017  	return
 10018  }
 10019  
 10020  // RestoreObject API operation for Amazon Simple Storage Service.
 10021  //
 10022  // Restores an archived copy of an object back into Amazon S3
 10023  //
 10024  // This action is not supported by Amazon S3 on Outposts.
 10025  //
 10026  // This action performs the following types of requests:
 10027  //
 10028  //    * select - Perform a select query on an archived object
 10029  //
 10030  //    * restore an archive - Restore an archived object
 10031  //
 10032  // To use this operation, you must have permissions to perform the s3:RestoreObject
 10033  // action. The bucket owner has this permission by default and can grant this
 10034  // permission to others. For more information about permissions, see Permissions
 10035  // Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
 10036  // and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
 10037  // in the Amazon S3 User Guide.
 10038  //
 10039  // Querying Archives with Select Requests
 10040  //
 10041  // You use a select type of request to perform SQL queries on archived objects.
 10042  // The archived objects that are being queried by the select request must be
 10043  // formatted as uncompressed comma-separated values (CSV) files. You can run
 10044  // queries and custom analytics on your archived data without having to restore
 10045  // your data to a hotter Amazon S3 tier. For an overview about select requests,
 10046  // see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
 10047  // in the Amazon S3 User Guide.
 10048  //
 10049  // When making a select request, do the following:
 10050  //
 10051  //    * Define an output location for the select query's output. This must be
 10052  //    an Amazon S3 bucket in the same Amazon Web Services Region as the bucket
 10053  //    that contains the archive object that is being queried. The Amazon Web
 10054  //    Services account that initiates the job must have permissions to write
 10055  //    to the S3 bucket. You can specify the storage class and encryption for
 10056  //    the output objects stored in the bucket. For more information about output,
 10057  //    see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
 10058  //    in the Amazon S3 User Guide. For more information about the S3 structure
 10059  //    in the request body, see the following: PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
 10060  //    Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html)
 10061  //    in the Amazon S3 User Guide Protecting Data Using Server-Side Encryption
 10062  //    (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
 10063  //    in the Amazon S3 User Guide
 10064  //
 10065  //    * Define the SQL expression for the SELECT type of restoration for your
 10066  //    query in the request body's SelectParameters structure. You can use expressions
 10067  //    like the following examples. The following expression returns all records
 10068  //    from the specified object. SELECT * FROM Object Assuming that you are
 10069  //    not using any headers for data stored in the object, you can specify columns
 10070  //    with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 >
 10071  //    100 If you have headers and you set the fileHeaderInfo in the CSV structure
 10072  //    in the request body to USE, you can specify headers in the query. (If
 10073  //    you set the fileHeaderInfo field to IGNORE, the first row is skipped for
 10074  //    the query.) You cannot mix ordinal positions with header column names.
 10075  //    SELECT s.Id, s.FirstName, s.SSN FROM S3Object s
 10076  //
 10077  // For more information about using SQL with S3 Glacier Select restore, see
 10078  // SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
 10079  // in the Amazon S3 User Guide.
 10080  //
 10081  // When making a select request, you can also do the following:
 10082  //
 10083  //    * To expedite your queries, specify the Expedited tier. For more information
 10084  //    about tiers, see "Restoring Archives," later in this topic.
 10085  //
 10086  //    * Specify details about the data serialization format of both the input
 10087  //    object that is being queried and the serialization of the CSV-encoded
 10088  //    query results.
 10089  //
 10090  // The following are additional important facts about the select feature:
 10091  //
 10092  //    * The output results are new Amazon S3 objects. Unlike archive retrievals,
 10093  //    they are stored until explicitly deleted-manually or through a lifecycle
 10094  //    policy.
 10095  //
 10096  //    * You can issue more than one select request on the same Amazon S3 object.
 10097  //    Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests.
 10098  //
 10099  //    * Amazon S3 accepts a select request even if the object has already been
 10100  //    restored. A select request doesn’t return error response 409.
 10101  //
 10102  // Restoring objects
 10103  //
 10104  // Objects that you archive to the S3 Glacier or S3 Glacier Deep Archive storage
 10105  // class, and S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep
 10106  // Archive tiers are not accessible in real time. For objects in Archive Access
 10107  // or Deep Archive Access tiers you must first initiate a restore request, and
 10108  // then wait until the object is moved into the Frequent Access tier. For objects
 10109  // in S3 Glacier or S3 Glacier Deep Archive storage classes you must first initiate
 10110  // a restore request, and then wait until a temporary copy of the object is
 10111  // available. To access an archived object, you must restore the object for
 10112  // the duration (number of days) that you specify.
 10113  //
 10114  // To restore a specific object version, you can provide a version ID. If you
 10115  // don't provide a version ID, Amazon S3 restores the current version.
 10116  //
 10117  // When restoring an archived object (or using a select request), you can specify
 10118  // one of the following data access tier options in the Tier element of the
 10119  // request body:
 10120  //
 10121  //    * Expedited - Expedited retrievals allow you to quickly access your data
 10122  //    stored in the S3 Glacier storage class or S3 Intelligent-Tiering Archive
 10123  //    tier when occasional urgent requests for a subset of archives are required.
 10124  //    For all but the largest archived objects (250 MB+), data accessed using
 10125  //    Expedited retrievals is typically made available within 1–5 minutes.
 10126  //    Provisioned capacity ensures that retrieval capacity for Expedited retrievals
 10127  //    is available when you need it. Expedited retrievals and provisioned capacity
 10128  //    are not available for objects stored in the S3 Glacier Deep Archive storage
 10129  //    class or S3 Intelligent-Tiering Deep Archive tier.
 10130  //
 10131  //    * Standard - Standard retrievals allow you to access any of your archived
 10132  //    objects within several hours. This is the default option for retrieval
 10133  //    requests that do not specify the retrieval option. Standard retrievals
 10134  //    typically finish within 3–5 hours for objects stored in the S3 Glacier
 10135  //    storage class or S3 Intelligent-Tiering Archive tier. They typically finish
 10136  //    within 12 hours for objects stored in the S3 Glacier Deep Archive storage
 10137  //    class or S3 Intelligent-Tiering Deep Archive tier. Standard retrievals
 10138  //    are free for objects stored in S3 Intelligent-Tiering.
 10139  //
 10140  //    * Bulk - Bulk retrievals are the lowest-cost retrieval option in S3 Glacier,
 10141  //    enabling you to retrieve large amounts, even petabytes, of data inexpensively.
 10142  //    Bulk retrievals typically finish within 5–12 hours for objects stored
 10143  //    in the S3 Glacier storage class or S3 Intelligent-Tiering Archive tier.
 10144  //    They typically finish within 48 hours for objects stored in the S3 Glacier
 10145  //    Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier.
 10146  //    Bulk retrievals are free for objects stored in S3 Intelligent-Tiering.
 10147  //
 10148  // For more information about archive retrieval options and provisioned capacity
 10149  // for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
 10150  // in the Amazon S3 User Guide.
 10151  //
 10152  // You can use Amazon S3 restore speed upgrade to change the restore speed to
 10153  // a faster speed while it is in progress. For more information, see Upgrading
 10154  // the speed of an in-progress restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
 10155  // in the Amazon S3 User Guide.
 10156  //
 10157  // To get the status of object restoration, you can send a HEAD request. Operations
 10158  // return the x-amz-restore header, which provides information about the restoration
 10159  // status, in the response. You can use Amazon S3 event notifications to notify
 10160  // you when a restore is initiated or completed. For more information, see Configuring
 10161  // Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 10162  // in the Amazon S3 User Guide.
 10163  //
 10164  // After restoring an archived object, you can update the restoration period
 10165  // by reissuing the request with a new period. Amazon S3 updates the restoration
 10166  // period relative to the current time and charges only for the request-there
 10167  // are no data transfer charges. You cannot update the restoration period when
 10168  // Amazon S3 is actively processing your current restore request for the object.
 10169  //
 10170  // If your bucket has a lifecycle configuration with a rule that includes an
 10171  // expiration action, the object expiration overrides the life span that you
 10172  // specify in a restore request. For example, if you restore an object copy
 10173  // for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes
 10174  // the object in 3 days. For more information about lifecycle configuration,
 10175  // see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
 10176  // and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
 10177  // in Amazon S3 User Guide.
 10178  //
 10179  // Responses
 10180  //
 10181  // A successful action returns either the 200 OK or 202 Accepted status code.
 10182  //
 10183  //    * If the object is not previously restored, then Amazon S3 returns 202
 10184  //    Accepted in the response.
 10185  //
 10186  //    * If the object is previously restored, Amazon S3 returns 200 OK in the
 10187  //    response.
 10188  //
 10189  // Special Errors
 10190  //
 10191  //    * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress.
 10192  //    (This error does not apply to SELECT type requests.) HTTP Status Code:
 10193  //    409 Conflict SOAP Fault Code Prefix: Client
 10194  //
 10195  //    * Code: GlacierExpeditedRetrievalNotAvailable Cause: expedited retrievals
 10196  //    are currently not available. Try again later. (Returned if there is insufficient
 10197  //    capacity to process the Expedited request. This error applies only to
 10198  //    Expedited retrievals and not to S3 Standard or Bulk retrievals.) HTTP
 10199  //    Status Code: 503 SOAP Fault Code Prefix: N/A
 10200  //
 10201  // Related Resources
 10202  //
 10203  //    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
 10204  //
 10205  //    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
 10206  //
 10207  //    * SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
 10208  //    in the Amazon S3 User Guide
 10209  //
 10210  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 10211  // with awserr.Error's Code and Message methods to get detailed information about
 10212  // the error.
 10213  //
 10214  // See the AWS API reference guide for Amazon Simple Storage Service's
 10215  // API operation RestoreObject for usage and error information.
 10216  //
 10217  // Returned Error Codes:
 10218  //   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
 10219  //   This action is not allowed against this storage tier.
 10220  //
 10221  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
 10222  func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
 10223  	req, out := c.RestoreObjectRequest(input)
 10224  	return out, req.Send()
 10225  }
 10226  
 10227  // RestoreObjectWithContext is the same as RestoreObject with the addition of
 10228  // the ability to pass a context and additional request options.
 10229  //
 10230  // See RestoreObject for details on how to use this API operation.
 10231  //
 10232  // The context must be non-nil and will be used for request cancellation. If
 10233  // the context is nil a panic will occur. In the future the SDK may create
 10234  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 10235  // for more information on using Contexts.
 10236  func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
 10237  	req, out := c.RestoreObjectRequest(input)
 10238  	req.SetContext(ctx)
 10239  	req.ApplyOptions(opts...)
 10240  	return out, req.Send()
 10241  }
 10242  
 10243  const opSelectObjectContent = "SelectObjectContent"
 10244  
 10245  // SelectObjectContentRequest generates a "aws/request.Request" representing the
 10246  // client's request for the SelectObjectContent operation. The "output" return
 10247  // value will be populated with the request's response once the request completes
 10248  // successfully.
 10249  //
 10250  // Use "Send" method on the returned Request to send the API call to the service.
 10251  // the "output" return value is not valid until after Send returns without error.
 10252  //
 10253  // See SelectObjectContent for more information on using the SelectObjectContent
 10254  // API call, and error handling.
 10255  //
 10256  // This method is useful when you want to inject custom logic or configuration
 10257  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 10258  //
 10259  //
 10260  //    // Example sending a request using the SelectObjectContentRequest method.
 10261  //    req, resp := client.SelectObjectContentRequest(params)
 10262  //
 10263  //    err := req.Send()
 10264  //    if err == nil { // resp is now filled
 10265  //        fmt.Println(resp)
 10266  //    }
 10267  //
 10268  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
 10269  func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
 10270  	op := &request.Operation{
 10271  		Name:       opSelectObjectContent,
 10272  		HTTPMethod: "POST",
 10273  		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
 10274  	}
 10275  
 10276  	if input == nil {
 10277  		input = &SelectObjectContentInput{}
 10278  	}
 10279  
 10280  	output = &SelectObjectContentOutput{}
 10281  	req = c.newRequest(op, input, output)
 10282  
 10283  	es := NewSelectObjectContentEventStream()
 10284  	req.Handlers.Unmarshal.PushBack(es.setStreamCloser)
 10285  	output.EventStream = es
 10286  
 10287  	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
 10288  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
 10289  	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
 10290  	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
 10291  	return
 10292  }
 10293  
 10294  // SelectObjectContent API operation for Amazon Simple Storage Service.
 10295  //
 10296  // This action filters the contents of an Amazon S3 object based on a simple
 10297  // structured query language (SQL) statement. In the request, along with the
 10298  // SQL expression, you must also specify a data serialization format (JSON,
 10299  // CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse
 10300  // object data into records, and returns only records that match the specified
 10301  // SQL expression. You must also specify the data serialization format for the
 10302  // response.
 10303  //
 10304  // This action is not supported by Amazon S3 on Outposts.
 10305  //
 10306  // For more information about Amazon S3 Select, see Selecting Content from Objects
 10307  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
 10308  // in the Amazon S3 User Guide.
 10309  //
 10310  // For more information about using SQL with Amazon S3 Select, see SQL Reference
 10311  // for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
 10312  // in the Amazon S3 User Guide.
 10313  //
 10314  // Permissions
 10315  //
 10316  // You must have s3:GetObject permission for this operation. Amazon S3 Select
 10317  // does not support anonymous access. For more information about permissions,
 10318  // see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
 10319  // in the Amazon S3 User Guide.
 10320  //
 10321  // Object Data Formats
 10322  //
 10323  // You can use Amazon S3 Select to query objects that have the following format
 10324  // properties:
 10325  //
 10326  //    * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format.
 10327  //
 10328  //    * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.
 10329  //
 10330  //    * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2.
 10331  //    GZIP and BZIP2 are the only compression formats that Amazon S3 Select
 10332  //    supports for CSV and JSON files. Amazon S3 Select supports columnar compression
 10333  //    for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object
 10334  //    compression for Parquet objects.
 10335  //
 10336  //    * Server-side encryption - Amazon S3 Select supports querying objects
 10337  //    that are protected with server-side encryption. For objects that are encrypted
 10338  //    with customer-provided encryption keys (SSE-C), you must use HTTPS, and
 10339  //    you must use the headers that are documented in the GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
 10340  //    For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
 10341  //    Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
 10342  //    in the Amazon S3 User Guide. For objects that are encrypted with Amazon
 10343  //    S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS),
 10344  //    server-side encryption is handled transparently, so you don't need to
 10345  //    specify anything. For more information about server-side encryption, including
 10346  //    SSE-S3 and SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
 10347  //    in the Amazon S3 User Guide.
 10348  //
 10349  // Working with the Response Body
 10350  //
 10351  // Given the response size is unknown, Amazon S3 Select streams the response
 10352  // as a series of messages and includes a Transfer-Encoding header with chunked
 10353  // as its value in the response. For more information, see Appendix: SelectObjectContent
 10354  // Response (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html).
 10355  //
 10356  // GetObject Support
 10357  //
 10358  // The SelectObjectContent action does not support the following GetObject functionality.
 10359  // For more information, see GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
 10360  //
 10361  //    * Range: Although you can specify a scan range for an Amazon S3 Select
 10362  //    request (see SelectObjectContentRequest - ScanRange (https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange)
 10363  //    in the request parameters), you cannot specify the range of bytes of an
 10364  //    object to return.
 10365  //
 10366  //    * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
 10367  //    specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
 10368  //    For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
 10369  //    in the Amazon S3 User Guide.
 10370  //
 10371  // Special Errors
 10372  //
 10373  // For a list of special errors for this operation, see List of SELECT Object
 10374  // Content Error Codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList)
 10375  //
 10376  // Related Resources
 10377  //
 10378  //    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
 10379  //
 10380  //    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
 10381  //
 10382  //    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
 10383  //
 10384  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 10385  // with awserr.Error's Code and Message methods to get detailed information about
 10386  // the error.
 10387  //
 10388  // See the AWS API reference guide for Amazon Simple Storage Service's
 10389  // API operation SelectObjectContent for usage and error information.
 10390  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
 10391  func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
 10392  	req, out := c.SelectObjectContentRequest(input)
 10393  	return out, req.Send()
 10394  }
 10395  
 10396  // SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
 10397  // the ability to pass a context and additional request options.
 10398  //
 10399  // See SelectObjectContent for details on how to use this API operation.
 10400  //
 10401  // The context must be non-nil and will be used for request cancellation. If
 10402  // the context is nil a panic will occur. In the future the SDK may create
 10403  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 10404  // for more information on using Contexts.
 10405  func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
 10406  	req, out := c.SelectObjectContentRequest(input)
 10407  	req.SetContext(ctx)
 10408  	req.ApplyOptions(opts...)
 10409  	return out, req.Send()
 10410  }
 10411  
 10412  var _ awserr.Error
 10413  
 10414  // SelectObjectContentEventStream provides the event stream handling for the SelectObjectContent.
 10415  //
 10416  // For testing and mocking the event stream this type should be initialized via
 10417  // the NewSelectObjectContentEventStream constructor function. Using the functional options
 10418  // to pass in nested mock behavior.
 10419  type SelectObjectContentEventStream struct {
 10420  
 10421  	// Reader is the EventStream reader for the SelectObjectContentEventStream
 10422  	// events. This value is automatically set by the SDK when the API call is made
 10423  	// Use this member when unit testing your code with the SDK to mock out the
 10424  	// EventStream Reader.
 10425  	//
 10426  	// Must not be nil.
 10427  	Reader SelectObjectContentEventStreamReader
 10428  
 10429  	outputReader io.ReadCloser
 10430  
 10431  	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
 10432  	// EventStream this is the response Body. The stream will be closed when
 10433  	// the Close method of the EventStream is called.
 10434  	StreamCloser io.Closer
 10435  
 10436  	done      chan struct{}
 10437  	closeOnce sync.Once
 10438  	err       *eventstreamapi.OnceError
 10439  }
 10440  
 10441  // NewSelectObjectContentEventStream initializes an SelectObjectContentEventStream.
 10442  // This function should only be used for testing and mocking the SelectObjectContentEventStream
 10443  // stream within your application.
 10444  //
 10445  // The Reader member must be set before reading events from the stream.
 10446  //
 10447  // The StreamCloser member should be set to the underlying io.Closer,
 10448  // (e.g. http.Response.Body), that will be closed when the stream Close method
 10449  // is called.
 10450  //
 10451  //   es := NewSelectObjectContentEventStream(func(o *SelectObjectContentEventStream{
 10452  //       es.Reader = myMockStreamReader
 10453  //       es.StreamCloser = myMockStreamCloser
 10454  //   })
 10455  func NewSelectObjectContentEventStream(opts ...func(*SelectObjectContentEventStream)) *SelectObjectContentEventStream {
 10456  	es := &SelectObjectContentEventStream{
 10457  		done: make(chan struct{}),
 10458  		err:  eventstreamapi.NewOnceError(),
 10459  	}
 10460  
 10461  	for _, fn := range opts {
 10462  		fn(es)
 10463  	}
 10464  
 10465  	return es
 10466  }
 10467  
 10468  func (es *SelectObjectContentEventStream) setStreamCloser(r *request.Request) {
 10469  	es.StreamCloser = r.HTTPResponse.Body
 10470  }
 10471  
 10472  func (es *SelectObjectContentEventStream) runOnStreamPartClose(r *request.Request) {
 10473  	if es.done == nil {
 10474  		return
 10475  	}
 10476  	go es.waitStreamPartClose()
 10477  
 10478  }
 10479  
 10480  func (es *SelectObjectContentEventStream) waitStreamPartClose() {
 10481  	var outputErrCh <-chan struct{}
 10482  	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
 10483  		outputErrCh = v.ErrorSet()
 10484  	}
 10485  	var outputClosedCh <-chan struct{}
 10486  	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
 10487  		outputClosedCh = v.Closed()
 10488  	}
 10489  
 10490  	select {
 10491  	case <-es.done:
 10492  	case <-outputErrCh:
 10493  		es.err.SetError(es.Reader.Err())
 10494  		es.Close()
 10495  	case <-outputClosedCh:
 10496  		if err := es.Reader.Err(); err != nil {
 10497  			es.err.SetError(es.Reader.Err())
 10498  		}
 10499  		es.Close()
 10500  	}
 10501  }
 10502  
 10503  // Events returns a channel to read events from.
 10504  //
 10505  // These events are:
 10506  //
 10507  //     * ContinuationEvent
 10508  //     * EndEvent
 10509  //     * ProgressEvent
 10510  //     * RecordsEvent
 10511  //     * StatsEvent
 10512  //     * SelectObjectContentEventStreamUnknownEvent
 10513  func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
 10514  	return es.Reader.Events()
 10515  }
 10516  
 10517  func (es *SelectObjectContentEventStream) runOutputStream(r *request.Request) {
 10518  	var opts []func(*eventstream.Decoder)
 10519  	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
 10520  		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
 10521  	}
 10522  
 10523  	unmarshalerForEvent := unmarshalerForSelectObjectContentEventStreamEvent{
 10524  		metadata: protocol.ResponseMetadata{
 10525  			StatusCode: r.HTTPResponse.StatusCode,
 10526  			RequestID:  r.RequestID,
 10527  		},
 10528  	}.UnmarshalerForEventName
 10529  
 10530  	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
 10531  	eventReader := eventstreamapi.NewEventReader(decoder,
 10532  		protocol.HandlerPayloadUnmarshal{
 10533  			Unmarshalers: r.Handlers.UnmarshalStream,
 10534  		},
 10535  		unmarshalerForEvent,
 10536  	)
 10537  
 10538  	es.outputReader = r.HTTPResponse.Body
 10539  	es.Reader = newReadSelectObjectContentEventStream(eventReader)
 10540  }
 10541  
 10542  // Close closes the stream. This will also cause the stream to be closed.
 10543  // Close must be called when done using the stream API. Not calling Close
 10544  // may result in resource leaks.
 10545  //
 10546  // You can use the closing of the Reader's Events channel to terminate your
 10547  // application's read from the API's stream.
 10548  //
 10549  func (es *SelectObjectContentEventStream) Close() (err error) {
 10550  	es.closeOnce.Do(es.safeClose)
 10551  	return es.Err()
 10552  }
 10553  
 10554  func (es *SelectObjectContentEventStream) safeClose() {
 10555  	if es.done != nil {
 10556  		close(es.done)
 10557  	}
 10558  
 10559  	es.Reader.Close()
 10560  	if es.outputReader != nil {
 10561  		es.outputReader.Close()
 10562  	}
 10563  
 10564  	es.StreamCloser.Close()
 10565  }
 10566  
 10567  // Err returns any error that occurred while reading or writing EventStream
 10568  // Events from the service API's response. Returns nil if there were no errors.
 10569  func (es *SelectObjectContentEventStream) Err() error {
 10570  	if err := es.err.Err(); err != nil {
 10571  		return err
 10572  	}
 10573  	if err := es.Reader.Err(); err != nil {
 10574  		return err
 10575  	}
 10576  
 10577  	return nil
 10578  }
 10579  
 10580  const opUploadPart = "UploadPart"
 10581  
 10582  // UploadPartRequest generates a "aws/request.Request" representing the
 10583  // client's request for the UploadPart operation. The "output" return
 10584  // value will be populated with the request's response once the request completes
 10585  // successfully.
 10586  //
 10587  // Use "Send" method on the returned Request to send the API call to the service.
 10588  // the "output" return value is not valid until after Send returns without error.
 10589  //
 10590  // See UploadPart for more information on using the UploadPart
 10591  // API call, and error handling.
 10592  //
 10593  // This method is useful when you want to inject custom logic or configuration
 10594  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 10595  //
 10596  //
 10597  //    // Example sending a request using the UploadPartRequest method.
 10598  //    req, resp := client.UploadPartRequest(params)
 10599  //
 10600  //    err := req.Send()
 10601  //    if err == nil { // resp is now filled
 10602  //        fmt.Println(resp)
 10603  //    }
 10604  //
 10605  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
 10606  func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
 10607  	op := &request.Operation{
 10608  		Name:       opUploadPart,
 10609  		HTTPMethod: "PUT",
 10610  		HTTPPath:   "/{Bucket}/{Key+}",
 10611  	}
 10612  
 10613  	if input == nil {
 10614  		input = &UploadPartInput{}
 10615  	}
 10616  
 10617  	output = &UploadPartOutput{}
 10618  	req = c.newRequest(op, input, output)
 10619  	return
 10620  }
 10621  
 10622  // UploadPart API operation for Amazon Simple Storage Service.
 10623  //
 10624  // Uploads a part in a multipart upload.
 10625  //
 10626  // In this operation, you provide part data in your request. However, you have
 10627  // an option to specify your existing Amazon S3 object as a data source for
 10628  // the part you are uploading. To upload a part from an existing object, you
 10629  // use the UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
 10630  // operation.
 10631  //
 10632  // You must initiate a multipart upload (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html))
 10633  // before you can upload any part. In response to your initiate request, Amazon
 10634  // S3 returns an upload ID, a unique identifier, that you must include in your
 10635  // upload part request.
 10636  //
 10637  // Part numbers can be any number from 1 to 10,000, inclusive. A part number
 10638  // uniquely identifies a part and also defines its position within the object
 10639  // being created. If you upload a new part using the same part number that was
 10640  // used with a previous part, the previously uploaded part is overwritten. Each
 10641  // part must be at least 5 MB in size, except the last part. There is no size
 10642  // limit on the last part of your multipart upload.
 10643  //
 10644  // To ensure that data is not corrupted when traversing the network, specify
 10645  // the Content-MD5 header in the upload part request. Amazon S3 checks the part
 10646  // data against the provided MD5 value. If they do not match, Amazon S3 returns
 10647  // an error.
 10648  //
 10649  // If the upload request is signed with Signature Version 4, then Amazon Web
 10650  // Services S3 uses the x-amz-content-sha256 header as a checksum instead of
 10651  // Content-MD5. For more information see Authenticating Requests: Using the
 10652  // Authorization Header (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html).
 10653  //
 10654  // Note: After you initiate multipart upload and upload one or more parts, you
 10655  // must either complete or abort multipart upload in order to stop getting charged
 10656  // for storage of the uploaded parts. Only after you either complete or abort
 10657  // multipart upload, Amazon S3 frees up the parts storage and stops charging
 10658  // you for the parts storage.
 10659  //
 10660  // For more information on multipart uploads, go to Multipart Upload Overview
 10661  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the
 10662  // Amazon S3 User Guide .
 10663  //
 10664  // For information on the permissions required to use the multipart upload API,
 10665  // go to Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
 10666  // in the Amazon S3 User Guide.
 10667  //
 10668  // You can optionally request server-side encryption where Amazon S3 encrypts
 10669  // your data as it writes it to disks in its data centers and decrypts it for
 10670  // you when you access it. You have the option of providing your own encryption
 10671  // key, or you can use the Amazon Web Services managed encryption keys. If you
 10672  // choose to provide your own encryption key, the request headers you provide
 10673  // in the request must match the headers you used in the request to initiate
 10674  // the upload by using CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
 10675  // For more information, go to Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
 10676  // in the Amazon S3 User Guide.
 10677  //
 10678  // Server-side encryption is supported by the S3 Multipart Upload actions. Unless
 10679  // you are using a customer-provided encryption key, you don't need to specify
 10680  // the encryption parameters in each UploadPart request. Instead, you only need
 10681  // to specify the server-side encryption parameters in the initial Initiate
 10682  // Multipart request. For more information, see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
 10683  //
 10684  // If you requested server-side encryption using a customer-provided encryption
 10685  // key in your initiate multipart upload request, you must provide identical
 10686  // encryption information in each part upload using the following headers.
 10687  //
 10688  //    * x-amz-server-side-encryption-customer-algorithm
 10689  //
 10690  //    * x-amz-server-side-encryption-customer-key
 10691  //
 10692  //    * x-amz-server-side-encryption-customer-key-MD5
 10693  //
 10694  // Special Errors
 10695  //
 10696  //    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
 10697  //    The upload ID might be invalid, or the multipart upload might have been
 10698  //    aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code
 10699  //    Prefix: Client
 10700  //
 10701  // Related Resources
 10702  //
 10703  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
 10704  //
 10705  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
 10706  //
 10707  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
 10708  //
 10709  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
 10710  //
 10711  //    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
 10712  //
 10713  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 10714  // with awserr.Error's Code and Message methods to get detailed information about
 10715  // the error.
 10716  //
 10717  // See the AWS API reference guide for Amazon Simple Storage Service's
 10718  // API operation UploadPart for usage and error information.
 10719  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
 10720  func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
 10721  	req, out := c.UploadPartRequest(input)
 10722  	return out, req.Send()
 10723  }
 10724  
 10725  // UploadPartWithContext is the same as UploadPart with the addition of
 10726  // the ability to pass a context and additional request options.
 10727  //
 10728  // See UploadPart for details on how to use this API operation.
 10729  //
 10730  // The context must be non-nil and will be used for request cancellation. If
 10731  // the context is nil a panic will occur. In the future the SDK may create
 10732  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 10733  // for more information on using Contexts.
 10734  func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
 10735  	req, out := c.UploadPartRequest(input)
 10736  	req.SetContext(ctx)
 10737  	req.ApplyOptions(opts...)
 10738  	return out, req.Send()
 10739  }
 10740  
 10741  const opUploadPartCopy = "UploadPartCopy"
 10742  
 10743  // UploadPartCopyRequest generates a "aws/request.Request" representing the
 10744  // client's request for the UploadPartCopy operation. The "output" return
 10745  // value will be populated with the request's response once the request completes
 10746  // successfully.
 10747  //
 10748  // Use "Send" method on the returned Request to send the API call to the service.
 10749  // the "output" return value is not valid until after Send returns without error.
 10750  //
 10751  // See UploadPartCopy for more information on using the UploadPartCopy
 10752  // API call, and error handling.
 10753  //
 10754  // This method is useful when you want to inject custom logic or configuration
 10755  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 10756  //
 10757  //
 10758  //    // Example sending a request using the UploadPartCopyRequest method.
 10759  //    req, resp := client.UploadPartCopyRequest(params)
 10760  //
 10761  //    err := req.Send()
 10762  //    if err == nil { // resp is now filled
 10763  //        fmt.Println(resp)
 10764  //    }
 10765  //
 10766  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
 10767  func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
 10768  	op := &request.Operation{
 10769  		Name:       opUploadPartCopy,
 10770  		HTTPMethod: "PUT",
 10771  		HTTPPath:   "/{Bucket}/{Key+}",
 10772  	}
 10773  
 10774  	if input == nil {
 10775  		input = &UploadPartCopyInput{}
 10776  	}
 10777  
 10778  	output = &UploadPartCopyOutput{}
 10779  	req = c.newRequest(op, input, output)
 10780  	return
 10781  }
 10782  
 10783  // UploadPartCopy API operation for Amazon Simple Storage Service.
 10784  //
 10785  // Uploads a part by copying data from an existing object as data source. You
 10786  // specify the data source by adding the request header x-amz-copy-source in
 10787  // your request and a byte range by adding the request header x-amz-copy-source-range
 10788  // in your request.
 10789  //
 10790  // The minimum allowable part size for a multipart upload is 5 MB. For more
 10791  // information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html)
 10792  // in the Amazon S3 User Guide.
 10793  //
 10794  // Instead of using an existing object as part data, you might use the UploadPart
 10795  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) action
 10796  // and provide data in your request.
 10797  //
 10798  // You must initiate a multipart upload before you can upload any part. In response
 10799  // to your initiate request. Amazon S3 returns a unique identifier, the upload
 10800  // ID, that you must include in your upload part request.
 10801  //
 10802  // For more information about using the UploadPartCopy operation, see the following:
 10803  //
 10804  //    * For conceptual information about multipart uploads, see Uploading Objects
 10805  //    Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)
 10806  //    in the Amazon S3 User Guide.
 10807  //
 10808  //    * For information about permissions required to use the multipart upload
 10809  //    API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
 10810  //    in the Amazon S3 User Guide.
 10811  //
 10812  //    * For information about copying objects using a single atomic action vs.
 10813  //    the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html)
 10814  //    in the Amazon S3 User Guide.
 10815  //
 10816  //    * For information about using server-side encryption with customer-provided
 10817  //    encryption keys with the UploadPartCopy operation, see CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
 10818  //    and UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html).
 10819  //
 10820  // Note the following additional considerations about the request headers x-amz-copy-source-if-match,
 10821  // x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and
 10822  // x-amz-copy-source-if-modified-since:
 10823  //
 10824  //    * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
 10825  //    headers are present in the request as follows: x-amz-copy-source-if-match
 10826  //    condition evaluates to true, and; x-amz-copy-source-if-unmodified-since
 10827  //    condition evaluates to false; Amazon S3 returns 200 OK and copies the
 10828  //    data.
 10829  //
 10830  //    * Consideration 2 - If both of the x-amz-copy-source-if-none-match and
 10831  //    x-amz-copy-source-if-modified-since headers are present in the request
 10832  //    as follows: x-amz-copy-source-if-none-match condition evaluates to false,
 10833  //    and; x-amz-copy-source-if-modified-since condition evaluates to true;
 10834  //    Amazon S3 returns 412 Precondition Failed response code.
 10835  //
 10836  // Versioning
 10837  //
 10838  // If your bucket has versioning enabled, you could have multiple versions of
 10839  // the same object. By default, x-amz-copy-source identifies the current version
 10840  // of the object to copy. If the current version is a delete marker and you
 10841  // don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404
 10842  // error, because the object does not exist. If you specify versionId in the
 10843  // x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns
 10844  // an HTTP 400 error, because you are not allowed to specify a delete marker
 10845  // as a version for the x-amz-copy-source.
 10846  //
 10847  // You can optionally specify a specific version of the source object to copy
 10848  // by adding the versionId subresource as shown in the following example:
 10849  //
 10850  // x-amz-copy-source: /bucket/object?versionId=version id
 10851  //
 10852  // Special Errors
 10853  //
 10854  //    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
 10855  //    The upload ID might be invalid, or the multipart upload might have been
 10856  //    aborted or completed. HTTP Status Code: 404 Not Found
 10857  //
 10858  //    * Code: InvalidRequest Cause: The specified copy source is not supported
 10859  //    as a byte-range copy source. HTTP Status Code: 400 Bad Request
 10860  //
 10861  // Related Resources
 10862  //
 10863  //    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
 10864  //
 10865  //    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
 10866  //
 10867  //    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
 10868  //
 10869  //    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
 10870  //
 10871  //    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
 10872  //
 10873  //    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
 10874  //
 10875  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 10876  // with awserr.Error's Code and Message methods to get detailed information about
 10877  // the error.
 10878  //
 10879  // See the AWS API reference guide for Amazon Simple Storage Service's
 10880  // API operation UploadPartCopy for usage and error information.
 10881  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
 10882  func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
 10883  	req, out := c.UploadPartCopyRequest(input)
 10884  	return out, req.Send()
 10885  }
 10886  
 10887  // UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
 10888  // the ability to pass a context and additional request options.
 10889  //
 10890  // See UploadPartCopy for details on how to use this API operation.
 10891  //
 10892  // The context must be non-nil and will be used for request cancellation. If
 10893  // the context is nil a panic will occur. In the future the SDK may create
 10894  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 10895  // for more information on using Contexts.
 10896  func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
 10897  	req, out := c.UploadPartCopyRequest(input)
 10898  	req.SetContext(ctx)
 10899  	req.ApplyOptions(opts...)
 10900  	return out, req.Send()
 10901  }
 10902  
 10903  const opWriteGetObjectResponse = "WriteGetObjectResponse"
 10904  
 10905  // WriteGetObjectResponseRequest generates a "aws/request.Request" representing the
 10906  // client's request for the WriteGetObjectResponse operation. The "output" return
 10907  // value will be populated with the request's response once the request completes
 10908  // successfully.
 10909  //
 10910  // Use "Send" method on the returned Request to send the API call to the service.
 10911  // the "output" return value is not valid until after Send returns without error.
 10912  //
 10913  // See WriteGetObjectResponse for more information on using the WriteGetObjectResponse
 10914  // API call, and error handling.
 10915  //
 10916  // This method is useful when you want to inject custom logic or configuration
 10917  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 10918  //
 10919  //
 10920  //    // Example sending a request using the WriteGetObjectResponseRequest method.
 10921  //    req, resp := client.WriteGetObjectResponseRequest(params)
 10922  //
 10923  //    err := req.Send()
 10924  //    if err == nil { // resp is now filled
 10925  //        fmt.Println(resp)
 10926  //    }
 10927  //
 10928  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
 10929  func (c *S3) WriteGetObjectResponseRequest(input *WriteGetObjectResponseInput) (req *request.Request, output *WriteGetObjectResponseOutput) {
 10930  	op := &request.Operation{
 10931  		Name:       opWriteGetObjectResponse,
 10932  		HTTPMethod: "POST",
 10933  		HTTPPath:   "/WriteGetObjectResponse",
 10934  	}
 10935  
 10936  	if input == nil {
 10937  		input = &WriteGetObjectResponseInput{}
 10938  	}
 10939  
 10940  	output = &WriteGetObjectResponseOutput{}
 10941  	req = c.newRequest(op, input, output)
 10942  	req.Handlers.Sign.Remove(v4.SignRequestHandler)
 10943  	handler := v4.BuildNamedHandler("v4.CustomSignerHandler", v4.WithUnsignedPayload)
 10944  	req.Handlers.Sign.PushFrontNamed(handler)
 10945  	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
 10946  	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("{RequestRoute}.", input.hostLabels))
 10947  	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
 10948  	return
 10949  }
 10950  
 10951  // WriteGetObjectResponse API operation for Amazon Simple Storage Service.
 10952  //
 10953  // Passes transformed objects to a GetObject operation when using Object Lambda
 10954  // access points. For information about Object Lambda access points, see Transforming
 10955  // objects with Object Lambda access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html)
 10956  // in the Amazon S3 User Guide.
 10957  //
 10958  // This operation supports metadata that can be returned by GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html),
 10959  // in addition to RequestRoute, RequestToken, StatusCode, ErrorCode, and ErrorMessage.
 10960  // The GetObject response metadata is supported so that the WriteGetObjectResponse
 10961  // caller, typically an Lambda function, can provide the same metadata when
 10962  // it internally invokes GetObject. When WriteGetObjectResponse is called by
 10963  // a customer-owned Lambda function, the metadata returned to the end user GetObject
 10964  // call might differ from what Amazon S3 would normally return.
 10965  //
 10966  // You can include any number of metadata headers. When including a metadata
 10967  // header, it should be prefaced with x-amz-meta. For example, x-amz-meta-my-custom-header:
 10968  // MyCustomValue. The primary use case for this is to forward GetObject metadata.
 10969  //
 10970  // Amazon Web Services provides some prebuilt Lambda functions that you can
 10971  // use with S3 Object Lambda to detect and redact personally identifiable information
 10972  // (PII) and decompress S3 objects. These Lambda functions are available in
 10973  // the Amazon Web Services Serverless Application Repository, and can be selected
 10974  // through the Amazon Web Services Management Console when you create your Object
 10975  // Lambda access point.
 10976  //
 10977  // Example 1: PII Access Control - This Lambda function uses Amazon Comprehend,
 10978  // a natural language processing (NLP) service using machine learning to find
 10979  // insights and relationships in text. It automatically detects personally identifiable
 10980  // information (PII) such as names, addresses, dates, credit card numbers, and
 10981  // social security numbers from documents in your Amazon S3 bucket.
 10982  //
 10983  // Example 2: PII Redaction - This Lambda function uses Amazon Comprehend, a
 10984  // natural language processing (NLP) service using machine learning to find
 10985  // insights and relationships in text. It automatically redacts personally identifiable
 10986  // information (PII) such as names, addresses, dates, credit card numbers, and
 10987  // social security numbers from documents in your Amazon S3 bucket.
 10988  //
 10989  // Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression,
 10990  // is equipped to decompress objects stored in S3 in one of six compressed file
 10991  // formats including bzip2, gzip, snappy, zlib, zstandard and ZIP.
 10992  //
 10993  // For information on how to view and use these functions, see Using Amazon
 10994  // Web Services built Lambda functions (https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-examples.html)
 10995  // in the Amazon S3 User Guide.
 10996  //
 10997  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 10998  // with awserr.Error's Code and Message methods to get detailed information about
 10999  // the error.
 11000  //
 11001  // See the AWS API reference guide for Amazon Simple Storage Service's
 11002  // API operation WriteGetObjectResponse for usage and error information.
 11003  // See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
 11004  func (c *S3) WriteGetObjectResponse(input *WriteGetObjectResponseInput) (*WriteGetObjectResponseOutput, error) {
 11005  	req, out := c.WriteGetObjectResponseRequest(input)
 11006  	return out, req.Send()
 11007  }
 11008  
 11009  // WriteGetObjectResponseWithContext is the same as WriteGetObjectResponse with the addition of
 11010  // the ability to pass a context and additional request options.
 11011  //
 11012  // See WriteGetObjectResponse for details on how to use this API operation.
 11013  //
 11014  // The context must be non-nil and will be used for request cancellation. If
 11015  // the context is nil a panic will occur. In the future the SDK may create
 11016  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 11017  // for more information on using Contexts.
 11018  func (c *S3) WriteGetObjectResponseWithContext(ctx aws.Context, input *WriteGetObjectResponseInput, opts ...request.Option) (*WriteGetObjectResponseOutput, error) {
 11019  	req, out := c.WriteGetObjectResponseRequest(input)
 11020  	req.SetContext(ctx)
 11021  	req.ApplyOptions(opts...)
 11022  	return out, req.Send()
 11023  }
 11024  
 11025  // Specifies the days since the initiation of an incomplete multipart upload
 11026  // that Amazon S3 will wait before permanently removing all parts of the upload.
 11027  // For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
 11028  // Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
 11029  // in the Amazon S3 User Guide.
 11030  type AbortIncompleteMultipartUpload struct {
 11031  	_ struct{} `type:"structure"`
 11032  
 11033  	// Specifies the number of days after which Amazon S3 aborts an incomplete multipart
 11034  	// upload.
 11035  	DaysAfterInitiation *int64 `type:"integer"`
 11036  }
 11037  
 11038  // String returns the string representation.
 11039  //
 11040  // API parameter values that are decorated as "sensitive" in the API will not
 11041  // be included in the string output. The member name will be present, but the
 11042  // value will be replaced with "sensitive".
 11043  func (s AbortIncompleteMultipartUpload) String() string {
 11044  	return awsutil.Prettify(s)
 11045  }
 11046  
 11047  // GoString returns the string representation.
 11048  //
 11049  // API parameter values that are decorated as "sensitive" in the API will not
 11050  // be included in the string output. The member name will be present, but the
 11051  // value will be replaced with "sensitive".
 11052  func (s AbortIncompleteMultipartUpload) GoString() string {
 11053  	return s.String()
 11054  }
 11055  
 11056  // SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
 11057  func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
 11058  	s.DaysAfterInitiation = &v
 11059  	return s
 11060  }
 11061  
 11062  type AbortMultipartUploadInput struct {
 11063  	_ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"`
 11064  
 11065  	// The bucket name to which the upload was taking place.
 11066  	//
 11067  	// When using this action with an access point, you must direct requests to
 11068  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 11069  	// When using this action with an access point through the Amazon Web Services
 11070  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 11071  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 11072  	// in the Amazon S3 User Guide.
 11073  	//
 11074  	// When using this action with Amazon S3 on Outposts, you must direct requests
 11075  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 11076  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 11077  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 11078  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 11079  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 11080  	// in the Amazon S3 User Guide.
 11081  	//
 11082  	// Bucket is a required field
 11083  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 11084  
 11085  	// The account ID of the expected bucket owner. If the bucket is owned by a
 11086  	// different account, the request will fail with an HTTP 403 (Access Denied)
 11087  	// error.
 11088  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 11089  
 11090  	// Key of the object for which the multipart upload was initiated.
 11091  	//
 11092  	// Key is a required field
 11093  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 11094  
 11095  	// Confirms that the requester knows that they will be charged for the request.
 11096  	// Bucket owners need not specify this parameter in their requests. For information
 11097  	// about downloading objects from requester pays buckets, see Downloading Objects
 11098  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 11099  	// in the Amazon S3 User Guide.
 11100  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 11101  
 11102  	// Upload ID that identifies the multipart upload.
 11103  	//
 11104  	// UploadId is a required field
 11105  	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
 11106  }
 11107  
 11108  // String returns the string representation.
 11109  //
 11110  // API parameter values that are decorated as "sensitive" in the API will not
 11111  // be included in the string output. The member name will be present, but the
 11112  // value will be replaced with "sensitive".
 11113  func (s AbortMultipartUploadInput) String() string {
 11114  	return awsutil.Prettify(s)
 11115  }
 11116  
 11117  // GoString returns the string representation.
 11118  //
 11119  // API parameter values that are decorated as "sensitive" in the API will not
 11120  // be included in the string output. The member name will be present, but the
 11121  // value will be replaced with "sensitive".
 11122  func (s AbortMultipartUploadInput) GoString() string {
 11123  	return s.String()
 11124  }
 11125  
 11126  // Validate inspects the fields of the type to determine if they are valid.
 11127  func (s *AbortMultipartUploadInput) Validate() error {
 11128  	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
 11129  	if s.Bucket == nil {
 11130  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 11131  	}
 11132  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 11133  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 11134  	}
 11135  	if s.Key == nil {
 11136  		invalidParams.Add(request.NewErrParamRequired("Key"))
 11137  	}
 11138  	if s.Key != nil && len(*s.Key) < 1 {
 11139  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 11140  	}
 11141  	if s.UploadId == nil {
 11142  		invalidParams.Add(request.NewErrParamRequired("UploadId"))
 11143  	}
 11144  
 11145  	if invalidParams.Len() > 0 {
 11146  		return invalidParams
 11147  	}
 11148  	return nil
 11149  }
 11150  
 11151  // SetBucket sets the Bucket field's value.
 11152  func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
 11153  	s.Bucket = &v
 11154  	return s
 11155  }
 11156  
 11157  func (s *AbortMultipartUploadInput) getBucket() (v string) {
 11158  	if s.Bucket == nil {
 11159  		return v
 11160  	}
 11161  	return *s.Bucket
 11162  }
 11163  
 11164  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 11165  func (s *AbortMultipartUploadInput) SetExpectedBucketOwner(v string) *AbortMultipartUploadInput {
 11166  	s.ExpectedBucketOwner = &v
 11167  	return s
 11168  }
 11169  
 11170  // SetKey sets the Key field's value.
 11171  func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
 11172  	s.Key = &v
 11173  	return s
 11174  }
 11175  
 11176  // SetRequestPayer sets the RequestPayer field's value.
 11177  func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
 11178  	s.RequestPayer = &v
 11179  	return s
 11180  }
 11181  
 11182  // SetUploadId sets the UploadId field's value.
 11183  func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
 11184  	s.UploadId = &v
 11185  	return s
 11186  }
 11187  
 11188  func (s *AbortMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
 11189  	if s.Bucket == nil {
 11190  		return nil, fmt.Errorf("member Bucket is nil")
 11191  	}
 11192  	return parseEndpointARN(*s.Bucket)
 11193  }
 11194  
 11195  func (s *AbortMultipartUploadInput) hasEndpointARN() bool {
 11196  	if s.Bucket == nil {
 11197  		return false
 11198  	}
 11199  	return arn.IsARN(*s.Bucket)
 11200  }
 11201  
 11202  // updateArnableField updates the value of the input field that
 11203  // takes an ARN as an input. This method is useful to backfill
 11204  // the parsed resource name from ARN into the input member.
 11205  // It returns a pointer to a modified copy of input and an error.
 11206  // Note that original input is not modified.
 11207  func (s AbortMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
 11208  	if s.Bucket == nil {
 11209  		return nil, fmt.Errorf("member Bucket is nil")
 11210  	}
 11211  	s.Bucket = aws.String(v)
 11212  	return &s, nil
 11213  }
 11214  
 11215  type AbortMultipartUploadOutput struct {
 11216  	_ struct{} `type:"structure"`
 11217  
 11218  	// If present, indicates that the requester was successfully charged for the
 11219  	// request.
 11220  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 11221  }
 11222  
 11223  // String returns the string representation.
 11224  //
 11225  // API parameter values that are decorated as "sensitive" in the API will not
 11226  // be included in the string output. The member name will be present, but the
 11227  // value will be replaced with "sensitive".
 11228  func (s AbortMultipartUploadOutput) String() string {
 11229  	return awsutil.Prettify(s)
 11230  }
 11231  
 11232  // GoString returns the string representation.
 11233  //
 11234  // API parameter values that are decorated as "sensitive" in the API will not
 11235  // be included in the string output. The member name will be present, but the
 11236  // value will be replaced with "sensitive".
 11237  func (s AbortMultipartUploadOutput) GoString() string {
 11238  	return s.String()
 11239  }
 11240  
 11241  // SetRequestCharged sets the RequestCharged field's value.
 11242  func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
 11243  	s.RequestCharged = &v
 11244  	return s
 11245  }
 11246  
 11247  // Configures the transfer acceleration state for an Amazon S3 bucket. For more
 11248  // information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
 11249  // in the Amazon S3 User Guide.
 11250  type AccelerateConfiguration struct {
 11251  	_ struct{} `type:"structure"`
 11252  
 11253  	// Specifies the transfer acceleration status of the bucket.
 11254  	Status *string `type:"string" enum:"BucketAccelerateStatus"`
 11255  }
 11256  
 11257  // String returns the string representation.
 11258  //
 11259  // API parameter values that are decorated as "sensitive" in the API will not
 11260  // be included in the string output. The member name will be present, but the
 11261  // value will be replaced with "sensitive".
 11262  func (s AccelerateConfiguration) String() string {
 11263  	return awsutil.Prettify(s)
 11264  }
 11265  
 11266  // GoString returns the string representation.
 11267  //
 11268  // API parameter values that are decorated as "sensitive" in the API will not
 11269  // be included in the string output. The member name will be present, but the
 11270  // value will be replaced with "sensitive".
 11271  func (s AccelerateConfiguration) GoString() string {
 11272  	return s.String()
 11273  }
 11274  
 11275  // SetStatus sets the Status field's value.
 11276  func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
 11277  	s.Status = &v
 11278  	return s
 11279  }
 11280  
 11281  // Contains the elements that set the ACL permissions for an object per grantee.
 11282  type AccessControlPolicy struct {
 11283  	_ struct{} `type:"structure"`
 11284  
 11285  	// A list of grants.
 11286  	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
 11287  
 11288  	// Container for the bucket owner's display name and ID.
 11289  	Owner *Owner `type:"structure"`
 11290  }
 11291  
 11292  // String returns the string representation.
 11293  //
 11294  // API parameter values that are decorated as "sensitive" in the API will not
 11295  // be included in the string output. The member name will be present, but the
 11296  // value will be replaced with "sensitive".
 11297  func (s AccessControlPolicy) String() string {
 11298  	return awsutil.Prettify(s)
 11299  }
 11300  
 11301  // GoString returns the string representation.
 11302  //
 11303  // API parameter values that are decorated as "sensitive" in the API will not
 11304  // be included in the string output. The member name will be present, but the
 11305  // value will be replaced with "sensitive".
 11306  func (s AccessControlPolicy) GoString() string {
 11307  	return s.String()
 11308  }
 11309  
 11310  // Validate inspects the fields of the type to determine if they are valid.
 11311  func (s *AccessControlPolicy) Validate() error {
 11312  	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
 11313  	if s.Grants != nil {
 11314  		for i, v := range s.Grants {
 11315  			if v == nil {
 11316  				continue
 11317  			}
 11318  			if err := v.Validate(); err != nil {
 11319  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
 11320  			}
 11321  		}
 11322  	}
 11323  
 11324  	if invalidParams.Len() > 0 {
 11325  		return invalidParams
 11326  	}
 11327  	return nil
 11328  }
 11329  
 11330  // SetGrants sets the Grants field's value.
 11331  func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
 11332  	s.Grants = v
 11333  	return s
 11334  }
 11335  
 11336  // SetOwner sets the Owner field's value.
 11337  func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
 11338  	s.Owner = v
 11339  	return s
 11340  }
 11341  
 11342  // A container for information about access control for replicas.
 11343  type AccessControlTranslation struct {
 11344  	_ struct{} `type:"structure"`
 11345  
 11346  	// Specifies the replica ownership. For default and valid values, see PUT bucket
 11347  	// replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
 11348  	// in the Amazon S3 API Reference.
 11349  	//
 11350  	// Owner is a required field
 11351  	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
 11352  }
 11353  
 11354  // String returns the string representation.
 11355  //
 11356  // API parameter values that are decorated as "sensitive" in the API will not
 11357  // be included in the string output. The member name will be present, but the
 11358  // value will be replaced with "sensitive".
 11359  func (s AccessControlTranslation) String() string {
 11360  	return awsutil.Prettify(s)
 11361  }
 11362  
 11363  // GoString returns the string representation.
 11364  //
 11365  // API parameter values that are decorated as "sensitive" in the API will not
 11366  // be included in the string output. The member name will be present, but the
 11367  // value will be replaced with "sensitive".
 11368  func (s AccessControlTranslation) GoString() string {
 11369  	return s.String()
 11370  }
 11371  
 11372  // Validate inspects the fields of the type to determine if they are valid.
 11373  func (s *AccessControlTranslation) Validate() error {
 11374  	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
 11375  	if s.Owner == nil {
 11376  		invalidParams.Add(request.NewErrParamRequired("Owner"))
 11377  	}
 11378  
 11379  	if invalidParams.Len() > 0 {
 11380  		return invalidParams
 11381  	}
 11382  	return nil
 11383  }
 11384  
 11385  // SetOwner sets the Owner field's value.
 11386  func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
 11387  	s.Owner = &v
 11388  	return s
 11389  }
 11390  
 11391  // A conjunction (logical AND) of predicates, which is used in evaluating a
 11392  // metrics filter. The operator must have at least two predicates in any combination,
 11393  // and an object must match all of the predicates for the filter to apply.
 11394  type AnalyticsAndOperator struct {
 11395  	_ struct{} `type:"structure"`
 11396  
 11397  	// The prefix to use when evaluating an AND predicate: The prefix that an object
 11398  	// must have to be included in the metrics results.
 11399  	Prefix *string `type:"string"`
 11400  
 11401  	// The list of tags to use when evaluating an AND predicate.
 11402  	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
 11403  }
 11404  
 11405  // String returns the string representation.
 11406  //
 11407  // API parameter values that are decorated as "sensitive" in the API will not
 11408  // be included in the string output. The member name will be present, but the
 11409  // value will be replaced with "sensitive".
 11410  func (s AnalyticsAndOperator) String() string {
 11411  	return awsutil.Prettify(s)
 11412  }
 11413  
 11414  // GoString returns the string representation.
 11415  //
 11416  // API parameter values that are decorated as "sensitive" in the API will not
 11417  // be included in the string output. The member name will be present, but the
 11418  // value will be replaced with "sensitive".
 11419  func (s AnalyticsAndOperator) GoString() string {
 11420  	return s.String()
 11421  }
 11422  
 11423  // Validate inspects the fields of the type to determine if they are valid.
 11424  func (s *AnalyticsAndOperator) Validate() error {
 11425  	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
 11426  	if s.Tags != nil {
 11427  		for i, v := range s.Tags {
 11428  			if v == nil {
 11429  				continue
 11430  			}
 11431  			if err := v.Validate(); err != nil {
 11432  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 11433  			}
 11434  		}
 11435  	}
 11436  
 11437  	if invalidParams.Len() > 0 {
 11438  		return invalidParams
 11439  	}
 11440  	return nil
 11441  }
 11442  
 11443  // SetPrefix sets the Prefix field's value.
 11444  func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
 11445  	s.Prefix = &v
 11446  	return s
 11447  }
 11448  
 11449  // SetTags sets the Tags field's value.
 11450  func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
 11451  	s.Tags = v
 11452  	return s
 11453  }
 11454  
 11455  // Specifies the configuration and any analyses for the analytics filter of
 11456  // an Amazon S3 bucket.
 11457  type AnalyticsConfiguration struct {
 11458  	_ struct{} `type:"structure"`
 11459  
 11460  	// The filter used to describe a set of objects for analyses. A filter must
 11461  	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
 11462  	// If no filter is provided, all objects will be considered in any analysis.
 11463  	Filter *AnalyticsFilter `type:"structure"`
 11464  
 11465  	// The ID that identifies the analytics configuration.
 11466  	//
 11467  	// Id is a required field
 11468  	Id *string `type:"string" required:"true"`
 11469  
 11470  	// Contains data related to access patterns to be collected and made available
 11471  	// to analyze the tradeoffs between different storage classes.
 11472  	//
 11473  	// StorageClassAnalysis is a required field
 11474  	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
 11475  }
 11476  
 11477  // String returns the string representation.
 11478  //
 11479  // API parameter values that are decorated as "sensitive" in the API will not
 11480  // be included in the string output. The member name will be present, but the
 11481  // value will be replaced with "sensitive".
 11482  func (s AnalyticsConfiguration) String() string {
 11483  	return awsutil.Prettify(s)
 11484  }
 11485  
 11486  // GoString returns the string representation.
 11487  //
 11488  // API parameter values that are decorated as "sensitive" in the API will not
 11489  // be included in the string output. The member name will be present, but the
 11490  // value will be replaced with "sensitive".
 11491  func (s AnalyticsConfiguration) GoString() string {
 11492  	return s.String()
 11493  }
 11494  
 11495  // Validate inspects the fields of the type to determine if they are valid.
 11496  func (s *AnalyticsConfiguration) Validate() error {
 11497  	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
 11498  	if s.Id == nil {
 11499  		invalidParams.Add(request.NewErrParamRequired("Id"))
 11500  	}
 11501  	if s.StorageClassAnalysis == nil {
 11502  		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
 11503  	}
 11504  	if s.Filter != nil {
 11505  		if err := s.Filter.Validate(); err != nil {
 11506  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 11507  		}
 11508  	}
 11509  	if s.StorageClassAnalysis != nil {
 11510  		if err := s.StorageClassAnalysis.Validate(); err != nil {
 11511  			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
 11512  		}
 11513  	}
 11514  
 11515  	if invalidParams.Len() > 0 {
 11516  		return invalidParams
 11517  	}
 11518  	return nil
 11519  }
 11520  
 11521  // SetFilter sets the Filter field's value.
 11522  func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
 11523  	s.Filter = v
 11524  	return s
 11525  }
 11526  
 11527  // SetId sets the Id field's value.
 11528  func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
 11529  	s.Id = &v
 11530  	return s
 11531  }
 11532  
 11533  // SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
 11534  func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
 11535  	s.StorageClassAnalysis = v
 11536  	return s
 11537  }
 11538  
 11539  // Where to publish the analytics results.
 11540  type AnalyticsExportDestination struct {
 11541  	_ struct{} `type:"structure"`
 11542  
 11543  	// A destination signifying output to an S3 bucket.
 11544  	//
 11545  	// S3BucketDestination is a required field
 11546  	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
 11547  }
 11548  
 11549  // String returns the string representation.
 11550  //
 11551  // API parameter values that are decorated as "sensitive" in the API will not
 11552  // be included in the string output. The member name will be present, but the
 11553  // value will be replaced with "sensitive".
 11554  func (s AnalyticsExportDestination) String() string {
 11555  	return awsutil.Prettify(s)
 11556  }
 11557  
 11558  // GoString returns the string representation.
 11559  //
 11560  // API parameter values that are decorated as "sensitive" in the API will not
 11561  // be included in the string output. The member name will be present, but the
 11562  // value will be replaced with "sensitive".
 11563  func (s AnalyticsExportDestination) GoString() string {
 11564  	return s.String()
 11565  }
 11566  
 11567  // Validate inspects the fields of the type to determine if they are valid.
 11568  func (s *AnalyticsExportDestination) Validate() error {
 11569  	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
 11570  	if s.S3BucketDestination == nil {
 11571  		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
 11572  	}
 11573  	if s.S3BucketDestination != nil {
 11574  		if err := s.S3BucketDestination.Validate(); err != nil {
 11575  			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
 11576  		}
 11577  	}
 11578  
 11579  	if invalidParams.Len() > 0 {
 11580  		return invalidParams
 11581  	}
 11582  	return nil
 11583  }
 11584  
 11585  // SetS3BucketDestination sets the S3BucketDestination field's value.
 11586  func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
 11587  	s.S3BucketDestination = v
 11588  	return s
 11589  }
 11590  
 11591  // The filter used to describe a set of objects for analyses. A filter must
 11592  // have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
 11593  // If no filter is provided, all objects will be considered in any analysis.
 11594  type AnalyticsFilter struct {
 11595  	_ struct{} `type:"structure"`
 11596  
 11597  	// A conjunction (logical AND) of predicates, which is used in evaluating an
 11598  	// analytics filter. The operator must have at least two predicates.
 11599  	And *AnalyticsAndOperator `type:"structure"`
 11600  
 11601  	// The prefix to use when evaluating an analytics filter.
 11602  	Prefix *string `type:"string"`
 11603  
 11604  	// The tag to use when evaluating an analytics filter.
 11605  	Tag *Tag `type:"structure"`
 11606  }
 11607  
 11608  // String returns the string representation.
 11609  //
 11610  // API parameter values that are decorated as "sensitive" in the API will not
 11611  // be included in the string output. The member name will be present, but the
 11612  // value will be replaced with "sensitive".
 11613  func (s AnalyticsFilter) String() string {
 11614  	return awsutil.Prettify(s)
 11615  }
 11616  
 11617  // GoString returns the string representation.
 11618  //
 11619  // API parameter values that are decorated as "sensitive" in the API will not
 11620  // be included in the string output. The member name will be present, but the
 11621  // value will be replaced with "sensitive".
 11622  func (s AnalyticsFilter) GoString() string {
 11623  	return s.String()
 11624  }
 11625  
 11626  // Validate inspects the fields of the type to determine if they are valid.
 11627  func (s *AnalyticsFilter) Validate() error {
 11628  	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
 11629  	if s.And != nil {
 11630  		if err := s.And.Validate(); err != nil {
 11631  			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
 11632  		}
 11633  	}
 11634  	if s.Tag != nil {
 11635  		if err := s.Tag.Validate(); err != nil {
 11636  			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
 11637  		}
 11638  	}
 11639  
 11640  	if invalidParams.Len() > 0 {
 11641  		return invalidParams
 11642  	}
 11643  	return nil
 11644  }
 11645  
 11646  // SetAnd sets the And field's value.
 11647  func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
 11648  	s.And = v
 11649  	return s
 11650  }
 11651  
 11652  // SetPrefix sets the Prefix field's value.
 11653  func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
 11654  	s.Prefix = &v
 11655  	return s
 11656  }
 11657  
 11658  // SetTag sets the Tag field's value.
 11659  func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
 11660  	s.Tag = v
 11661  	return s
 11662  }
 11663  
 11664  // Contains information about where to publish the analytics results.
 11665  type AnalyticsS3BucketDestination struct {
 11666  	_ struct{} `type:"structure"`
 11667  
 11668  	// The Amazon Resource Name (ARN) of the bucket to which data is exported.
 11669  	//
 11670  	// Bucket is a required field
 11671  	Bucket *string `type:"string" required:"true"`
 11672  
 11673  	// The account ID that owns the destination S3 bucket. If no account ID is provided,
 11674  	// the owner is not validated before exporting data.
 11675  	//
 11676  	// Although this value is optional, we strongly recommend that you set it to
 11677  	// help prevent problems if the destination bucket ownership changes.
 11678  	BucketAccountId *string `type:"string"`
 11679  
 11680  	// Specifies the file format used when exporting data to Amazon S3.
 11681  	//
 11682  	// Format is a required field
 11683  	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
 11684  
 11685  	// The prefix to use when exporting data. The prefix is prepended to all results.
 11686  	Prefix *string `type:"string"`
 11687  }
 11688  
 11689  // String returns the string representation.
 11690  //
 11691  // API parameter values that are decorated as "sensitive" in the API will not
 11692  // be included in the string output. The member name will be present, but the
 11693  // value will be replaced with "sensitive".
 11694  func (s AnalyticsS3BucketDestination) String() string {
 11695  	return awsutil.Prettify(s)
 11696  }
 11697  
 11698  // GoString returns the string representation.
 11699  //
 11700  // API parameter values that are decorated as "sensitive" in the API will not
 11701  // be included in the string output. The member name will be present, but the
 11702  // value will be replaced with "sensitive".
 11703  func (s AnalyticsS3BucketDestination) GoString() string {
 11704  	return s.String()
 11705  }
 11706  
 11707  // Validate inspects the fields of the type to determine if they are valid.
 11708  func (s *AnalyticsS3BucketDestination) Validate() error {
 11709  	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
 11710  	if s.Bucket == nil {
 11711  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 11712  	}
 11713  	if s.Format == nil {
 11714  		invalidParams.Add(request.NewErrParamRequired("Format"))
 11715  	}
 11716  
 11717  	if invalidParams.Len() > 0 {
 11718  		return invalidParams
 11719  	}
 11720  	return nil
 11721  }
 11722  
 11723  // SetBucket sets the Bucket field's value.
 11724  func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
 11725  	s.Bucket = &v
 11726  	return s
 11727  }
 11728  
 11729  func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
 11730  	if s.Bucket == nil {
 11731  		return v
 11732  	}
 11733  	return *s.Bucket
 11734  }
 11735  
 11736  // SetBucketAccountId sets the BucketAccountId field's value.
 11737  func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
 11738  	s.BucketAccountId = &v
 11739  	return s
 11740  }
 11741  
 11742  // SetFormat sets the Format field's value.
 11743  func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
 11744  	s.Format = &v
 11745  	return s
 11746  }
 11747  
 11748  // SetPrefix sets the Prefix field's value.
 11749  func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
 11750  	s.Prefix = &v
 11751  	return s
 11752  }
 11753  
 11754  // In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
 11755  // is globally unique, and the namespace is shared by all Amazon Web Services
 11756  // accounts.
 11757  type Bucket struct {
 11758  	_ struct{} `type:"structure"`
 11759  
 11760  	// Date the bucket was created. This date can change when making changes to
 11761  	// your bucket, such as editing its bucket policy.
 11762  	CreationDate *time.Time `type:"timestamp"`
 11763  
 11764  	// The name of the bucket.
 11765  	Name *string `type:"string"`
 11766  }
 11767  
 11768  // String returns the string representation.
 11769  //
 11770  // API parameter values that are decorated as "sensitive" in the API will not
 11771  // be included in the string output. The member name will be present, but the
 11772  // value will be replaced with "sensitive".
 11773  func (s Bucket) String() string {
 11774  	return awsutil.Prettify(s)
 11775  }
 11776  
 11777  // GoString returns the string representation.
 11778  //
 11779  // API parameter values that are decorated as "sensitive" in the API will not
 11780  // be included in the string output. The member name will be present, but the
 11781  // value will be replaced with "sensitive".
 11782  func (s Bucket) GoString() string {
 11783  	return s.String()
 11784  }
 11785  
 11786  // SetCreationDate sets the CreationDate field's value.
 11787  func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
 11788  	s.CreationDate = &v
 11789  	return s
 11790  }
 11791  
 11792  // SetName sets the Name field's value.
 11793  func (s *Bucket) SetName(v string) *Bucket {
 11794  	s.Name = &v
 11795  	return s
 11796  }
 11797  
 11798  // Specifies the lifecycle configuration for objects in an Amazon S3 bucket.
 11799  // For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
 11800  // in the Amazon S3 User Guide.
 11801  type BucketLifecycleConfiguration struct {
 11802  	_ struct{} `type:"structure"`
 11803  
 11804  	// A lifecycle rule for individual objects in an Amazon S3 bucket.
 11805  	//
 11806  	// Rules is a required field
 11807  	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
 11808  }
 11809  
 11810  // String returns the string representation.
 11811  //
 11812  // API parameter values that are decorated as "sensitive" in the API will not
 11813  // be included in the string output. The member name will be present, but the
 11814  // value will be replaced with "sensitive".
 11815  func (s BucketLifecycleConfiguration) String() string {
 11816  	return awsutil.Prettify(s)
 11817  }
 11818  
 11819  // GoString returns the string representation.
 11820  //
 11821  // API parameter values that are decorated as "sensitive" in the API will not
 11822  // be included in the string output. The member name will be present, but the
 11823  // value will be replaced with "sensitive".
 11824  func (s BucketLifecycleConfiguration) GoString() string {
 11825  	return s.String()
 11826  }
 11827  
 11828  // Validate inspects the fields of the type to determine if they are valid.
 11829  func (s *BucketLifecycleConfiguration) Validate() error {
 11830  	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
 11831  	if s.Rules == nil {
 11832  		invalidParams.Add(request.NewErrParamRequired("Rules"))
 11833  	}
 11834  	if s.Rules != nil {
 11835  		for i, v := range s.Rules {
 11836  			if v == nil {
 11837  				continue
 11838  			}
 11839  			if err := v.Validate(); err != nil {
 11840  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 11841  			}
 11842  		}
 11843  	}
 11844  
 11845  	if invalidParams.Len() > 0 {
 11846  		return invalidParams
 11847  	}
 11848  	return nil
 11849  }
 11850  
 11851  // SetRules sets the Rules field's value.
 11852  func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
 11853  	s.Rules = v
 11854  	return s
 11855  }
 11856  
 11857  // Container for logging status information.
 11858  type BucketLoggingStatus struct {
 11859  	_ struct{} `type:"structure"`
 11860  
 11861  	// Describes where logs are stored and the prefix that Amazon S3 assigns to
 11862  	// all log object keys for a bucket. For more information, see PUT Bucket logging
 11863  	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
 11864  	// in the Amazon S3 API Reference.
 11865  	LoggingEnabled *LoggingEnabled `type:"structure"`
 11866  }
 11867  
 11868  // String returns the string representation.
 11869  //
 11870  // API parameter values that are decorated as "sensitive" in the API will not
 11871  // be included in the string output. The member name will be present, but the
 11872  // value will be replaced with "sensitive".
 11873  func (s BucketLoggingStatus) String() string {
 11874  	return awsutil.Prettify(s)
 11875  }
 11876  
 11877  // GoString returns the string representation.
 11878  //
 11879  // API parameter values that are decorated as "sensitive" in the API will not
 11880  // be included in the string output. The member name will be present, but the
 11881  // value will be replaced with "sensitive".
 11882  func (s BucketLoggingStatus) GoString() string {
 11883  	return s.String()
 11884  }
 11885  
 11886  // Validate inspects the fields of the type to determine if they are valid.
 11887  func (s *BucketLoggingStatus) Validate() error {
 11888  	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
 11889  	if s.LoggingEnabled != nil {
 11890  		if err := s.LoggingEnabled.Validate(); err != nil {
 11891  			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
 11892  		}
 11893  	}
 11894  
 11895  	if invalidParams.Len() > 0 {
 11896  		return invalidParams
 11897  	}
 11898  	return nil
 11899  }
 11900  
 11901  // SetLoggingEnabled sets the LoggingEnabled field's value.
 11902  func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
 11903  	s.LoggingEnabled = v
 11904  	return s
 11905  }
 11906  
 11907  // Describes the cross-origin access configuration for objects in an Amazon
 11908  // S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
 11909  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
 11910  // S3 User Guide.
 11911  type CORSConfiguration struct {
 11912  	_ struct{} `type:"structure"`
 11913  
 11914  	// A set of origins and methods (cross-origin access that you want to allow).
 11915  	// You can add up to 100 rules to the configuration.
 11916  	//
 11917  	// CORSRules is a required field
 11918  	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
 11919  }
 11920  
 11921  // String returns the string representation.
 11922  //
 11923  // API parameter values that are decorated as "sensitive" in the API will not
 11924  // be included in the string output. The member name will be present, but the
 11925  // value will be replaced with "sensitive".
 11926  func (s CORSConfiguration) String() string {
 11927  	return awsutil.Prettify(s)
 11928  }
 11929  
 11930  // GoString returns the string representation.
 11931  //
 11932  // API parameter values that are decorated as "sensitive" in the API will not
 11933  // be included in the string output. The member name will be present, but the
 11934  // value will be replaced with "sensitive".
 11935  func (s CORSConfiguration) GoString() string {
 11936  	return s.String()
 11937  }
 11938  
 11939  // Validate inspects the fields of the type to determine if they are valid.
 11940  func (s *CORSConfiguration) Validate() error {
 11941  	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
 11942  	if s.CORSRules == nil {
 11943  		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
 11944  	}
 11945  	if s.CORSRules != nil {
 11946  		for i, v := range s.CORSRules {
 11947  			if v == nil {
 11948  				continue
 11949  			}
 11950  			if err := v.Validate(); err != nil {
 11951  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
 11952  			}
 11953  		}
 11954  	}
 11955  
 11956  	if invalidParams.Len() > 0 {
 11957  		return invalidParams
 11958  	}
 11959  	return nil
 11960  }
 11961  
 11962  // SetCORSRules sets the CORSRules field's value.
 11963  func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
 11964  	s.CORSRules = v
 11965  	return s
 11966  }
 11967  
 11968  // Specifies a cross-origin access rule for an Amazon S3 bucket.
 11969  type CORSRule struct {
 11970  	_ struct{} `type:"structure"`
 11971  
 11972  	// Headers that are specified in the Access-Control-Request-Headers header.
 11973  	// These headers are allowed in a preflight OPTIONS request. In response to
 11974  	// any preflight OPTIONS request, Amazon S3 returns any requested headers that
 11975  	// are allowed.
 11976  	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
 11977  
 11978  	// An HTTP method that you allow the origin to execute. Valid values are GET,
 11979  	// PUT, HEAD, POST, and DELETE.
 11980  	//
 11981  	// AllowedMethods is a required field
 11982  	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
 11983  
 11984  	// One or more origins you want customers to be able to access the bucket from.
 11985  	//
 11986  	// AllowedOrigins is a required field
 11987  	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
 11988  
 11989  	// One or more headers in the response that you want customers to be able to
 11990  	// access from their applications (for example, from a JavaScript XMLHttpRequest
 11991  	// object).
 11992  	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
 11993  
 11994  	// Unique identifier for the rule. The value cannot be longer than 255 characters.
 11995  	ID *string `type:"string"`
 11996  
 11997  	// The time in seconds that your browser is to cache the preflight response
 11998  	// for the specified resource.
 11999  	MaxAgeSeconds *int64 `type:"integer"`
 12000  }
 12001  
 12002  // String returns the string representation.
 12003  //
 12004  // API parameter values that are decorated as "sensitive" in the API will not
 12005  // be included in the string output. The member name will be present, but the
 12006  // value will be replaced with "sensitive".
 12007  func (s CORSRule) String() string {
 12008  	return awsutil.Prettify(s)
 12009  }
 12010  
 12011  // GoString returns the string representation.
 12012  //
 12013  // API parameter values that are decorated as "sensitive" in the API will not
 12014  // be included in the string output. The member name will be present, but the
 12015  // value will be replaced with "sensitive".
 12016  func (s CORSRule) GoString() string {
 12017  	return s.String()
 12018  }
 12019  
 12020  // Validate inspects the fields of the type to determine if they are valid.
 12021  func (s *CORSRule) Validate() error {
 12022  	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
 12023  	if s.AllowedMethods == nil {
 12024  		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
 12025  	}
 12026  	if s.AllowedOrigins == nil {
 12027  		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
 12028  	}
 12029  
 12030  	if invalidParams.Len() > 0 {
 12031  		return invalidParams
 12032  	}
 12033  	return nil
 12034  }
 12035  
 12036  // SetAllowedHeaders sets the AllowedHeaders field's value.
 12037  func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
 12038  	s.AllowedHeaders = v
 12039  	return s
 12040  }
 12041  
 12042  // SetAllowedMethods sets the AllowedMethods field's value.
 12043  func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
 12044  	s.AllowedMethods = v
 12045  	return s
 12046  }
 12047  
 12048  // SetAllowedOrigins sets the AllowedOrigins field's value.
 12049  func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
 12050  	s.AllowedOrigins = v
 12051  	return s
 12052  }
 12053  
 12054  // SetExposeHeaders sets the ExposeHeaders field's value.
 12055  func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
 12056  	s.ExposeHeaders = v
 12057  	return s
 12058  }
 12059  
 12060  // SetID sets the ID field's value.
 12061  func (s *CORSRule) SetID(v string) *CORSRule {
 12062  	s.ID = &v
 12063  	return s
 12064  }
 12065  
 12066  // SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
 12067  func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
 12068  	s.MaxAgeSeconds = &v
 12069  	return s
 12070  }
 12071  
 12072  // Describes how an uncompressed comma-separated values (CSV)-formatted input
 12073  // object is formatted.
 12074  type CSVInput struct {
 12075  	_ struct{} `type:"structure"`
 12076  
 12077  	// Specifies that CSV field values may contain quoted record delimiters and
 12078  	// such records should be allowed. Default value is FALSE. Setting this value
 12079  	// to TRUE may lower performance.
 12080  	AllowQuotedRecordDelimiter *bool `type:"boolean"`
 12081  
 12082  	// A single character used to indicate that a row should be ignored when the
 12083  	// character is present at the start of that row. You can specify any character
 12084  	// to indicate a comment line.
 12085  	Comments *string `type:"string"`
 12086  
 12087  	// A single character used to separate individual fields in a record. You can
 12088  	// specify an arbitrary delimiter.
 12089  	FieldDelimiter *string `type:"string"`
 12090  
 12091  	// Describes the first line of input. Valid values are:
 12092  	//
 12093  	//    * NONE: First line is not a header.
 12094  	//
 12095  	//    * IGNORE: First line is a header, but you can't use the header values
 12096  	//    to indicate the column in an expression. You can use column position (such
 12097  	//    as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s).
 12098  	//
 12099  	//    * Use: First line is a header, and you can use the header value to identify
 12100  	//    a column in an expression (SELECT "name" FROM OBJECT).
 12101  	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
 12102  
 12103  	// A single character used for escaping when the field delimiter is part of
 12104  	// the value. For example, if the value is a, b, Amazon S3 wraps this field
 12105  	// value in quotation marks, as follows: " a , b ".
 12106  	//
 12107  	// Type: String
 12108  	//
 12109  	// Default: "
 12110  	//
 12111  	// Ancestors: CSV
 12112  	QuoteCharacter *string `type:"string"`
 12113  
 12114  	// A single character used for escaping the quotation mark character inside
 12115  	// an already escaped value. For example, the value """ a , b """ is parsed
 12116  	// as " a , b ".
 12117  	QuoteEscapeCharacter *string `type:"string"`
 12118  
 12119  	// A single character used to separate individual records in the input. Instead
 12120  	// of the default value, you can specify an arbitrary delimiter.
 12121  	RecordDelimiter *string `type:"string"`
 12122  }
 12123  
 12124  // String returns the string representation.
 12125  //
 12126  // API parameter values that are decorated as "sensitive" in the API will not
 12127  // be included in the string output. The member name will be present, but the
 12128  // value will be replaced with "sensitive".
 12129  func (s CSVInput) String() string {
 12130  	return awsutil.Prettify(s)
 12131  }
 12132  
 12133  // GoString returns the string representation.
 12134  //
 12135  // API parameter values that are decorated as "sensitive" in the API will not
 12136  // be included in the string output. The member name will be present, but the
 12137  // value will be replaced with "sensitive".
 12138  func (s CSVInput) GoString() string {
 12139  	return s.String()
 12140  }
 12141  
 12142  // SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
 12143  func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
 12144  	s.AllowQuotedRecordDelimiter = &v
 12145  	return s
 12146  }
 12147  
 12148  // SetComments sets the Comments field's value.
 12149  func (s *CSVInput) SetComments(v string) *CSVInput {
 12150  	s.Comments = &v
 12151  	return s
 12152  }
 12153  
 12154  // SetFieldDelimiter sets the FieldDelimiter field's value.
 12155  func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
 12156  	s.FieldDelimiter = &v
 12157  	return s
 12158  }
 12159  
 12160  // SetFileHeaderInfo sets the FileHeaderInfo field's value.
 12161  func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
 12162  	s.FileHeaderInfo = &v
 12163  	return s
 12164  }
 12165  
 12166  // SetQuoteCharacter sets the QuoteCharacter field's value.
 12167  func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
 12168  	s.QuoteCharacter = &v
 12169  	return s
 12170  }
 12171  
 12172  // SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
 12173  func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
 12174  	s.QuoteEscapeCharacter = &v
 12175  	return s
 12176  }
 12177  
 12178  // SetRecordDelimiter sets the RecordDelimiter field's value.
 12179  func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
 12180  	s.RecordDelimiter = &v
 12181  	return s
 12182  }
 12183  
 12184  // Describes how uncompressed comma-separated values (CSV)-formatted results
 12185  // are formatted.
 12186  type CSVOutput struct {
 12187  	_ struct{} `type:"structure"`
 12188  
 12189  	// The value used to separate individual fields in a record. You can specify
 12190  	// an arbitrary delimiter.
 12191  	FieldDelimiter *string `type:"string"`
 12192  
 12193  	// A single character used for escaping when the field delimiter is part of
 12194  	// the value. For example, if the value is a, b, Amazon S3 wraps this field
 12195  	// value in quotation marks, as follows: " a , b ".
 12196  	QuoteCharacter *string `type:"string"`
 12197  
 12198  	// The single character used for escaping the quote character inside an already
 12199  	// escaped value.
 12200  	QuoteEscapeCharacter *string `type:"string"`
 12201  
 12202  	// Indicates whether to use quotation marks around output fields.
 12203  	//
 12204  	//    * ALWAYS: Always use quotation marks for output fields.
 12205  	//
 12206  	//    * ASNEEDED: Use quotation marks for output fields when needed.
 12207  	QuoteFields *string `type:"string" enum:"QuoteFields"`
 12208  
 12209  	// A single character used to separate individual records in the output. Instead
 12210  	// of the default value, you can specify an arbitrary delimiter.
 12211  	RecordDelimiter *string `type:"string"`
 12212  }
 12213  
 12214  // String returns the string representation.
 12215  //
 12216  // API parameter values that are decorated as "sensitive" in the API will not
 12217  // be included in the string output. The member name will be present, but the
 12218  // value will be replaced with "sensitive".
 12219  func (s CSVOutput) String() string {
 12220  	return awsutil.Prettify(s)
 12221  }
 12222  
 12223  // GoString returns the string representation.
 12224  //
 12225  // API parameter values that are decorated as "sensitive" in the API will not
 12226  // be included in the string output. The member name will be present, but the
 12227  // value will be replaced with "sensitive".
 12228  func (s CSVOutput) GoString() string {
 12229  	return s.String()
 12230  }
 12231  
 12232  // SetFieldDelimiter sets the FieldDelimiter field's value.
 12233  func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
 12234  	s.FieldDelimiter = &v
 12235  	return s
 12236  }
 12237  
 12238  // SetQuoteCharacter sets the QuoteCharacter field's value.
 12239  func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
 12240  	s.QuoteCharacter = &v
 12241  	return s
 12242  }
 12243  
 12244  // SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
 12245  func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
 12246  	s.QuoteEscapeCharacter = &v
 12247  	return s
 12248  }
 12249  
 12250  // SetQuoteFields sets the QuoteFields field's value.
 12251  func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
 12252  	s.QuoteFields = &v
 12253  	return s
 12254  }
 12255  
 12256  // SetRecordDelimiter sets the RecordDelimiter field's value.
 12257  func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
 12258  	s.RecordDelimiter = &v
 12259  	return s
 12260  }
 12261  
 12262  // Container for specifying the Lambda notification configuration.
 12263  type CloudFunctionConfiguration struct {
 12264  	_ struct{} `type:"structure"`
 12265  
 12266  	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
 12267  	// of the specified type.
 12268  	CloudFunction *string `type:"string"`
 12269  
 12270  	// The bucket event for which to send notifications.
 12271  	//
 12272  	// Deprecated: Event has been deprecated
 12273  	Event *string `deprecated:"true" type:"string" enum:"Event"`
 12274  
 12275  	// Bucket events for which to send notifications.
 12276  	Events []*string `locationName:"Event" type:"list" flattened:"true"`
 12277  
 12278  	// An optional unique identifier for configurations in a notification configuration.
 12279  	// If you don't provide one, Amazon S3 will assign an ID.
 12280  	Id *string `type:"string"`
 12281  
 12282  	// The role supporting the invocation of the Lambda function
 12283  	InvocationRole *string `type:"string"`
 12284  }
 12285  
 12286  // String returns the string representation.
 12287  //
 12288  // API parameter values that are decorated as "sensitive" in the API will not
 12289  // be included in the string output. The member name will be present, but the
 12290  // value will be replaced with "sensitive".
 12291  func (s CloudFunctionConfiguration) String() string {
 12292  	return awsutil.Prettify(s)
 12293  }
 12294  
 12295  // GoString returns the string representation.
 12296  //
 12297  // API parameter values that are decorated as "sensitive" in the API will not
 12298  // be included in the string output. The member name will be present, but the
 12299  // value will be replaced with "sensitive".
 12300  func (s CloudFunctionConfiguration) GoString() string {
 12301  	return s.String()
 12302  }
 12303  
 12304  // SetCloudFunction sets the CloudFunction field's value.
 12305  func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
 12306  	s.CloudFunction = &v
 12307  	return s
 12308  }
 12309  
 12310  // SetEvent sets the Event field's value.
 12311  func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
 12312  	s.Event = &v
 12313  	return s
 12314  }
 12315  
 12316  // SetEvents sets the Events field's value.
 12317  func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
 12318  	s.Events = v
 12319  	return s
 12320  }
 12321  
 12322  // SetId sets the Id field's value.
 12323  func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
 12324  	s.Id = &v
 12325  	return s
 12326  }
 12327  
 12328  // SetInvocationRole sets the InvocationRole field's value.
 12329  func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
 12330  	s.InvocationRole = &v
 12331  	return s
 12332  }
 12333  
 12334  // Container for all (if there are any) keys between Prefix and the next occurrence
 12335  // of the string specified by a delimiter. CommonPrefixes lists keys that act
 12336  // like subdirectories in the directory specified by Prefix. For example, if
 12337  // the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july,
 12338  // the common prefix is notes/summer/.
 12339  type CommonPrefix struct {
 12340  	_ struct{} `type:"structure"`
 12341  
 12342  	// Container for the specified common prefix.
 12343  	Prefix *string `type:"string"`
 12344  }
 12345  
 12346  // String returns the string representation.
 12347  //
 12348  // API parameter values that are decorated as "sensitive" in the API will not
 12349  // be included in the string output. The member name will be present, but the
 12350  // value will be replaced with "sensitive".
 12351  func (s CommonPrefix) String() string {
 12352  	return awsutil.Prettify(s)
 12353  }
 12354  
 12355  // GoString returns the string representation.
 12356  //
 12357  // API parameter values that are decorated as "sensitive" in the API will not
 12358  // be included in the string output. The member name will be present, but the
 12359  // value will be replaced with "sensitive".
 12360  func (s CommonPrefix) GoString() string {
 12361  	return s.String()
 12362  }
 12363  
 12364  // SetPrefix sets the Prefix field's value.
 12365  func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
 12366  	s.Prefix = &v
 12367  	return s
 12368  }
 12369  
 12370  type CompleteMultipartUploadInput struct {
 12371  	_ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"`
 12372  
 12373  	// Name of the bucket to which the multipart upload was initiated.
 12374  	//
 12375  	// When using this action with an access point, you must direct requests to
 12376  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 12377  	// When using this action with an access point through the Amazon Web Services
 12378  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 12379  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 12380  	// in the Amazon S3 User Guide.
 12381  	//
 12382  	// When using this action with Amazon S3 on Outposts, you must direct requests
 12383  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 12384  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 12385  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 12386  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 12387  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 12388  	// in the Amazon S3 User Guide.
 12389  	//
 12390  	// Bucket is a required field
 12391  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 12392  
 12393  	// The account ID of the expected bucket owner. If the bucket is owned by a
 12394  	// different account, the request will fail with an HTTP 403 (Access Denied)
 12395  	// error.
 12396  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 12397  
 12398  	// Object key for which the multipart upload was initiated.
 12399  	//
 12400  	// Key is a required field
 12401  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 12402  
 12403  	// The container for the multipart upload request information.
 12404  	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 12405  
 12406  	// Confirms that the requester knows that they will be charged for the request.
 12407  	// Bucket owners need not specify this parameter in their requests. For information
 12408  	// about downloading objects from requester pays buckets, see Downloading Objects
 12409  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 12410  	// in the Amazon S3 User Guide.
 12411  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 12412  
 12413  	// ID for the initiated multipart upload.
 12414  	//
 12415  	// UploadId is a required field
 12416  	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
 12417  }
 12418  
 12419  // String returns the string representation.
 12420  //
 12421  // API parameter values that are decorated as "sensitive" in the API will not
 12422  // be included in the string output. The member name will be present, but the
 12423  // value will be replaced with "sensitive".
 12424  func (s CompleteMultipartUploadInput) String() string {
 12425  	return awsutil.Prettify(s)
 12426  }
 12427  
 12428  // GoString returns the string representation.
 12429  //
 12430  // API parameter values that are decorated as "sensitive" in the API will not
 12431  // be included in the string output. The member name will be present, but the
 12432  // value will be replaced with "sensitive".
 12433  func (s CompleteMultipartUploadInput) GoString() string {
 12434  	return s.String()
 12435  }
 12436  
 12437  // Validate inspects the fields of the type to determine if they are valid.
 12438  func (s *CompleteMultipartUploadInput) Validate() error {
 12439  	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
 12440  	if s.Bucket == nil {
 12441  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 12442  	}
 12443  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 12444  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 12445  	}
 12446  	if s.Key == nil {
 12447  		invalidParams.Add(request.NewErrParamRequired("Key"))
 12448  	}
 12449  	if s.Key != nil && len(*s.Key) < 1 {
 12450  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 12451  	}
 12452  	if s.UploadId == nil {
 12453  		invalidParams.Add(request.NewErrParamRequired("UploadId"))
 12454  	}
 12455  
 12456  	if invalidParams.Len() > 0 {
 12457  		return invalidParams
 12458  	}
 12459  	return nil
 12460  }
 12461  
 12462  // SetBucket sets the Bucket field's value.
 12463  func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
 12464  	s.Bucket = &v
 12465  	return s
 12466  }
 12467  
 12468  func (s *CompleteMultipartUploadInput) getBucket() (v string) {
 12469  	if s.Bucket == nil {
 12470  		return v
 12471  	}
 12472  	return *s.Bucket
 12473  }
 12474  
 12475  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 12476  func (s *CompleteMultipartUploadInput) SetExpectedBucketOwner(v string) *CompleteMultipartUploadInput {
 12477  	s.ExpectedBucketOwner = &v
 12478  	return s
 12479  }
 12480  
 12481  // SetKey sets the Key field's value.
 12482  func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
 12483  	s.Key = &v
 12484  	return s
 12485  }
 12486  
 12487  // SetMultipartUpload sets the MultipartUpload field's value.
 12488  func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
 12489  	s.MultipartUpload = v
 12490  	return s
 12491  }
 12492  
 12493  // SetRequestPayer sets the RequestPayer field's value.
 12494  func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
 12495  	s.RequestPayer = &v
 12496  	return s
 12497  }
 12498  
 12499  // SetUploadId sets the UploadId field's value.
 12500  func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
 12501  	s.UploadId = &v
 12502  	return s
 12503  }
 12504  
 12505  func (s *CompleteMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
 12506  	if s.Bucket == nil {
 12507  		return nil, fmt.Errorf("member Bucket is nil")
 12508  	}
 12509  	return parseEndpointARN(*s.Bucket)
 12510  }
 12511  
 12512  func (s *CompleteMultipartUploadInput) hasEndpointARN() bool {
 12513  	if s.Bucket == nil {
 12514  		return false
 12515  	}
 12516  	return arn.IsARN(*s.Bucket)
 12517  }
 12518  
 12519  // updateArnableField updates the value of the input field that
 12520  // takes an ARN as an input. This method is useful to backfill
 12521  // the parsed resource name from ARN into the input member.
 12522  // It returns a pointer to a modified copy of input and an error.
 12523  // Note that original input is not modified.
 12524  func (s CompleteMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
 12525  	if s.Bucket == nil {
 12526  		return nil, fmt.Errorf("member Bucket is nil")
 12527  	}
 12528  	s.Bucket = aws.String(v)
 12529  	return &s, nil
 12530  }
 12531  
 12532  type CompleteMultipartUploadOutput struct {
 12533  	_ struct{} `type:"structure"`
 12534  
 12535  	// The name of the bucket that contains the newly created object. Does not return
 12536  	// the access point ARN or access point alias if used.
 12537  	//
 12538  	// When using this action with an access point, you must direct requests to
 12539  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 12540  	// When using this action with an access point through the Amazon Web Services
 12541  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 12542  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 12543  	// in the Amazon S3 User Guide.
 12544  	//
 12545  	// When using this action with Amazon S3 on Outposts, you must direct requests
 12546  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 12547  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 12548  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 12549  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 12550  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 12551  	// in the Amazon S3 User Guide.
 12552  	Bucket *string `type:"string"`
 12553  
 12554  	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
 12555  	// encryption with Amazon Web Services KMS (SSE-KMS).
 12556  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 12557  
 12558  	// Entity tag that identifies the newly created object's data. Objects with
 12559  	// different object data will have different entity tags. The entity tag is
 12560  	// an opaque string. The entity tag may or may not be an MD5 digest of the object
 12561  	// data. If the entity tag is not an MD5 digest of the object data, it will
 12562  	// contain one or more nonhexadecimal characters and/or will consist of less
 12563  	// than 32 or more than 32 hexadecimal digits.
 12564  	ETag *string `type:"string"`
 12565  
 12566  	// If the object expiration is configured, this will contain the expiration
 12567  	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
 12568  	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
 12569  
 12570  	// The object key of the newly created object.
 12571  	Key *string `min:"1" type:"string"`
 12572  
 12573  	// The URI that identifies the newly created object.
 12574  	Location *string `type:"string"`
 12575  
 12576  	// If present, indicates that the requester was successfully charged for the
 12577  	// request.
 12578  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 12579  
 12580  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 12581  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 12582  	// the object.
 12583  	//
 12584  	// SSEKMSKeyId is a sensitive parameter and its value will be
 12585  	// replaced with "sensitive" in string returned by CompleteMultipartUploadOutput's
 12586  	// String and GoString methods.
 12587  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 12588  
 12589  	// If you specified server-side encryption either with an Amazon S3-managed
 12590  	// encryption key or an Amazon Web Services KMS key in your initiate multipart
 12591  	// upload request, the response includes this header. It confirms the encryption
 12592  	// algorithm that Amazon S3 used to encrypt the object.
 12593  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 12594  
 12595  	// Version ID of the newly created object, in case the bucket has versioning
 12596  	// turned on.
 12597  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 12598  }
 12599  
 12600  // String returns the string representation.
 12601  //
 12602  // API parameter values that are decorated as "sensitive" in the API will not
 12603  // be included in the string output. The member name will be present, but the
 12604  // value will be replaced with "sensitive".
 12605  func (s CompleteMultipartUploadOutput) String() string {
 12606  	return awsutil.Prettify(s)
 12607  }
 12608  
 12609  // GoString returns the string representation.
 12610  //
 12611  // API parameter values that are decorated as "sensitive" in the API will not
 12612  // be included in the string output. The member name will be present, but the
 12613  // value will be replaced with "sensitive".
 12614  func (s CompleteMultipartUploadOutput) GoString() string {
 12615  	return s.String()
 12616  }
 12617  
 12618  // SetBucket sets the Bucket field's value.
 12619  func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
 12620  	s.Bucket = &v
 12621  	return s
 12622  }
 12623  
 12624  func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
 12625  	if s.Bucket == nil {
 12626  		return v
 12627  	}
 12628  	return *s.Bucket
 12629  }
 12630  
 12631  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 12632  func (s *CompleteMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CompleteMultipartUploadOutput {
 12633  	s.BucketKeyEnabled = &v
 12634  	return s
 12635  }
 12636  
 12637  // SetETag sets the ETag field's value.
 12638  func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
 12639  	s.ETag = &v
 12640  	return s
 12641  }
 12642  
 12643  // SetExpiration sets the Expiration field's value.
 12644  func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
 12645  	s.Expiration = &v
 12646  	return s
 12647  }
 12648  
 12649  // SetKey sets the Key field's value.
 12650  func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
 12651  	s.Key = &v
 12652  	return s
 12653  }
 12654  
 12655  // SetLocation sets the Location field's value.
 12656  func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
 12657  	s.Location = &v
 12658  	return s
 12659  }
 12660  
 12661  // SetRequestCharged sets the RequestCharged field's value.
 12662  func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
 12663  	s.RequestCharged = &v
 12664  	return s
 12665  }
 12666  
 12667  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 12668  func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
 12669  	s.SSEKMSKeyId = &v
 12670  	return s
 12671  }
 12672  
 12673  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 12674  func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
 12675  	s.ServerSideEncryption = &v
 12676  	return s
 12677  }
 12678  
 12679  // SetVersionId sets the VersionId field's value.
 12680  func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
 12681  	s.VersionId = &v
 12682  	return s
 12683  }
 12684  
 12685  // The container for the completed multipart upload details.
 12686  type CompletedMultipartUpload struct {
 12687  	_ struct{} `type:"structure"`
 12688  
 12689  	// Array of CompletedPart data types.
 12690  	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
 12691  }
 12692  
 12693  // String returns the string representation.
 12694  //
 12695  // API parameter values that are decorated as "sensitive" in the API will not
 12696  // be included in the string output. The member name will be present, but the
 12697  // value will be replaced with "sensitive".
 12698  func (s CompletedMultipartUpload) String() string {
 12699  	return awsutil.Prettify(s)
 12700  }
 12701  
 12702  // GoString returns the string representation.
 12703  //
 12704  // API parameter values that are decorated as "sensitive" in the API will not
 12705  // be included in the string output. The member name will be present, but the
 12706  // value will be replaced with "sensitive".
 12707  func (s CompletedMultipartUpload) GoString() string {
 12708  	return s.String()
 12709  }
 12710  
 12711  // SetParts sets the Parts field's value.
 12712  func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
 12713  	s.Parts = v
 12714  	return s
 12715  }
 12716  
 12717  // Details of the parts that were uploaded.
 12718  type CompletedPart struct {
 12719  	_ struct{} `type:"structure"`
 12720  
 12721  	// Entity tag returned when the part was uploaded.
 12722  	ETag *string `type:"string"`
 12723  
 12724  	// Part number that identifies the part. This is a positive integer between
 12725  	// 1 and 10,000.
 12726  	PartNumber *int64 `type:"integer"`
 12727  }
 12728  
 12729  // String returns the string representation.
 12730  //
 12731  // API parameter values that are decorated as "sensitive" in the API will not
 12732  // be included in the string output. The member name will be present, but the
 12733  // value will be replaced with "sensitive".
 12734  func (s CompletedPart) String() string {
 12735  	return awsutil.Prettify(s)
 12736  }
 12737  
 12738  // GoString returns the string representation.
 12739  //
 12740  // API parameter values that are decorated as "sensitive" in the API will not
 12741  // be included in the string output. The member name will be present, but the
 12742  // value will be replaced with "sensitive".
 12743  func (s CompletedPart) GoString() string {
 12744  	return s.String()
 12745  }
 12746  
 12747  // SetETag sets the ETag field's value.
 12748  func (s *CompletedPart) SetETag(v string) *CompletedPart {
 12749  	s.ETag = &v
 12750  	return s
 12751  }
 12752  
 12753  // SetPartNumber sets the PartNumber field's value.
 12754  func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
 12755  	s.PartNumber = &v
 12756  	return s
 12757  }
 12758  
 12759  // A container for describing a condition that must be met for the specified
 12760  // redirect to apply. For example, 1. If request is for pages in the /docs folder,
 12761  // redirect to the /documents folder. 2. If request results in HTTP error 4xx,
 12762  // redirect request to another host where you might process the error.
 12763  type Condition struct {
 12764  	_ struct{} `type:"structure"`
 12765  
 12766  	// The HTTP error code when the redirect is applied. In the event of an error,
 12767  	// if the error code equals this value, then the specified redirect is applied.
 12768  	// Required when parent element Condition is specified and sibling KeyPrefixEquals
 12769  	// is not specified. If both are specified, then both must be true for the redirect
 12770  	// to be applied.
 12771  	HttpErrorCodeReturnedEquals *string `type:"string"`
 12772  
 12773  	// The object key name prefix when the redirect is applied. For example, to
 12774  	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
 12775  	// To redirect request for all pages with the prefix docs/, the key prefix will
 12776  	// be /docs, which identifies all objects in the docs/ folder. Required when
 12777  	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
 12778  	// is not specified. If both conditions are specified, both must be true for
 12779  	// the redirect to be applied.
 12780  	//
 12781  	// Replacement must be made for object keys containing special characters (such
 12782  	// as carriage returns) when using XML requests. For more information, see XML
 12783  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 12784  	KeyPrefixEquals *string `type:"string"`
 12785  }
 12786  
 12787  // String returns the string representation.
 12788  //
 12789  // API parameter values that are decorated as "sensitive" in the API will not
 12790  // be included in the string output. The member name will be present, but the
 12791  // value will be replaced with "sensitive".
 12792  func (s Condition) String() string {
 12793  	return awsutil.Prettify(s)
 12794  }
 12795  
 12796  // GoString returns the string representation.
 12797  //
 12798  // API parameter values that are decorated as "sensitive" in the API will not
 12799  // be included in the string output. The member name will be present, but the
 12800  // value will be replaced with "sensitive".
 12801  func (s Condition) GoString() string {
 12802  	return s.String()
 12803  }
 12804  
 12805  // SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
 12806  func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
 12807  	s.HttpErrorCodeReturnedEquals = &v
 12808  	return s
 12809  }
 12810  
 12811  // SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
 12812  func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
 12813  	s.KeyPrefixEquals = &v
 12814  	return s
 12815  }
 12816  
 12817  type ContinuationEvent struct {
 12818  	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
 12819  }
 12820  
 12821  // String returns the string representation.
 12822  //
 12823  // API parameter values that are decorated as "sensitive" in the API will not
 12824  // be included in the string output. The member name will be present, but the
 12825  // value will be replaced with "sensitive".
 12826  func (s ContinuationEvent) String() string {
 12827  	return awsutil.Prettify(s)
 12828  }
 12829  
 12830  // GoString returns the string representation.
 12831  //
 12832  // API parameter values that are decorated as "sensitive" in the API will not
 12833  // be included in the string output. The member name will be present, but the
 12834  // value will be replaced with "sensitive".
 12835  func (s ContinuationEvent) GoString() string {
 12836  	return s.String()
 12837  }
 12838  
 12839  // The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
 12840  func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
 12841  
 12842  // UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
 12843  // This method is only used internally within the SDK's EventStream handling.
 12844  func (s *ContinuationEvent) UnmarshalEvent(
 12845  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 12846  	msg eventstream.Message,
 12847  ) error {
 12848  	return nil
 12849  }
 12850  
 12851  // MarshalEvent marshals the type into an stream event value. This method
 12852  // should only used internally within the SDK's EventStream handling.
 12853  func (s *ContinuationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
 12854  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
 12855  	return msg, err
 12856  }
 12857  
 12858  type CopyObjectInput struct {
 12859  	_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
 12860  
 12861  	// The canned ACL to apply to the object.
 12862  	//
 12863  	// This action is not supported by Amazon S3 on Outposts.
 12864  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
 12865  
 12866  	// The name of the destination bucket.
 12867  	//
 12868  	// When using this action with an access point, you must direct requests to
 12869  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 12870  	// When using this action with an access point through the Amazon Web Services
 12871  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 12872  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 12873  	// in the Amazon S3 User Guide.
 12874  	//
 12875  	// When using this action with Amazon S3 on Outposts, you must direct requests
 12876  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 12877  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 12878  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 12879  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 12880  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 12881  	// in the Amazon S3 User Guide.
 12882  	//
 12883  	// Bucket is a required field
 12884  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 12885  
 12886  	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
 12887  	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
 12888  	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
 12889  	// SSE-KMS.
 12890  	//
 12891  	// Specifying this header with a COPY action doesn’t affect bucket-level settings
 12892  	// for S3 Bucket Key.
 12893  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 12894  
 12895  	// Specifies caching behavior along the request/reply chain.
 12896  	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
 12897  
 12898  	// Specifies presentational information for the object.
 12899  	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
 12900  
 12901  	// Specifies what content encodings have been applied to the object and thus
 12902  	// what decoding mechanisms must be applied to obtain the media-type referenced
 12903  	// by the Content-Type header field.
 12904  	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
 12905  
 12906  	// The language the content is in.
 12907  	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
 12908  
 12909  	// A standard MIME type describing the format of the object data.
 12910  	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
 12911  
 12912  	// Specifies the source object for the copy operation. You specify the value
 12913  	// in one of two formats, depending on whether you want to access the source
 12914  	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
 12915  	//
 12916  	//    * For objects not accessed through an access point, specify the name of
 12917  	//    the source bucket and the key of the source object, separated by a slash
 12918  	//    (/). For example, to copy the object reports/january.pdf from the bucket
 12919  	//    awsexamplebucket, use awsexamplebucket/reports/january.pdf. The value
 12920  	//    must be URL encoded.
 12921  	//
 12922  	//    * For objects accessed through access points, specify the Amazon Resource
 12923  	//    Name (ARN) of the object as accessed through the access point, in the
 12924  	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
 12925  	//    For example, to copy the object reports/january.pdf through access point
 12926  	//    my-access-point owned by account 123456789012 in Region us-west-2, use
 12927  	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
 12928  	//    The value must be URL encoded. Amazon S3 supports copy operations using
 12929  	//    access points only when the source and destination buckets are in the
 12930  	//    same Amazon Web Services Region. Alternatively, for objects accessed through
 12931  	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
 12932  	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
 12933  	//    For example, to copy the object reports/january.pdf through outpost my-outpost
 12934  	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
 12935  	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
 12936  	//    The value must be URL encoded.
 12937  	//
 12938  	// To copy a specific version of an object, append ?versionId=<version-id> to
 12939  	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
 12940  	// If you don't specify a version ID, Amazon S3 copies the latest version of
 12941  	// the source object.
 12942  	//
 12943  	// CopySource is a required field
 12944  	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
 12945  
 12946  	// Copies the object if its entity tag (ETag) matches the specified tag.
 12947  	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
 12948  
 12949  	// Copies the object if it has been modified since the specified time.
 12950  	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
 12951  
 12952  	// Copies the object if its entity tag (ETag) is different than the specified
 12953  	// ETag.
 12954  	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
 12955  
 12956  	// Copies the object if it hasn't been modified since the specified time.
 12957  	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
 12958  
 12959  	// Specifies the algorithm to use when decrypting the source object (for example,
 12960  	// AES256).
 12961  	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
 12962  
 12963  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
 12964  	// the source object. The encryption key provided in this header must be one
 12965  	// that was used when the source object was created.
 12966  	//
 12967  	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
 12968  	// replaced with "sensitive" in string returned by CopyObjectInput's
 12969  	// String and GoString methods.
 12970  	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 12971  
 12972  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 12973  	// Amazon S3 uses this header for a message integrity check to ensure that the
 12974  	// encryption key was transmitted without error.
 12975  	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
 12976  
 12977  	// The account ID of the expected destination bucket owner. If the destination
 12978  	// bucket is owned by a different account, the request will fail with an HTTP
 12979  	// 403 (Access Denied) error.
 12980  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 12981  
 12982  	// The account ID of the expected source bucket owner. If the source bucket
 12983  	// is owned by a different account, the request will fail with an HTTP 403 (Access
 12984  	// Denied) error.
 12985  	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
 12986  
 12987  	// The date and time at which the object is no longer cacheable.
 12988  	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
 12989  
 12990  	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
 12991  	//
 12992  	// This action is not supported by Amazon S3 on Outposts.
 12993  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 12994  
 12995  	// Allows grantee to read the object data and its metadata.
 12996  	//
 12997  	// This action is not supported by Amazon S3 on Outposts.
 12998  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 12999  
 13000  	// Allows grantee to read the object ACL.
 13001  	//
 13002  	// This action is not supported by Amazon S3 on Outposts.
 13003  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 13004  
 13005  	// Allows grantee to write the ACL for the applicable object.
 13006  	//
 13007  	// This action is not supported by Amazon S3 on Outposts.
 13008  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 13009  
 13010  	// The key of the destination object.
 13011  	//
 13012  	// Key is a required field
 13013  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 13014  
 13015  	// A map of metadata to store with the object in S3.
 13016  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 13017  
 13018  	// Specifies whether the metadata is copied from the source object or replaced
 13019  	// with metadata provided in the request.
 13020  	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
 13021  
 13022  	// Specifies whether you want to apply a Legal Hold to the copied object.
 13023  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 13024  
 13025  	// The Object Lock mode that you want to apply to the copied object.
 13026  	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 13027  
 13028  	// The date and time when you want the copied object's Object Lock to expire.
 13029  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 13030  
 13031  	// Confirms that the requester knows that they will be charged for the request.
 13032  	// Bucket owners need not specify this parameter in their requests. For information
 13033  	// about downloading objects from requester pays buckets, see Downloading Objects
 13034  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 13035  	// in the Amazon S3 User Guide.
 13036  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 13037  
 13038  	// Specifies the algorithm to use to when encrypting the object (for example,
 13039  	// AES256).
 13040  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 13041  
 13042  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 13043  	// data. This value is used to store the object and then it is discarded; Amazon
 13044  	// S3 does not store the encryption key. The key must be appropriate for use
 13045  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 13046  	// header.
 13047  	//
 13048  	// SSECustomerKey is a sensitive parameter and its value will be
 13049  	// replaced with "sensitive" in string returned by CopyObjectInput's
 13050  	// String and GoString methods.
 13051  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 13052  
 13053  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 13054  	// Amazon S3 uses this header for a message integrity check to ensure that the
 13055  	// encryption key was transmitted without error.
 13056  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 13057  
 13058  	// Specifies the Amazon Web Services KMS Encryption Context to use for object
 13059  	// encryption. The value of this header is a base64-encoded UTF-8 string holding
 13060  	// JSON with the encryption context key-value pairs.
 13061  	//
 13062  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 13063  	// replaced with "sensitive" in string returned by CopyObjectInput's
 13064  	// String and GoString methods.
 13065  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 13066  
 13067  	// Specifies the Amazon Web Services KMS key ID to use for object encryption.
 13068  	// All GET and PUT requests for an object protected by Amazon Web Services KMS
 13069  	// will fail if not made via SSL or using SigV4. For information about configuring
 13070  	// using any of the officially supported Amazon Web Services SDKs and Amazon
 13071  	// Web Services CLI, see Specifying the Signature Version in Request Authentication
 13072  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
 13073  	// in the Amazon S3 User Guide.
 13074  	//
 13075  	// SSEKMSKeyId is a sensitive parameter and its value will be
 13076  	// replaced with "sensitive" in string returned by CopyObjectInput's
 13077  	// String and GoString methods.
 13078  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 13079  
 13080  	// The server-side encryption algorithm used when storing this object in Amazon
 13081  	// S3 (for example, AES256, aws:kms).
 13082  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 13083  
 13084  	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
 13085  	// objects. The STANDARD storage class provides high durability and high availability.
 13086  	// Depending on performance needs, you can specify a different Storage Class.
 13087  	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
 13088  	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
 13089  	// in the Amazon S3 User Guide.
 13090  	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
 13091  
 13092  	// The tag-set for the object destination object this value must be used in
 13093  	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
 13094  	// Query parameters.
 13095  	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
 13096  
 13097  	// Specifies whether the object tag-set are copied from the source object or
 13098  	// replaced with tag-set provided in the request.
 13099  	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
 13100  
 13101  	// If the bucket is configured as a website, redirects requests for this object
 13102  	// to another object in the same bucket or to an external URL. Amazon S3 stores
 13103  	// the value of this header in the object metadata.
 13104  	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
 13105  }
 13106  
 13107  // String returns the string representation.
 13108  //
 13109  // API parameter values that are decorated as "sensitive" in the API will not
 13110  // be included in the string output. The member name will be present, but the
 13111  // value will be replaced with "sensitive".
 13112  func (s CopyObjectInput) String() string {
 13113  	return awsutil.Prettify(s)
 13114  }
 13115  
 13116  // GoString returns the string representation.
 13117  //
 13118  // API parameter values that are decorated as "sensitive" in the API will not
 13119  // be included in the string output. The member name will be present, but the
 13120  // value will be replaced with "sensitive".
 13121  func (s CopyObjectInput) GoString() string {
 13122  	return s.String()
 13123  }
 13124  
 13125  // Validate inspects the fields of the type to determine if they are valid.
 13126  func (s *CopyObjectInput) Validate() error {
 13127  	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
 13128  	if s.Bucket == nil {
 13129  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 13130  	}
 13131  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 13132  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 13133  	}
 13134  	if s.CopySource == nil {
 13135  		invalidParams.Add(request.NewErrParamRequired("CopySource"))
 13136  	}
 13137  	if s.Key == nil {
 13138  		invalidParams.Add(request.NewErrParamRequired("Key"))
 13139  	}
 13140  	if s.Key != nil && len(*s.Key) < 1 {
 13141  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 13142  	}
 13143  
 13144  	if invalidParams.Len() > 0 {
 13145  		return invalidParams
 13146  	}
 13147  	return nil
 13148  }
 13149  
 13150  // SetACL sets the ACL field's value.
 13151  func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
 13152  	s.ACL = &v
 13153  	return s
 13154  }
 13155  
 13156  // SetBucket sets the Bucket field's value.
 13157  func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
 13158  	s.Bucket = &v
 13159  	return s
 13160  }
 13161  
 13162  func (s *CopyObjectInput) getBucket() (v string) {
 13163  	if s.Bucket == nil {
 13164  		return v
 13165  	}
 13166  	return *s.Bucket
 13167  }
 13168  
 13169  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 13170  func (s *CopyObjectInput) SetBucketKeyEnabled(v bool) *CopyObjectInput {
 13171  	s.BucketKeyEnabled = &v
 13172  	return s
 13173  }
 13174  
 13175  // SetCacheControl sets the CacheControl field's value.
 13176  func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
 13177  	s.CacheControl = &v
 13178  	return s
 13179  }
 13180  
 13181  // SetContentDisposition sets the ContentDisposition field's value.
 13182  func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
 13183  	s.ContentDisposition = &v
 13184  	return s
 13185  }
 13186  
 13187  // SetContentEncoding sets the ContentEncoding field's value.
 13188  func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
 13189  	s.ContentEncoding = &v
 13190  	return s
 13191  }
 13192  
 13193  // SetContentLanguage sets the ContentLanguage field's value.
 13194  func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
 13195  	s.ContentLanguage = &v
 13196  	return s
 13197  }
 13198  
 13199  // SetContentType sets the ContentType field's value.
 13200  func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
 13201  	s.ContentType = &v
 13202  	return s
 13203  }
 13204  
 13205  // SetCopySource sets the CopySource field's value.
 13206  func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
 13207  	s.CopySource = &v
 13208  	return s
 13209  }
 13210  
 13211  // SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
 13212  func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
 13213  	s.CopySourceIfMatch = &v
 13214  	return s
 13215  }
 13216  
 13217  // SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
 13218  func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
 13219  	s.CopySourceIfModifiedSince = &v
 13220  	return s
 13221  }
 13222  
 13223  // SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
 13224  func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
 13225  	s.CopySourceIfNoneMatch = &v
 13226  	return s
 13227  }
 13228  
 13229  // SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
 13230  func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
 13231  	s.CopySourceIfUnmodifiedSince = &v
 13232  	return s
 13233  }
 13234  
 13235  // SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
 13236  func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
 13237  	s.CopySourceSSECustomerAlgorithm = &v
 13238  	return s
 13239  }
 13240  
 13241  // SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
 13242  func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
 13243  	s.CopySourceSSECustomerKey = &v
 13244  	return s
 13245  }
 13246  
 13247  func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
 13248  	if s.CopySourceSSECustomerKey == nil {
 13249  		return v
 13250  	}
 13251  	return *s.CopySourceSSECustomerKey
 13252  }
 13253  
 13254  // SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
 13255  func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
 13256  	s.CopySourceSSECustomerKeyMD5 = &v
 13257  	return s
 13258  }
 13259  
 13260  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 13261  func (s *CopyObjectInput) SetExpectedBucketOwner(v string) *CopyObjectInput {
 13262  	s.ExpectedBucketOwner = &v
 13263  	return s
 13264  }
 13265  
 13266  // SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
 13267  func (s *CopyObjectInput) SetExpectedSourceBucketOwner(v string) *CopyObjectInput {
 13268  	s.ExpectedSourceBucketOwner = &v
 13269  	return s
 13270  }
 13271  
 13272  // SetExpires sets the Expires field's value.
 13273  func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
 13274  	s.Expires = &v
 13275  	return s
 13276  }
 13277  
 13278  // SetGrantFullControl sets the GrantFullControl field's value.
 13279  func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
 13280  	s.GrantFullControl = &v
 13281  	return s
 13282  }
 13283  
 13284  // SetGrantRead sets the GrantRead field's value.
 13285  func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
 13286  	s.GrantRead = &v
 13287  	return s
 13288  }
 13289  
 13290  // SetGrantReadACP sets the GrantReadACP field's value.
 13291  func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
 13292  	s.GrantReadACP = &v
 13293  	return s
 13294  }
 13295  
 13296  // SetGrantWriteACP sets the GrantWriteACP field's value.
 13297  func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
 13298  	s.GrantWriteACP = &v
 13299  	return s
 13300  }
 13301  
 13302  // SetKey sets the Key field's value.
 13303  func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
 13304  	s.Key = &v
 13305  	return s
 13306  }
 13307  
 13308  // SetMetadata sets the Metadata field's value.
 13309  func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
 13310  	s.Metadata = v
 13311  	return s
 13312  }
 13313  
 13314  // SetMetadataDirective sets the MetadataDirective field's value.
 13315  func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
 13316  	s.MetadataDirective = &v
 13317  	return s
 13318  }
 13319  
 13320  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 13321  func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
 13322  	s.ObjectLockLegalHoldStatus = &v
 13323  	return s
 13324  }
 13325  
 13326  // SetObjectLockMode sets the ObjectLockMode field's value.
 13327  func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
 13328  	s.ObjectLockMode = &v
 13329  	return s
 13330  }
 13331  
 13332  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 13333  func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
 13334  	s.ObjectLockRetainUntilDate = &v
 13335  	return s
 13336  }
 13337  
 13338  // SetRequestPayer sets the RequestPayer field's value.
 13339  func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
 13340  	s.RequestPayer = &v
 13341  	return s
 13342  }
 13343  
 13344  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 13345  func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
 13346  	s.SSECustomerAlgorithm = &v
 13347  	return s
 13348  }
 13349  
 13350  // SetSSECustomerKey sets the SSECustomerKey field's value.
 13351  func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
 13352  	s.SSECustomerKey = &v
 13353  	return s
 13354  }
 13355  
 13356  func (s *CopyObjectInput) getSSECustomerKey() (v string) {
 13357  	if s.SSECustomerKey == nil {
 13358  		return v
 13359  	}
 13360  	return *s.SSECustomerKey
 13361  }
 13362  
 13363  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 13364  func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
 13365  	s.SSECustomerKeyMD5 = &v
 13366  	return s
 13367  }
 13368  
 13369  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 13370  func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput {
 13371  	s.SSEKMSEncryptionContext = &v
 13372  	return s
 13373  }
 13374  
 13375  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 13376  func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
 13377  	s.SSEKMSKeyId = &v
 13378  	return s
 13379  }
 13380  
 13381  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 13382  func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
 13383  	s.ServerSideEncryption = &v
 13384  	return s
 13385  }
 13386  
 13387  // SetStorageClass sets the StorageClass field's value.
 13388  func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
 13389  	s.StorageClass = &v
 13390  	return s
 13391  }
 13392  
 13393  // SetTagging sets the Tagging field's value.
 13394  func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
 13395  	s.Tagging = &v
 13396  	return s
 13397  }
 13398  
 13399  // SetTaggingDirective sets the TaggingDirective field's value.
 13400  func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
 13401  	s.TaggingDirective = &v
 13402  	return s
 13403  }
 13404  
 13405  // SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
 13406  func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
 13407  	s.WebsiteRedirectLocation = &v
 13408  	return s
 13409  }
 13410  
 13411  func (s *CopyObjectInput) getEndpointARN() (arn.Resource, error) {
 13412  	if s.Bucket == nil {
 13413  		return nil, fmt.Errorf("member Bucket is nil")
 13414  	}
 13415  	return parseEndpointARN(*s.Bucket)
 13416  }
 13417  
 13418  func (s *CopyObjectInput) hasEndpointARN() bool {
 13419  	if s.Bucket == nil {
 13420  		return false
 13421  	}
 13422  	return arn.IsARN(*s.Bucket)
 13423  }
 13424  
 13425  // updateArnableField updates the value of the input field that
 13426  // takes an ARN as an input. This method is useful to backfill
 13427  // the parsed resource name from ARN into the input member.
 13428  // It returns a pointer to a modified copy of input and an error.
 13429  // Note that original input is not modified.
 13430  func (s CopyObjectInput) updateArnableField(v string) (interface{}, error) {
 13431  	if s.Bucket == nil {
 13432  		return nil, fmt.Errorf("member Bucket is nil")
 13433  	}
 13434  	s.Bucket = aws.String(v)
 13435  	return &s, nil
 13436  }
 13437  
 13438  type CopyObjectOutput struct {
 13439  	_ struct{} `type:"structure" payload:"CopyObjectResult"`
 13440  
 13441  	// Indicates whether the copied object uses an S3 Bucket Key for server-side
 13442  	// encryption with Amazon Web Services KMS (SSE-KMS).
 13443  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 13444  
 13445  	// Container for all response elements.
 13446  	CopyObjectResult *CopyObjectResult `type:"structure"`
 13447  
 13448  	// Version of the copied object in the destination bucket.
 13449  	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
 13450  
 13451  	// If the object expiration is configured, the response includes this header.
 13452  	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
 13453  
 13454  	// If present, indicates that the requester was successfully charged for the
 13455  	// request.
 13456  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 13457  
 13458  	// If server-side encryption with a customer-provided encryption key was requested,
 13459  	// the response will include this header confirming the encryption algorithm
 13460  	// used.
 13461  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 13462  
 13463  	// If server-side encryption with a customer-provided encryption key was requested,
 13464  	// the response will include this header to provide round-trip message integrity
 13465  	// verification of the customer-provided encryption key.
 13466  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 13467  
 13468  	// If present, specifies the Amazon Web Services KMS Encryption Context to use
 13469  	// for object encryption. The value of this header is a base64-encoded UTF-8
 13470  	// string holding JSON with the encryption context key-value pairs.
 13471  	//
 13472  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 13473  	// replaced with "sensitive" in string returned by CopyObjectOutput's
 13474  	// String and GoString methods.
 13475  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 13476  
 13477  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 13478  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 13479  	// the object.
 13480  	//
 13481  	// SSEKMSKeyId is a sensitive parameter and its value will be
 13482  	// replaced with "sensitive" in string returned by CopyObjectOutput's
 13483  	// String and GoString methods.
 13484  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 13485  
 13486  	// The server-side encryption algorithm used when storing this object in Amazon
 13487  	// S3 (for example, AES256, aws:kms).
 13488  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 13489  
 13490  	// Version ID of the newly created copy.
 13491  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 13492  }
 13493  
 13494  // String returns the string representation.
 13495  //
 13496  // API parameter values that are decorated as "sensitive" in the API will not
 13497  // be included in the string output. The member name will be present, but the
 13498  // value will be replaced with "sensitive".
 13499  func (s CopyObjectOutput) String() string {
 13500  	return awsutil.Prettify(s)
 13501  }
 13502  
 13503  // GoString returns the string representation.
 13504  //
 13505  // API parameter values that are decorated as "sensitive" in the API will not
 13506  // be included in the string output. The member name will be present, but the
 13507  // value will be replaced with "sensitive".
 13508  func (s CopyObjectOutput) GoString() string {
 13509  	return s.String()
 13510  }
 13511  
 13512  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 13513  func (s *CopyObjectOutput) SetBucketKeyEnabled(v bool) *CopyObjectOutput {
 13514  	s.BucketKeyEnabled = &v
 13515  	return s
 13516  }
 13517  
 13518  // SetCopyObjectResult sets the CopyObjectResult field's value.
 13519  func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
 13520  	s.CopyObjectResult = v
 13521  	return s
 13522  }
 13523  
 13524  // SetCopySourceVersionId sets the CopySourceVersionId field's value.
 13525  func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
 13526  	s.CopySourceVersionId = &v
 13527  	return s
 13528  }
 13529  
 13530  // SetExpiration sets the Expiration field's value.
 13531  func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
 13532  	s.Expiration = &v
 13533  	return s
 13534  }
 13535  
 13536  // SetRequestCharged sets the RequestCharged field's value.
 13537  func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
 13538  	s.RequestCharged = &v
 13539  	return s
 13540  }
 13541  
 13542  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 13543  func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
 13544  	s.SSECustomerAlgorithm = &v
 13545  	return s
 13546  }
 13547  
 13548  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 13549  func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
 13550  	s.SSECustomerKeyMD5 = &v
 13551  	return s
 13552  }
 13553  
 13554  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 13555  func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput {
 13556  	s.SSEKMSEncryptionContext = &v
 13557  	return s
 13558  }
 13559  
 13560  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 13561  func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
 13562  	s.SSEKMSKeyId = &v
 13563  	return s
 13564  }
 13565  
 13566  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 13567  func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
 13568  	s.ServerSideEncryption = &v
 13569  	return s
 13570  }
 13571  
 13572  // SetVersionId sets the VersionId field's value.
 13573  func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
 13574  	s.VersionId = &v
 13575  	return s
 13576  }
 13577  
 13578  // Container for all response elements.
 13579  type CopyObjectResult struct {
 13580  	_ struct{} `type:"structure"`
 13581  
 13582  	// Returns the ETag of the new object. The ETag reflects only changes to the
 13583  	// contents of an object, not its metadata.
 13584  	ETag *string `type:"string"`
 13585  
 13586  	// Creation date of the object.
 13587  	LastModified *time.Time `type:"timestamp"`
 13588  }
 13589  
 13590  // String returns the string representation.
 13591  //
 13592  // API parameter values that are decorated as "sensitive" in the API will not
 13593  // be included in the string output. The member name will be present, but the
 13594  // value will be replaced with "sensitive".
 13595  func (s CopyObjectResult) String() string {
 13596  	return awsutil.Prettify(s)
 13597  }
 13598  
 13599  // GoString returns the string representation.
 13600  //
 13601  // API parameter values that are decorated as "sensitive" in the API will not
 13602  // be included in the string output. The member name will be present, but the
 13603  // value will be replaced with "sensitive".
 13604  func (s CopyObjectResult) GoString() string {
 13605  	return s.String()
 13606  }
 13607  
 13608  // SetETag sets the ETag field's value.
 13609  func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
 13610  	s.ETag = &v
 13611  	return s
 13612  }
 13613  
 13614  // SetLastModified sets the LastModified field's value.
 13615  func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
 13616  	s.LastModified = &v
 13617  	return s
 13618  }
 13619  
 13620  // Container for all response elements.
 13621  type CopyPartResult struct {
 13622  	_ struct{} `type:"structure"`
 13623  
 13624  	// Entity tag of the object.
 13625  	ETag *string `type:"string"`
 13626  
 13627  	// Date and time at which the object was uploaded.
 13628  	LastModified *time.Time `type:"timestamp"`
 13629  }
 13630  
 13631  // String returns the string representation.
 13632  //
 13633  // API parameter values that are decorated as "sensitive" in the API will not
 13634  // be included in the string output. The member name will be present, but the
 13635  // value will be replaced with "sensitive".
 13636  func (s CopyPartResult) String() string {
 13637  	return awsutil.Prettify(s)
 13638  }
 13639  
 13640  // GoString returns the string representation.
 13641  //
 13642  // API parameter values that are decorated as "sensitive" in the API will not
 13643  // be included in the string output. The member name will be present, but the
 13644  // value will be replaced with "sensitive".
 13645  func (s CopyPartResult) GoString() string {
 13646  	return s.String()
 13647  }
 13648  
 13649  // SetETag sets the ETag field's value.
 13650  func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
 13651  	s.ETag = &v
 13652  	return s
 13653  }
 13654  
 13655  // SetLastModified sets the LastModified field's value.
 13656  func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
 13657  	s.LastModified = &v
 13658  	return s
 13659  }
 13660  
 13661  // The configuration information for the bucket.
 13662  type CreateBucketConfiguration struct {
 13663  	_ struct{} `type:"structure"`
 13664  
 13665  	// Specifies the Region where the bucket will be created. If you don't specify
 13666  	// a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
 13667  	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
 13668  }
 13669  
 13670  // String returns the string representation.
 13671  //
 13672  // API parameter values that are decorated as "sensitive" in the API will not
 13673  // be included in the string output. The member name will be present, but the
 13674  // value will be replaced with "sensitive".
 13675  func (s CreateBucketConfiguration) String() string {
 13676  	return awsutil.Prettify(s)
 13677  }
 13678  
 13679  // GoString returns the string representation.
 13680  //
 13681  // API parameter values that are decorated as "sensitive" in the API will not
 13682  // be included in the string output. The member name will be present, but the
 13683  // value will be replaced with "sensitive".
 13684  func (s CreateBucketConfiguration) GoString() string {
 13685  	return s.String()
 13686  }
 13687  
 13688  // SetLocationConstraint sets the LocationConstraint field's value.
 13689  func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
 13690  	s.LocationConstraint = &v
 13691  	return s
 13692  }
 13693  
 13694  type CreateBucketInput struct {
 13695  	_ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"`
 13696  
 13697  	// The canned ACL to apply to the bucket.
 13698  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
 13699  
 13700  	// The name of the bucket to create.
 13701  	//
 13702  	// Bucket is a required field
 13703  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 13704  
 13705  	// The configuration information for the bucket.
 13706  	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 13707  
 13708  	// Allows grantee the read, write, read ACP, and write ACP permissions on the
 13709  	// bucket.
 13710  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 13711  
 13712  	// Allows grantee to list the objects in the bucket.
 13713  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 13714  
 13715  	// Allows grantee to read the bucket ACL.
 13716  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 13717  
 13718  	// Allows grantee to create new objects in the bucket.
 13719  	//
 13720  	// For the bucket and object owners of existing objects, also allows deletions
 13721  	// and overwrites of those objects.
 13722  	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
 13723  
 13724  	// Allows grantee to write the ACL for the applicable bucket.
 13725  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 13726  
 13727  	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
 13728  	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
 13729  }
 13730  
 13731  // String returns the string representation.
 13732  //
 13733  // API parameter values that are decorated as "sensitive" in the API will not
 13734  // be included in the string output. The member name will be present, but the
 13735  // value will be replaced with "sensitive".
 13736  func (s CreateBucketInput) String() string {
 13737  	return awsutil.Prettify(s)
 13738  }
 13739  
 13740  // GoString returns the string representation.
 13741  //
 13742  // API parameter values that are decorated as "sensitive" in the API will not
 13743  // be included in the string output. The member name will be present, but the
 13744  // value will be replaced with "sensitive".
 13745  func (s CreateBucketInput) GoString() string {
 13746  	return s.String()
 13747  }
 13748  
 13749  // Validate inspects the fields of the type to determine if they are valid.
 13750  func (s *CreateBucketInput) Validate() error {
 13751  	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
 13752  	if s.Bucket == nil {
 13753  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 13754  	}
 13755  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 13756  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 13757  	}
 13758  
 13759  	if invalidParams.Len() > 0 {
 13760  		return invalidParams
 13761  	}
 13762  	return nil
 13763  }
 13764  
 13765  // SetACL sets the ACL field's value.
 13766  func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
 13767  	s.ACL = &v
 13768  	return s
 13769  }
 13770  
 13771  // SetBucket sets the Bucket field's value.
 13772  func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
 13773  	s.Bucket = &v
 13774  	return s
 13775  }
 13776  
 13777  func (s *CreateBucketInput) getBucket() (v string) {
 13778  	if s.Bucket == nil {
 13779  		return v
 13780  	}
 13781  	return *s.Bucket
 13782  }
 13783  
 13784  // SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
 13785  func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
 13786  	s.CreateBucketConfiguration = v
 13787  	return s
 13788  }
 13789  
 13790  // SetGrantFullControl sets the GrantFullControl field's value.
 13791  func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
 13792  	s.GrantFullControl = &v
 13793  	return s
 13794  }
 13795  
 13796  // SetGrantRead sets the GrantRead field's value.
 13797  func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
 13798  	s.GrantRead = &v
 13799  	return s
 13800  }
 13801  
 13802  // SetGrantReadACP sets the GrantReadACP field's value.
 13803  func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
 13804  	s.GrantReadACP = &v
 13805  	return s
 13806  }
 13807  
 13808  // SetGrantWrite sets the GrantWrite field's value.
 13809  func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
 13810  	s.GrantWrite = &v
 13811  	return s
 13812  }
 13813  
 13814  // SetGrantWriteACP sets the GrantWriteACP field's value.
 13815  func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
 13816  	s.GrantWriteACP = &v
 13817  	return s
 13818  }
 13819  
 13820  // SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
 13821  func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
 13822  	s.ObjectLockEnabledForBucket = &v
 13823  	return s
 13824  }
 13825  
 13826  type CreateBucketOutput struct {
 13827  	_ struct{} `type:"structure"`
 13828  
 13829  	// Specifies the Region where the bucket will be created. If you are creating
 13830  	// a bucket on the US East (N. Virginia) Region (us-east-1), you do not need
 13831  	// to specify the location.
 13832  	Location *string `location:"header" locationName:"Location" type:"string"`
 13833  }
 13834  
 13835  // String returns the string representation.
 13836  //
 13837  // API parameter values that are decorated as "sensitive" in the API will not
 13838  // be included in the string output. The member name will be present, but the
 13839  // value will be replaced with "sensitive".
 13840  func (s CreateBucketOutput) String() string {
 13841  	return awsutil.Prettify(s)
 13842  }
 13843  
 13844  // GoString returns the string representation.
 13845  //
 13846  // API parameter values that are decorated as "sensitive" in the API will not
 13847  // be included in the string output. The member name will be present, but the
 13848  // value will be replaced with "sensitive".
 13849  func (s CreateBucketOutput) GoString() string {
 13850  	return s.String()
 13851  }
 13852  
 13853  // SetLocation sets the Location field's value.
 13854  func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
 13855  	s.Location = &v
 13856  	return s
 13857  }
 13858  
 13859  type CreateMultipartUploadInput struct {
 13860  	_ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"`
 13861  
 13862  	// The canned ACL to apply to the object.
 13863  	//
 13864  	// This action is not supported by Amazon S3 on Outposts.
 13865  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
 13866  
 13867  	// The name of the bucket to which to initiate the upload
 13868  	//
 13869  	// When using this action with an access point, you must direct requests to
 13870  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 13871  	// When using this action with an access point through the Amazon Web Services
 13872  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 13873  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 13874  	// in the Amazon S3 User Guide.
 13875  	//
 13876  	// When using this action with Amazon S3 on Outposts, you must direct requests
 13877  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 13878  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 13879  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 13880  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 13881  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 13882  	// in the Amazon S3 User Guide.
 13883  	//
 13884  	// Bucket is a required field
 13885  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 13886  
 13887  	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
 13888  	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
 13889  	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
 13890  	// SSE-KMS.
 13891  	//
 13892  	// Specifying this header with an object action doesn’t affect bucket-level
 13893  	// settings for S3 Bucket Key.
 13894  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 13895  
 13896  	// Specifies caching behavior along the request/reply chain.
 13897  	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
 13898  
 13899  	// Specifies presentational information for the object.
 13900  	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
 13901  
 13902  	// Specifies what content encodings have been applied to the object and thus
 13903  	// what decoding mechanisms must be applied to obtain the media-type referenced
 13904  	// by the Content-Type header field.
 13905  	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
 13906  
 13907  	// The language the content is in.
 13908  	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
 13909  
 13910  	// A standard MIME type describing the format of the object data.
 13911  	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
 13912  
 13913  	// The account ID of the expected bucket owner. If the bucket is owned by a
 13914  	// different account, the request will fail with an HTTP 403 (Access Denied)
 13915  	// error.
 13916  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 13917  
 13918  	// The date and time at which the object is no longer cacheable.
 13919  	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
 13920  
 13921  	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
 13922  	//
 13923  	// This action is not supported by Amazon S3 on Outposts.
 13924  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 13925  
 13926  	// Allows grantee to read the object data and its metadata.
 13927  	//
 13928  	// This action is not supported by Amazon S3 on Outposts.
 13929  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 13930  
 13931  	// Allows grantee to read the object ACL.
 13932  	//
 13933  	// This action is not supported by Amazon S3 on Outposts.
 13934  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 13935  
 13936  	// Allows grantee to write the ACL for the applicable object.
 13937  	//
 13938  	// This action is not supported by Amazon S3 on Outposts.
 13939  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 13940  
 13941  	// Object key for which the multipart upload is to be initiated.
 13942  	//
 13943  	// Key is a required field
 13944  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 13945  
 13946  	// A map of metadata to store with the object in S3.
 13947  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 13948  
 13949  	// Specifies whether you want to apply a Legal Hold to the uploaded object.
 13950  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 13951  
 13952  	// Specifies the Object Lock mode that you want to apply to the uploaded object.
 13953  	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 13954  
 13955  	// Specifies the date and time when you want the Object Lock to expire.
 13956  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 13957  
 13958  	// Confirms that the requester knows that they will be charged for the request.
 13959  	// Bucket owners need not specify this parameter in their requests. For information
 13960  	// about downloading objects from requester pays buckets, see Downloading Objects
 13961  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 13962  	// in the Amazon S3 User Guide.
 13963  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 13964  
 13965  	// Specifies the algorithm to use to when encrypting the object (for example,
 13966  	// AES256).
 13967  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 13968  
 13969  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 13970  	// data. This value is used to store the object and then it is discarded; Amazon
 13971  	// S3 does not store the encryption key. The key must be appropriate for use
 13972  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 13973  	// header.
 13974  	//
 13975  	// SSECustomerKey is a sensitive parameter and its value will be
 13976  	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
 13977  	// String and GoString methods.
 13978  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 13979  
 13980  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 13981  	// Amazon S3 uses this header for a message integrity check to ensure that the
 13982  	// encryption key was transmitted without error.
 13983  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 13984  
 13985  	// Specifies the Amazon Web Services KMS Encryption Context to use for object
 13986  	// encryption. The value of this header is a base64-encoded UTF-8 string holding
 13987  	// JSON with the encryption context key-value pairs.
 13988  	//
 13989  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 13990  	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
 13991  	// String and GoString methods.
 13992  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 13993  
 13994  	// Specifies the ID of the symmetric customer managed key to use for object
 13995  	// encryption. All GET and PUT requests for an object protected by Amazon Web
 13996  	// Services KMS will fail if not made via SSL or using SigV4. For information
 13997  	// about configuring using any of the officially supported Amazon Web Services
 13998  	// SDKs and Amazon Web Services CLI, see Specifying the Signature Version in
 13999  	// Request Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
 14000  	// in the Amazon S3 User Guide.
 14001  	//
 14002  	// SSEKMSKeyId is a sensitive parameter and its value will be
 14003  	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
 14004  	// String and GoString methods.
 14005  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 14006  
 14007  	// The server-side encryption algorithm used when storing this object in Amazon
 14008  	// S3 (for example, AES256, aws:kms).
 14009  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 14010  
 14011  	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
 14012  	// objects. The STANDARD storage class provides high durability and high availability.
 14013  	// Depending on performance needs, you can specify a different Storage Class.
 14014  	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
 14015  	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
 14016  	// in the Amazon S3 User Guide.
 14017  	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
 14018  
 14019  	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
 14020  	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
 14021  
 14022  	// If the bucket is configured as a website, redirects requests for this object
 14023  	// to another object in the same bucket or to an external URL. Amazon S3 stores
 14024  	// the value of this header in the object metadata.
 14025  	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
 14026  }
 14027  
 14028  // String returns the string representation.
 14029  //
 14030  // API parameter values that are decorated as "sensitive" in the API will not
 14031  // be included in the string output. The member name will be present, but the
 14032  // value will be replaced with "sensitive".
 14033  func (s CreateMultipartUploadInput) String() string {
 14034  	return awsutil.Prettify(s)
 14035  }
 14036  
 14037  // GoString returns the string representation.
 14038  //
 14039  // API parameter values that are decorated as "sensitive" in the API will not
 14040  // be included in the string output. The member name will be present, but the
 14041  // value will be replaced with "sensitive".
 14042  func (s CreateMultipartUploadInput) GoString() string {
 14043  	return s.String()
 14044  }
 14045  
 14046  // Validate inspects the fields of the type to determine if they are valid.
 14047  func (s *CreateMultipartUploadInput) Validate() error {
 14048  	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
 14049  	if s.Bucket == nil {
 14050  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 14051  	}
 14052  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 14053  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 14054  	}
 14055  	if s.Key == nil {
 14056  		invalidParams.Add(request.NewErrParamRequired("Key"))
 14057  	}
 14058  	if s.Key != nil && len(*s.Key) < 1 {
 14059  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 14060  	}
 14061  
 14062  	if invalidParams.Len() > 0 {
 14063  		return invalidParams
 14064  	}
 14065  	return nil
 14066  }
 14067  
 14068  // SetACL sets the ACL field's value.
 14069  func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
 14070  	s.ACL = &v
 14071  	return s
 14072  }
 14073  
 14074  // SetBucket sets the Bucket field's value.
 14075  func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
 14076  	s.Bucket = &v
 14077  	return s
 14078  }
 14079  
 14080  func (s *CreateMultipartUploadInput) getBucket() (v string) {
 14081  	if s.Bucket == nil {
 14082  		return v
 14083  	}
 14084  	return *s.Bucket
 14085  }
 14086  
 14087  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 14088  func (s *CreateMultipartUploadInput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadInput {
 14089  	s.BucketKeyEnabled = &v
 14090  	return s
 14091  }
 14092  
 14093  // SetCacheControl sets the CacheControl field's value.
 14094  func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
 14095  	s.CacheControl = &v
 14096  	return s
 14097  }
 14098  
 14099  // SetContentDisposition sets the ContentDisposition field's value.
 14100  func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
 14101  	s.ContentDisposition = &v
 14102  	return s
 14103  }
 14104  
 14105  // SetContentEncoding sets the ContentEncoding field's value.
 14106  func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
 14107  	s.ContentEncoding = &v
 14108  	return s
 14109  }
 14110  
 14111  // SetContentLanguage sets the ContentLanguage field's value.
 14112  func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
 14113  	s.ContentLanguage = &v
 14114  	return s
 14115  }
 14116  
 14117  // SetContentType sets the ContentType field's value.
 14118  func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
 14119  	s.ContentType = &v
 14120  	return s
 14121  }
 14122  
 14123  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 14124  func (s *CreateMultipartUploadInput) SetExpectedBucketOwner(v string) *CreateMultipartUploadInput {
 14125  	s.ExpectedBucketOwner = &v
 14126  	return s
 14127  }
 14128  
 14129  // SetExpires sets the Expires field's value.
 14130  func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
 14131  	s.Expires = &v
 14132  	return s
 14133  }
 14134  
 14135  // SetGrantFullControl sets the GrantFullControl field's value.
 14136  func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
 14137  	s.GrantFullControl = &v
 14138  	return s
 14139  }
 14140  
 14141  // SetGrantRead sets the GrantRead field's value.
 14142  func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
 14143  	s.GrantRead = &v
 14144  	return s
 14145  }
 14146  
 14147  // SetGrantReadACP sets the GrantReadACP field's value.
 14148  func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
 14149  	s.GrantReadACP = &v
 14150  	return s
 14151  }
 14152  
 14153  // SetGrantWriteACP sets the GrantWriteACP field's value.
 14154  func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
 14155  	s.GrantWriteACP = &v
 14156  	return s
 14157  }
 14158  
 14159  // SetKey sets the Key field's value.
 14160  func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
 14161  	s.Key = &v
 14162  	return s
 14163  }
 14164  
 14165  // SetMetadata sets the Metadata field's value.
 14166  func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
 14167  	s.Metadata = v
 14168  	return s
 14169  }
 14170  
 14171  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 14172  func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
 14173  	s.ObjectLockLegalHoldStatus = &v
 14174  	return s
 14175  }
 14176  
 14177  // SetObjectLockMode sets the ObjectLockMode field's value.
 14178  func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
 14179  	s.ObjectLockMode = &v
 14180  	return s
 14181  }
 14182  
 14183  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 14184  func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
 14185  	s.ObjectLockRetainUntilDate = &v
 14186  	return s
 14187  }
 14188  
 14189  // SetRequestPayer sets the RequestPayer field's value.
 14190  func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
 14191  	s.RequestPayer = &v
 14192  	return s
 14193  }
 14194  
 14195  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 14196  func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
 14197  	s.SSECustomerAlgorithm = &v
 14198  	return s
 14199  }
 14200  
 14201  // SetSSECustomerKey sets the SSECustomerKey field's value.
 14202  func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
 14203  	s.SSECustomerKey = &v
 14204  	return s
 14205  }
 14206  
 14207  func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
 14208  	if s.SSECustomerKey == nil {
 14209  		return v
 14210  	}
 14211  	return *s.SSECustomerKey
 14212  }
 14213  
 14214  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 14215  func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
 14216  	s.SSECustomerKeyMD5 = &v
 14217  	return s
 14218  }
 14219  
 14220  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 14221  func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput {
 14222  	s.SSEKMSEncryptionContext = &v
 14223  	return s
 14224  }
 14225  
 14226  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 14227  func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
 14228  	s.SSEKMSKeyId = &v
 14229  	return s
 14230  }
 14231  
 14232  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 14233  func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
 14234  	s.ServerSideEncryption = &v
 14235  	return s
 14236  }
 14237  
 14238  // SetStorageClass sets the StorageClass field's value.
 14239  func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
 14240  	s.StorageClass = &v
 14241  	return s
 14242  }
 14243  
 14244  // SetTagging sets the Tagging field's value.
 14245  func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
 14246  	s.Tagging = &v
 14247  	return s
 14248  }
 14249  
 14250  // SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
 14251  func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
 14252  	s.WebsiteRedirectLocation = &v
 14253  	return s
 14254  }
 14255  
 14256  func (s *CreateMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
 14257  	if s.Bucket == nil {
 14258  		return nil, fmt.Errorf("member Bucket is nil")
 14259  	}
 14260  	return parseEndpointARN(*s.Bucket)
 14261  }
 14262  
 14263  func (s *CreateMultipartUploadInput) hasEndpointARN() bool {
 14264  	if s.Bucket == nil {
 14265  		return false
 14266  	}
 14267  	return arn.IsARN(*s.Bucket)
 14268  }
 14269  
 14270  // updateArnableField updates the value of the input field that
 14271  // takes an ARN as an input. This method is useful to backfill
 14272  // the parsed resource name from ARN into the input member.
 14273  // It returns a pointer to a modified copy of input and an error.
 14274  // Note that original input is not modified.
 14275  func (s CreateMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
 14276  	if s.Bucket == nil {
 14277  		return nil, fmt.Errorf("member Bucket is nil")
 14278  	}
 14279  	s.Bucket = aws.String(v)
 14280  	return &s, nil
 14281  }
 14282  
 14283  type CreateMultipartUploadOutput struct {
 14284  	_ struct{} `type:"structure"`
 14285  
 14286  	// If the bucket has a lifecycle rule configured with an action to abort incomplete
 14287  	// multipart uploads and the prefix in the lifecycle rule matches the object
 14288  	// name in the request, the response includes this header. The header indicates
 14289  	// when the initiated multipart upload becomes eligible for an abort operation.
 14290  	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
 14291  	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
 14292  	//
 14293  	// The response also includes the x-amz-abort-rule-id header that provides the
 14294  	// ID of the lifecycle configuration rule that defines this action.
 14295  	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
 14296  
 14297  	// This header is returned along with the x-amz-abort-date header. It identifies
 14298  	// the applicable lifecycle configuration rule that defines the action to abort
 14299  	// incomplete multipart uploads.
 14300  	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
 14301  
 14302  	// The name of the bucket to which the multipart upload was initiated. Does
 14303  	// not return the access point ARN or access point alias if used.
 14304  	//
 14305  	// When using this action with an access point, you must direct requests to
 14306  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 14307  	// When using this action with an access point through the Amazon Web Services
 14308  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 14309  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 14310  	// in the Amazon S3 User Guide.
 14311  	//
 14312  	// When using this action with Amazon S3 on Outposts, you must direct requests
 14313  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 14314  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 14315  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 14316  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 14317  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 14318  	// in the Amazon S3 User Guide.
 14319  	Bucket *string `locationName:"Bucket" type:"string"`
 14320  
 14321  	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
 14322  	// encryption with Amazon Web Services KMS (SSE-KMS).
 14323  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 14324  
 14325  	// Object key for which the multipart upload was initiated.
 14326  	Key *string `min:"1" type:"string"`
 14327  
 14328  	// If present, indicates that the requester was successfully charged for the
 14329  	// request.
 14330  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 14331  
 14332  	// If server-side encryption with a customer-provided encryption key was requested,
 14333  	// the response will include this header confirming the encryption algorithm
 14334  	// used.
 14335  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 14336  
 14337  	// If server-side encryption with a customer-provided encryption key was requested,
 14338  	// the response will include this header to provide round-trip message integrity
 14339  	// verification of the customer-provided encryption key.
 14340  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 14341  
 14342  	// If present, specifies the Amazon Web Services KMS Encryption Context to use
 14343  	// for object encryption. The value of this header is a base64-encoded UTF-8
 14344  	// string holding JSON with the encryption context key-value pairs.
 14345  	//
 14346  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 14347  	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
 14348  	// String and GoString methods.
 14349  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 14350  
 14351  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 14352  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 14353  	// the object.
 14354  	//
 14355  	// SSEKMSKeyId is a sensitive parameter and its value will be
 14356  	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
 14357  	// String and GoString methods.
 14358  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 14359  
 14360  	// The server-side encryption algorithm used when storing this object in Amazon
 14361  	// S3 (for example, AES256, aws:kms).
 14362  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 14363  
 14364  	// ID for the initiated multipart upload.
 14365  	UploadId *string `type:"string"`
 14366  }
 14367  
 14368  // String returns the string representation.
 14369  //
 14370  // API parameter values that are decorated as "sensitive" in the API will not
 14371  // be included in the string output. The member name will be present, but the
 14372  // value will be replaced with "sensitive".
 14373  func (s CreateMultipartUploadOutput) String() string {
 14374  	return awsutil.Prettify(s)
 14375  }
 14376  
 14377  // GoString returns the string representation.
 14378  //
 14379  // API parameter values that are decorated as "sensitive" in the API will not
 14380  // be included in the string output. The member name will be present, but the
 14381  // value will be replaced with "sensitive".
 14382  func (s CreateMultipartUploadOutput) GoString() string {
 14383  	return s.String()
 14384  }
 14385  
 14386  // SetAbortDate sets the AbortDate field's value.
 14387  func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
 14388  	s.AbortDate = &v
 14389  	return s
 14390  }
 14391  
 14392  // SetAbortRuleId sets the AbortRuleId field's value.
 14393  func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
 14394  	s.AbortRuleId = &v
 14395  	return s
 14396  }
 14397  
 14398  // SetBucket sets the Bucket field's value.
 14399  func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
 14400  	s.Bucket = &v
 14401  	return s
 14402  }
 14403  
 14404  func (s *CreateMultipartUploadOutput) getBucket() (v string) {
 14405  	if s.Bucket == nil {
 14406  		return v
 14407  	}
 14408  	return *s.Bucket
 14409  }
 14410  
 14411  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 14412  func (s *CreateMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadOutput {
 14413  	s.BucketKeyEnabled = &v
 14414  	return s
 14415  }
 14416  
 14417  // SetKey sets the Key field's value.
 14418  func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
 14419  	s.Key = &v
 14420  	return s
 14421  }
 14422  
 14423  // SetRequestCharged sets the RequestCharged field's value.
 14424  func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
 14425  	s.RequestCharged = &v
 14426  	return s
 14427  }
 14428  
 14429  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 14430  func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
 14431  	s.SSECustomerAlgorithm = &v
 14432  	return s
 14433  }
 14434  
 14435  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 14436  func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
 14437  	s.SSECustomerKeyMD5 = &v
 14438  	return s
 14439  }
 14440  
 14441  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 14442  func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput {
 14443  	s.SSEKMSEncryptionContext = &v
 14444  	return s
 14445  }
 14446  
 14447  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 14448  func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
 14449  	s.SSEKMSKeyId = &v
 14450  	return s
 14451  }
 14452  
 14453  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 14454  func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
 14455  	s.ServerSideEncryption = &v
 14456  	return s
 14457  }
 14458  
 14459  // SetUploadId sets the UploadId field's value.
 14460  func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
 14461  	s.UploadId = &v
 14462  	return s
 14463  }
 14464  
 14465  // The container element for specifying the default Object Lock retention settings
 14466  // for new objects placed in the specified bucket.
 14467  //
 14468  //    * The DefaultRetention settings require both a mode and a period.
 14469  //
 14470  //    * The DefaultRetention period can be either Days or Years but you must
 14471  //    select one. You cannot specify Days and Years at the same time.
 14472  type DefaultRetention struct {
 14473  	_ struct{} `type:"structure"`
 14474  
 14475  	// The number of days that you want to specify for the default retention period.
 14476  	// Must be used with Mode.
 14477  	Days *int64 `type:"integer"`
 14478  
 14479  	// The default Object Lock retention mode you want to apply to new objects placed
 14480  	// in the specified bucket. Must be used with either Days or Years.
 14481  	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
 14482  
 14483  	// The number of years that you want to specify for the default retention period.
 14484  	// Must be used with Mode.
 14485  	Years *int64 `type:"integer"`
 14486  }
 14487  
 14488  // String returns the string representation.
 14489  //
 14490  // API parameter values that are decorated as "sensitive" in the API will not
 14491  // be included in the string output. The member name will be present, but the
 14492  // value will be replaced with "sensitive".
 14493  func (s DefaultRetention) String() string {
 14494  	return awsutil.Prettify(s)
 14495  }
 14496  
 14497  // GoString returns the string representation.
 14498  //
 14499  // API parameter values that are decorated as "sensitive" in the API will not
 14500  // be included in the string output. The member name will be present, but the
 14501  // value will be replaced with "sensitive".
 14502  func (s DefaultRetention) GoString() string {
 14503  	return s.String()
 14504  }
 14505  
 14506  // SetDays sets the Days field's value.
 14507  func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
 14508  	s.Days = &v
 14509  	return s
 14510  }
 14511  
 14512  // SetMode sets the Mode field's value.
 14513  func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
 14514  	s.Mode = &v
 14515  	return s
 14516  }
 14517  
 14518  // SetYears sets the Years field's value.
 14519  func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
 14520  	s.Years = &v
 14521  	return s
 14522  }
 14523  
 14524  // Container for the objects to delete.
 14525  type Delete struct {
 14526  	_ struct{} `type:"structure"`
 14527  
 14528  	// The objects to delete.
 14529  	//
 14530  	// Objects is a required field
 14531  	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
 14532  
 14533  	// Element to enable quiet mode for the request. When you add this element,
 14534  	// you must set its value to true.
 14535  	Quiet *bool `type:"boolean"`
 14536  }
 14537  
 14538  // String returns the string representation.
 14539  //
 14540  // API parameter values that are decorated as "sensitive" in the API will not
 14541  // be included in the string output. The member name will be present, but the
 14542  // value will be replaced with "sensitive".
 14543  func (s Delete) String() string {
 14544  	return awsutil.Prettify(s)
 14545  }
 14546  
 14547  // GoString returns the string representation.
 14548  //
 14549  // API parameter values that are decorated as "sensitive" in the API will not
 14550  // be included in the string output. The member name will be present, but the
 14551  // value will be replaced with "sensitive".
 14552  func (s Delete) GoString() string {
 14553  	return s.String()
 14554  }
 14555  
 14556  // Validate inspects the fields of the type to determine if they are valid.
 14557  func (s *Delete) Validate() error {
 14558  	invalidParams := request.ErrInvalidParams{Context: "Delete"}
 14559  	if s.Objects == nil {
 14560  		invalidParams.Add(request.NewErrParamRequired("Objects"))
 14561  	}
 14562  	if s.Objects != nil {
 14563  		for i, v := range s.Objects {
 14564  			if v == nil {
 14565  				continue
 14566  			}
 14567  			if err := v.Validate(); err != nil {
 14568  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
 14569  			}
 14570  		}
 14571  	}
 14572  
 14573  	if invalidParams.Len() > 0 {
 14574  		return invalidParams
 14575  	}
 14576  	return nil
 14577  }
 14578  
 14579  // SetObjects sets the Objects field's value.
 14580  func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
 14581  	s.Objects = v
 14582  	return s
 14583  }
 14584  
 14585  // SetQuiet sets the Quiet field's value.
 14586  func (s *Delete) SetQuiet(v bool) *Delete {
 14587  	s.Quiet = &v
 14588  	return s
 14589  }
 14590  
 14591  type DeleteBucketAnalyticsConfigurationInput struct {
 14592  	_ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"`
 14593  
 14594  	// The name of the bucket from which an analytics configuration is deleted.
 14595  	//
 14596  	// Bucket is a required field
 14597  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 14598  
 14599  	// The account ID of the expected bucket owner. If the bucket is owned by a
 14600  	// different account, the request will fail with an HTTP 403 (Access Denied)
 14601  	// error.
 14602  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 14603  
 14604  	// The ID that identifies the analytics configuration.
 14605  	//
 14606  	// Id is a required field
 14607  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 14608  }
 14609  
 14610  // String returns the string representation.
 14611  //
 14612  // API parameter values that are decorated as "sensitive" in the API will not
 14613  // be included in the string output. The member name will be present, but the
 14614  // value will be replaced with "sensitive".
 14615  func (s DeleteBucketAnalyticsConfigurationInput) String() string {
 14616  	return awsutil.Prettify(s)
 14617  }
 14618  
 14619  // GoString returns the string representation.
 14620  //
 14621  // API parameter values that are decorated as "sensitive" in the API will not
 14622  // be included in the string output. The member name will be present, but the
 14623  // value will be replaced with "sensitive".
 14624  func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
 14625  	return s.String()
 14626  }
 14627  
 14628  // Validate inspects the fields of the type to determine if they are valid.
 14629  func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
 14630  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
 14631  	if s.Bucket == nil {
 14632  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 14633  	}
 14634  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 14635  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 14636  	}
 14637  	if s.Id == nil {
 14638  		invalidParams.Add(request.NewErrParamRequired("Id"))
 14639  	}
 14640  
 14641  	if invalidParams.Len() > 0 {
 14642  		return invalidParams
 14643  	}
 14644  	return nil
 14645  }
 14646  
 14647  // SetBucket sets the Bucket field's value.
 14648  func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
 14649  	s.Bucket = &v
 14650  	return s
 14651  }
 14652  
 14653  func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
 14654  	if s.Bucket == nil {
 14655  		return v
 14656  	}
 14657  	return *s.Bucket
 14658  }
 14659  
 14660  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 14661  func (s *DeleteBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketAnalyticsConfigurationInput {
 14662  	s.ExpectedBucketOwner = &v
 14663  	return s
 14664  }
 14665  
 14666  // SetId sets the Id field's value.
 14667  func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
 14668  	s.Id = &v
 14669  	return s
 14670  }
 14671  
 14672  func (s *DeleteBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 14673  	if s.Bucket == nil {
 14674  		return nil, fmt.Errorf("member Bucket is nil")
 14675  	}
 14676  	return parseEndpointARN(*s.Bucket)
 14677  }
 14678  
 14679  func (s *DeleteBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
 14680  	if s.Bucket == nil {
 14681  		return false
 14682  	}
 14683  	return arn.IsARN(*s.Bucket)
 14684  }
 14685  
 14686  // updateArnableField updates the value of the input field that
 14687  // takes an ARN as an input. This method is useful to backfill
 14688  // the parsed resource name from ARN into the input member.
 14689  // It returns a pointer to a modified copy of input and an error.
 14690  // Note that original input is not modified.
 14691  func (s DeleteBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 14692  	if s.Bucket == nil {
 14693  		return nil, fmt.Errorf("member Bucket is nil")
 14694  	}
 14695  	s.Bucket = aws.String(v)
 14696  	return &s, nil
 14697  }
 14698  
 14699  type DeleteBucketAnalyticsConfigurationOutput struct {
 14700  	_ struct{} `type:"structure"`
 14701  }
 14702  
 14703  // String returns the string representation.
 14704  //
 14705  // API parameter values that are decorated as "sensitive" in the API will not
 14706  // be included in the string output. The member name will be present, but the
 14707  // value will be replaced with "sensitive".
 14708  func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
 14709  	return awsutil.Prettify(s)
 14710  }
 14711  
 14712  // GoString returns the string representation.
 14713  //
 14714  // API parameter values that are decorated as "sensitive" in the API will not
 14715  // be included in the string output. The member name will be present, but the
 14716  // value will be replaced with "sensitive".
 14717  func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
 14718  	return s.String()
 14719  }
 14720  
 14721  type DeleteBucketCorsInput struct {
 14722  	_ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"`
 14723  
 14724  	// Specifies the bucket whose cors configuration is being deleted.
 14725  	//
 14726  	// Bucket is a required field
 14727  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 14728  
 14729  	// The account ID of the expected bucket owner. If the bucket is owned by a
 14730  	// different account, the request will fail with an HTTP 403 (Access Denied)
 14731  	// error.
 14732  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 14733  }
 14734  
 14735  // String returns the string representation.
 14736  //
 14737  // API parameter values that are decorated as "sensitive" in the API will not
 14738  // be included in the string output. The member name will be present, but the
 14739  // value will be replaced with "sensitive".
 14740  func (s DeleteBucketCorsInput) String() string {
 14741  	return awsutil.Prettify(s)
 14742  }
 14743  
 14744  // GoString returns the string representation.
 14745  //
 14746  // API parameter values that are decorated as "sensitive" in the API will not
 14747  // be included in the string output. The member name will be present, but the
 14748  // value will be replaced with "sensitive".
 14749  func (s DeleteBucketCorsInput) GoString() string {
 14750  	return s.String()
 14751  }
 14752  
 14753  // Validate inspects the fields of the type to determine if they are valid.
 14754  func (s *DeleteBucketCorsInput) Validate() error {
 14755  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
 14756  	if s.Bucket == nil {
 14757  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 14758  	}
 14759  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 14760  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 14761  	}
 14762  
 14763  	if invalidParams.Len() > 0 {
 14764  		return invalidParams
 14765  	}
 14766  	return nil
 14767  }
 14768  
 14769  // SetBucket sets the Bucket field's value.
 14770  func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
 14771  	s.Bucket = &v
 14772  	return s
 14773  }
 14774  
 14775  func (s *DeleteBucketCorsInput) getBucket() (v string) {
 14776  	if s.Bucket == nil {
 14777  		return v
 14778  	}
 14779  	return *s.Bucket
 14780  }
 14781  
 14782  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 14783  func (s *DeleteBucketCorsInput) SetExpectedBucketOwner(v string) *DeleteBucketCorsInput {
 14784  	s.ExpectedBucketOwner = &v
 14785  	return s
 14786  }
 14787  
 14788  func (s *DeleteBucketCorsInput) getEndpointARN() (arn.Resource, error) {
 14789  	if s.Bucket == nil {
 14790  		return nil, fmt.Errorf("member Bucket is nil")
 14791  	}
 14792  	return parseEndpointARN(*s.Bucket)
 14793  }
 14794  
 14795  func (s *DeleteBucketCorsInput) hasEndpointARN() bool {
 14796  	if s.Bucket == nil {
 14797  		return false
 14798  	}
 14799  	return arn.IsARN(*s.Bucket)
 14800  }
 14801  
 14802  // updateArnableField updates the value of the input field that
 14803  // takes an ARN as an input. This method is useful to backfill
 14804  // the parsed resource name from ARN into the input member.
 14805  // It returns a pointer to a modified copy of input and an error.
 14806  // Note that original input is not modified.
 14807  func (s DeleteBucketCorsInput) updateArnableField(v string) (interface{}, error) {
 14808  	if s.Bucket == nil {
 14809  		return nil, fmt.Errorf("member Bucket is nil")
 14810  	}
 14811  	s.Bucket = aws.String(v)
 14812  	return &s, nil
 14813  }
 14814  
 14815  type DeleteBucketCorsOutput struct {
 14816  	_ struct{} `type:"structure"`
 14817  }
 14818  
 14819  // String returns the string representation.
 14820  //
 14821  // API parameter values that are decorated as "sensitive" in the API will not
 14822  // be included in the string output. The member name will be present, but the
 14823  // value will be replaced with "sensitive".
 14824  func (s DeleteBucketCorsOutput) String() string {
 14825  	return awsutil.Prettify(s)
 14826  }
 14827  
 14828  // GoString returns the string representation.
 14829  //
 14830  // API parameter values that are decorated as "sensitive" in the API will not
 14831  // be included in the string output. The member name will be present, but the
 14832  // value will be replaced with "sensitive".
 14833  func (s DeleteBucketCorsOutput) GoString() string {
 14834  	return s.String()
 14835  }
 14836  
 14837  type DeleteBucketEncryptionInput struct {
 14838  	_ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"`
 14839  
 14840  	// The name of the bucket containing the server-side encryption configuration
 14841  	// to delete.
 14842  	//
 14843  	// Bucket is a required field
 14844  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 14845  
 14846  	// The account ID of the expected bucket owner. If the bucket is owned by a
 14847  	// different account, the request will fail with an HTTP 403 (Access Denied)
 14848  	// error.
 14849  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 14850  }
 14851  
 14852  // String returns the string representation.
 14853  //
 14854  // API parameter values that are decorated as "sensitive" in the API will not
 14855  // be included in the string output. The member name will be present, but the
 14856  // value will be replaced with "sensitive".
 14857  func (s DeleteBucketEncryptionInput) String() string {
 14858  	return awsutil.Prettify(s)
 14859  }
 14860  
 14861  // GoString returns the string representation.
 14862  //
 14863  // API parameter values that are decorated as "sensitive" in the API will not
 14864  // be included in the string output. The member name will be present, but the
 14865  // value will be replaced with "sensitive".
 14866  func (s DeleteBucketEncryptionInput) GoString() string {
 14867  	return s.String()
 14868  }
 14869  
 14870  // Validate inspects the fields of the type to determine if they are valid.
 14871  func (s *DeleteBucketEncryptionInput) Validate() error {
 14872  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
 14873  	if s.Bucket == nil {
 14874  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 14875  	}
 14876  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 14877  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 14878  	}
 14879  
 14880  	if invalidParams.Len() > 0 {
 14881  		return invalidParams
 14882  	}
 14883  	return nil
 14884  }
 14885  
 14886  // SetBucket sets the Bucket field's value.
 14887  func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
 14888  	s.Bucket = &v
 14889  	return s
 14890  }
 14891  
 14892  func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
 14893  	if s.Bucket == nil {
 14894  		return v
 14895  	}
 14896  	return *s.Bucket
 14897  }
 14898  
 14899  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 14900  func (s *DeleteBucketEncryptionInput) SetExpectedBucketOwner(v string) *DeleteBucketEncryptionInput {
 14901  	s.ExpectedBucketOwner = &v
 14902  	return s
 14903  }
 14904  
 14905  func (s *DeleteBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
 14906  	if s.Bucket == nil {
 14907  		return nil, fmt.Errorf("member Bucket is nil")
 14908  	}
 14909  	return parseEndpointARN(*s.Bucket)
 14910  }
 14911  
 14912  func (s *DeleteBucketEncryptionInput) hasEndpointARN() bool {
 14913  	if s.Bucket == nil {
 14914  		return false
 14915  	}
 14916  	return arn.IsARN(*s.Bucket)
 14917  }
 14918  
 14919  // updateArnableField updates the value of the input field that
 14920  // takes an ARN as an input. This method is useful to backfill
 14921  // the parsed resource name from ARN into the input member.
 14922  // It returns a pointer to a modified copy of input and an error.
 14923  // Note that original input is not modified.
 14924  func (s DeleteBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
 14925  	if s.Bucket == nil {
 14926  		return nil, fmt.Errorf("member Bucket is nil")
 14927  	}
 14928  	s.Bucket = aws.String(v)
 14929  	return &s, nil
 14930  }
 14931  
 14932  type DeleteBucketEncryptionOutput struct {
 14933  	_ struct{} `type:"structure"`
 14934  }
 14935  
 14936  // String returns the string representation.
 14937  //
 14938  // API parameter values that are decorated as "sensitive" in the API will not
 14939  // be included in the string output. The member name will be present, but the
 14940  // value will be replaced with "sensitive".
 14941  func (s DeleteBucketEncryptionOutput) String() string {
 14942  	return awsutil.Prettify(s)
 14943  }
 14944  
 14945  // GoString returns the string representation.
 14946  //
 14947  // API parameter values that are decorated as "sensitive" in the API will not
 14948  // be included in the string output. The member name will be present, but the
 14949  // value will be replaced with "sensitive".
 14950  func (s DeleteBucketEncryptionOutput) GoString() string {
 14951  	return s.String()
 14952  }
 14953  
 14954  type DeleteBucketInput struct {
 14955  	_ struct{} `locationName:"DeleteBucketRequest" type:"structure"`
 14956  
 14957  	// Specifies the bucket being deleted.
 14958  	//
 14959  	// Bucket is a required field
 14960  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 14961  
 14962  	// The account ID of the expected bucket owner. If the bucket is owned by a
 14963  	// different account, the request will fail with an HTTP 403 (Access Denied)
 14964  	// error.
 14965  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 14966  }
 14967  
 14968  // String returns the string representation.
 14969  //
 14970  // API parameter values that are decorated as "sensitive" in the API will not
 14971  // be included in the string output. The member name will be present, but the
 14972  // value will be replaced with "sensitive".
 14973  func (s DeleteBucketInput) String() string {
 14974  	return awsutil.Prettify(s)
 14975  }
 14976  
 14977  // GoString returns the string representation.
 14978  //
 14979  // API parameter values that are decorated as "sensitive" in the API will not
 14980  // be included in the string output. The member name will be present, but the
 14981  // value will be replaced with "sensitive".
 14982  func (s DeleteBucketInput) GoString() string {
 14983  	return s.String()
 14984  }
 14985  
 14986  // Validate inspects the fields of the type to determine if they are valid.
 14987  func (s *DeleteBucketInput) Validate() error {
 14988  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
 14989  	if s.Bucket == nil {
 14990  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 14991  	}
 14992  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 14993  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 14994  	}
 14995  
 14996  	if invalidParams.Len() > 0 {
 14997  		return invalidParams
 14998  	}
 14999  	return nil
 15000  }
 15001  
 15002  // SetBucket sets the Bucket field's value.
 15003  func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
 15004  	s.Bucket = &v
 15005  	return s
 15006  }
 15007  
 15008  func (s *DeleteBucketInput) getBucket() (v string) {
 15009  	if s.Bucket == nil {
 15010  		return v
 15011  	}
 15012  	return *s.Bucket
 15013  }
 15014  
 15015  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15016  func (s *DeleteBucketInput) SetExpectedBucketOwner(v string) *DeleteBucketInput {
 15017  	s.ExpectedBucketOwner = &v
 15018  	return s
 15019  }
 15020  
 15021  func (s *DeleteBucketInput) getEndpointARN() (arn.Resource, error) {
 15022  	if s.Bucket == nil {
 15023  		return nil, fmt.Errorf("member Bucket is nil")
 15024  	}
 15025  	return parseEndpointARN(*s.Bucket)
 15026  }
 15027  
 15028  func (s *DeleteBucketInput) hasEndpointARN() bool {
 15029  	if s.Bucket == nil {
 15030  		return false
 15031  	}
 15032  	return arn.IsARN(*s.Bucket)
 15033  }
 15034  
 15035  // updateArnableField updates the value of the input field that
 15036  // takes an ARN as an input. This method is useful to backfill
 15037  // the parsed resource name from ARN into the input member.
 15038  // It returns a pointer to a modified copy of input and an error.
 15039  // Note that original input is not modified.
 15040  func (s DeleteBucketInput) updateArnableField(v string) (interface{}, error) {
 15041  	if s.Bucket == nil {
 15042  		return nil, fmt.Errorf("member Bucket is nil")
 15043  	}
 15044  	s.Bucket = aws.String(v)
 15045  	return &s, nil
 15046  }
 15047  
 15048  type DeleteBucketIntelligentTieringConfigurationInput struct {
 15049  	_ struct{} `locationName:"DeleteBucketIntelligentTieringConfigurationRequest" type:"structure"`
 15050  
 15051  	// The name of the Amazon S3 bucket whose configuration you want to modify or
 15052  	// retrieve.
 15053  	//
 15054  	// Bucket is a required field
 15055  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15056  
 15057  	// The ID used to identify the S3 Intelligent-Tiering configuration.
 15058  	//
 15059  	// Id is a required field
 15060  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 15061  }
 15062  
 15063  // String returns the string representation.
 15064  //
 15065  // API parameter values that are decorated as "sensitive" in the API will not
 15066  // be included in the string output. The member name will be present, but the
 15067  // value will be replaced with "sensitive".
 15068  func (s DeleteBucketIntelligentTieringConfigurationInput) String() string {
 15069  	return awsutil.Prettify(s)
 15070  }
 15071  
 15072  // GoString returns the string representation.
 15073  //
 15074  // API parameter values that are decorated as "sensitive" in the API will not
 15075  // be included in the string output. The member name will be present, but the
 15076  // value will be replaced with "sensitive".
 15077  func (s DeleteBucketIntelligentTieringConfigurationInput) GoString() string {
 15078  	return s.String()
 15079  }
 15080  
 15081  // Validate inspects the fields of the type to determine if they are valid.
 15082  func (s *DeleteBucketIntelligentTieringConfigurationInput) Validate() error {
 15083  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketIntelligentTieringConfigurationInput"}
 15084  	if s.Bucket == nil {
 15085  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15086  	}
 15087  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15088  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15089  	}
 15090  	if s.Id == nil {
 15091  		invalidParams.Add(request.NewErrParamRequired("Id"))
 15092  	}
 15093  
 15094  	if invalidParams.Len() > 0 {
 15095  		return invalidParams
 15096  	}
 15097  	return nil
 15098  }
 15099  
 15100  // SetBucket sets the Bucket field's value.
 15101  func (s *DeleteBucketIntelligentTieringConfigurationInput) SetBucket(v string) *DeleteBucketIntelligentTieringConfigurationInput {
 15102  	s.Bucket = &v
 15103  	return s
 15104  }
 15105  
 15106  func (s *DeleteBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
 15107  	if s.Bucket == nil {
 15108  		return v
 15109  	}
 15110  	return *s.Bucket
 15111  }
 15112  
 15113  // SetId sets the Id field's value.
 15114  func (s *DeleteBucketIntelligentTieringConfigurationInput) SetId(v string) *DeleteBucketIntelligentTieringConfigurationInput {
 15115  	s.Id = &v
 15116  	return s
 15117  }
 15118  
 15119  func (s *DeleteBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
 15120  	if s.Bucket == nil {
 15121  		return nil, fmt.Errorf("member Bucket is nil")
 15122  	}
 15123  	return parseEndpointARN(*s.Bucket)
 15124  }
 15125  
 15126  func (s *DeleteBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
 15127  	if s.Bucket == nil {
 15128  		return false
 15129  	}
 15130  	return arn.IsARN(*s.Bucket)
 15131  }
 15132  
 15133  // updateArnableField updates the value of the input field that
 15134  // takes an ARN as an input. This method is useful to backfill
 15135  // the parsed resource name from ARN into the input member.
 15136  // It returns a pointer to a modified copy of input and an error.
 15137  // Note that original input is not modified.
 15138  func (s DeleteBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
 15139  	if s.Bucket == nil {
 15140  		return nil, fmt.Errorf("member Bucket is nil")
 15141  	}
 15142  	s.Bucket = aws.String(v)
 15143  	return &s, nil
 15144  }
 15145  
 15146  type DeleteBucketIntelligentTieringConfigurationOutput struct {
 15147  	_ struct{} `type:"structure"`
 15148  }
 15149  
 15150  // String returns the string representation.
 15151  //
 15152  // API parameter values that are decorated as "sensitive" in the API will not
 15153  // be included in the string output. The member name will be present, but the
 15154  // value will be replaced with "sensitive".
 15155  func (s DeleteBucketIntelligentTieringConfigurationOutput) String() string {
 15156  	return awsutil.Prettify(s)
 15157  }
 15158  
 15159  // GoString returns the string representation.
 15160  //
 15161  // API parameter values that are decorated as "sensitive" in the API will not
 15162  // be included in the string output. The member name will be present, but the
 15163  // value will be replaced with "sensitive".
 15164  func (s DeleteBucketIntelligentTieringConfigurationOutput) GoString() string {
 15165  	return s.String()
 15166  }
 15167  
 15168  type DeleteBucketInventoryConfigurationInput struct {
 15169  	_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
 15170  
 15171  	// The name of the bucket containing the inventory configuration to delete.
 15172  	//
 15173  	// Bucket is a required field
 15174  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15175  
 15176  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15177  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15178  	// error.
 15179  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15180  
 15181  	// The ID used to identify the inventory configuration.
 15182  	//
 15183  	// Id is a required field
 15184  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 15185  }
 15186  
 15187  // String returns the string representation.
 15188  //
 15189  // API parameter values that are decorated as "sensitive" in the API will not
 15190  // be included in the string output. The member name will be present, but the
 15191  // value will be replaced with "sensitive".
 15192  func (s DeleteBucketInventoryConfigurationInput) String() string {
 15193  	return awsutil.Prettify(s)
 15194  }
 15195  
 15196  // GoString returns the string representation.
 15197  //
 15198  // API parameter values that are decorated as "sensitive" in the API will not
 15199  // be included in the string output. The member name will be present, but the
 15200  // value will be replaced with "sensitive".
 15201  func (s DeleteBucketInventoryConfigurationInput) GoString() string {
 15202  	return s.String()
 15203  }
 15204  
 15205  // Validate inspects the fields of the type to determine if they are valid.
 15206  func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
 15207  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
 15208  	if s.Bucket == nil {
 15209  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15210  	}
 15211  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15212  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15213  	}
 15214  	if s.Id == nil {
 15215  		invalidParams.Add(request.NewErrParamRequired("Id"))
 15216  	}
 15217  
 15218  	if invalidParams.Len() > 0 {
 15219  		return invalidParams
 15220  	}
 15221  	return nil
 15222  }
 15223  
 15224  // SetBucket sets the Bucket field's value.
 15225  func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
 15226  	s.Bucket = &v
 15227  	return s
 15228  }
 15229  
 15230  func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
 15231  	if s.Bucket == nil {
 15232  		return v
 15233  	}
 15234  	return *s.Bucket
 15235  }
 15236  
 15237  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15238  func (s *DeleteBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketInventoryConfigurationInput {
 15239  	s.ExpectedBucketOwner = &v
 15240  	return s
 15241  }
 15242  
 15243  // SetId sets the Id field's value.
 15244  func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
 15245  	s.Id = &v
 15246  	return s
 15247  }
 15248  
 15249  func (s *DeleteBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
 15250  	if s.Bucket == nil {
 15251  		return nil, fmt.Errorf("member Bucket is nil")
 15252  	}
 15253  	return parseEndpointARN(*s.Bucket)
 15254  }
 15255  
 15256  func (s *DeleteBucketInventoryConfigurationInput) hasEndpointARN() bool {
 15257  	if s.Bucket == nil {
 15258  		return false
 15259  	}
 15260  	return arn.IsARN(*s.Bucket)
 15261  }
 15262  
 15263  // updateArnableField updates the value of the input field that
 15264  // takes an ARN as an input. This method is useful to backfill
 15265  // the parsed resource name from ARN into the input member.
 15266  // It returns a pointer to a modified copy of input and an error.
 15267  // Note that original input is not modified.
 15268  func (s DeleteBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
 15269  	if s.Bucket == nil {
 15270  		return nil, fmt.Errorf("member Bucket is nil")
 15271  	}
 15272  	s.Bucket = aws.String(v)
 15273  	return &s, nil
 15274  }
 15275  
 15276  type DeleteBucketInventoryConfigurationOutput struct {
 15277  	_ struct{} `type:"structure"`
 15278  }
 15279  
 15280  // String returns the string representation.
 15281  //
 15282  // API parameter values that are decorated as "sensitive" in the API will not
 15283  // be included in the string output. The member name will be present, but the
 15284  // value will be replaced with "sensitive".
 15285  func (s DeleteBucketInventoryConfigurationOutput) String() string {
 15286  	return awsutil.Prettify(s)
 15287  }
 15288  
 15289  // GoString returns the string representation.
 15290  //
 15291  // API parameter values that are decorated as "sensitive" in the API will not
 15292  // be included in the string output. The member name will be present, but the
 15293  // value will be replaced with "sensitive".
 15294  func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
 15295  	return s.String()
 15296  }
 15297  
 15298  type DeleteBucketLifecycleInput struct {
 15299  	_ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"`
 15300  
 15301  	// The bucket name of the lifecycle to delete.
 15302  	//
 15303  	// Bucket is a required field
 15304  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15305  
 15306  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15307  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15308  	// error.
 15309  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15310  }
 15311  
 15312  // String returns the string representation.
 15313  //
 15314  // API parameter values that are decorated as "sensitive" in the API will not
 15315  // be included in the string output. The member name will be present, but the
 15316  // value will be replaced with "sensitive".
 15317  func (s DeleteBucketLifecycleInput) String() string {
 15318  	return awsutil.Prettify(s)
 15319  }
 15320  
 15321  // GoString returns the string representation.
 15322  //
 15323  // API parameter values that are decorated as "sensitive" in the API will not
 15324  // be included in the string output. The member name will be present, but the
 15325  // value will be replaced with "sensitive".
 15326  func (s DeleteBucketLifecycleInput) GoString() string {
 15327  	return s.String()
 15328  }
 15329  
 15330  // Validate inspects the fields of the type to determine if they are valid.
 15331  func (s *DeleteBucketLifecycleInput) Validate() error {
 15332  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
 15333  	if s.Bucket == nil {
 15334  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15335  	}
 15336  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15337  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15338  	}
 15339  
 15340  	if invalidParams.Len() > 0 {
 15341  		return invalidParams
 15342  	}
 15343  	return nil
 15344  }
 15345  
 15346  // SetBucket sets the Bucket field's value.
 15347  func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
 15348  	s.Bucket = &v
 15349  	return s
 15350  }
 15351  
 15352  func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
 15353  	if s.Bucket == nil {
 15354  		return v
 15355  	}
 15356  	return *s.Bucket
 15357  }
 15358  
 15359  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15360  func (s *DeleteBucketLifecycleInput) SetExpectedBucketOwner(v string) *DeleteBucketLifecycleInput {
 15361  	s.ExpectedBucketOwner = &v
 15362  	return s
 15363  }
 15364  
 15365  func (s *DeleteBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
 15366  	if s.Bucket == nil {
 15367  		return nil, fmt.Errorf("member Bucket is nil")
 15368  	}
 15369  	return parseEndpointARN(*s.Bucket)
 15370  }
 15371  
 15372  func (s *DeleteBucketLifecycleInput) hasEndpointARN() bool {
 15373  	if s.Bucket == nil {
 15374  		return false
 15375  	}
 15376  	return arn.IsARN(*s.Bucket)
 15377  }
 15378  
 15379  // updateArnableField updates the value of the input field that
 15380  // takes an ARN as an input. This method is useful to backfill
 15381  // the parsed resource name from ARN into the input member.
 15382  // It returns a pointer to a modified copy of input and an error.
 15383  // Note that original input is not modified.
 15384  func (s DeleteBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
 15385  	if s.Bucket == nil {
 15386  		return nil, fmt.Errorf("member Bucket is nil")
 15387  	}
 15388  	s.Bucket = aws.String(v)
 15389  	return &s, nil
 15390  }
 15391  
 15392  type DeleteBucketLifecycleOutput struct {
 15393  	_ struct{} `type:"structure"`
 15394  }
 15395  
 15396  // String returns the string representation.
 15397  //
 15398  // API parameter values that are decorated as "sensitive" in the API will not
 15399  // be included in the string output. The member name will be present, but the
 15400  // value will be replaced with "sensitive".
 15401  func (s DeleteBucketLifecycleOutput) String() string {
 15402  	return awsutil.Prettify(s)
 15403  }
 15404  
 15405  // GoString returns the string representation.
 15406  //
 15407  // API parameter values that are decorated as "sensitive" in the API will not
 15408  // be included in the string output. The member name will be present, but the
 15409  // value will be replaced with "sensitive".
 15410  func (s DeleteBucketLifecycleOutput) GoString() string {
 15411  	return s.String()
 15412  }
 15413  
 15414  type DeleteBucketMetricsConfigurationInput struct {
 15415  	_ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"`
 15416  
 15417  	// The name of the bucket containing the metrics configuration to delete.
 15418  	//
 15419  	// Bucket is a required field
 15420  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15421  
 15422  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15423  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15424  	// error.
 15425  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15426  
 15427  	// The ID used to identify the metrics configuration.
 15428  	//
 15429  	// Id is a required field
 15430  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 15431  }
 15432  
 15433  // String returns the string representation.
 15434  //
 15435  // API parameter values that are decorated as "sensitive" in the API will not
 15436  // be included in the string output. The member name will be present, but the
 15437  // value will be replaced with "sensitive".
 15438  func (s DeleteBucketMetricsConfigurationInput) String() string {
 15439  	return awsutil.Prettify(s)
 15440  }
 15441  
 15442  // GoString returns the string representation.
 15443  //
 15444  // API parameter values that are decorated as "sensitive" in the API will not
 15445  // be included in the string output. The member name will be present, but the
 15446  // value will be replaced with "sensitive".
 15447  func (s DeleteBucketMetricsConfigurationInput) GoString() string {
 15448  	return s.String()
 15449  }
 15450  
 15451  // Validate inspects the fields of the type to determine if they are valid.
 15452  func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
 15453  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
 15454  	if s.Bucket == nil {
 15455  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15456  	}
 15457  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15458  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15459  	}
 15460  	if s.Id == nil {
 15461  		invalidParams.Add(request.NewErrParamRequired("Id"))
 15462  	}
 15463  
 15464  	if invalidParams.Len() > 0 {
 15465  		return invalidParams
 15466  	}
 15467  	return nil
 15468  }
 15469  
 15470  // SetBucket sets the Bucket field's value.
 15471  func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
 15472  	s.Bucket = &v
 15473  	return s
 15474  }
 15475  
 15476  func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
 15477  	if s.Bucket == nil {
 15478  		return v
 15479  	}
 15480  	return *s.Bucket
 15481  }
 15482  
 15483  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15484  func (s *DeleteBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketMetricsConfigurationInput {
 15485  	s.ExpectedBucketOwner = &v
 15486  	return s
 15487  }
 15488  
 15489  // SetId sets the Id field's value.
 15490  func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
 15491  	s.Id = &v
 15492  	return s
 15493  }
 15494  
 15495  func (s *DeleteBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 15496  	if s.Bucket == nil {
 15497  		return nil, fmt.Errorf("member Bucket is nil")
 15498  	}
 15499  	return parseEndpointARN(*s.Bucket)
 15500  }
 15501  
 15502  func (s *DeleteBucketMetricsConfigurationInput) hasEndpointARN() bool {
 15503  	if s.Bucket == nil {
 15504  		return false
 15505  	}
 15506  	return arn.IsARN(*s.Bucket)
 15507  }
 15508  
 15509  // updateArnableField updates the value of the input field that
 15510  // takes an ARN as an input. This method is useful to backfill
 15511  // the parsed resource name from ARN into the input member.
 15512  // It returns a pointer to a modified copy of input and an error.
 15513  // Note that original input is not modified.
 15514  func (s DeleteBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 15515  	if s.Bucket == nil {
 15516  		return nil, fmt.Errorf("member Bucket is nil")
 15517  	}
 15518  	s.Bucket = aws.String(v)
 15519  	return &s, nil
 15520  }
 15521  
 15522  type DeleteBucketMetricsConfigurationOutput struct {
 15523  	_ struct{} `type:"structure"`
 15524  }
 15525  
 15526  // String returns the string representation.
 15527  //
 15528  // API parameter values that are decorated as "sensitive" in the API will not
 15529  // be included in the string output. The member name will be present, but the
 15530  // value will be replaced with "sensitive".
 15531  func (s DeleteBucketMetricsConfigurationOutput) String() string {
 15532  	return awsutil.Prettify(s)
 15533  }
 15534  
 15535  // GoString returns the string representation.
 15536  //
 15537  // API parameter values that are decorated as "sensitive" in the API will not
 15538  // be included in the string output. The member name will be present, but the
 15539  // value will be replaced with "sensitive".
 15540  func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
 15541  	return s.String()
 15542  }
 15543  
 15544  type DeleteBucketOutput struct {
 15545  	_ struct{} `type:"structure"`
 15546  }
 15547  
 15548  // String returns the string representation.
 15549  //
 15550  // API parameter values that are decorated as "sensitive" in the API will not
 15551  // be included in the string output. The member name will be present, but the
 15552  // value will be replaced with "sensitive".
 15553  func (s DeleteBucketOutput) String() string {
 15554  	return awsutil.Prettify(s)
 15555  }
 15556  
 15557  // GoString returns the string representation.
 15558  //
 15559  // API parameter values that are decorated as "sensitive" in the API will not
 15560  // be included in the string output. The member name will be present, but the
 15561  // value will be replaced with "sensitive".
 15562  func (s DeleteBucketOutput) GoString() string {
 15563  	return s.String()
 15564  }
 15565  
 15566  type DeleteBucketOwnershipControlsInput struct {
 15567  	_ struct{} `locationName:"DeleteBucketOwnershipControlsRequest" type:"structure"`
 15568  
 15569  	// The Amazon S3 bucket whose OwnershipControls you want to delete.
 15570  	//
 15571  	// Bucket is a required field
 15572  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15573  
 15574  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15575  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15576  	// error.
 15577  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15578  }
 15579  
 15580  // String returns the string representation.
 15581  //
 15582  // API parameter values that are decorated as "sensitive" in the API will not
 15583  // be included in the string output. The member name will be present, but the
 15584  // value will be replaced with "sensitive".
 15585  func (s DeleteBucketOwnershipControlsInput) String() string {
 15586  	return awsutil.Prettify(s)
 15587  }
 15588  
 15589  // GoString returns the string representation.
 15590  //
 15591  // API parameter values that are decorated as "sensitive" in the API will not
 15592  // be included in the string output. The member name will be present, but the
 15593  // value will be replaced with "sensitive".
 15594  func (s DeleteBucketOwnershipControlsInput) GoString() string {
 15595  	return s.String()
 15596  }
 15597  
 15598  // Validate inspects the fields of the type to determine if they are valid.
 15599  func (s *DeleteBucketOwnershipControlsInput) Validate() error {
 15600  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketOwnershipControlsInput"}
 15601  	if s.Bucket == nil {
 15602  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15603  	}
 15604  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15605  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15606  	}
 15607  
 15608  	if invalidParams.Len() > 0 {
 15609  		return invalidParams
 15610  	}
 15611  	return nil
 15612  }
 15613  
 15614  // SetBucket sets the Bucket field's value.
 15615  func (s *DeleteBucketOwnershipControlsInput) SetBucket(v string) *DeleteBucketOwnershipControlsInput {
 15616  	s.Bucket = &v
 15617  	return s
 15618  }
 15619  
 15620  func (s *DeleteBucketOwnershipControlsInput) getBucket() (v string) {
 15621  	if s.Bucket == nil {
 15622  		return v
 15623  	}
 15624  	return *s.Bucket
 15625  }
 15626  
 15627  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15628  func (s *DeleteBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *DeleteBucketOwnershipControlsInput {
 15629  	s.ExpectedBucketOwner = &v
 15630  	return s
 15631  }
 15632  
 15633  func (s *DeleteBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
 15634  	if s.Bucket == nil {
 15635  		return nil, fmt.Errorf("member Bucket is nil")
 15636  	}
 15637  	return parseEndpointARN(*s.Bucket)
 15638  }
 15639  
 15640  func (s *DeleteBucketOwnershipControlsInput) hasEndpointARN() bool {
 15641  	if s.Bucket == nil {
 15642  		return false
 15643  	}
 15644  	return arn.IsARN(*s.Bucket)
 15645  }
 15646  
 15647  // updateArnableField updates the value of the input field that
 15648  // takes an ARN as an input. This method is useful to backfill
 15649  // the parsed resource name from ARN into the input member.
 15650  // It returns a pointer to a modified copy of input and an error.
 15651  // Note that original input is not modified.
 15652  func (s DeleteBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
 15653  	if s.Bucket == nil {
 15654  		return nil, fmt.Errorf("member Bucket is nil")
 15655  	}
 15656  	s.Bucket = aws.String(v)
 15657  	return &s, nil
 15658  }
 15659  
 15660  type DeleteBucketOwnershipControlsOutput struct {
 15661  	_ struct{} `type:"structure"`
 15662  }
 15663  
 15664  // String returns the string representation.
 15665  //
 15666  // API parameter values that are decorated as "sensitive" in the API will not
 15667  // be included in the string output. The member name will be present, but the
 15668  // value will be replaced with "sensitive".
 15669  func (s DeleteBucketOwnershipControlsOutput) String() string {
 15670  	return awsutil.Prettify(s)
 15671  }
 15672  
 15673  // GoString returns the string representation.
 15674  //
 15675  // API parameter values that are decorated as "sensitive" in the API will not
 15676  // be included in the string output. The member name will be present, but the
 15677  // value will be replaced with "sensitive".
 15678  func (s DeleteBucketOwnershipControlsOutput) GoString() string {
 15679  	return s.String()
 15680  }
 15681  
 15682  type DeleteBucketPolicyInput struct {
 15683  	_ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"`
 15684  
 15685  	// The bucket name.
 15686  	//
 15687  	// Bucket is a required field
 15688  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15689  
 15690  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15691  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15692  	// error.
 15693  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15694  }
 15695  
 15696  // String returns the string representation.
 15697  //
 15698  // API parameter values that are decorated as "sensitive" in the API will not
 15699  // be included in the string output. The member name will be present, but the
 15700  // value will be replaced with "sensitive".
 15701  func (s DeleteBucketPolicyInput) String() string {
 15702  	return awsutil.Prettify(s)
 15703  }
 15704  
 15705  // GoString returns the string representation.
 15706  //
 15707  // API parameter values that are decorated as "sensitive" in the API will not
 15708  // be included in the string output. The member name will be present, but the
 15709  // value will be replaced with "sensitive".
 15710  func (s DeleteBucketPolicyInput) GoString() string {
 15711  	return s.String()
 15712  }
 15713  
 15714  // Validate inspects the fields of the type to determine if they are valid.
 15715  func (s *DeleteBucketPolicyInput) Validate() error {
 15716  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
 15717  	if s.Bucket == nil {
 15718  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15719  	}
 15720  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15721  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15722  	}
 15723  
 15724  	if invalidParams.Len() > 0 {
 15725  		return invalidParams
 15726  	}
 15727  	return nil
 15728  }
 15729  
 15730  // SetBucket sets the Bucket field's value.
 15731  func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
 15732  	s.Bucket = &v
 15733  	return s
 15734  }
 15735  
 15736  func (s *DeleteBucketPolicyInput) getBucket() (v string) {
 15737  	if s.Bucket == nil {
 15738  		return v
 15739  	}
 15740  	return *s.Bucket
 15741  }
 15742  
 15743  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15744  func (s *DeleteBucketPolicyInput) SetExpectedBucketOwner(v string) *DeleteBucketPolicyInput {
 15745  	s.ExpectedBucketOwner = &v
 15746  	return s
 15747  }
 15748  
 15749  func (s *DeleteBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
 15750  	if s.Bucket == nil {
 15751  		return nil, fmt.Errorf("member Bucket is nil")
 15752  	}
 15753  	return parseEndpointARN(*s.Bucket)
 15754  }
 15755  
 15756  func (s *DeleteBucketPolicyInput) hasEndpointARN() bool {
 15757  	if s.Bucket == nil {
 15758  		return false
 15759  	}
 15760  	return arn.IsARN(*s.Bucket)
 15761  }
 15762  
 15763  // updateArnableField updates the value of the input field that
 15764  // takes an ARN as an input. This method is useful to backfill
 15765  // the parsed resource name from ARN into the input member.
 15766  // It returns a pointer to a modified copy of input and an error.
 15767  // Note that original input is not modified.
 15768  func (s DeleteBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
 15769  	if s.Bucket == nil {
 15770  		return nil, fmt.Errorf("member Bucket is nil")
 15771  	}
 15772  	s.Bucket = aws.String(v)
 15773  	return &s, nil
 15774  }
 15775  
 15776  type DeleteBucketPolicyOutput struct {
 15777  	_ struct{} `type:"structure"`
 15778  }
 15779  
 15780  // String returns the string representation.
 15781  //
 15782  // API parameter values that are decorated as "sensitive" in the API will not
 15783  // be included in the string output. The member name will be present, but the
 15784  // value will be replaced with "sensitive".
 15785  func (s DeleteBucketPolicyOutput) String() string {
 15786  	return awsutil.Prettify(s)
 15787  }
 15788  
 15789  // GoString returns the string representation.
 15790  //
 15791  // API parameter values that are decorated as "sensitive" in the API will not
 15792  // be included in the string output. The member name will be present, but the
 15793  // value will be replaced with "sensitive".
 15794  func (s DeleteBucketPolicyOutput) GoString() string {
 15795  	return s.String()
 15796  }
 15797  
 15798  type DeleteBucketReplicationInput struct {
 15799  	_ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"`
 15800  
 15801  	// The bucket name.
 15802  	//
 15803  	// Bucket is a required field
 15804  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15805  
 15806  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15807  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15808  	// error.
 15809  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15810  }
 15811  
 15812  // String returns the string representation.
 15813  //
 15814  // API parameter values that are decorated as "sensitive" in the API will not
 15815  // be included in the string output. The member name will be present, but the
 15816  // value will be replaced with "sensitive".
 15817  func (s DeleteBucketReplicationInput) String() string {
 15818  	return awsutil.Prettify(s)
 15819  }
 15820  
 15821  // GoString returns the string representation.
 15822  //
 15823  // API parameter values that are decorated as "sensitive" in the API will not
 15824  // be included in the string output. The member name will be present, but the
 15825  // value will be replaced with "sensitive".
 15826  func (s DeleteBucketReplicationInput) GoString() string {
 15827  	return s.String()
 15828  }
 15829  
 15830  // Validate inspects the fields of the type to determine if they are valid.
 15831  func (s *DeleteBucketReplicationInput) Validate() error {
 15832  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
 15833  	if s.Bucket == nil {
 15834  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15835  	}
 15836  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15837  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15838  	}
 15839  
 15840  	if invalidParams.Len() > 0 {
 15841  		return invalidParams
 15842  	}
 15843  	return nil
 15844  }
 15845  
 15846  // SetBucket sets the Bucket field's value.
 15847  func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
 15848  	s.Bucket = &v
 15849  	return s
 15850  }
 15851  
 15852  func (s *DeleteBucketReplicationInput) getBucket() (v string) {
 15853  	if s.Bucket == nil {
 15854  		return v
 15855  	}
 15856  	return *s.Bucket
 15857  }
 15858  
 15859  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15860  func (s *DeleteBucketReplicationInput) SetExpectedBucketOwner(v string) *DeleteBucketReplicationInput {
 15861  	s.ExpectedBucketOwner = &v
 15862  	return s
 15863  }
 15864  
 15865  func (s *DeleteBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
 15866  	if s.Bucket == nil {
 15867  		return nil, fmt.Errorf("member Bucket is nil")
 15868  	}
 15869  	return parseEndpointARN(*s.Bucket)
 15870  }
 15871  
 15872  func (s *DeleteBucketReplicationInput) hasEndpointARN() bool {
 15873  	if s.Bucket == nil {
 15874  		return false
 15875  	}
 15876  	return arn.IsARN(*s.Bucket)
 15877  }
 15878  
 15879  // updateArnableField updates the value of the input field that
 15880  // takes an ARN as an input. This method is useful to backfill
 15881  // the parsed resource name from ARN into the input member.
 15882  // It returns a pointer to a modified copy of input and an error.
 15883  // Note that original input is not modified.
 15884  func (s DeleteBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
 15885  	if s.Bucket == nil {
 15886  		return nil, fmt.Errorf("member Bucket is nil")
 15887  	}
 15888  	s.Bucket = aws.String(v)
 15889  	return &s, nil
 15890  }
 15891  
 15892  type DeleteBucketReplicationOutput struct {
 15893  	_ struct{} `type:"structure"`
 15894  }
 15895  
 15896  // String returns the string representation.
 15897  //
 15898  // API parameter values that are decorated as "sensitive" in the API will not
 15899  // be included in the string output. The member name will be present, but the
 15900  // value will be replaced with "sensitive".
 15901  func (s DeleteBucketReplicationOutput) String() string {
 15902  	return awsutil.Prettify(s)
 15903  }
 15904  
 15905  // GoString returns the string representation.
 15906  //
 15907  // API parameter values that are decorated as "sensitive" in the API will not
 15908  // be included in the string output. The member name will be present, but the
 15909  // value will be replaced with "sensitive".
 15910  func (s DeleteBucketReplicationOutput) GoString() string {
 15911  	return s.String()
 15912  }
 15913  
 15914  type DeleteBucketTaggingInput struct {
 15915  	_ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"`
 15916  
 15917  	// The bucket that has the tag set to be removed.
 15918  	//
 15919  	// Bucket is a required field
 15920  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 15921  
 15922  	// The account ID of the expected bucket owner. If the bucket is owned by a
 15923  	// different account, the request will fail with an HTTP 403 (Access Denied)
 15924  	// error.
 15925  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 15926  }
 15927  
 15928  // String returns the string representation.
 15929  //
 15930  // API parameter values that are decorated as "sensitive" in the API will not
 15931  // be included in the string output. The member name will be present, but the
 15932  // value will be replaced with "sensitive".
 15933  func (s DeleteBucketTaggingInput) String() string {
 15934  	return awsutil.Prettify(s)
 15935  }
 15936  
 15937  // GoString returns the string representation.
 15938  //
 15939  // API parameter values that are decorated as "sensitive" in the API will not
 15940  // be included in the string output. The member name will be present, but the
 15941  // value will be replaced with "sensitive".
 15942  func (s DeleteBucketTaggingInput) GoString() string {
 15943  	return s.String()
 15944  }
 15945  
 15946  // Validate inspects the fields of the type to determine if they are valid.
 15947  func (s *DeleteBucketTaggingInput) Validate() error {
 15948  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
 15949  	if s.Bucket == nil {
 15950  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 15951  	}
 15952  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 15953  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 15954  	}
 15955  
 15956  	if invalidParams.Len() > 0 {
 15957  		return invalidParams
 15958  	}
 15959  	return nil
 15960  }
 15961  
 15962  // SetBucket sets the Bucket field's value.
 15963  func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
 15964  	s.Bucket = &v
 15965  	return s
 15966  }
 15967  
 15968  func (s *DeleteBucketTaggingInput) getBucket() (v string) {
 15969  	if s.Bucket == nil {
 15970  		return v
 15971  	}
 15972  	return *s.Bucket
 15973  }
 15974  
 15975  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 15976  func (s *DeleteBucketTaggingInput) SetExpectedBucketOwner(v string) *DeleteBucketTaggingInput {
 15977  	s.ExpectedBucketOwner = &v
 15978  	return s
 15979  }
 15980  
 15981  func (s *DeleteBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
 15982  	if s.Bucket == nil {
 15983  		return nil, fmt.Errorf("member Bucket is nil")
 15984  	}
 15985  	return parseEndpointARN(*s.Bucket)
 15986  }
 15987  
 15988  func (s *DeleteBucketTaggingInput) hasEndpointARN() bool {
 15989  	if s.Bucket == nil {
 15990  		return false
 15991  	}
 15992  	return arn.IsARN(*s.Bucket)
 15993  }
 15994  
 15995  // updateArnableField updates the value of the input field that
 15996  // takes an ARN as an input. This method is useful to backfill
 15997  // the parsed resource name from ARN into the input member.
 15998  // It returns a pointer to a modified copy of input and an error.
 15999  // Note that original input is not modified.
 16000  func (s DeleteBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
 16001  	if s.Bucket == nil {
 16002  		return nil, fmt.Errorf("member Bucket is nil")
 16003  	}
 16004  	s.Bucket = aws.String(v)
 16005  	return &s, nil
 16006  }
 16007  
 16008  type DeleteBucketTaggingOutput struct {
 16009  	_ struct{} `type:"structure"`
 16010  }
 16011  
 16012  // String returns the string representation.
 16013  //
 16014  // API parameter values that are decorated as "sensitive" in the API will not
 16015  // be included in the string output. The member name will be present, but the
 16016  // value will be replaced with "sensitive".
 16017  func (s DeleteBucketTaggingOutput) String() string {
 16018  	return awsutil.Prettify(s)
 16019  }
 16020  
 16021  // GoString returns the string representation.
 16022  //
 16023  // API parameter values that are decorated as "sensitive" in the API will not
 16024  // be included in the string output. The member name will be present, but the
 16025  // value will be replaced with "sensitive".
 16026  func (s DeleteBucketTaggingOutput) GoString() string {
 16027  	return s.String()
 16028  }
 16029  
 16030  type DeleteBucketWebsiteInput struct {
 16031  	_ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"`
 16032  
 16033  	// The bucket name for which you want to remove the website configuration.
 16034  	//
 16035  	// Bucket is a required field
 16036  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 16037  
 16038  	// The account ID of the expected bucket owner. If the bucket is owned by a
 16039  	// different account, the request will fail with an HTTP 403 (Access Denied)
 16040  	// error.
 16041  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 16042  }
 16043  
 16044  // String returns the string representation.
 16045  //
 16046  // API parameter values that are decorated as "sensitive" in the API will not
 16047  // be included in the string output. The member name will be present, but the
 16048  // value will be replaced with "sensitive".
 16049  func (s DeleteBucketWebsiteInput) String() string {
 16050  	return awsutil.Prettify(s)
 16051  }
 16052  
 16053  // GoString returns the string representation.
 16054  //
 16055  // API parameter values that are decorated as "sensitive" in the API will not
 16056  // be included in the string output. The member name will be present, but the
 16057  // value will be replaced with "sensitive".
 16058  func (s DeleteBucketWebsiteInput) GoString() string {
 16059  	return s.String()
 16060  }
 16061  
 16062  // Validate inspects the fields of the type to determine if they are valid.
 16063  func (s *DeleteBucketWebsiteInput) Validate() error {
 16064  	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
 16065  	if s.Bucket == nil {
 16066  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 16067  	}
 16068  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 16069  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 16070  	}
 16071  
 16072  	if invalidParams.Len() > 0 {
 16073  		return invalidParams
 16074  	}
 16075  	return nil
 16076  }
 16077  
 16078  // SetBucket sets the Bucket field's value.
 16079  func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
 16080  	s.Bucket = &v
 16081  	return s
 16082  }
 16083  
 16084  func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
 16085  	if s.Bucket == nil {
 16086  		return v
 16087  	}
 16088  	return *s.Bucket
 16089  }
 16090  
 16091  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 16092  func (s *DeleteBucketWebsiteInput) SetExpectedBucketOwner(v string) *DeleteBucketWebsiteInput {
 16093  	s.ExpectedBucketOwner = &v
 16094  	return s
 16095  }
 16096  
 16097  func (s *DeleteBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
 16098  	if s.Bucket == nil {
 16099  		return nil, fmt.Errorf("member Bucket is nil")
 16100  	}
 16101  	return parseEndpointARN(*s.Bucket)
 16102  }
 16103  
 16104  func (s *DeleteBucketWebsiteInput) hasEndpointARN() bool {
 16105  	if s.Bucket == nil {
 16106  		return false
 16107  	}
 16108  	return arn.IsARN(*s.Bucket)
 16109  }
 16110  
 16111  // updateArnableField updates the value of the input field that
 16112  // takes an ARN as an input. This method is useful to backfill
 16113  // the parsed resource name from ARN into the input member.
 16114  // It returns a pointer to a modified copy of input and an error.
 16115  // Note that original input is not modified.
 16116  func (s DeleteBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
 16117  	if s.Bucket == nil {
 16118  		return nil, fmt.Errorf("member Bucket is nil")
 16119  	}
 16120  	s.Bucket = aws.String(v)
 16121  	return &s, nil
 16122  }
 16123  
 16124  type DeleteBucketWebsiteOutput struct {
 16125  	_ struct{} `type:"structure"`
 16126  }
 16127  
 16128  // String returns the string representation.
 16129  //
 16130  // API parameter values that are decorated as "sensitive" in the API will not
 16131  // be included in the string output. The member name will be present, but the
 16132  // value will be replaced with "sensitive".
 16133  func (s DeleteBucketWebsiteOutput) String() string {
 16134  	return awsutil.Prettify(s)
 16135  }
 16136  
 16137  // GoString returns the string representation.
 16138  //
 16139  // API parameter values that are decorated as "sensitive" in the API will not
 16140  // be included in the string output. The member name will be present, but the
 16141  // value will be replaced with "sensitive".
 16142  func (s DeleteBucketWebsiteOutput) GoString() string {
 16143  	return s.String()
 16144  }
 16145  
 16146  // Information about the delete marker.
 16147  type DeleteMarkerEntry struct {
 16148  	_ struct{} `type:"structure"`
 16149  
 16150  	// Specifies whether the object is (true) or is not (false) the latest version
 16151  	// of an object.
 16152  	IsLatest *bool `type:"boolean"`
 16153  
 16154  	// The object key.
 16155  	Key *string `min:"1" type:"string"`
 16156  
 16157  	// Date and time the object was last modified.
 16158  	LastModified *time.Time `type:"timestamp"`
 16159  
 16160  	// The account that created the delete marker.>
 16161  	Owner *Owner `type:"structure"`
 16162  
 16163  	// Version ID of an object.
 16164  	VersionId *string `type:"string"`
 16165  }
 16166  
 16167  // String returns the string representation.
 16168  //
 16169  // API parameter values that are decorated as "sensitive" in the API will not
 16170  // be included in the string output. The member name will be present, but the
 16171  // value will be replaced with "sensitive".
 16172  func (s DeleteMarkerEntry) String() string {
 16173  	return awsutil.Prettify(s)
 16174  }
 16175  
 16176  // GoString returns the string representation.
 16177  //
 16178  // API parameter values that are decorated as "sensitive" in the API will not
 16179  // be included in the string output. The member name will be present, but the
 16180  // value will be replaced with "sensitive".
 16181  func (s DeleteMarkerEntry) GoString() string {
 16182  	return s.String()
 16183  }
 16184  
 16185  // SetIsLatest sets the IsLatest field's value.
 16186  func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
 16187  	s.IsLatest = &v
 16188  	return s
 16189  }
 16190  
 16191  // SetKey sets the Key field's value.
 16192  func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
 16193  	s.Key = &v
 16194  	return s
 16195  }
 16196  
 16197  // SetLastModified sets the LastModified field's value.
 16198  func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
 16199  	s.LastModified = &v
 16200  	return s
 16201  }
 16202  
 16203  // SetOwner sets the Owner field's value.
 16204  func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
 16205  	s.Owner = v
 16206  	return s
 16207  }
 16208  
 16209  // SetVersionId sets the VersionId field's value.
 16210  func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
 16211  	s.VersionId = &v
 16212  	return s
 16213  }
 16214  
 16215  // Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
 16216  // in your replication configuration, you must also include a DeleteMarkerReplication
 16217  // element. If your Filter includes a Tag element, the DeleteMarkerReplication
 16218  // Status must be set to Disabled, because Amazon S3 does not support replicating
 16219  // delete markers for tag-based rules. For an example configuration, see Basic
 16220  // Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
 16221  //
 16222  // For more information about delete marker replication, see Basic Rule Configuration
 16223  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
 16224  //
 16225  // If you are using an earlier version of the replication configuration, Amazon
 16226  // S3 handles replication of delete markers differently. For more information,
 16227  // see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
 16228  type DeleteMarkerReplication struct {
 16229  	_ struct{} `type:"structure"`
 16230  
 16231  	// Indicates whether to replicate delete markers.
 16232  	//
 16233  	// Indicates whether to replicate delete markers.
 16234  	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
 16235  }
 16236  
 16237  // String returns the string representation.
 16238  //
 16239  // API parameter values that are decorated as "sensitive" in the API will not
 16240  // be included in the string output. The member name will be present, but the
 16241  // value will be replaced with "sensitive".
 16242  func (s DeleteMarkerReplication) String() string {
 16243  	return awsutil.Prettify(s)
 16244  }
 16245  
 16246  // GoString returns the string representation.
 16247  //
 16248  // API parameter values that are decorated as "sensitive" in the API will not
 16249  // be included in the string output. The member name will be present, but the
 16250  // value will be replaced with "sensitive".
 16251  func (s DeleteMarkerReplication) GoString() string {
 16252  	return s.String()
 16253  }
 16254  
 16255  // SetStatus sets the Status field's value.
 16256  func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
 16257  	s.Status = &v
 16258  	return s
 16259  }
 16260  
 16261  type DeleteObjectInput struct {
 16262  	_ struct{} `locationName:"DeleteObjectRequest" type:"structure"`
 16263  
 16264  	// The bucket name of the bucket containing the object.
 16265  	//
 16266  	// When using this action with an access point, you must direct requests to
 16267  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 16268  	// When using this action with an access point through the Amazon Web Services
 16269  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 16270  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 16271  	// in the Amazon S3 User Guide.
 16272  	//
 16273  	// When using this action with Amazon S3 on Outposts, you must direct requests
 16274  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 16275  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 16276  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 16277  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 16278  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 16279  	// in the Amazon S3 User Guide.
 16280  	//
 16281  	// Bucket is a required field
 16282  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 16283  
 16284  	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
 16285  	// to process this operation. To use this header, you must have the s3:PutBucketPublicAccessBlock
 16286  	// permission.
 16287  	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
 16288  
 16289  	// The account ID of the expected bucket owner. If the bucket is owned by a
 16290  	// different account, the request will fail with an HTTP 403 (Access Denied)
 16291  	// error.
 16292  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 16293  
 16294  	// Key name of the object to delete.
 16295  	//
 16296  	// Key is a required field
 16297  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 16298  
 16299  	// The concatenation of the authentication device's serial number, a space,
 16300  	// and the value that is displayed on your authentication device. Required to
 16301  	// permanently delete a versioned object if versioning is configured with MFA
 16302  	// delete enabled.
 16303  	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
 16304  
 16305  	// Confirms that the requester knows that they will be charged for the request.
 16306  	// Bucket owners need not specify this parameter in their requests. For information
 16307  	// about downloading objects from requester pays buckets, see Downloading Objects
 16308  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 16309  	// in the Amazon S3 User Guide.
 16310  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 16311  
 16312  	// VersionId used to reference a specific version of the object.
 16313  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 16314  }
 16315  
 16316  // String returns the string representation.
 16317  //
 16318  // API parameter values that are decorated as "sensitive" in the API will not
 16319  // be included in the string output. The member name will be present, but the
 16320  // value will be replaced with "sensitive".
 16321  func (s DeleteObjectInput) String() string {
 16322  	return awsutil.Prettify(s)
 16323  }
 16324  
 16325  // GoString returns the string representation.
 16326  //
 16327  // API parameter values that are decorated as "sensitive" in the API will not
 16328  // be included in the string output. The member name will be present, but the
 16329  // value will be replaced with "sensitive".
 16330  func (s DeleteObjectInput) GoString() string {
 16331  	return s.String()
 16332  }
 16333  
 16334  // Validate inspects the fields of the type to determine if they are valid.
 16335  func (s *DeleteObjectInput) Validate() error {
 16336  	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
 16337  	if s.Bucket == nil {
 16338  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 16339  	}
 16340  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 16341  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 16342  	}
 16343  	if s.Key == nil {
 16344  		invalidParams.Add(request.NewErrParamRequired("Key"))
 16345  	}
 16346  	if s.Key != nil && len(*s.Key) < 1 {
 16347  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 16348  	}
 16349  
 16350  	if invalidParams.Len() > 0 {
 16351  		return invalidParams
 16352  	}
 16353  	return nil
 16354  }
 16355  
 16356  // SetBucket sets the Bucket field's value.
 16357  func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
 16358  	s.Bucket = &v
 16359  	return s
 16360  }
 16361  
 16362  func (s *DeleteObjectInput) getBucket() (v string) {
 16363  	if s.Bucket == nil {
 16364  		return v
 16365  	}
 16366  	return *s.Bucket
 16367  }
 16368  
 16369  // SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
 16370  func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
 16371  	s.BypassGovernanceRetention = &v
 16372  	return s
 16373  }
 16374  
 16375  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 16376  func (s *DeleteObjectInput) SetExpectedBucketOwner(v string) *DeleteObjectInput {
 16377  	s.ExpectedBucketOwner = &v
 16378  	return s
 16379  }
 16380  
 16381  // SetKey sets the Key field's value.
 16382  func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
 16383  	s.Key = &v
 16384  	return s
 16385  }
 16386  
 16387  // SetMFA sets the MFA field's value.
 16388  func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
 16389  	s.MFA = &v
 16390  	return s
 16391  }
 16392  
 16393  // SetRequestPayer sets the RequestPayer field's value.
 16394  func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
 16395  	s.RequestPayer = &v
 16396  	return s
 16397  }
 16398  
 16399  // SetVersionId sets the VersionId field's value.
 16400  func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
 16401  	s.VersionId = &v
 16402  	return s
 16403  }
 16404  
 16405  func (s *DeleteObjectInput) getEndpointARN() (arn.Resource, error) {
 16406  	if s.Bucket == nil {
 16407  		return nil, fmt.Errorf("member Bucket is nil")
 16408  	}
 16409  	return parseEndpointARN(*s.Bucket)
 16410  }
 16411  
 16412  func (s *DeleteObjectInput) hasEndpointARN() bool {
 16413  	if s.Bucket == nil {
 16414  		return false
 16415  	}
 16416  	return arn.IsARN(*s.Bucket)
 16417  }
 16418  
 16419  // updateArnableField updates the value of the input field that
 16420  // takes an ARN as an input. This method is useful to backfill
 16421  // the parsed resource name from ARN into the input member.
 16422  // It returns a pointer to a modified copy of input and an error.
 16423  // Note that original input is not modified.
 16424  func (s DeleteObjectInput) updateArnableField(v string) (interface{}, error) {
 16425  	if s.Bucket == nil {
 16426  		return nil, fmt.Errorf("member Bucket is nil")
 16427  	}
 16428  	s.Bucket = aws.String(v)
 16429  	return &s, nil
 16430  }
 16431  
 16432  type DeleteObjectOutput struct {
 16433  	_ struct{} `type:"structure"`
 16434  
 16435  	// Specifies whether the versioned object that was permanently deleted was (true)
 16436  	// or was not (false) a delete marker.
 16437  	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
 16438  
 16439  	// If present, indicates that the requester was successfully charged for the
 16440  	// request.
 16441  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 16442  
 16443  	// Returns the version ID of the delete marker created as a result of the DELETE
 16444  	// operation.
 16445  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 16446  }
 16447  
 16448  // String returns the string representation.
 16449  //
 16450  // API parameter values that are decorated as "sensitive" in the API will not
 16451  // be included in the string output. The member name will be present, but the
 16452  // value will be replaced with "sensitive".
 16453  func (s DeleteObjectOutput) String() string {
 16454  	return awsutil.Prettify(s)
 16455  }
 16456  
 16457  // GoString returns the string representation.
 16458  //
 16459  // API parameter values that are decorated as "sensitive" in the API will not
 16460  // be included in the string output. The member name will be present, but the
 16461  // value will be replaced with "sensitive".
 16462  func (s DeleteObjectOutput) GoString() string {
 16463  	return s.String()
 16464  }
 16465  
 16466  // SetDeleteMarker sets the DeleteMarker field's value.
 16467  func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
 16468  	s.DeleteMarker = &v
 16469  	return s
 16470  }
 16471  
 16472  // SetRequestCharged sets the RequestCharged field's value.
 16473  func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
 16474  	s.RequestCharged = &v
 16475  	return s
 16476  }
 16477  
 16478  // SetVersionId sets the VersionId field's value.
 16479  func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
 16480  	s.VersionId = &v
 16481  	return s
 16482  }
 16483  
 16484  type DeleteObjectTaggingInput struct {
 16485  	_ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"`
 16486  
 16487  	// The bucket name containing the objects from which to remove the tags.
 16488  	//
 16489  	// When using this action with an access point, you must direct requests to
 16490  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 16491  	// When using this action with an access point through the Amazon Web Services
 16492  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 16493  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 16494  	// in the Amazon S3 User Guide.
 16495  	//
 16496  	// When using this action with Amazon S3 on Outposts, you must direct requests
 16497  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 16498  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 16499  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 16500  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 16501  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 16502  	// in the Amazon S3 User Guide.
 16503  	//
 16504  	// Bucket is a required field
 16505  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 16506  
 16507  	// The account ID of the expected bucket owner. If the bucket is owned by a
 16508  	// different account, the request will fail with an HTTP 403 (Access Denied)
 16509  	// error.
 16510  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 16511  
 16512  	// The key that identifies the object in the bucket from which to remove all
 16513  	// tags.
 16514  	//
 16515  	// Key is a required field
 16516  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 16517  
 16518  	// The versionId of the object that the tag-set will be removed from.
 16519  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 16520  }
 16521  
 16522  // String returns the string representation.
 16523  //
 16524  // API parameter values that are decorated as "sensitive" in the API will not
 16525  // be included in the string output. The member name will be present, but the
 16526  // value will be replaced with "sensitive".
 16527  func (s DeleteObjectTaggingInput) String() string {
 16528  	return awsutil.Prettify(s)
 16529  }
 16530  
 16531  // GoString returns the string representation.
 16532  //
 16533  // API parameter values that are decorated as "sensitive" in the API will not
 16534  // be included in the string output. The member name will be present, but the
 16535  // value will be replaced with "sensitive".
 16536  func (s DeleteObjectTaggingInput) GoString() string {
 16537  	return s.String()
 16538  }
 16539  
 16540  // Validate inspects the fields of the type to determine if they are valid.
 16541  func (s *DeleteObjectTaggingInput) Validate() error {
 16542  	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
 16543  	if s.Bucket == nil {
 16544  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 16545  	}
 16546  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 16547  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 16548  	}
 16549  	if s.Key == nil {
 16550  		invalidParams.Add(request.NewErrParamRequired("Key"))
 16551  	}
 16552  	if s.Key != nil && len(*s.Key) < 1 {
 16553  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 16554  	}
 16555  
 16556  	if invalidParams.Len() > 0 {
 16557  		return invalidParams
 16558  	}
 16559  	return nil
 16560  }
 16561  
 16562  // SetBucket sets the Bucket field's value.
 16563  func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
 16564  	s.Bucket = &v
 16565  	return s
 16566  }
 16567  
 16568  func (s *DeleteObjectTaggingInput) getBucket() (v string) {
 16569  	if s.Bucket == nil {
 16570  		return v
 16571  	}
 16572  	return *s.Bucket
 16573  }
 16574  
 16575  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 16576  func (s *DeleteObjectTaggingInput) SetExpectedBucketOwner(v string) *DeleteObjectTaggingInput {
 16577  	s.ExpectedBucketOwner = &v
 16578  	return s
 16579  }
 16580  
 16581  // SetKey sets the Key field's value.
 16582  func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
 16583  	s.Key = &v
 16584  	return s
 16585  }
 16586  
 16587  // SetVersionId sets the VersionId field's value.
 16588  func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
 16589  	s.VersionId = &v
 16590  	return s
 16591  }
 16592  
 16593  func (s *DeleteObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
 16594  	if s.Bucket == nil {
 16595  		return nil, fmt.Errorf("member Bucket is nil")
 16596  	}
 16597  	return parseEndpointARN(*s.Bucket)
 16598  }
 16599  
 16600  func (s *DeleteObjectTaggingInput) hasEndpointARN() bool {
 16601  	if s.Bucket == nil {
 16602  		return false
 16603  	}
 16604  	return arn.IsARN(*s.Bucket)
 16605  }
 16606  
 16607  // updateArnableField updates the value of the input field that
 16608  // takes an ARN as an input. This method is useful to backfill
 16609  // the parsed resource name from ARN into the input member.
 16610  // It returns a pointer to a modified copy of input and an error.
 16611  // Note that original input is not modified.
 16612  func (s DeleteObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
 16613  	if s.Bucket == nil {
 16614  		return nil, fmt.Errorf("member Bucket is nil")
 16615  	}
 16616  	s.Bucket = aws.String(v)
 16617  	return &s, nil
 16618  }
 16619  
 16620  type DeleteObjectTaggingOutput struct {
 16621  	_ struct{} `type:"structure"`
 16622  
 16623  	// The versionId of the object the tag-set was removed from.
 16624  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 16625  }
 16626  
 16627  // String returns the string representation.
 16628  //
 16629  // API parameter values that are decorated as "sensitive" in the API will not
 16630  // be included in the string output. The member name will be present, but the
 16631  // value will be replaced with "sensitive".
 16632  func (s DeleteObjectTaggingOutput) String() string {
 16633  	return awsutil.Prettify(s)
 16634  }
 16635  
 16636  // GoString returns the string representation.
 16637  //
 16638  // API parameter values that are decorated as "sensitive" in the API will not
 16639  // be included in the string output. The member name will be present, but the
 16640  // value will be replaced with "sensitive".
 16641  func (s DeleteObjectTaggingOutput) GoString() string {
 16642  	return s.String()
 16643  }
 16644  
 16645  // SetVersionId sets the VersionId field's value.
 16646  func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
 16647  	s.VersionId = &v
 16648  	return s
 16649  }
 16650  
 16651  type DeleteObjectsInput struct {
 16652  	_ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"`
 16653  
 16654  	// The bucket name containing the objects to delete.
 16655  	//
 16656  	// When using this action with an access point, you must direct requests to
 16657  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 16658  	// When using this action with an access point through the Amazon Web Services
 16659  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 16660  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 16661  	// in the Amazon S3 User Guide.
 16662  	//
 16663  	// When using this action with Amazon S3 on Outposts, you must direct requests
 16664  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 16665  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 16666  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 16667  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 16668  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 16669  	// in the Amazon S3 User Guide.
 16670  	//
 16671  	// Bucket is a required field
 16672  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 16673  
 16674  	// Specifies whether you want to delete this object even if it has a Governance-type
 16675  	// Object Lock in place. To use this header, you must have the s3:PutBucketPublicAccessBlock
 16676  	// permission.
 16677  	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
 16678  
 16679  	// Container for the request.
 16680  	//
 16681  	// Delete is a required field
 16682  	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 16683  
 16684  	// The account ID of the expected bucket owner. If the bucket is owned by a
 16685  	// different account, the request will fail with an HTTP 403 (Access Denied)
 16686  	// error.
 16687  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 16688  
 16689  	// The concatenation of the authentication device's serial number, a space,
 16690  	// and the value that is displayed on your authentication device. Required to
 16691  	// permanently delete a versioned object if versioning is configured with MFA
 16692  	// delete enabled.
 16693  	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
 16694  
 16695  	// Confirms that the requester knows that they will be charged for the request.
 16696  	// Bucket owners need not specify this parameter in their requests. For information
 16697  	// about downloading objects from requester pays buckets, see Downloading Objects
 16698  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 16699  	// in the Amazon S3 User Guide.
 16700  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 16701  }
 16702  
 16703  // String returns the string representation.
 16704  //
 16705  // API parameter values that are decorated as "sensitive" in the API will not
 16706  // be included in the string output. The member name will be present, but the
 16707  // value will be replaced with "sensitive".
 16708  func (s DeleteObjectsInput) String() string {
 16709  	return awsutil.Prettify(s)
 16710  }
 16711  
 16712  // GoString returns the string representation.
 16713  //
 16714  // API parameter values that are decorated as "sensitive" in the API will not
 16715  // be included in the string output. The member name will be present, but the
 16716  // value will be replaced with "sensitive".
 16717  func (s DeleteObjectsInput) GoString() string {
 16718  	return s.String()
 16719  }
 16720  
 16721  // Validate inspects the fields of the type to determine if they are valid.
 16722  func (s *DeleteObjectsInput) Validate() error {
 16723  	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
 16724  	if s.Bucket == nil {
 16725  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 16726  	}
 16727  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 16728  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 16729  	}
 16730  	if s.Delete == nil {
 16731  		invalidParams.Add(request.NewErrParamRequired("Delete"))
 16732  	}
 16733  	if s.Delete != nil {
 16734  		if err := s.Delete.Validate(); err != nil {
 16735  			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
 16736  		}
 16737  	}
 16738  
 16739  	if invalidParams.Len() > 0 {
 16740  		return invalidParams
 16741  	}
 16742  	return nil
 16743  }
 16744  
 16745  // SetBucket sets the Bucket field's value.
 16746  func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
 16747  	s.Bucket = &v
 16748  	return s
 16749  }
 16750  
 16751  func (s *DeleteObjectsInput) getBucket() (v string) {
 16752  	if s.Bucket == nil {
 16753  		return v
 16754  	}
 16755  	return *s.Bucket
 16756  }
 16757  
 16758  // SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
 16759  func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
 16760  	s.BypassGovernanceRetention = &v
 16761  	return s
 16762  }
 16763  
 16764  // SetDelete sets the Delete field's value.
 16765  func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
 16766  	s.Delete = v
 16767  	return s
 16768  }
 16769  
 16770  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 16771  func (s *DeleteObjectsInput) SetExpectedBucketOwner(v string) *DeleteObjectsInput {
 16772  	s.ExpectedBucketOwner = &v
 16773  	return s
 16774  }
 16775  
 16776  // SetMFA sets the MFA field's value.
 16777  func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
 16778  	s.MFA = &v
 16779  	return s
 16780  }
 16781  
 16782  // SetRequestPayer sets the RequestPayer field's value.
 16783  func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
 16784  	s.RequestPayer = &v
 16785  	return s
 16786  }
 16787  
 16788  func (s *DeleteObjectsInput) getEndpointARN() (arn.Resource, error) {
 16789  	if s.Bucket == nil {
 16790  		return nil, fmt.Errorf("member Bucket is nil")
 16791  	}
 16792  	return parseEndpointARN(*s.Bucket)
 16793  }
 16794  
 16795  func (s *DeleteObjectsInput) hasEndpointARN() bool {
 16796  	if s.Bucket == nil {
 16797  		return false
 16798  	}
 16799  	return arn.IsARN(*s.Bucket)
 16800  }
 16801  
 16802  // updateArnableField updates the value of the input field that
 16803  // takes an ARN as an input. This method is useful to backfill
 16804  // the parsed resource name from ARN into the input member.
 16805  // It returns a pointer to a modified copy of input and an error.
 16806  // Note that original input is not modified.
 16807  func (s DeleteObjectsInput) updateArnableField(v string) (interface{}, error) {
 16808  	if s.Bucket == nil {
 16809  		return nil, fmt.Errorf("member Bucket is nil")
 16810  	}
 16811  	s.Bucket = aws.String(v)
 16812  	return &s, nil
 16813  }
 16814  
 16815  type DeleteObjectsOutput struct {
 16816  	_ struct{} `type:"structure"`
 16817  
 16818  	// Container element for a successful delete. It identifies the object that
 16819  	// was successfully deleted.
 16820  	Deleted []*DeletedObject `type:"list" flattened:"true"`
 16821  
 16822  	// Container for a failed delete action that describes the object that Amazon
 16823  	// S3 attempted to delete and the error it encountered.
 16824  	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
 16825  
 16826  	// If present, indicates that the requester was successfully charged for the
 16827  	// request.
 16828  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 16829  }
 16830  
 16831  // String returns the string representation.
 16832  //
 16833  // API parameter values that are decorated as "sensitive" in the API will not
 16834  // be included in the string output. The member name will be present, but the
 16835  // value will be replaced with "sensitive".
 16836  func (s DeleteObjectsOutput) String() string {
 16837  	return awsutil.Prettify(s)
 16838  }
 16839  
 16840  // GoString returns the string representation.
 16841  //
 16842  // API parameter values that are decorated as "sensitive" in the API will not
 16843  // be included in the string output. The member name will be present, but the
 16844  // value will be replaced with "sensitive".
 16845  func (s DeleteObjectsOutput) GoString() string {
 16846  	return s.String()
 16847  }
 16848  
 16849  // SetDeleted sets the Deleted field's value.
 16850  func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
 16851  	s.Deleted = v
 16852  	return s
 16853  }
 16854  
 16855  // SetErrors sets the Errors field's value.
 16856  func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
 16857  	s.Errors = v
 16858  	return s
 16859  }
 16860  
 16861  // SetRequestCharged sets the RequestCharged field's value.
 16862  func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
 16863  	s.RequestCharged = &v
 16864  	return s
 16865  }
 16866  
 16867  type DeletePublicAccessBlockInput struct {
 16868  	_ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"`
 16869  
 16870  	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
 16871  	//
 16872  	// Bucket is a required field
 16873  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 16874  
 16875  	// The account ID of the expected bucket owner. If the bucket is owned by a
 16876  	// different account, the request will fail with an HTTP 403 (Access Denied)
 16877  	// error.
 16878  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 16879  }
 16880  
 16881  // String returns the string representation.
 16882  //
 16883  // API parameter values that are decorated as "sensitive" in the API will not
 16884  // be included in the string output. The member name will be present, but the
 16885  // value will be replaced with "sensitive".
 16886  func (s DeletePublicAccessBlockInput) String() string {
 16887  	return awsutil.Prettify(s)
 16888  }
 16889  
 16890  // GoString returns the string representation.
 16891  //
 16892  // API parameter values that are decorated as "sensitive" in the API will not
 16893  // be included in the string output. The member name will be present, but the
 16894  // value will be replaced with "sensitive".
 16895  func (s DeletePublicAccessBlockInput) GoString() string {
 16896  	return s.String()
 16897  }
 16898  
 16899  // Validate inspects the fields of the type to determine if they are valid.
 16900  func (s *DeletePublicAccessBlockInput) Validate() error {
 16901  	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
 16902  	if s.Bucket == nil {
 16903  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 16904  	}
 16905  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 16906  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 16907  	}
 16908  
 16909  	if invalidParams.Len() > 0 {
 16910  		return invalidParams
 16911  	}
 16912  	return nil
 16913  }
 16914  
 16915  // SetBucket sets the Bucket field's value.
 16916  func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
 16917  	s.Bucket = &v
 16918  	return s
 16919  }
 16920  
 16921  func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
 16922  	if s.Bucket == nil {
 16923  		return v
 16924  	}
 16925  	return *s.Bucket
 16926  }
 16927  
 16928  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 16929  func (s *DeletePublicAccessBlockInput) SetExpectedBucketOwner(v string) *DeletePublicAccessBlockInput {
 16930  	s.ExpectedBucketOwner = &v
 16931  	return s
 16932  }
 16933  
 16934  func (s *DeletePublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
 16935  	if s.Bucket == nil {
 16936  		return nil, fmt.Errorf("member Bucket is nil")
 16937  	}
 16938  	return parseEndpointARN(*s.Bucket)
 16939  }
 16940  
 16941  func (s *DeletePublicAccessBlockInput) hasEndpointARN() bool {
 16942  	if s.Bucket == nil {
 16943  		return false
 16944  	}
 16945  	return arn.IsARN(*s.Bucket)
 16946  }
 16947  
 16948  // updateArnableField updates the value of the input field that
 16949  // takes an ARN as an input. This method is useful to backfill
 16950  // the parsed resource name from ARN into the input member.
 16951  // It returns a pointer to a modified copy of input and an error.
 16952  // Note that original input is not modified.
 16953  func (s DeletePublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
 16954  	if s.Bucket == nil {
 16955  		return nil, fmt.Errorf("member Bucket is nil")
 16956  	}
 16957  	s.Bucket = aws.String(v)
 16958  	return &s, nil
 16959  }
 16960  
 16961  type DeletePublicAccessBlockOutput struct {
 16962  	_ struct{} `type:"structure"`
 16963  }
 16964  
 16965  // String returns the string representation.
 16966  //
 16967  // API parameter values that are decorated as "sensitive" in the API will not
 16968  // be included in the string output. The member name will be present, but the
 16969  // value will be replaced with "sensitive".
 16970  func (s DeletePublicAccessBlockOutput) String() string {
 16971  	return awsutil.Prettify(s)
 16972  }
 16973  
 16974  // GoString returns the string representation.
 16975  //
 16976  // API parameter values that are decorated as "sensitive" in the API will not
 16977  // be included in the string output. The member name will be present, but the
 16978  // value will be replaced with "sensitive".
 16979  func (s DeletePublicAccessBlockOutput) GoString() string {
 16980  	return s.String()
 16981  }
 16982  
 16983  // Information about the deleted object.
 16984  type DeletedObject struct {
 16985  	_ struct{} `type:"structure"`
 16986  
 16987  	// Specifies whether the versioned object that was permanently deleted was (true)
 16988  	// or was not (false) a delete marker. In a simple DELETE, this header indicates
 16989  	// whether (true) or not (false) a delete marker was created.
 16990  	DeleteMarker *bool `type:"boolean"`
 16991  
 16992  	// The version ID of the delete marker created as a result of the DELETE operation.
 16993  	// If you delete a specific object version, the value returned by this header
 16994  	// is the version ID of the object version deleted.
 16995  	DeleteMarkerVersionId *string `type:"string"`
 16996  
 16997  	// The name of the deleted object.
 16998  	Key *string `min:"1" type:"string"`
 16999  
 17000  	// The version ID of the deleted object.
 17001  	VersionId *string `type:"string"`
 17002  }
 17003  
 17004  // String returns the string representation.
 17005  //
 17006  // API parameter values that are decorated as "sensitive" in the API will not
 17007  // be included in the string output. The member name will be present, but the
 17008  // value will be replaced with "sensitive".
 17009  func (s DeletedObject) String() string {
 17010  	return awsutil.Prettify(s)
 17011  }
 17012  
 17013  // GoString returns the string representation.
 17014  //
 17015  // API parameter values that are decorated as "sensitive" in the API will not
 17016  // be included in the string output. The member name will be present, but the
 17017  // value will be replaced with "sensitive".
 17018  func (s DeletedObject) GoString() string {
 17019  	return s.String()
 17020  }
 17021  
 17022  // SetDeleteMarker sets the DeleteMarker field's value.
 17023  func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
 17024  	s.DeleteMarker = &v
 17025  	return s
 17026  }
 17027  
 17028  // SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
 17029  func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
 17030  	s.DeleteMarkerVersionId = &v
 17031  	return s
 17032  }
 17033  
 17034  // SetKey sets the Key field's value.
 17035  func (s *DeletedObject) SetKey(v string) *DeletedObject {
 17036  	s.Key = &v
 17037  	return s
 17038  }
 17039  
 17040  // SetVersionId sets the VersionId field's value.
 17041  func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
 17042  	s.VersionId = &v
 17043  	return s
 17044  }
 17045  
 17046  // Specifies information about where to publish analysis or configuration results
 17047  // for an Amazon S3 bucket and S3 Replication Time Control (S3 RTC).
 17048  type Destination struct {
 17049  	_ struct{} `type:"structure"`
 17050  
 17051  	// Specify this only in a cross-account scenario (where source and destination
 17052  	// bucket owners are not the same), and you want to change replica ownership
 17053  	// to the Amazon Web Services account that owns the destination bucket. If this
 17054  	// is not specified in the replication configuration, the replicas are owned
 17055  	// by same Amazon Web Services account that owns the source object.
 17056  	AccessControlTranslation *AccessControlTranslation `type:"structure"`
 17057  
 17058  	// Destination bucket owner account ID. In a cross-account scenario, if you
 17059  	// direct Amazon S3 to change replica ownership to the Amazon Web Services account
 17060  	// that owns the destination bucket by specifying the AccessControlTranslation
 17061  	// property, this is the account ID of the destination bucket owner. For more
 17062  	// information, see Replication Additional Configuration: Changing the Replica
 17063  	// Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html)
 17064  	// in the Amazon S3 User Guide.
 17065  	Account *string `type:"string"`
 17066  
 17067  	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
 17068  	// store the results.
 17069  	//
 17070  	// Bucket is a required field
 17071  	Bucket *string `type:"string" required:"true"`
 17072  
 17073  	// A container that provides information about encryption. If SourceSelectionCriteria
 17074  	// is specified, you must specify this element.
 17075  	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
 17076  
 17077  	// A container specifying replication metrics-related settings enabling replication
 17078  	// metrics and events.
 17079  	Metrics *Metrics `type:"structure"`
 17080  
 17081  	// A container specifying S3 Replication Time Control (S3 RTC), including whether
 17082  	// S3 RTC is enabled and the time when all objects and operations on objects
 17083  	// must be replicated. Must be specified together with a Metrics block.
 17084  	ReplicationTime *ReplicationTime `type:"structure"`
 17085  
 17086  	// The storage class to use when replicating objects, such as S3 Standard or
 17087  	// reduced redundancy. By default, Amazon S3 uses the storage class of the source
 17088  	// object to create the object replica.
 17089  	//
 17090  	// For valid values, see the StorageClass element of the PUT Bucket replication
 17091  	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
 17092  	// action in the Amazon S3 API Reference.
 17093  	StorageClass *string `type:"string" enum:"StorageClass"`
 17094  }
 17095  
 17096  // String returns the string representation.
 17097  //
 17098  // API parameter values that are decorated as "sensitive" in the API will not
 17099  // be included in the string output. The member name will be present, but the
 17100  // value will be replaced with "sensitive".
 17101  func (s Destination) String() string {
 17102  	return awsutil.Prettify(s)
 17103  }
 17104  
 17105  // GoString returns the string representation.
 17106  //
 17107  // API parameter values that are decorated as "sensitive" in the API will not
 17108  // be included in the string output. The member name will be present, but the
 17109  // value will be replaced with "sensitive".
 17110  func (s Destination) GoString() string {
 17111  	return s.String()
 17112  }
 17113  
 17114  // Validate inspects the fields of the type to determine if they are valid.
 17115  func (s *Destination) Validate() error {
 17116  	invalidParams := request.ErrInvalidParams{Context: "Destination"}
 17117  	if s.Bucket == nil {
 17118  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 17119  	}
 17120  	if s.AccessControlTranslation != nil {
 17121  		if err := s.AccessControlTranslation.Validate(); err != nil {
 17122  			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
 17123  		}
 17124  	}
 17125  	if s.Metrics != nil {
 17126  		if err := s.Metrics.Validate(); err != nil {
 17127  			invalidParams.AddNested("Metrics", err.(request.ErrInvalidParams))
 17128  		}
 17129  	}
 17130  	if s.ReplicationTime != nil {
 17131  		if err := s.ReplicationTime.Validate(); err != nil {
 17132  			invalidParams.AddNested("ReplicationTime", err.(request.ErrInvalidParams))
 17133  		}
 17134  	}
 17135  
 17136  	if invalidParams.Len() > 0 {
 17137  		return invalidParams
 17138  	}
 17139  	return nil
 17140  }
 17141  
 17142  // SetAccessControlTranslation sets the AccessControlTranslation field's value.
 17143  func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
 17144  	s.AccessControlTranslation = v
 17145  	return s
 17146  }
 17147  
 17148  // SetAccount sets the Account field's value.
 17149  func (s *Destination) SetAccount(v string) *Destination {
 17150  	s.Account = &v
 17151  	return s
 17152  }
 17153  
 17154  // SetBucket sets the Bucket field's value.
 17155  func (s *Destination) SetBucket(v string) *Destination {
 17156  	s.Bucket = &v
 17157  	return s
 17158  }
 17159  
 17160  func (s *Destination) getBucket() (v string) {
 17161  	if s.Bucket == nil {
 17162  		return v
 17163  	}
 17164  	return *s.Bucket
 17165  }
 17166  
 17167  // SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
 17168  func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
 17169  	s.EncryptionConfiguration = v
 17170  	return s
 17171  }
 17172  
 17173  // SetMetrics sets the Metrics field's value.
 17174  func (s *Destination) SetMetrics(v *Metrics) *Destination {
 17175  	s.Metrics = v
 17176  	return s
 17177  }
 17178  
 17179  // SetReplicationTime sets the ReplicationTime field's value.
 17180  func (s *Destination) SetReplicationTime(v *ReplicationTime) *Destination {
 17181  	s.ReplicationTime = v
 17182  	return s
 17183  }
 17184  
 17185  // SetStorageClass sets the StorageClass field's value.
 17186  func (s *Destination) SetStorageClass(v string) *Destination {
 17187  	s.StorageClass = &v
 17188  	return s
 17189  }
 17190  
 17191  // Contains the type of server-side encryption used.
 17192  type Encryption struct {
 17193  	_ struct{} `type:"structure"`
 17194  
 17195  	// The server-side encryption algorithm used when storing job results in Amazon
 17196  	// S3 (for example, AES256, aws:kms).
 17197  	//
 17198  	// EncryptionType is a required field
 17199  	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
 17200  
 17201  	// If the encryption type is aws:kms, this optional value can be used to specify
 17202  	// the encryption context for the restore results.
 17203  	KMSContext *string `type:"string"`
 17204  
 17205  	// If the encryption type is aws:kms, this optional value specifies the ID of
 17206  	// the symmetric customer managed key to use for encryption of job results.
 17207  	// Amazon S3 only supports symmetric keys. For more information, see Using symmetric
 17208  	// and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
 17209  	// in the Amazon Web Services Key Management Service Developer Guide.
 17210  	//
 17211  	// KMSKeyId is a sensitive parameter and its value will be
 17212  	// replaced with "sensitive" in string returned by Encryption's
 17213  	// String and GoString methods.
 17214  	KMSKeyId *string `type:"string" sensitive:"true"`
 17215  }
 17216  
 17217  // String returns the string representation.
 17218  //
 17219  // API parameter values that are decorated as "sensitive" in the API will not
 17220  // be included in the string output. The member name will be present, but the
 17221  // value will be replaced with "sensitive".
 17222  func (s Encryption) String() string {
 17223  	return awsutil.Prettify(s)
 17224  }
 17225  
 17226  // GoString returns the string representation.
 17227  //
 17228  // API parameter values that are decorated as "sensitive" in the API will not
 17229  // be included in the string output. The member name will be present, but the
 17230  // value will be replaced with "sensitive".
 17231  func (s Encryption) GoString() string {
 17232  	return s.String()
 17233  }
 17234  
 17235  // Validate inspects the fields of the type to determine if they are valid.
 17236  func (s *Encryption) Validate() error {
 17237  	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
 17238  	if s.EncryptionType == nil {
 17239  		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
 17240  	}
 17241  
 17242  	if invalidParams.Len() > 0 {
 17243  		return invalidParams
 17244  	}
 17245  	return nil
 17246  }
 17247  
 17248  // SetEncryptionType sets the EncryptionType field's value.
 17249  func (s *Encryption) SetEncryptionType(v string) *Encryption {
 17250  	s.EncryptionType = &v
 17251  	return s
 17252  }
 17253  
 17254  // SetKMSContext sets the KMSContext field's value.
 17255  func (s *Encryption) SetKMSContext(v string) *Encryption {
 17256  	s.KMSContext = &v
 17257  	return s
 17258  }
 17259  
 17260  // SetKMSKeyId sets the KMSKeyId field's value.
 17261  func (s *Encryption) SetKMSKeyId(v string) *Encryption {
 17262  	s.KMSKeyId = &v
 17263  	return s
 17264  }
 17265  
 17266  // Specifies encryption-related information for an Amazon S3 bucket that is
 17267  // a destination for replicated objects.
 17268  type EncryptionConfiguration struct {
 17269  	_ struct{} `type:"structure"`
 17270  
 17271  	// Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web
 17272  	// Services KMS key stored in Amazon Web Services Key Management Service (KMS)
 17273  	// for the destination bucket. Amazon S3 uses this key to encrypt replica objects.
 17274  	// Amazon S3 only supports symmetric, customer managed KMS keys. For more information,
 17275  	// see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
 17276  	// in the Amazon Web Services Key Management Service Developer Guide.
 17277  	ReplicaKmsKeyID *string `type:"string"`
 17278  }
 17279  
 17280  // String returns the string representation.
 17281  //
 17282  // API parameter values that are decorated as "sensitive" in the API will not
 17283  // be included in the string output. The member name will be present, but the
 17284  // value will be replaced with "sensitive".
 17285  func (s EncryptionConfiguration) String() string {
 17286  	return awsutil.Prettify(s)
 17287  }
 17288  
 17289  // GoString returns the string representation.
 17290  //
 17291  // API parameter values that are decorated as "sensitive" in the API will not
 17292  // be included in the string output. The member name will be present, but the
 17293  // value will be replaced with "sensitive".
 17294  func (s EncryptionConfiguration) GoString() string {
 17295  	return s.String()
 17296  }
 17297  
 17298  // SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
 17299  func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
 17300  	s.ReplicaKmsKeyID = &v
 17301  	return s
 17302  }
 17303  
 17304  // A message that indicates the request is complete and no more messages will
 17305  // be sent. You should not assume that the request is complete until the client
 17306  // receives an EndEvent.
 17307  type EndEvent struct {
 17308  	_ struct{} `locationName:"EndEvent" type:"structure"`
 17309  }
 17310  
 17311  // String returns the string representation.
 17312  //
 17313  // API parameter values that are decorated as "sensitive" in the API will not
 17314  // be included in the string output. The member name will be present, but the
 17315  // value will be replaced with "sensitive".
 17316  func (s EndEvent) String() string {
 17317  	return awsutil.Prettify(s)
 17318  }
 17319  
 17320  // GoString returns the string representation.
 17321  //
 17322  // API parameter values that are decorated as "sensitive" in the API will not
 17323  // be included in the string output. The member name will be present, but the
 17324  // value will be replaced with "sensitive".
 17325  func (s EndEvent) GoString() string {
 17326  	return s.String()
 17327  }
 17328  
 17329  // The EndEvent is and event in the SelectObjectContentEventStream group of events.
 17330  func (s *EndEvent) eventSelectObjectContentEventStream() {}
 17331  
 17332  // UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
 17333  // This method is only used internally within the SDK's EventStream handling.
 17334  func (s *EndEvent) UnmarshalEvent(
 17335  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 17336  	msg eventstream.Message,
 17337  ) error {
 17338  	return nil
 17339  }
 17340  
 17341  // MarshalEvent marshals the type into an stream event value. This method
 17342  // should only used internally within the SDK's EventStream handling.
 17343  func (s *EndEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
 17344  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
 17345  	return msg, err
 17346  }
 17347  
 17348  // Container for all error elements.
 17349  type Error struct {
 17350  	_ struct{} `type:"structure"`
 17351  
 17352  	// The error code is a string that uniquely identifies an error condition. It
 17353  	// is meant to be read and understood by programs that detect and handle errors
 17354  	// by type.
 17355  	//
 17356  	// Amazon S3 error codes
 17357  	//
 17358  	//    * Code: AccessDenied Description: Access Denied HTTP Status Code: 403
 17359  	//    Forbidden SOAP Fault Code Prefix: Client
 17360  	//
 17361  	//    * Code: AccountProblem Description: There is a problem with your Amazon
 17362  	//    Web Services account that prevents the action from completing successfully.
 17363  	//    Contact Amazon Web Services Support for further assistance. HTTP Status
 17364  	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
 17365  	//
 17366  	//    * Code: AllAccessDisabled Description: All access to this Amazon S3 resource
 17367  	//    has been disabled. Contact Amazon Web Services Support for further assistance.
 17368  	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
 17369  	//
 17370  	//    * Code: AmbiguousGrantByEmailAddress Description: The email address you
 17371  	//    provided is associated with more than one account. HTTP Status Code: 400
 17372  	//    Bad Request SOAP Fault Code Prefix: Client
 17373  	//
 17374  	//    * Code: AuthorizationHeaderMalformed Description: The authorization header
 17375  	//    you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status
 17376  	//    Code: N/A
 17377  	//
 17378  	//    * Code: BadDigest Description: The Content-MD5 you specified did not match
 17379  	//    what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17380  	//    Client
 17381  	//
 17382  	//    * Code: BucketAlreadyExists Description: The requested bucket name is
 17383  	//    not available. The bucket namespace is shared by all users of the system.
 17384  	//    Please select a different name and try again. HTTP Status Code: 409 Conflict
 17385  	//    SOAP Fault Code Prefix: Client
 17386  	//
 17387  	//    * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create
 17388  	//    already exists, and you own it. Amazon S3 returns this error in all Amazon
 17389  	//    Web Services Regions except in the North Virginia Region. For legacy compatibility,
 17390  	//    if you re-create an existing bucket that you already own in the North
 17391  	//    Virginia Region, Amazon S3 returns 200 OK and resets the bucket access
 17392  	//    control lists (ACLs). Code: 409 Conflict (in all Regions except the North
 17393  	//    Virginia Region) SOAP Fault Code Prefix: Client
 17394  	//
 17395  	//    * Code: BucketNotEmpty Description: The bucket you tried to delete is
 17396  	//    not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
 17397  	//
 17398  	//    * Code: CredentialsNotSupported Description: This request does not support
 17399  	//    credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17400  	//    Client
 17401  	//
 17402  	//    * Code: CrossLocationLoggingProhibited Description: Cross-location logging
 17403  	//    not allowed. Buckets in one geographic location cannot log information
 17404  	//    to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP
 17405  	//    Fault Code Prefix: Client
 17406  	//
 17407  	//    * Code: EntityTooSmall Description: Your proposed upload is smaller than
 17408  	//    the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP
 17409  	//    Fault Code Prefix: Client
 17410  	//
 17411  	//    * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum
 17412  	//    allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code
 17413  	//    Prefix: Client
 17414  	//
 17415  	//    * Code: ExpiredToken Description: The provided token has expired. HTTP
 17416  	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17417  	//
 17418  	//    * Code: IllegalVersioningConfigurationException Description: Indicates
 17419  	//    that the versioning configuration specified in the request is invalid.
 17420  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17421  	//
 17422  	//    * Code: IncompleteBody Description: You did not provide the number of
 17423  	//    bytes specified by the Content-Length HTTP header HTTP Status Code: 400
 17424  	//    Bad Request SOAP Fault Code Prefix: Client
 17425  	//
 17426  	//    * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires
 17427  	//    exactly one file upload per request. HTTP Status Code: 400 Bad Request
 17428  	//    SOAP Fault Code Prefix: Client
 17429  	//
 17430  	//    * Code: InlineDataTooLarge Description: Inline data exceeds the maximum
 17431  	//    allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17432  	//    Client
 17433  	//
 17434  	//    * Code: InternalError Description: We encountered an internal error. Please
 17435  	//    try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code
 17436  	//    Prefix: Server
 17437  	//
 17438  	//    * Code: InvalidAccessKeyId Description: The Amazon Web Services access
 17439  	//    key ID you provided does not exist in our records. HTTP Status Code: 403
 17440  	//    Forbidden SOAP Fault Code Prefix: Client
 17441  	//
 17442  	//    * Code: InvalidAddressingHeader Description: You must specify the Anonymous
 17443  	//    role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
 17444  	//
 17445  	//    * Code: InvalidArgument Description: Invalid Argument HTTP Status Code:
 17446  	//    400 Bad Request SOAP Fault Code Prefix: Client
 17447  	//
 17448  	//    * Code: InvalidBucketName Description: The specified bucket is not valid.
 17449  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17450  	//
 17451  	//    * Code: InvalidBucketState Description: The request is not valid with
 17452  	//    the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault
 17453  	//    Code Prefix: Client
 17454  	//
 17455  	//    * Code: InvalidDigest Description: The Content-MD5 you specified is not
 17456  	//    valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17457  	//
 17458  	//    * Code: InvalidEncryptionAlgorithmError Description: The encryption request
 17459  	//    you specified is not valid. The valid value is AES256. HTTP Status Code:
 17460  	//    400 Bad Request SOAP Fault Code Prefix: Client
 17461  	//
 17462  	//    * Code: InvalidLocationConstraint Description: The specified location
 17463  	//    constraint is not valid. For more information about Regions, see How to
 17464  	//    Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
 17465  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17466  	//
 17467  	//    * Code: InvalidObjectState Description: The action is not valid for the
 17468  	//    current state of the object. HTTP Status Code: 403 Forbidden SOAP Fault
 17469  	//    Code Prefix: Client
 17470  	//
 17471  	//    * Code: InvalidPart Description: One or more of the specified parts could
 17472  	//    not be found. The part might not have been uploaded, or the specified
 17473  	//    entity tag might not have matched the part's entity tag. HTTP Status Code:
 17474  	//    400 Bad Request SOAP Fault Code Prefix: Client
 17475  	//
 17476  	//    * Code: InvalidPartOrder Description: The list of parts was not in ascending
 17477  	//    order. Parts list must be specified in order by part number. HTTP Status
 17478  	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17479  	//
 17480  	//    * Code: InvalidPayer Description: All access to this object has been disabled.
 17481  	//    Please contact Amazon Web Services Support for further assistance. HTTP
 17482  	//    Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
 17483  	//
 17484  	//    * Code: InvalidPolicyDocument Description: The content of the form does
 17485  	//    not meet the conditions specified in the policy document. HTTP Status
 17486  	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17487  	//
 17488  	//    * Code: InvalidRange Description: The requested range cannot be satisfied.
 17489  	//    HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code
 17490  	//    Prefix: Client
 17491  	//
 17492  	//    * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP
 17493  	//    Status Code: 400 Bad Request Code: N/A
 17494  	//
 17495  	//    * Code: InvalidRequest Description: SOAP requests must be made over an
 17496  	//    HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17497  	//    Client
 17498  	//
 17499  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
 17500  	//    not supported for buckets with non-DNS compliant names. HTTP Status Code:
 17501  	//    400 Bad Request Code: N/A
 17502  	//
 17503  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
 17504  	//    not supported for buckets with periods (.) in their names. HTTP Status
 17505  	//    Code: 400 Bad Request Code: N/A
 17506  	//
 17507  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint
 17508  	//    only supports virtual style requests. HTTP Status Code: 400 Bad Request
 17509  	//    Code: N/A
 17510  	//
 17511  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not
 17512  	//    configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
 17513  	//
 17514  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled
 17515  	//    on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
 17516  	//
 17517  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
 17518  	//    not supported on this bucket. Contact Amazon Web Services Support for
 17519  	//    more information. HTTP Status Code: 400 Bad Request Code: N/A
 17520  	//
 17521  	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot
 17522  	//    be enabled on this bucket. Contact Amazon Web Services Support for more
 17523  	//    information. HTTP Status Code: 400 Bad Request Code: N/A
 17524  	//
 17525  	//    * Code: InvalidSecurity Description: The provided security credentials
 17526  	//    are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix:
 17527  	//    Client
 17528  	//
 17529  	//    * Code: InvalidSOAPRequest Description: The SOAP request body is invalid.
 17530  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17531  	//
 17532  	//    * Code: InvalidStorageClass Description: The storage class you specified
 17533  	//    is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17534  	//    Client
 17535  	//
 17536  	//    * Code: InvalidTargetBucketForLogging Description: The target bucket for
 17537  	//    logging does not exist, is not owned by you, or does not have the appropriate
 17538  	//    grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP
 17539  	//    Fault Code Prefix: Client
 17540  	//
 17541  	//    * Code: InvalidToken Description: The provided token is malformed or otherwise
 17542  	//    invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17543  	//
 17544  	//    * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP
 17545  	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17546  	//
 17547  	//    * Code: KeyTooLongError Description: Your key is too long. HTTP Status
 17548  	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17549  	//
 17550  	//    * Code: MalformedACLError Description: The XML you provided was not well-formed
 17551  	//    or did not validate against our published schema. HTTP Status Code: 400
 17552  	//    Bad Request SOAP Fault Code Prefix: Client
 17553  	//
 17554  	//    * Code: MalformedPOSTRequest Description: The body of your POST request
 17555  	//    is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request
 17556  	//    SOAP Fault Code Prefix: Client
 17557  	//
 17558  	//    * Code: MalformedXML Description: This happens when the user sends malformed
 17559  	//    XML (XML that doesn't conform to the published XSD) for the configuration.
 17560  	//    The error message is, "The XML you provided was not well-formed or did
 17561  	//    not validate against our published schema." HTTP Status Code: 400 Bad
 17562  	//    Request SOAP Fault Code Prefix: Client
 17563  	//
 17564  	//    * Code: MaxMessageLengthExceeded Description: Your request was too big.
 17565  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17566  	//
 17567  	//    * Code: MaxPostPreDataLengthExceededError Description: Your POST request
 17568  	//    fields preceding the upload file were too large. HTTP Status Code: 400
 17569  	//    Bad Request SOAP Fault Code Prefix: Client
 17570  	//
 17571  	//    * Code: MetadataTooLarge Description: Your metadata headers exceed the
 17572  	//    maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP
 17573  	//    Fault Code Prefix: Client
 17574  	//
 17575  	//    * Code: MethodNotAllowed Description: The specified method is not allowed
 17576  	//    against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault
 17577  	//    Code Prefix: Client
 17578  	//
 17579  	//    * Code: MissingAttachment Description: A SOAP attachment was expected,
 17580  	//    but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
 17581  	//
 17582  	//    * Code: MissingContentLength Description: You must provide the Content-Length
 17583  	//    HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix:
 17584  	//    Client
 17585  	//
 17586  	//    * Code: MissingRequestBodyError Description: This happens when the user
 17587  	//    sends an empty XML document as a request. The error message is, "Request
 17588  	//    body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
 17589  	//    Client
 17590  	//
 17591  	//    * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing
 17592  	//    a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code
 17593  	//    Prefix: Client
 17594  	//
 17595  	//    * Code: MissingSecurityHeader Description: Your request is missing a required
 17596  	//    header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17597  	//
 17598  	//    * Code: NoLoggingStatusForKey Description: There is no such thing as a
 17599  	//    logging status subresource for a key. HTTP Status Code: 400 Bad Request
 17600  	//    SOAP Fault Code Prefix: Client
 17601  	//
 17602  	//    * Code: NoSuchBucket Description: The specified bucket does not exist.
 17603  	//    HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client
 17604  	//
 17605  	//    * Code: NoSuchBucketPolicy Description: The specified bucket does not
 17606  	//    have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code
 17607  	//    Prefix: Client
 17608  	//
 17609  	//    * Code: NoSuchKey Description: The specified key does not exist. HTTP
 17610  	//    Status Code: 404 Not Found SOAP Fault Code Prefix: Client
 17611  	//
 17612  	//    * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration
 17613  	//    does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix:
 17614  	//    Client
 17615  	//
 17616  	//    * Code: NoSuchUpload Description: The specified multipart upload does
 17617  	//    not exist. The upload ID might be invalid, or the multipart upload might
 17618  	//    have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault
 17619  	//    Code Prefix: Client
 17620  	//
 17621  	//    * Code: NoSuchVersion Description: Indicates that the version ID specified
 17622  	//    in the request does not match an existing version. HTTP Status Code: 404
 17623  	//    Not Found SOAP Fault Code Prefix: Client
 17624  	//
 17625  	//    * Code: NotImplemented Description: A header you provided implies functionality
 17626  	//    that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault
 17627  	//    Code Prefix: Server
 17628  	//
 17629  	//    * Code: NotSignedUp Description: Your account is not signed up for the
 17630  	//    Amazon S3 service. You must sign up before you can use Amazon S3. You
 17631  	//    can sign up at the following URL: Amazon S3 (http://aws.amazon.com/s3)
 17632  	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
 17633  	//
 17634  	//    * Code: OperationAborted Description: A conflicting conditional action
 17635  	//    is currently in progress against this resource. Try again. HTTP Status
 17636  	//    Code: 409 Conflict SOAP Fault Code Prefix: Client
 17637  	//
 17638  	//    * Code: PermanentRedirect Description: The bucket you are attempting to
 17639  	//    access must be addressed using the specified endpoint. Send all future
 17640  	//    requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP
 17641  	//    Fault Code Prefix: Client
 17642  	//
 17643  	//    * Code: PreconditionFailed Description: At least one of the preconditions
 17644  	//    you specified did not hold. HTTP Status Code: 412 Precondition Failed
 17645  	//    SOAP Fault Code Prefix: Client
 17646  	//
 17647  	//    * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307
 17648  	//    Moved Temporarily SOAP Fault Code Prefix: Client
 17649  	//
 17650  	//    * Code: RestoreAlreadyInProgress Description: Object restore is already
 17651  	//    in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
 17652  	//
 17653  	//    * Code: RequestIsNotMultiPartContent Description: Bucket POST must be
 17654  	//    of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request
 17655  	//    SOAP Fault Code Prefix: Client
 17656  	//
 17657  	//    * Code: RequestTimeout Description: Your socket connection to the server
 17658  	//    was not read from or written to within the timeout period. HTTP Status
 17659  	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17660  	//
 17661  	//    * Code: RequestTimeTooSkewed Description: The difference between the request
 17662  	//    time and the server's time is too large. HTTP Status Code: 403 Forbidden
 17663  	//    SOAP Fault Code Prefix: Client
 17664  	//
 17665  	//    * Code: RequestTorrentOfBucketError Description: Requesting the torrent
 17666  	//    file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP
 17667  	//    Fault Code Prefix: Client
 17668  	//
 17669  	//    * Code: SignatureDoesNotMatch Description: The request signature we calculated
 17670  	//    does not match the signature you provided. Check your Amazon Web Services
 17671  	//    secret access key and signing method. For more information, see REST Authentication
 17672  	//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
 17673  	//    and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html)
 17674  	//    for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
 17675  	//
 17676  	//    * Code: ServiceUnavailable Description: Reduce your request rate. HTTP
 17677  	//    Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server
 17678  	//
 17679  	//    * Code: SlowDown Description: Reduce your request rate. HTTP Status Code:
 17680  	//    503 Slow Down SOAP Fault Code Prefix: Server
 17681  	//
 17682  	//    * Code: TemporaryRedirect Description: You are being redirected to the
 17683  	//    bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP
 17684  	//    Fault Code Prefix: Client
 17685  	//
 17686  	//    * Code: TokenRefreshRequired Description: The provided token must be refreshed.
 17687  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17688  	//
 17689  	//    * Code: TooManyBuckets Description: You have attempted to create more
 17690  	//    buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code
 17691  	//    Prefix: Client
 17692  	//
 17693  	//    * Code: UnexpectedContent Description: This request does not support content.
 17694  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17695  	//
 17696  	//    * Code: UnresolvableGrantByEmailAddress Description: The email address
 17697  	//    you provided does not match any account on record. HTTP Status Code: 400
 17698  	//    Bad Request SOAP Fault Code Prefix: Client
 17699  	//
 17700  	//    * Code: UserKeyMustBeSpecified Description: The bucket POST must contain
 17701  	//    the specified field name. If it is specified, check the order of the fields.
 17702  	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
 17703  	Code *string `type:"string"`
 17704  
 17705  	// The error key.
 17706  	Key *string `min:"1" type:"string"`
 17707  
 17708  	// The error message contains a generic description of the error condition in
 17709  	// English. It is intended for a human audience. Simple programs display the
 17710  	// message directly to the end user if they encounter an error condition they
 17711  	// don't know how or don't care to handle. Sophisticated programs with more
 17712  	// exhaustive error handling and proper internationalization are more likely
 17713  	// to ignore the error message.
 17714  	Message *string `type:"string"`
 17715  
 17716  	// The version ID of the error.
 17717  	VersionId *string `type:"string"`
 17718  }
 17719  
 17720  // String returns the string representation.
 17721  //
 17722  // API parameter values that are decorated as "sensitive" in the API will not
 17723  // be included in the string output. The member name will be present, but the
 17724  // value will be replaced with "sensitive".
 17725  func (s Error) String() string {
 17726  	return awsutil.Prettify(s)
 17727  }
 17728  
 17729  // GoString returns the string representation.
 17730  //
 17731  // API parameter values that are decorated as "sensitive" in the API will not
 17732  // be included in the string output. The member name will be present, but the
 17733  // value will be replaced with "sensitive".
 17734  func (s Error) GoString() string {
 17735  	return s.String()
 17736  }
 17737  
 17738  // SetCode sets the Code field's value.
 17739  func (s *Error) SetCode(v string) *Error {
 17740  	s.Code = &v
 17741  	return s
 17742  }
 17743  
 17744  // SetKey sets the Key field's value.
 17745  func (s *Error) SetKey(v string) *Error {
 17746  	s.Key = &v
 17747  	return s
 17748  }
 17749  
 17750  // SetMessage sets the Message field's value.
 17751  func (s *Error) SetMessage(v string) *Error {
 17752  	s.Message = &v
 17753  	return s
 17754  }
 17755  
 17756  // SetVersionId sets the VersionId field's value.
 17757  func (s *Error) SetVersionId(v string) *Error {
 17758  	s.VersionId = &v
 17759  	return s
 17760  }
 17761  
 17762  // The error information.
 17763  type ErrorDocument struct {
 17764  	_ struct{} `type:"structure"`
 17765  
 17766  	// The object key name to use when a 4XX class error occurs.
 17767  	//
 17768  	// Replacement must be made for object keys containing special characters (such
 17769  	// as carriage returns) when using XML requests. For more information, see XML
 17770  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 17771  	//
 17772  	// Key is a required field
 17773  	Key *string `min:"1" type:"string" required:"true"`
 17774  }
 17775  
 17776  // String returns the string representation.
 17777  //
 17778  // API parameter values that are decorated as "sensitive" in the API will not
 17779  // be included in the string output. The member name will be present, but the
 17780  // value will be replaced with "sensitive".
 17781  func (s ErrorDocument) String() string {
 17782  	return awsutil.Prettify(s)
 17783  }
 17784  
 17785  // GoString returns the string representation.
 17786  //
 17787  // API parameter values that are decorated as "sensitive" in the API will not
 17788  // be included in the string output. The member name will be present, but the
 17789  // value will be replaced with "sensitive".
 17790  func (s ErrorDocument) GoString() string {
 17791  	return s.String()
 17792  }
 17793  
 17794  // Validate inspects the fields of the type to determine if they are valid.
 17795  func (s *ErrorDocument) Validate() error {
 17796  	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
 17797  	if s.Key == nil {
 17798  		invalidParams.Add(request.NewErrParamRequired("Key"))
 17799  	}
 17800  	if s.Key != nil && len(*s.Key) < 1 {
 17801  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 17802  	}
 17803  
 17804  	if invalidParams.Len() > 0 {
 17805  		return invalidParams
 17806  	}
 17807  	return nil
 17808  }
 17809  
 17810  // SetKey sets the Key field's value.
 17811  func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
 17812  	s.Key = &v
 17813  	return s
 17814  }
 17815  
 17816  // Optional configuration to replicate existing source bucket objects. For more
 17817  // information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
 17818  // in the Amazon S3 User Guide.
 17819  type ExistingObjectReplication struct {
 17820  	_ struct{} `type:"structure"`
 17821  
 17822  	// Status is a required field
 17823  	Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"`
 17824  }
 17825  
 17826  // String returns the string representation.
 17827  //
 17828  // API parameter values that are decorated as "sensitive" in the API will not
 17829  // be included in the string output. The member name will be present, but the
 17830  // value will be replaced with "sensitive".
 17831  func (s ExistingObjectReplication) String() string {
 17832  	return awsutil.Prettify(s)
 17833  }
 17834  
 17835  // GoString returns the string representation.
 17836  //
 17837  // API parameter values that are decorated as "sensitive" in the API will not
 17838  // be included in the string output. The member name will be present, but the
 17839  // value will be replaced with "sensitive".
 17840  func (s ExistingObjectReplication) GoString() string {
 17841  	return s.String()
 17842  }
 17843  
 17844  // Validate inspects the fields of the type to determine if they are valid.
 17845  func (s *ExistingObjectReplication) Validate() error {
 17846  	invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"}
 17847  	if s.Status == nil {
 17848  		invalidParams.Add(request.NewErrParamRequired("Status"))
 17849  	}
 17850  
 17851  	if invalidParams.Len() > 0 {
 17852  		return invalidParams
 17853  	}
 17854  	return nil
 17855  }
 17856  
 17857  // SetStatus sets the Status field's value.
 17858  func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication {
 17859  	s.Status = &v
 17860  	return s
 17861  }
 17862  
 17863  // Specifies the Amazon S3 object key name to filter on and whether to filter
 17864  // on the suffix or prefix of the key name.
 17865  type FilterRule struct {
 17866  	_ struct{} `type:"structure"`
 17867  
 17868  	// The object key name prefix or suffix identifying one or more objects to which
 17869  	// the filtering rule applies. The maximum length is 1,024 characters. Overlapping
 17870  	// prefixes and suffixes are not supported. For more information, see Configuring
 17871  	// Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 17872  	// in the Amazon S3 User Guide.
 17873  	Name *string `type:"string" enum:"FilterRuleName"`
 17874  
 17875  	// The value that the filter searches for in object key names.
 17876  	Value *string `type:"string"`
 17877  }
 17878  
 17879  // String returns the string representation.
 17880  //
 17881  // API parameter values that are decorated as "sensitive" in the API will not
 17882  // be included in the string output. The member name will be present, but the
 17883  // value will be replaced with "sensitive".
 17884  func (s FilterRule) String() string {
 17885  	return awsutil.Prettify(s)
 17886  }
 17887  
 17888  // GoString returns the string representation.
 17889  //
 17890  // API parameter values that are decorated as "sensitive" in the API will not
 17891  // be included in the string output. The member name will be present, but the
 17892  // value will be replaced with "sensitive".
 17893  func (s FilterRule) GoString() string {
 17894  	return s.String()
 17895  }
 17896  
 17897  // SetName sets the Name field's value.
 17898  func (s *FilterRule) SetName(v string) *FilterRule {
 17899  	s.Name = &v
 17900  	return s
 17901  }
 17902  
 17903  // SetValue sets the Value field's value.
 17904  func (s *FilterRule) SetValue(v string) *FilterRule {
 17905  	s.Value = &v
 17906  	return s
 17907  }
 17908  
 17909  type GetBucketAccelerateConfigurationInput struct {
 17910  	_ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"`
 17911  
 17912  	// The name of the bucket for which the accelerate configuration is retrieved.
 17913  	//
 17914  	// Bucket is a required field
 17915  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 17916  
 17917  	// The account ID of the expected bucket owner. If the bucket is owned by a
 17918  	// different account, the request will fail with an HTTP 403 (Access Denied)
 17919  	// error.
 17920  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 17921  }
 17922  
 17923  // String returns the string representation.
 17924  //
 17925  // API parameter values that are decorated as "sensitive" in the API will not
 17926  // be included in the string output. The member name will be present, but the
 17927  // value will be replaced with "sensitive".
 17928  func (s GetBucketAccelerateConfigurationInput) String() string {
 17929  	return awsutil.Prettify(s)
 17930  }
 17931  
 17932  // GoString returns the string representation.
 17933  //
 17934  // API parameter values that are decorated as "sensitive" in the API will not
 17935  // be included in the string output. The member name will be present, but the
 17936  // value will be replaced with "sensitive".
 17937  func (s GetBucketAccelerateConfigurationInput) GoString() string {
 17938  	return s.String()
 17939  }
 17940  
 17941  // Validate inspects the fields of the type to determine if they are valid.
 17942  func (s *GetBucketAccelerateConfigurationInput) Validate() error {
 17943  	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
 17944  	if s.Bucket == nil {
 17945  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 17946  	}
 17947  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 17948  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 17949  	}
 17950  
 17951  	if invalidParams.Len() > 0 {
 17952  		return invalidParams
 17953  	}
 17954  	return nil
 17955  }
 17956  
 17957  // SetBucket sets the Bucket field's value.
 17958  func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
 17959  	s.Bucket = &v
 17960  	return s
 17961  }
 17962  
 17963  func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
 17964  	if s.Bucket == nil {
 17965  		return v
 17966  	}
 17967  	return *s.Bucket
 17968  }
 17969  
 17970  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 17971  func (s *GetBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAccelerateConfigurationInput {
 17972  	s.ExpectedBucketOwner = &v
 17973  	return s
 17974  }
 17975  
 17976  func (s *GetBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
 17977  	if s.Bucket == nil {
 17978  		return nil, fmt.Errorf("member Bucket is nil")
 17979  	}
 17980  	return parseEndpointARN(*s.Bucket)
 17981  }
 17982  
 17983  func (s *GetBucketAccelerateConfigurationInput) hasEndpointARN() bool {
 17984  	if s.Bucket == nil {
 17985  		return false
 17986  	}
 17987  	return arn.IsARN(*s.Bucket)
 17988  }
 17989  
 17990  // updateArnableField updates the value of the input field that
 17991  // takes an ARN as an input. This method is useful to backfill
 17992  // the parsed resource name from ARN into the input member.
 17993  // It returns a pointer to a modified copy of input and an error.
 17994  // Note that original input is not modified.
 17995  func (s GetBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
 17996  	if s.Bucket == nil {
 17997  		return nil, fmt.Errorf("member Bucket is nil")
 17998  	}
 17999  	s.Bucket = aws.String(v)
 18000  	return &s, nil
 18001  }
 18002  
 18003  type GetBucketAccelerateConfigurationOutput struct {
 18004  	_ struct{} `type:"structure"`
 18005  
 18006  	// The accelerate configuration of the bucket.
 18007  	Status *string `type:"string" enum:"BucketAccelerateStatus"`
 18008  }
 18009  
 18010  // String returns the string representation.
 18011  //
 18012  // API parameter values that are decorated as "sensitive" in the API will not
 18013  // be included in the string output. The member name will be present, but the
 18014  // value will be replaced with "sensitive".
 18015  func (s GetBucketAccelerateConfigurationOutput) String() string {
 18016  	return awsutil.Prettify(s)
 18017  }
 18018  
 18019  // GoString returns the string representation.
 18020  //
 18021  // API parameter values that are decorated as "sensitive" in the API will not
 18022  // be included in the string output. The member name will be present, but the
 18023  // value will be replaced with "sensitive".
 18024  func (s GetBucketAccelerateConfigurationOutput) GoString() string {
 18025  	return s.String()
 18026  }
 18027  
 18028  // SetStatus sets the Status field's value.
 18029  func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
 18030  	s.Status = &v
 18031  	return s
 18032  }
 18033  
 18034  type GetBucketAclInput struct {
 18035  	_ struct{} `locationName:"GetBucketAclRequest" type:"structure"`
 18036  
 18037  	// Specifies the S3 bucket whose ACL is being requested.
 18038  	//
 18039  	// Bucket is a required field
 18040  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18041  
 18042  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18043  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18044  	// error.
 18045  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18046  }
 18047  
 18048  // String returns the string representation.
 18049  //
 18050  // API parameter values that are decorated as "sensitive" in the API will not
 18051  // be included in the string output. The member name will be present, but the
 18052  // value will be replaced with "sensitive".
 18053  func (s GetBucketAclInput) String() string {
 18054  	return awsutil.Prettify(s)
 18055  }
 18056  
 18057  // GoString returns the string representation.
 18058  //
 18059  // API parameter values that are decorated as "sensitive" in the API will not
 18060  // be included in the string output. The member name will be present, but the
 18061  // value will be replaced with "sensitive".
 18062  func (s GetBucketAclInput) GoString() string {
 18063  	return s.String()
 18064  }
 18065  
 18066  // Validate inspects the fields of the type to determine if they are valid.
 18067  func (s *GetBucketAclInput) Validate() error {
 18068  	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
 18069  	if s.Bucket == nil {
 18070  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18071  	}
 18072  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18073  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18074  	}
 18075  
 18076  	if invalidParams.Len() > 0 {
 18077  		return invalidParams
 18078  	}
 18079  	return nil
 18080  }
 18081  
 18082  // SetBucket sets the Bucket field's value.
 18083  func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
 18084  	s.Bucket = &v
 18085  	return s
 18086  }
 18087  
 18088  func (s *GetBucketAclInput) getBucket() (v string) {
 18089  	if s.Bucket == nil {
 18090  		return v
 18091  	}
 18092  	return *s.Bucket
 18093  }
 18094  
 18095  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18096  func (s *GetBucketAclInput) SetExpectedBucketOwner(v string) *GetBucketAclInput {
 18097  	s.ExpectedBucketOwner = &v
 18098  	return s
 18099  }
 18100  
 18101  func (s *GetBucketAclInput) getEndpointARN() (arn.Resource, error) {
 18102  	if s.Bucket == nil {
 18103  		return nil, fmt.Errorf("member Bucket is nil")
 18104  	}
 18105  	return parseEndpointARN(*s.Bucket)
 18106  }
 18107  
 18108  func (s *GetBucketAclInput) hasEndpointARN() bool {
 18109  	if s.Bucket == nil {
 18110  		return false
 18111  	}
 18112  	return arn.IsARN(*s.Bucket)
 18113  }
 18114  
 18115  // updateArnableField updates the value of the input field that
 18116  // takes an ARN as an input. This method is useful to backfill
 18117  // the parsed resource name from ARN into the input member.
 18118  // It returns a pointer to a modified copy of input and an error.
 18119  // Note that original input is not modified.
 18120  func (s GetBucketAclInput) updateArnableField(v string) (interface{}, error) {
 18121  	if s.Bucket == nil {
 18122  		return nil, fmt.Errorf("member Bucket is nil")
 18123  	}
 18124  	s.Bucket = aws.String(v)
 18125  	return &s, nil
 18126  }
 18127  
 18128  type GetBucketAclOutput struct {
 18129  	_ struct{} `type:"structure"`
 18130  
 18131  	// A list of grants.
 18132  	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
 18133  
 18134  	// Container for the bucket owner's display name and ID.
 18135  	Owner *Owner `type:"structure"`
 18136  }
 18137  
 18138  // String returns the string representation.
 18139  //
 18140  // API parameter values that are decorated as "sensitive" in the API will not
 18141  // be included in the string output. The member name will be present, but the
 18142  // value will be replaced with "sensitive".
 18143  func (s GetBucketAclOutput) String() string {
 18144  	return awsutil.Prettify(s)
 18145  }
 18146  
 18147  // GoString returns the string representation.
 18148  //
 18149  // API parameter values that are decorated as "sensitive" in the API will not
 18150  // be included in the string output. The member name will be present, but the
 18151  // value will be replaced with "sensitive".
 18152  func (s GetBucketAclOutput) GoString() string {
 18153  	return s.String()
 18154  }
 18155  
 18156  // SetGrants sets the Grants field's value.
 18157  func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
 18158  	s.Grants = v
 18159  	return s
 18160  }
 18161  
 18162  // SetOwner sets the Owner field's value.
 18163  func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
 18164  	s.Owner = v
 18165  	return s
 18166  }
 18167  
 18168  type GetBucketAnalyticsConfigurationInput struct {
 18169  	_ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"`
 18170  
 18171  	// The name of the bucket from which an analytics configuration is retrieved.
 18172  	//
 18173  	// Bucket is a required field
 18174  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18175  
 18176  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18177  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18178  	// error.
 18179  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18180  
 18181  	// The ID that identifies the analytics configuration.
 18182  	//
 18183  	// Id is a required field
 18184  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 18185  }
 18186  
 18187  // String returns the string representation.
 18188  //
 18189  // API parameter values that are decorated as "sensitive" in the API will not
 18190  // be included in the string output. The member name will be present, but the
 18191  // value will be replaced with "sensitive".
 18192  func (s GetBucketAnalyticsConfigurationInput) String() string {
 18193  	return awsutil.Prettify(s)
 18194  }
 18195  
 18196  // GoString returns the string representation.
 18197  //
 18198  // API parameter values that are decorated as "sensitive" in the API will not
 18199  // be included in the string output. The member name will be present, but the
 18200  // value will be replaced with "sensitive".
 18201  func (s GetBucketAnalyticsConfigurationInput) GoString() string {
 18202  	return s.String()
 18203  }
 18204  
 18205  // Validate inspects the fields of the type to determine if they are valid.
 18206  func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
 18207  	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
 18208  	if s.Bucket == nil {
 18209  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18210  	}
 18211  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18212  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18213  	}
 18214  	if s.Id == nil {
 18215  		invalidParams.Add(request.NewErrParamRequired("Id"))
 18216  	}
 18217  
 18218  	if invalidParams.Len() > 0 {
 18219  		return invalidParams
 18220  	}
 18221  	return nil
 18222  }
 18223  
 18224  // SetBucket sets the Bucket field's value.
 18225  func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
 18226  	s.Bucket = &v
 18227  	return s
 18228  }
 18229  
 18230  func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
 18231  	if s.Bucket == nil {
 18232  		return v
 18233  	}
 18234  	return *s.Bucket
 18235  }
 18236  
 18237  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18238  func (s *GetBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAnalyticsConfigurationInput {
 18239  	s.ExpectedBucketOwner = &v
 18240  	return s
 18241  }
 18242  
 18243  // SetId sets the Id field's value.
 18244  func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
 18245  	s.Id = &v
 18246  	return s
 18247  }
 18248  
 18249  func (s *GetBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 18250  	if s.Bucket == nil {
 18251  		return nil, fmt.Errorf("member Bucket is nil")
 18252  	}
 18253  	return parseEndpointARN(*s.Bucket)
 18254  }
 18255  
 18256  func (s *GetBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
 18257  	if s.Bucket == nil {
 18258  		return false
 18259  	}
 18260  	return arn.IsARN(*s.Bucket)
 18261  }
 18262  
 18263  // updateArnableField updates the value of the input field that
 18264  // takes an ARN as an input. This method is useful to backfill
 18265  // the parsed resource name from ARN into the input member.
 18266  // It returns a pointer to a modified copy of input and an error.
 18267  // Note that original input is not modified.
 18268  func (s GetBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 18269  	if s.Bucket == nil {
 18270  		return nil, fmt.Errorf("member Bucket is nil")
 18271  	}
 18272  	s.Bucket = aws.String(v)
 18273  	return &s, nil
 18274  }
 18275  
 18276  type GetBucketAnalyticsConfigurationOutput struct {
 18277  	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
 18278  
 18279  	// The configuration and any analyses for the analytics filter.
 18280  	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
 18281  }
 18282  
 18283  // String returns the string representation.
 18284  //
 18285  // API parameter values that are decorated as "sensitive" in the API will not
 18286  // be included in the string output. The member name will be present, but the
 18287  // value will be replaced with "sensitive".
 18288  func (s GetBucketAnalyticsConfigurationOutput) String() string {
 18289  	return awsutil.Prettify(s)
 18290  }
 18291  
 18292  // GoString returns the string representation.
 18293  //
 18294  // API parameter values that are decorated as "sensitive" in the API will not
 18295  // be included in the string output. The member name will be present, but the
 18296  // value will be replaced with "sensitive".
 18297  func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
 18298  	return s.String()
 18299  }
 18300  
 18301  // SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
 18302  func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
 18303  	s.AnalyticsConfiguration = v
 18304  	return s
 18305  }
 18306  
 18307  type GetBucketCorsInput struct {
 18308  	_ struct{} `locationName:"GetBucketCorsRequest" type:"structure"`
 18309  
 18310  	// The bucket name for which to get the cors configuration.
 18311  	//
 18312  	// Bucket is a required field
 18313  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18314  
 18315  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18316  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18317  	// error.
 18318  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18319  }
 18320  
 18321  // String returns the string representation.
 18322  //
 18323  // API parameter values that are decorated as "sensitive" in the API will not
 18324  // be included in the string output. The member name will be present, but the
 18325  // value will be replaced with "sensitive".
 18326  func (s GetBucketCorsInput) String() string {
 18327  	return awsutil.Prettify(s)
 18328  }
 18329  
 18330  // GoString returns the string representation.
 18331  //
 18332  // API parameter values that are decorated as "sensitive" in the API will not
 18333  // be included in the string output. The member name will be present, but the
 18334  // value will be replaced with "sensitive".
 18335  func (s GetBucketCorsInput) GoString() string {
 18336  	return s.String()
 18337  }
 18338  
 18339  // Validate inspects the fields of the type to determine if they are valid.
 18340  func (s *GetBucketCorsInput) Validate() error {
 18341  	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
 18342  	if s.Bucket == nil {
 18343  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18344  	}
 18345  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18346  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18347  	}
 18348  
 18349  	if invalidParams.Len() > 0 {
 18350  		return invalidParams
 18351  	}
 18352  	return nil
 18353  }
 18354  
 18355  // SetBucket sets the Bucket field's value.
 18356  func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
 18357  	s.Bucket = &v
 18358  	return s
 18359  }
 18360  
 18361  func (s *GetBucketCorsInput) getBucket() (v string) {
 18362  	if s.Bucket == nil {
 18363  		return v
 18364  	}
 18365  	return *s.Bucket
 18366  }
 18367  
 18368  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18369  func (s *GetBucketCorsInput) SetExpectedBucketOwner(v string) *GetBucketCorsInput {
 18370  	s.ExpectedBucketOwner = &v
 18371  	return s
 18372  }
 18373  
 18374  func (s *GetBucketCorsInput) getEndpointARN() (arn.Resource, error) {
 18375  	if s.Bucket == nil {
 18376  		return nil, fmt.Errorf("member Bucket is nil")
 18377  	}
 18378  	return parseEndpointARN(*s.Bucket)
 18379  }
 18380  
 18381  func (s *GetBucketCorsInput) hasEndpointARN() bool {
 18382  	if s.Bucket == nil {
 18383  		return false
 18384  	}
 18385  	return arn.IsARN(*s.Bucket)
 18386  }
 18387  
 18388  // updateArnableField updates the value of the input field that
 18389  // takes an ARN as an input. This method is useful to backfill
 18390  // the parsed resource name from ARN into the input member.
 18391  // It returns a pointer to a modified copy of input and an error.
 18392  // Note that original input is not modified.
 18393  func (s GetBucketCorsInput) updateArnableField(v string) (interface{}, error) {
 18394  	if s.Bucket == nil {
 18395  		return nil, fmt.Errorf("member Bucket is nil")
 18396  	}
 18397  	s.Bucket = aws.String(v)
 18398  	return &s, nil
 18399  }
 18400  
 18401  type GetBucketCorsOutput struct {
 18402  	_ struct{} `type:"structure"`
 18403  
 18404  	// A set of origins and methods (cross-origin access that you want to allow).
 18405  	// You can add up to 100 rules to the configuration.
 18406  	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
 18407  }
 18408  
 18409  // String returns the string representation.
 18410  //
 18411  // API parameter values that are decorated as "sensitive" in the API will not
 18412  // be included in the string output. The member name will be present, but the
 18413  // value will be replaced with "sensitive".
 18414  func (s GetBucketCorsOutput) String() string {
 18415  	return awsutil.Prettify(s)
 18416  }
 18417  
 18418  // GoString returns the string representation.
 18419  //
 18420  // API parameter values that are decorated as "sensitive" in the API will not
 18421  // be included in the string output. The member name will be present, but the
 18422  // value will be replaced with "sensitive".
 18423  func (s GetBucketCorsOutput) GoString() string {
 18424  	return s.String()
 18425  }
 18426  
 18427  // SetCORSRules sets the CORSRules field's value.
 18428  func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
 18429  	s.CORSRules = v
 18430  	return s
 18431  }
 18432  
 18433  type GetBucketEncryptionInput struct {
 18434  	_ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"`
 18435  
 18436  	// The name of the bucket from which the server-side encryption configuration
 18437  	// is retrieved.
 18438  	//
 18439  	// Bucket is a required field
 18440  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18441  
 18442  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18443  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18444  	// error.
 18445  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18446  }
 18447  
 18448  // String returns the string representation.
 18449  //
 18450  // API parameter values that are decorated as "sensitive" in the API will not
 18451  // be included in the string output. The member name will be present, but the
 18452  // value will be replaced with "sensitive".
 18453  func (s GetBucketEncryptionInput) String() string {
 18454  	return awsutil.Prettify(s)
 18455  }
 18456  
 18457  // GoString returns the string representation.
 18458  //
 18459  // API parameter values that are decorated as "sensitive" in the API will not
 18460  // be included in the string output. The member name will be present, but the
 18461  // value will be replaced with "sensitive".
 18462  func (s GetBucketEncryptionInput) GoString() string {
 18463  	return s.String()
 18464  }
 18465  
 18466  // Validate inspects the fields of the type to determine if they are valid.
 18467  func (s *GetBucketEncryptionInput) Validate() error {
 18468  	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
 18469  	if s.Bucket == nil {
 18470  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18471  	}
 18472  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18473  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18474  	}
 18475  
 18476  	if invalidParams.Len() > 0 {
 18477  		return invalidParams
 18478  	}
 18479  	return nil
 18480  }
 18481  
 18482  // SetBucket sets the Bucket field's value.
 18483  func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
 18484  	s.Bucket = &v
 18485  	return s
 18486  }
 18487  
 18488  func (s *GetBucketEncryptionInput) getBucket() (v string) {
 18489  	if s.Bucket == nil {
 18490  		return v
 18491  	}
 18492  	return *s.Bucket
 18493  }
 18494  
 18495  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18496  func (s *GetBucketEncryptionInput) SetExpectedBucketOwner(v string) *GetBucketEncryptionInput {
 18497  	s.ExpectedBucketOwner = &v
 18498  	return s
 18499  }
 18500  
 18501  func (s *GetBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
 18502  	if s.Bucket == nil {
 18503  		return nil, fmt.Errorf("member Bucket is nil")
 18504  	}
 18505  	return parseEndpointARN(*s.Bucket)
 18506  }
 18507  
 18508  func (s *GetBucketEncryptionInput) hasEndpointARN() bool {
 18509  	if s.Bucket == nil {
 18510  		return false
 18511  	}
 18512  	return arn.IsARN(*s.Bucket)
 18513  }
 18514  
 18515  // updateArnableField updates the value of the input field that
 18516  // takes an ARN as an input. This method is useful to backfill
 18517  // the parsed resource name from ARN into the input member.
 18518  // It returns a pointer to a modified copy of input and an error.
 18519  // Note that original input is not modified.
 18520  func (s GetBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
 18521  	if s.Bucket == nil {
 18522  		return nil, fmt.Errorf("member Bucket is nil")
 18523  	}
 18524  	s.Bucket = aws.String(v)
 18525  	return &s, nil
 18526  }
 18527  
 18528  type GetBucketEncryptionOutput struct {
 18529  	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
 18530  
 18531  	// Specifies the default server-side-encryption configuration.
 18532  	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
 18533  }
 18534  
 18535  // String returns the string representation.
 18536  //
 18537  // API parameter values that are decorated as "sensitive" in the API will not
 18538  // be included in the string output. The member name will be present, but the
 18539  // value will be replaced with "sensitive".
 18540  func (s GetBucketEncryptionOutput) String() string {
 18541  	return awsutil.Prettify(s)
 18542  }
 18543  
 18544  // GoString returns the string representation.
 18545  //
 18546  // API parameter values that are decorated as "sensitive" in the API will not
 18547  // be included in the string output. The member name will be present, but the
 18548  // value will be replaced with "sensitive".
 18549  func (s GetBucketEncryptionOutput) GoString() string {
 18550  	return s.String()
 18551  }
 18552  
 18553  // SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
 18554  func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
 18555  	s.ServerSideEncryptionConfiguration = v
 18556  	return s
 18557  }
 18558  
 18559  type GetBucketIntelligentTieringConfigurationInput struct {
 18560  	_ struct{} `locationName:"GetBucketIntelligentTieringConfigurationRequest" type:"structure"`
 18561  
 18562  	// The name of the Amazon S3 bucket whose configuration you want to modify or
 18563  	// retrieve.
 18564  	//
 18565  	// Bucket is a required field
 18566  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18567  
 18568  	// The ID used to identify the S3 Intelligent-Tiering configuration.
 18569  	//
 18570  	// Id is a required field
 18571  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 18572  }
 18573  
 18574  // String returns the string representation.
 18575  //
 18576  // API parameter values that are decorated as "sensitive" in the API will not
 18577  // be included in the string output. The member name will be present, but the
 18578  // value will be replaced with "sensitive".
 18579  func (s GetBucketIntelligentTieringConfigurationInput) String() string {
 18580  	return awsutil.Prettify(s)
 18581  }
 18582  
 18583  // GoString returns the string representation.
 18584  //
 18585  // API parameter values that are decorated as "sensitive" in the API will not
 18586  // be included in the string output. The member name will be present, but the
 18587  // value will be replaced with "sensitive".
 18588  func (s GetBucketIntelligentTieringConfigurationInput) GoString() string {
 18589  	return s.String()
 18590  }
 18591  
 18592  // Validate inspects the fields of the type to determine if they are valid.
 18593  func (s *GetBucketIntelligentTieringConfigurationInput) Validate() error {
 18594  	invalidParams := request.ErrInvalidParams{Context: "GetBucketIntelligentTieringConfigurationInput"}
 18595  	if s.Bucket == nil {
 18596  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18597  	}
 18598  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18599  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18600  	}
 18601  	if s.Id == nil {
 18602  		invalidParams.Add(request.NewErrParamRequired("Id"))
 18603  	}
 18604  
 18605  	if invalidParams.Len() > 0 {
 18606  		return invalidParams
 18607  	}
 18608  	return nil
 18609  }
 18610  
 18611  // SetBucket sets the Bucket field's value.
 18612  func (s *GetBucketIntelligentTieringConfigurationInput) SetBucket(v string) *GetBucketIntelligentTieringConfigurationInput {
 18613  	s.Bucket = &v
 18614  	return s
 18615  }
 18616  
 18617  func (s *GetBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
 18618  	if s.Bucket == nil {
 18619  		return v
 18620  	}
 18621  	return *s.Bucket
 18622  }
 18623  
 18624  // SetId sets the Id field's value.
 18625  func (s *GetBucketIntelligentTieringConfigurationInput) SetId(v string) *GetBucketIntelligentTieringConfigurationInput {
 18626  	s.Id = &v
 18627  	return s
 18628  }
 18629  
 18630  func (s *GetBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
 18631  	if s.Bucket == nil {
 18632  		return nil, fmt.Errorf("member Bucket is nil")
 18633  	}
 18634  	return parseEndpointARN(*s.Bucket)
 18635  }
 18636  
 18637  func (s *GetBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
 18638  	if s.Bucket == nil {
 18639  		return false
 18640  	}
 18641  	return arn.IsARN(*s.Bucket)
 18642  }
 18643  
 18644  // updateArnableField updates the value of the input field that
 18645  // takes an ARN as an input. This method is useful to backfill
 18646  // the parsed resource name from ARN into the input member.
 18647  // It returns a pointer to a modified copy of input and an error.
 18648  // Note that original input is not modified.
 18649  func (s GetBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
 18650  	if s.Bucket == nil {
 18651  		return nil, fmt.Errorf("member Bucket is nil")
 18652  	}
 18653  	s.Bucket = aws.String(v)
 18654  	return &s, nil
 18655  }
 18656  
 18657  type GetBucketIntelligentTieringConfigurationOutput struct {
 18658  	_ struct{} `type:"structure" payload:"IntelligentTieringConfiguration"`
 18659  
 18660  	// Container for S3 Intelligent-Tiering configuration.
 18661  	IntelligentTieringConfiguration *IntelligentTieringConfiguration `type:"structure"`
 18662  }
 18663  
 18664  // String returns the string representation.
 18665  //
 18666  // API parameter values that are decorated as "sensitive" in the API will not
 18667  // be included in the string output. The member name will be present, but the
 18668  // value will be replaced with "sensitive".
 18669  func (s GetBucketIntelligentTieringConfigurationOutput) String() string {
 18670  	return awsutil.Prettify(s)
 18671  }
 18672  
 18673  // GoString returns the string representation.
 18674  //
 18675  // API parameter values that are decorated as "sensitive" in the API will not
 18676  // be included in the string output. The member name will be present, but the
 18677  // value will be replaced with "sensitive".
 18678  func (s GetBucketIntelligentTieringConfigurationOutput) GoString() string {
 18679  	return s.String()
 18680  }
 18681  
 18682  // SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
 18683  func (s *GetBucketIntelligentTieringConfigurationOutput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *GetBucketIntelligentTieringConfigurationOutput {
 18684  	s.IntelligentTieringConfiguration = v
 18685  	return s
 18686  }
 18687  
 18688  type GetBucketInventoryConfigurationInput struct {
 18689  	_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
 18690  
 18691  	// The name of the bucket containing the inventory configuration to retrieve.
 18692  	//
 18693  	// Bucket is a required field
 18694  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18695  
 18696  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18697  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18698  	// error.
 18699  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18700  
 18701  	// The ID used to identify the inventory configuration.
 18702  	//
 18703  	// Id is a required field
 18704  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 18705  }
 18706  
 18707  // String returns the string representation.
 18708  //
 18709  // API parameter values that are decorated as "sensitive" in the API will not
 18710  // be included in the string output. The member name will be present, but the
 18711  // value will be replaced with "sensitive".
 18712  func (s GetBucketInventoryConfigurationInput) String() string {
 18713  	return awsutil.Prettify(s)
 18714  }
 18715  
 18716  // GoString returns the string representation.
 18717  //
 18718  // API parameter values that are decorated as "sensitive" in the API will not
 18719  // be included in the string output. The member name will be present, but the
 18720  // value will be replaced with "sensitive".
 18721  func (s GetBucketInventoryConfigurationInput) GoString() string {
 18722  	return s.String()
 18723  }
 18724  
 18725  // Validate inspects the fields of the type to determine if they are valid.
 18726  func (s *GetBucketInventoryConfigurationInput) Validate() error {
 18727  	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
 18728  	if s.Bucket == nil {
 18729  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18730  	}
 18731  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18732  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18733  	}
 18734  	if s.Id == nil {
 18735  		invalidParams.Add(request.NewErrParamRequired("Id"))
 18736  	}
 18737  
 18738  	if invalidParams.Len() > 0 {
 18739  		return invalidParams
 18740  	}
 18741  	return nil
 18742  }
 18743  
 18744  // SetBucket sets the Bucket field's value.
 18745  func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
 18746  	s.Bucket = &v
 18747  	return s
 18748  }
 18749  
 18750  func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
 18751  	if s.Bucket == nil {
 18752  		return v
 18753  	}
 18754  	return *s.Bucket
 18755  }
 18756  
 18757  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18758  func (s *GetBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketInventoryConfigurationInput {
 18759  	s.ExpectedBucketOwner = &v
 18760  	return s
 18761  }
 18762  
 18763  // SetId sets the Id field's value.
 18764  func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
 18765  	s.Id = &v
 18766  	return s
 18767  }
 18768  
 18769  func (s *GetBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
 18770  	if s.Bucket == nil {
 18771  		return nil, fmt.Errorf("member Bucket is nil")
 18772  	}
 18773  	return parseEndpointARN(*s.Bucket)
 18774  }
 18775  
 18776  func (s *GetBucketInventoryConfigurationInput) hasEndpointARN() bool {
 18777  	if s.Bucket == nil {
 18778  		return false
 18779  	}
 18780  	return arn.IsARN(*s.Bucket)
 18781  }
 18782  
 18783  // updateArnableField updates the value of the input field that
 18784  // takes an ARN as an input. This method is useful to backfill
 18785  // the parsed resource name from ARN into the input member.
 18786  // It returns a pointer to a modified copy of input and an error.
 18787  // Note that original input is not modified.
 18788  func (s GetBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
 18789  	if s.Bucket == nil {
 18790  		return nil, fmt.Errorf("member Bucket is nil")
 18791  	}
 18792  	s.Bucket = aws.String(v)
 18793  	return &s, nil
 18794  }
 18795  
 18796  type GetBucketInventoryConfigurationOutput struct {
 18797  	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
 18798  
 18799  	// Specifies the inventory configuration.
 18800  	InventoryConfiguration *InventoryConfiguration `type:"structure"`
 18801  }
 18802  
 18803  // String returns the string representation.
 18804  //
 18805  // API parameter values that are decorated as "sensitive" in the API will not
 18806  // be included in the string output. The member name will be present, but the
 18807  // value will be replaced with "sensitive".
 18808  func (s GetBucketInventoryConfigurationOutput) String() string {
 18809  	return awsutil.Prettify(s)
 18810  }
 18811  
 18812  // GoString returns the string representation.
 18813  //
 18814  // API parameter values that are decorated as "sensitive" in the API will not
 18815  // be included in the string output. The member name will be present, but the
 18816  // value will be replaced with "sensitive".
 18817  func (s GetBucketInventoryConfigurationOutput) GoString() string {
 18818  	return s.String()
 18819  }
 18820  
 18821  // SetInventoryConfiguration sets the InventoryConfiguration field's value.
 18822  func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
 18823  	s.InventoryConfiguration = v
 18824  	return s
 18825  }
 18826  
 18827  type GetBucketLifecycleConfigurationInput struct {
 18828  	_ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"`
 18829  
 18830  	// The name of the bucket for which to get the lifecycle information.
 18831  	//
 18832  	// Bucket is a required field
 18833  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18834  
 18835  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18836  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18837  	// error.
 18838  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18839  }
 18840  
 18841  // String returns the string representation.
 18842  //
 18843  // API parameter values that are decorated as "sensitive" in the API will not
 18844  // be included in the string output. The member name will be present, but the
 18845  // value will be replaced with "sensitive".
 18846  func (s GetBucketLifecycleConfigurationInput) String() string {
 18847  	return awsutil.Prettify(s)
 18848  }
 18849  
 18850  // GoString returns the string representation.
 18851  //
 18852  // API parameter values that are decorated as "sensitive" in the API will not
 18853  // be included in the string output. The member name will be present, but the
 18854  // value will be replaced with "sensitive".
 18855  func (s GetBucketLifecycleConfigurationInput) GoString() string {
 18856  	return s.String()
 18857  }
 18858  
 18859  // Validate inspects the fields of the type to determine if they are valid.
 18860  func (s *GetBucketLifecycleConfigurationInput) Validate() error {
 18861  	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
 18862  	if s.Bucket == nil {
 18863  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18864  	}
 18865  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18866  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18867  	}
 18868  
 18869  	if invalidParams.Len() > 0 {
 18870  		return invalidParams
 18871  	}
 18872  	return nil
 18873  }
 18874  
 18875  // SetBucket sets the Bucket field's value.
 18876  func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
 18877  	s.Bucket = &v
 18878  	return s
 18879  }
 18880  
 18881  func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
 18882  	if s.Bucket == nil {
 18883  		return v
 18884  	}
 18885  	return *s.Bucket
 18886  }
 18887  
 18888  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 18889  func (s *GetBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleConfigurationInput {
 18890  	s.ExpectedBucketOwner = &v
 18891  	return s
 18892  }
 18893  
 18894  func (s *GetBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
 18895  	if s.Bucket == nil {
 18896  		return nil, fmt.Errorf("member Bucket is nil")
 18897  	}
 18898  	return parseEndpointARN(*s.Bucket)
 18899  }
 18900  
 18901  func (s *GetBucketLifecycleConfigurationInput) hasEndpointARN() bool {
 18902  	if s.Bucket == nil {
 18903  		return false
 18904  	}
 18905  	return arn.IsARN(*s.Bucket)
 18906  }
 18907  
 18908  // updateArnableField updates the value of the input field that
 18909  // takes an ARN as an input. This method is useful to backfill
 18910  // the parsed resource name from ARN into the input member.
 18911  // It returns a pointer to a modified copy of input and an error.
 18912  // Note that original input is not modified.
 18913  func (s GetBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
 18914  	if s.Bucket == nil {
 18915  		return nil, fmt.Errorf("member Bucket is nil")
 18916  	}
 18917  	s.Bucket = aws.String(v)
 18918  	return &s, nil
 18919  }
 18920  
 18921  type GetBucketLifecycleConfigurationOutput struct {
 18922  	_ struct{} `type:"structure"`
 18923  
 18924  	// Container for a lifecycle rule.
 18925  	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
 18926  }
 18927  
 18928  // String returns the string representation.
 18929  //
 18930  // API parameter values that are decorated as "sensitive" in the API will not
 18931  // be included in the string output. The member name will be present, but the
 18932  // value will be replaced with "sensitive".
 18933  func (s GetBucketLifecycleConfigurationOutput) String() string {
 18934  	return awsutil.Prettify(s)
 18935  }
 18936  
 18937  // GoString returns the string representation.
 18938  //
 18939  // API parameter values that are decorated as "sensitive" in the API will not
 18940  // be included in the string output. The member name will be present, but the
 18941  // value will be replaced with "sensitive".
 18942  func (s GetBucketLifecycleConfigurationOutput) GoString() string {
 18943  	return s.String()
 18944  }
 18945  
 18946  // SetRules sets the Rules field's value.
 18947  func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
 18948  	s.Rules = v
 18949  	return s
 18950  }
 18951  
 18952  type GetBucketLifecycleInput struct {
 18953  	_ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"`
 18954  
 18955  	// The name of the bucket for which to get the lifecycle information.
 18956  	//
 18957  	// Bucket is a required field
 18958  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 18959  
 18960  	// The account ID of the expected bucket owner. If the bucket is owned by a
 18961  	// different account, the request will fail with an HTTP 403 (Access Denied)
 18962  	// error.
 18963  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 18964  }
 18965  
 18966  // String returns the string representation.
 18967  //
 18968  // API parameter values that are decorated as "sensitive" in the API will not
 18969  // be included in the string output. The member name will be present, but the
 18970  // value will be replaced with "sensitive".
 18971  func (s GetBucketLifecycleInput) String() string {
 18972  	return awsutil.Prettify(s)
 18973  }
 18974  
 18975  // GoString returns the string representation.
 18976  //
 18977  // API parameter values that are decorated as "sensitive" in the API will not
 18978  // be included in the string output. The member name will be present, but the
 18979  // value will be replaced with "sensitive".
 18980  func (s GetBucketLifecycleInput) GoString() string {
 18981  	return s.String()
 18982  }
 18983  
 18984  // Validate inspects the fields of the type to determine if they are valid.
 18985  func (s *GetBucketLifecycleInput) Validate() error {
 18986  	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
 18987  	if s.Bucket == nil {
 18988  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 18989  	}
 18990  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 18991  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 18992  	}
 18993  
 18994  	if invalidParams.Len() > 0 {
 18995  		return invalidParams
 18996  	}
 18997  	return nil
 18998  }
 18999  
 19000  // SetBucket sets the Bucket field's value.
 19001  func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
 19002  	s.Bucket = &v
 19003  	return s
 19004  }
 19005  
 19006  func (s *GetBucketLifecycleInput) getBucket() (v string) {
 19007  	if s.Bucket == nil {
 19008  		return v
 19009  	}
 19010  	return *s.Bucket
 19011  }
 19012  
 19013  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19014  func (s *GetBucketLifecycleInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleInput {
 19015  	s.ExpectedBucketOwner = &v
 19016  	return s
 19017  }
 19018  
 19019  func (s *GetBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
 19020  	if s.Bucket == nil {
 19021  		return nil, fmt.Errorf("member Bucket is nil")
 19022  	}
 19023  	return parseEndpointARN(*s.Bucket)
 19024  }
 19025  
 19026  func (s *GetBucketLifecycleInput) hasEndpointARN() bool {
 19027  	if s.Bucket == nil {
 19028  		return false
 19029  	}
 19030  	return arn.IsARN(*s.Bucket)
 19031  }
 19032  
 19033  // updateArnableField updates the value of the input field that
 19034  // takes an ARN as an input. This method is useful to backfill
 19035  // the parsed resource name from ARN into the input member.
 19036  // It returns a pointer to a modified copy of input and an error.
 19037  // Note that original input is not modified.
 19038  func (s GetBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
 19039  	if s.Bucket == nil {
 19040  		return nil, fmt.Errorf("member Bucket is nil")
 19041  	}
 19042  	s.Bucket = aws.String(v)
 19043  	return &s, nil
 19044  }
 19045  
 19046  type GetBucketLifecycleOutput struct {
 19047  	_ struct{} `type:"structure"`
 19048  
 19049  	// Container for a lifecycle rule.
 19050  	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
 19051  }
 19052  
 19053  // String returns the string representation.
 19054  //
 19055  // API parameter values that are decorated as "sensitive" in the API will not
 19056  // be included in the string output. The member name will be present, but the
 19057  // value will be replaced with "sensitive".
 19058  func (s GetBucketLifecycleOutput) String() string {
 19059  	return awsutil.Prettify(s)
 19060  }
 19061  
 19062  // GoString returns the string representation.
 19063  //
 19064  // API parameter values that are decorated as "sensitive" in the API will not
 19065  // be included in the string output. The member name will be present, but the
 19066  // value will be replaced with "sensitive".
 19067  func (s GetBucketLifecycleOutput) GoString() string {
 19068  	return s.String()
 19069  }
 19070  
 19071  // SetRules sets the Rules field's value.
 19072  func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
 19073  	s.Rules = v
 19074  	return s
 19075  }
 19076  
 19077  type GetBucketLocationInput struct {
 19078  	_ struct{} `locationName:"GetBucketLocationRequest" type:"structure"`
 19079  
 19080  	// The name of the bucket for which to get the location.
 19081  	//
 19082  	// Bucket is a required field
 19083  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19084  
 19085  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19086  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19087  	// error.
 19088  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19089  }
 19090  
 19091  // String returns the string representation.
 19092  //
 19093  // API parameter values that are decorated as "sensitive" in the API will not
 19094  // be included in the string output. The member name will be present, but the
 19095  // value will be replaced with "sensitive".
 19096  func (s GetBucketLocationInput) String() string {
 19097  	return awsutil.Prettify(s)
 19098  }
 19099  
 19100  // GoString returns the string representation.
 19101  //
 19102  // API parameter values that are decorated as "sensitive" in the API will not
 19103  // be included in the string output. The member name will be present, but the
 19104  // value will be replaced with "sensitive".
 19105  func (s GetBucketLocationInput) GoString() string {
 19106  	return s.String()
 19107  }
 19108  
 19109  // Validate inspects the fields of the type to determine if they are valid.
 19110  func (s *GetBucketLocationInput) Validate() error {
 19111  	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
 19112  	if s.Bucket == nil {
 19113  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19114  	}
 19115  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19116  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19117  	}
 19118  
 19119  	if invalidParams.Len() > 0 {
 19120  		return invalidParams
 19121  	}
 19122  	return nil
 19123  }
 19124  
 19125  // SetBucket sets the Bucket field's value.
 19126  func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
 19127  	s.Bucket = &v
 19128  	return s
 19129  }
 19130  
 19131  func (s *GetBucketLocationInput) getBucket() (v string) {
 19132  	if s.Bucket == nil {
 19133  		return v
 19134  	}
 19135  	return *s.Bucket
 19136  }
 19137  
 19138  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19139  func (s *GetBucketLocationInput) SetExpectedBucketOwner(v string) *GetBucketLocationInput {
 19140  	s.ExpectedBucketOwner = &v
 19141  	return s
 19142  }
 19143  
 19144  func (s *GetBucketLocationInput) getEndpointARN() (arn.Resource, error) {
 19145  	if s.Bucket == nil {
 19146  		return nil, fmt.Errorf("member Bucket is nil")
 19147  	}
 19148  	return parseEndpointARN(*s.Bucket)
 19149  }
 19150  
 19151  func (s *GetBucketLocationInput) hasEndpointARN() bool {
 19152  	if s.Bucket == nil {
 19153  		return false
 19154  	}
 19155  	return arn.IsARN(*s.Bucket)
 19156  }
 19157  
 19158  // updateArnableField updates the value of the input field that
 19159  // takes an ARN as an input. This method is useful to backfill
 19160  // the parsed resource name from ARN into the input member.
 19161  // It returns a pointer to a modified copy of input and an error.
 19162  // Note that original input is not modified.
 19163  func (s GetBucketLocationInput) updateArnableField(v string) (interface{}, error) {
 19164  	if s.Bucket == nil {
 19165  		return nil, fmt.Errorf("member Bucket is nil")
 19166  	}
 19167  	s.Bucket = aws.String(v)
 19168  	return &s, nil
 19169  }
 19170  
 19171  type GetBucketLocationOutput struct {
 19172  	_ struct{} `type:"structure"`
 19173  
 19174  	// Specifies the Region where the bucket resides. For a list of all the Amazon
 19175  	// S3 supported location constraints by Region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).
 19176  	// Buckets in Region us-east-1 have a LocationConstraint of null.
 19177  	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
 19178  }
 19179  
 19180  // String returns the string representation.
 19181  //
 19182  // API parameter values that are decorated as "sensitive" in the API will not
 19183  // be included in the string output. The member name will be present, but the
 19184  // value will be replaced with "sensitive".
 19185  func (s GetBucketLocationOutput) String() string {
 19186  	return awsutil.Prettify(s)
 19187  }
 19188  
 19189  // GoString returns the string representation.
 19190  //
 19191  // API parameter values that are decorated as "sensitive" in the API will not
 19192  // be included in the string output. The member name will be present, but the
 19193  // value will be replaced with "sensitive".
 19194  func (s GetBucketLocationOutput) GoString() string {
 19195  	return s.String()
 19196  }
 19197  
 19198  // SetLocationConstraint sets the LocationConstraint field's value.
 19199  func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
 19200  	s.LocationConstraint = &v
 19201  	return s
 19202  }
 19203  
 19204  type GetBucketLoggingInput struct {
 19205  	_ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"`
 19206  
 19207  	// The bucket name for which to get the logging information.
 19208  	//
 19209  	// Bucket is a required field
 19210  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19211  
 19212  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19213  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19214  	// error.
 19215  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19216  }
 19217  
 19218  // String returns the string representation.
 19219  //
 19220  // API parameter values that are decorated as "sensitive" in the API will not
 19221  // be included in the string output. The member name will be present, but the
 19222  // value will be replaced with "sensitive".
 19223  func (s GetBucketLoggingInput) String() string {
 19224  	return awsutil.Prettify(s)
 19225  }
 19226  
 19227  // GoString returns the string representation.
 19228  //
 19229  // API parameter values that are decorated as "sensitive" in the API will not
 19230  // be included in the string output. The member name will be present, but the
 19231  // value will be replaced with "sensitive".
 19232  func (s GetBucketLoggingInput) GoString() string {
 19233  	return s.String()
 19234  }
 19235  
 19236  // Validate inspects the fields of the type to determine if they are valid.
 19237  func (s *GetBucketLoggingInput) Validate() error {
 19238  	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
 19239  	if s.Bucket == nil {
 19240  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19241  	}
 19242  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19243  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19244  	}
 19245  
 19246  	if invalidParams.Len() > 0 {
 19247  		return invalidParams
 19248  	}
 19249  	return nil
 19250  }
 19251  
 19252  // SetBucket sets the Bucket field's value.
 19253  func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
 19254  	s.Bucket = &v
 19255  	return s
 19256  }
 19257  
 19258  func (s *GetBucketLoggingInput) getBucket() (v string) {
 19259  	if s.Bucket == nil {
 19260  		return v
 19261  	}
 19262  	return *s.Bucket
 19263  }
 19264  
 19265  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19266  func (s *GetBucketLoggingInput) SetExpectedBucketOwner(v string) *GetBucketLoggingInput {
 19267  	s.ExpectedBucketOwner = &v
 19268  	return s
 19269  }
 19270  
 19271  func (s *GetBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
 19272  	if s.Bucket == nil {
 19273  		return nil, fmt.Errorf("member Bucket is nil")
 19274  	}
 19275  	return parseEndpointARN(*s.Bucket)
 19276  }
 19277  
 19278  func (s *GetBucketLoggingInput) hasEndpointARN() bool {
 19279  	if s.Bucket == nil {
 19280  		return false
 19281  	}
 19282  	return arn.IsARN(*s.Bucket)
 19283  }
 19284  
 19285  // updateArnableField updates the value of the input field that
 19286  // takes an ARN as an input. This method is useful to backfill
 19287  // the parsed resource name from ARN into the input member.
 19288  // It returns a pointer to a modified copy of input and an error.
 19289  // Note that original input is not modified.
 19290  func (s GetBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
 19291  	if s.Bucket == nil {
 19292  		return nil, fmt.Errorf("member Bucket is nil")
 19293  	}
 19294  	s.Bucket = aws.String(v)
 19295  	return &s, nil
 19296  }
 19297  
 19298  type GetBucketLoggingOutput struct {
 19299  	_ struct{} `type:"structure"`
 19300  
 19301  	// Describes where logs are stored and the prefix that Amazon S3 assigns to
 19302  	// all log object keys for a bucket. For more information, see PUT Bucket logging
 19303  	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
 19304  	// in the Amazon S3 API Reference.
 19305  	LoggingEnabled *LoggingEnabled `type:"structure"`
 19306  }
 19307  
 19308  // String returns the string representation.
 19309  //
 19310  // API parameter values that are decorated as "sensitive" in the API will not
 19311  // be included in the string output. The member name will be present, but the
 19312  // value will be replaced with "sensitive".
 19313  func (s GetBucketLoggingOutput) String() string {
 19314  	return awsutil.Prettify(s)
 19315  }
 19316  
 19317  // GoString returns the string representation.
 19318  //
 19319  // API parameter values that are decorated as "sensitive" in the API will not
 19320  // be included in the string output. The member name will be present, but the
 19321  // value will be replaced with "sensitive".
 19322  func (s GetBucketLoggingOutput) GoString() string {
 19323  	return s.String()
 19324  }
 19325  
 19326  // SetLoggingEnabled sets the LoggingEnabled field's value.
 19327  func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
 19328  	s.LoggingEnabled = v
 19329  	return s
 19330  }
 19331  
 19332  type GetBucketMetricsConfigurationInput struct {
 19333  	_ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"`
 19334  
 19335  	// The name of the bucket containing the metrics configuration to retrieve.
 19336  	//
 19337  	// Bucket is a required field
 19338  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19339  
 19340  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19341  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19342  	// error.
 19343  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19344  
 19345  	// The ID used to identify the metrics configuration.
 19346  	//
 19347  	// Id is a required field
 19348  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 19349  }
 19350  
 19351  // String returns the string representation.
 19352  //
 19353  // API parameter values that are decorated as "sensitive" in the API will not
 19354  // be included in the string output. The member name will be present, but the
 19355  // value will be replaced with "sensitive".
 19356  func (s GetBucketMetricsConfigurationInput) String() string {
 19357  	return awsutil.Prettify(s)
 19358  }
 19359  
 19360  // GoString returns the string representation.
 19361  //
 19362  // API parameter values that are decorated as "sensitive" in the API will not
 19363  // be included in the string output. The member name will be present, but the
 19364  // value will be replaced with "sensitive".
 19365  func (s GetBucketMetricsConfigurationInput) GoString() string {
 19366  	return s.String()
 19367  }
 19368  
 19369  // Validate inspects the fields of the type to determine if they are valid.
 19370  func (s *GetBucketMetricsConfigurationInput) Validate() error {
 19371  	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
 19372  	if s.Bucket == nil {
 19373  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19374  	}
 19375  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19376  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19377  	}
 19378  	if s.Id == nil {
 19379  		invalidParams.Add(request.NewErrParamRequired("Id"))
 19380  	}
 19381  
 19382  	if invalidParams.Len() > 0 {
 19383  		return invalidParams
 19384  	}
 19385  	return nil
 19386  }
 19387  
 19388  // SetBucket sets the Bucket field's value.
 19389  func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
 19390  	s.Bucket = &v
 19391  	return s
 19392  }
 19393  
 19394  func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
 19395  	if s.Bucket == nil {
 19396  		return v
 19397  	}
 19398  	return *s.Bucket
 19399  }
 19400  
 19401  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19402  func (s *GetBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketMetricsConfigurationInput {
 19403  	s.ExpectedBucketOwner = &v
 19404  	return s
 19405  }
 19406  
 19407  // SetId sets the Id field's value.
 19408  func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
 19409  	s.Id = &v
 19410  	return s
 19411  }
 19412  
 19413  func (s *GetBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 19414  	if s.Bucket == nil {
 19415  		return nil, fmt.Errorf("member Bucket is nil")
 19416  	}
 19417  	return parseEndpointARN(*s.Bucket)
 19418  }
 19419  
 19420  func (s *GetBucketMetricsConfigurationInput) hasEndpointARN() bool {
 19421  	if s.Bucket == nil {
 19422  		return false
 19423  	}
 19424  	return arn.IsARN(*s.Bucket)
 19425  }
 19426  
 19427  // updateArnableField updates the value of the input field that
 19428  // takes an ARN as an input. This method is useful to backfill
 19429  // the parsed resource name from ARN into the input member.
 19430  // It returns a pointer to a modified copy of input and an error.
 19431  // Note that original input is not modified.
 19432  func (s GetBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 19433  	if s.Bucket == nil {
 19434  		return nil, fmt.Errorf("member Bucket is nil")
 19435  	}
 19436  	s.Bucket = aws.String(v)
 19437  	return &s, nil
 19438  }
 19439  
 19440  type GetBucketMetricsConfigurationOutput struct {
 19441  	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
 19442  
 19443  	// Specifies the metrics configuration.
 19444  	MetricsConfiguration *MetricsConfiguration `type:"structure"`
 19445  }
 19446  
 19447  // String returns the string representation.
 19448  //
 19449  // API parameter values that are decorated as "sensitive" in the API will not
 19450  // be included in the string output. The member name will be present, but the
 19451  // value will be replaced with "sensitive".
 19452  func (s GetBucketMetricsConfigurationOutput) String() string {
 19453  	return awsutil.Prettify(s)
 19454  }
 19455  
 19456  // GoString returns the string representation.
 19457  //
 19458  // API parameter values that are decorated as "sensitive" in the API will not
 19459  // be included in the string output. The member name will be present, but the
 19460  // value will be replaced with "sensitive".
 19461  func (s GetBucketMetricsConfigurationOutput) GoString() string {
 19462  	return s.String()
 19463  }
 19464  
 19465  // SetMetricsConfiguration sets the MetricsConfiguration field's value.
 19466  func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
 19467  	s.MetricsConfiguration = v
 19468  	return s
 19469  }
 19470  
 19471  type GetBucketNotificationConfigurationRequest struct {
 19472  	_ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"`
 19473  
 19474  	// The name of the bucket for which to get the notification configuration.
 19475  	//
 19476  	// Bucket is a required field
 19477  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19478  
 19479  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19480  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19481  	// error.
 19482  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19483  }
 19484  
 19485  // String returns the string representation.
 19486  //
 19487  // API parameter values that are decorated as "sensitive" in the API will not
 19488  // be included in the string output. The member name will be present, but the
 19489  // value will be replaced with "sensitive".
 19490  func (s GetBucketNotificationConfigurationRequest) String() string {
 19491  	return awsutil.Prettify(s)
 19492  }
 19493  
 19494  // GoString returns the string representation.
 19495  //
 19496  // API parameter values that are decorated as "sensitive" in the API will not
 19497  // be included in the string output. The member name will be present, but the
 19498  // value will be replaced with "sensitive".
 19499  func (s GetBucketNotificationConfigurationRequest) GoString() string {
 19500  	return s.String()
 19501  }
 19502  
 19503  // Validate inspects the fields of the type to determine if they are valid.
 19504  func (s *GetBucketNotificationConfigurationRequest) Validate() error {
 19505  	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
 19506  	if s.Bucket == nil {
 19507  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19508  	}
 19509  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19510  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19511  	}
 19512  
 19513  	if invalidParams.Len() > 0 {
 19514  		return invalidParams
 19515  	}
 19516  	return nil
 19517  }
 19518  
 19519  // SetBucket sets the Bucket field's value.
 19520  func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
 19521  	s.Bucket = &v
 19522  	return s
 19523  }
 19524  
 19525  func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
 19526  	if s.Bucket == nil {
 19527  		return v
 19528  	}
 19529  	return *s.Bucket
 19530  }
 19531  
 19532  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19533  func (s *GetBucketNotificationConfigurationRequest) SetExpectedBucketOwner(v string) *GetBucketNotificationConfigurationRequest {
 19534  	s.ExpectedBucketOwner = &v
 19535  	return s
 19536  }
 19537  
 19538  func (s *GetBucketNotificationConfigurationRequest) getEndpointARN() (arn.Resource, error) {
 19539  	if s.Bucket == nil {
 19540  		return nil, fmt.Errorf("member Bucket is nil")
 19541  	}
 19542  	return parseEndpointARN(*s.Bucket)
 19543  }
 19544  
 19545  func (s *GetBucketNotificationConfigurationRequest) hasEndpointARN() bool {
 19546  	if s.Bucket == nil {
 19547  		return false
 19548  	}
 19549  	return arn.IsARN(*s.Bucket)
 19550  }
 19551  
 19552  // updateArnableField updates the value of the input field that
 19553  // takes an ARN as an input. This method is useful to backfill
 19554  // the parsed resource name from ARN into the input member.
 19555  // It returns a pointer to a modified copy of input and an error.
 19556  // Note that original input is not modified.
 19557  func (s GetBucketNotificationConfigurationRequest) updateArnableField(v string) (interface{}, error) {
 19558  	if s.Bucket == nil {
 19559  		return nil, fmt.Errorf("member Bucket is nil")
 19560  	}
 19561  	s.Bucket = aws.String(v)
 19562  	return &s, nil
 19563  }
 19564  
 19565  type GetBucketOwnershipControlsInput struct {
 19566  	_ struct{} `locationName:"GetBucketOwnershipControlsRequest" type:"structure"`
 19567  
 19568  	// The name of the Amazon S3 bucket whose OwnershipControls you want to retrieve.
 19569  	//
 19570  	// Bucket is a required field
 19571  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19572  
 19573  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19574  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19575  	// error.
 19576  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19577  }
 19578  
 19579  // String returns the string representation.
 19580  //
 19581  // API parameter values that are decorated as "sensitive" in the API will not
 19582  // be included in the string output. The member name will be present, but the
 19583  // value will be replaced with "sensitive".
 19584  func (s GetBucketOwnershipControlsInput) String() string {
 19585  	return awsutil.Prettify(s)
 19586  }
 19587  
 19588  // GoString returns the string representation.
 19589  //
 19590  // API parameter values that are decorated as "sensitive" in the API will not
 19591  // be included in the string output. The member name will be present, but the
 19592  // value will be replaced with "sensitive".
 19593  func (s GetBucketOwnershipControlsInput) GoString() string {
 19594  	return s.String()
 19595  }
 19596  
 19597  // Validate inspects the fields of the type to determine if they are valid.
 19598  func (s *GetBucketOwnershipControlsInput) Validate() error {
 19599  	invalidParams := request.ErrInvalidParams{Context: "GetBucketOwnershipControlsInput"}
 19600  	if s.Bucket == nil {
 19601  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19602  	}
 19603  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19604  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19605  	}
 19606  
 19607  	if invalidParams.Len() > 0 {
 19608  		return invalidParams
 19609  	}
 19610  	return nil
 19611  }
 19612  
 19613  // SetBucket sets the Bucket field's value.
 19614  func (s *GetBucketOwnershipControlsInput) SetBucket(v string) *GetBucketOwnershipControlsInput {
 19615  	s.Bucket = &v
 19616  	return s
 19617  }
 19618  
 19619  func (s *GetBucketOwnershipControlsInput) getBucket() (v string) {
 19620  	if s.Bucket == nil {
 19621  		return v
 19622  	}
 19623  	return *s.Bucket
 19624  }
 19625  
 19626  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19627  func (s *GetBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *GetBucketOwnershipControlsInput {
 19628  	s.ExpectedBucketOwner = &v
 19629  	return s
 19630  }
 19631  
 19632  func (s *GetBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
 19633  	if s.Bucket == nil {
 19634  		return nil, fmt.Errorf("member Bucket is nil")
 19635  	}
 19636  	return parseEndpointARN(*s.Bucket)
 19637  }
 19638  
 19639  func (s *GetBucketOwnershipControlsInput) hasEndpointARN() bool {
 19640  	if s.Bucket == nil {
 19641  		return false
 19642  	}
 19643  	return arn.IsARN(*s.Bucket)
 19644  }
 19645  
 19646  // updateArnableField updates the value of the input field that
 19647  // takes an ARN as an input. This method is useful to backfill
 19648  // the parsed resource name from ARN into the input member.
 19649  // It returns a pointer to a modified copy of input and an error.
 19650  // Note that original input is not modified.
 19651  func (s GetBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
 19652  	if s.Bucket == nil {
 19653  		return nil, fmt.Errorf("member Bucket is nil")
 19654  	}
 19655  	s.Bucket = aws.String(v)
 19656  	return &s, nil
 19657  }
 19658  
 19659  type GetBucketOwnershipControlsOutput struct {
 19660  	_ struct{} `type:"structure" payload:"OwnershipControls"`
 19661  
 19662  	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) currently in
 19663  	// effect for this Amazon S3 bucket.
 19664  	OwnershipControls *OwnershipControls `type:"structure"`
 19665  }
 19666  
 19667  // String returns the string representation.
 19668  //
 19669  // API parameter values that are decorated as "sensitive" in the API will not
 19670  // be included in the string output. The member name will be present, but the
 19671  // value will be replaced with "sensitive".
 19672  func (s GetBucketOwnershipControlsOutput) String() string {
 19673  	return awsutil.Prettify(s)
 19674  }
 19675  
 19676  // GoString returns the string representation.
 19677  //
 19678  // API parameter values that are decorated as "sensitive" in the API will not
 19679  // be included in the string output. The member name will be present, but the
 19680  // value will be replaced with "sensitive".
 19681  func (s GetBucketOwnershipControlsOutput) GoString() string {
 19682  	return s.String()
 19683  }
 19684  
 19685  // SetOwnershipControls sets the OwnershipControls field's value.
 19686  func (s *GetBucketOwnershipControlsOutput) SetOwnershipControls(v *OwnershipControls) *GetBucketOwnershipControlsOutput {
 19687  	s.OwnershipControls = v
 19688  	return s
 19689  }
 19690  
 19691  type GetBucketPolicyInput struct {
 19692  	_ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"`
 19693  
 19694  	// The bucket name for which to get the bucket policy.
 19695  	//
 19696  	// Bucket is a required field
 19697  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19698  
 19699  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19700  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19701  	// error.
 19702  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19703  }
 19704  
 19705  // String returns the string representation.
 19706  //
 19707  // API parameter values that are decorated as "sensitive" in the API will not
 19708  // be included in the string output. The member name will be present, but the
 19709  // value will be replaced with "sensitive".
 19710  func (s GetBucketPolicyInput) String() string {
 19711  	return awsutil.Prettify(s)
 19712  }
 19713  
 19714  // GoString returns the string representation.
 19715  //
 19716  // API parameter values that are decorated as "sensitive" in the API will not
 19717  // be included in the string output. The member name will be present, but the
 19718  // value will be replaced with "sensitive".
 19719  func (s GetBucketPolicyInput) GoString() string {
 19720  	return s.String()
 19721  }
 19722  
 19723  // Validate inspects the fields of the type to determine if they are valid.
 19724  func (s *GetBucketPolicyInput) Validate() error {
 19725  	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
 19726  	if s.Bucket == nil {
 19727  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19728  	}
 19729  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19730  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19731  	}
 19732  
 19733  	if invalidParams.Len() > 0 {
 19734  		return invalidParams
 19735  	}
 19736  	return nil
 19737  }
 19738  
 19739  // SetBucket sets the Bucket field's value.
 19740  func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
 19741  	s.Bucket = &v
 19742  	return s
 19743  }
 19744  
 19745  func (s *GetBucketPolicyInput) getBucket() (v string) {
 19746  	if s.Bucket == nil {
 19747  		return v
 19748  	}
 19749  	return *s.Bucket
 19750  }
 19751  
 19752  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19753  func (s *GetBucketPolicyInput) SetExpectedBucketOwner(v string) *GetBucketPolicyInput {
 19754  	s.ExpectedBucketOwner = &v
 19755  	return s
 19756  }
 19757  
 19758  func (s *GetBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
 19759  	if s.Bucket == nil {
 19760  		return nil, fmt.Errorf("member Bucket is nil")
 19761  	}
 19762  	return parseEndpointARN(*s.Bucket)
 19763  }
 19764  
 19765  func (s *GetBucketPolicyInput) hasEndpointARN() bool {
 19766  	if s.Bucket == nil {
 19767  		return false
 19768  	}
 19769  	return arn.IsARN(*s.Bucket)
 19770  }
 19771  
 19772  // updateArnableField updates the value of the input field that
 19773  // takes an ARN as an input. This method is useful to backfill
 19774  // the parsed resource name from ARN into the input member.
 19775  // It returns a pointer to a modified copy of input and an error.
 19776  // Note that original input is not modified.
 19777  func (s GetBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
 19778  	if s.Bucket == nil {
 19779  		return nil, fmt.Errorf("member Bucket is nil")
 19780  	}
 19781  	s.Bucket = aws.String(v)
 19782  	return &s, nil
 19783  }
 19784  
 19785  type GetBucketPolicyOutput struct {
 19786  	_ struct{} `type:"structure" payload:"Policy"`
 19787  
 19788  	// The bucket policy as a JSON document.
 19789  	Policy *string `type:"string"`
 19790  }
 19791  
 19792  // String returns the string representation.
 19793  //
 19794  // API parameter values that are decorated as "sensitive" in the API will not
 19795  // be included in the string output. The member name will be present, but the
 19796  // value will be replaced with "sensitive".
 19797  func (s GetBucketPolicyOutput) String() string {
 19798  	return awsutil.Prettify(s)
 19799  }
 19800  
 19801  // GoString returns the string representation.
 19802  //
 19803  // API parameter values that are decorated as "sensitive" in the API will not
 19804  // be included in the string output. The member name will be present, but the
 19805  // value will be replaced with "sensitive".
 19806  func (s GetBucketPolicyOutput) GoString() string {
 19807  	return s.String()
 19808  }
 19809  
 19810  // SetPolicy sets the Policy field's value.
 19811  func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
 19812  	s.Policy = &v
 19813  	return s
 19814  }
 19815  
 19816  type GetBucketPolicyStatusInput struct {
 19817  	_ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"`
 19818  
 19819  	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
 19820  	//
 19821  	// Bucket is a required field
 19822  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19823  
 19824  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19825  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19826  	// error.
 19827  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19828  }
 19829  
 19830  // String returns the string representation.
 19831  //
 19832  // API parameter values that are decorated as "sensitive" in the API will not
 19833  // be included in the string output. The member name will be present, but the
 19834  // value will be replaced with "sensitive".
 19835  func (s GetBucketPolicyStatusInput) String() string {
 19836  	return awsutil.Prettify(s)
 19837  }
 19838  
 19839  // GoString returns the string representation.
 19840  //
 19841  // API parameter values that are decorated as "sensitive" in the API will not
 19842  // be included in the string output. The member name will be present, but the
 19843  // value will be replaced with "sensitive".
 19844  func (s GetBucketPolicyStatusInput) GoString() string {
 19845  	return s.String()
 19846  }
 19847  
 19848  // Validate inspects the fields of the type to determine if they are valid.
 19849  func (s *GetBucketPolicyStatusInput) Validate() error {
 19850  	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
 19851  	if s.Bucket == nil {
 19852  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19853  	}
 19854  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19855  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19856  	}
 19857  
 19858  	if invalidParams.Len() > 0 {
 19859  		return invalidParams
 19860  	}
 19861  	return nil
 19862  }
 19863  
 19864  // SetBucket sets the Bucket field's value.
 19865  func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
 19866  	s.Bucket = &v
 19867  	return s
 19868  }
 19869  
 19870  func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
 19871  	if s.Bucket == nil {
 19872  		return v
 19873  	}
 19874  	return *s.Bucket
 19875  }
 19876  
 19877  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 19878  func (s *GetBucketPolicyStatusInput) SetExpectedBucketOwner(v string) *GetBucketPolicyStatusInput {
 19879  	s.ExpectedBucketOwner = &v
 19880  	return s
 19881  }
 19882  
 19883  func (s *GetBucketPolicyStatusInput) getEndpointARN() (arn.Resource, error) {
 19884  	if s.Bucket == nil {
 19885  		return nil, fmt.Errorf("member Bucket is nil")
 19886  	}
 19887  	return parseEndpointARN(*s.Bucket)
 19888  }
 19889  
 19890  func (s *GetBucketPolicyStatusInput) hasEndpointARN() bool {
 19891  	if s.Bucket == nil {
 19892  		return false
 19893  	}
 19894  	return arn.IsARN(*s.Bucket)
 19895  }
 19896  
 19897  // updateArnableField updates the value of the input field that
 19898  // takes an ARN as an input. This method is useful to backfill
 19899  // the parsed resource name from ARN into the input member.
 19900  // It returns a pointer to a modified copy of input and an error.
 19901  // Note that original input is not modified.
 19902  func (s GetBucketPolicyStatusInput) updateArnableField(v string) (interface{}, error) {
 19903  	if s.Bucket == nil {
 19904  		return nil, fmt.Errorf("member Bucket is nil")
 19905  	}
 19906  	s.Bucket = aws.String(v)
 19907  	return &s, nil
 19908  }
 19909  
 19910  type GetBucketPolicyStatusOutput struct {
 19911  	_ struct{} `type:"structure" payload:"PolicyStatus"`
 19912  
 19913  	// The policy status for the specified bucket.
 19914  	PolicyStatus *PolicyStatus `type:"structure"`
 19915  }
 19916  
 19917  // String returns the string representation.
 19918  //
 19919  // API parameter values that are decorated as "sensitive" in the API will not
 19920  // be included in the string output. The member name will be present, but the
 19921  // value will be replaced with "sensitive".
 19922  func (s GetBucketPolicyStatusOutput) String() string {
 19923  	return awsutil.Prettify(s)
 19924  }
 19925  
 19926  // GoString returns the string representation.
 19927  //
 19928  // API parameter values that are decorated as "sensitive" in the API will not
 19929  // be included in the string output. The member name will be present, but the
 19930  // value will be replaced with "sensitive".
 19931  func (s GetBucketPolicyStatusOutput) GoString() string {
 19932  	return s.String()
 19933  }
 19934  
 19935  // SetPolicyStatus sets the PolicyStatus field's value.
 19936  func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
 19937  	s.PolicyStatus = v
 19938  	return s
 19939  }
 19940  
 19941  type GetBucketReplicationInput struct {
 19942  	_ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"`
 19943  
 19944  	// The bucket name for which to get the replication information.
 19945  	//
 19946  	// Bucket is a required field
 19947  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 19948  
 19949  	// The account ID of the expected bucket owner. If the bucket is owned by a
 19950  	// different account, the request will fail with an HTTP 403 (Access Denied)
 19951  	// error.
 19952  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 19953  }
 19954  
 19955  // String returns the string representation.
 19956  //
 19957  // API parameter values that are decorated as "sensitive" in the API will not
 19958  // be included in the string output. The member name will be present, but the
 19959  // value will be replaced with "sensitive".
 19960  func (s GetBucketReplicationInput) String() string {
 19961  	return awsutil.Prettify(s)
 19962  }
 19963  
 19964  // GoString returns the string representation.
 19965  //
 19966  // API parameter values that are decorated as "sensitive" in the API will not
 19967  // be included in the string output. The member name will be present, but the
 19968  // value will be replaced with "sensitive".
 19969  func (s GetBucketReplicationInput) GoString() string {
 19970  	return s.String()
 19971  }
 19972  
 19973  // Validate inspects the fields of the type to determine if they are valid.
 19974  func (s *GetBucketReplicationInput) Validate() error {
 19975  	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
 19976  	if s.Bucket == nil {
 19977  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 19978  	}
 19979  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 19980  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 19981  	}
 19982  
 19983  	if invalidParams.Len() > 0 {
 19984  		return invalidParams
 19985  	}
 19986  	return nil
 19987  }
 19988  
 19989  // SetBucket sets the Bucket field's value.
 19990  func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
 19991  	s.Bucket = &v
 19992  	return s
 19993  }
 19994  
 19995  func (s *GetBucketReplicationInput) getBucket() (v string) {
 19996  	if s.Bucket == nil {
 19997  		return v
 19998  	}
 19999  	return *s.Bucket
 20000  }
 20001  
 20002  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20003  func (s *GetBucketReplicationInput) SetExpectedBucketOwner(v string) *GetBucketReplicationInput {
 20004  	s.ExpectedBucketOwner = &v
 20005  	return s
 20006  }
 20007  
 20008  func (s *GetBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
 20009  	if s.Bucket == nil {
 20010  		return nil, fmt.Errorf("member Bucket is nil")
 20011  	}
 20012  	return parseEndpointARN(*s.Bucket)
 20013  }
 20014  
 20015  func (s *GetBucketReplicationInput) hasEndpointARN() bool {
 20016  	if s.Bucket == nil {
 20017  		return false
 20018  	}
 20019  	return arn.IsARN(*s.Bucket)
 20020  }
 20021  
 20022  // updateArnableField updates the value of the input field that
 20023  // takes an ARN as an input. This method is useful to backfill
 20024  // the parsed resource name from ARN into the input member.
 20025  // It returns a pointer to a modified copy of input and an error.
 20026  // Note that original input is not modified.
 20027  func (s GetBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
 20028  	if s.Bucket == nil {
 20029  		return nil, fmt.Errorf("member Bucket is nil")
 20030  	}
 20031  	s.Bucket = aws.String(v)
 20032  	return &s, nil
 20033  }
 20034  
 20035  type GetBucketReplicationOutput struct {
 20036  	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
 20037  
 20038  	// A container for replication rules. You can add up to 1,000 rules. The maximum
 20039  	// size of a replication configuration is 2 MB.
 20040  	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
 20041  }
 20042  
 20043  // String returns the string representation.
 20044  //
 20045  // API parameter values that are decorated as "sensitive" in the API will not
 20046  // be included in the string output. The member name will be present, but the
 20047  // value will be replaced with "sensitive".
 20048  func (s GetBucketReplicationOutput) String() string {
 20049  	return awsutil.Prettify(s)
 20050  }
 20051  
 20052  // GoString returns the string representation.
 20053  //
 20054  // API parameter values that are decorated as "sensitive" in the API will not
 20055  // be included in the string output. The member name will be present, but the
 20056  // value will be replaced with "sensitive".
 20057  func (s GetBucketReplicationOutput) GoString() string {
 20058  	return s.String()
 20059  }
 20060  
 20061  // SetReplicationConfiguration sets the ReplicationConfiguration field's value.
 20062  func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
 20063  	s.ReplicationConfiguration = v
 20064  	return s
 20065  }
 20066  
 20067  type GetBucketRequestPaymentInput struct {
 20068  	_ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"`
 20069  
 20070  	// The name of the bucket for which to get the payment request configuration
 20071  	//
 20072  	// Bucket is a required field
 20073  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20074  
 20075  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20076  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20077  	// error.
 20078  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20079  }
 20080  
 20081  // String returns the string representation.
 20082  //
 20083  // API parameter values that are decorated as "sensitive" in the API will not
 20084  // be included in the string output. The member name will be present, but the
 20085  // value will be replaced with "sensitive".
 20086  func (s GetBucketRequestPaymentInput) String() string {
 20087  	return awsutil.Prettify(s)
 20088  }
 20089  
 20090  // GoString returns the string representation.
 20091  //
 20092  // API parameter values that are decorated as "sensitive" in the API will not
 20093  // be included in the string output. The member name will be present, but the
 20094  // value will be replaced with "sensitive".
 20095  func (s GetBucketRequestPaymentInput) GoString() string {
 20096  	return s.String()
 20097  }
 20098  
 20099  // Validate inspects the fields of the type to determine if they are valid.
 20100  func (s *GetBucketRequestPaymentInput) Validate() error {
 20101  	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
 20102  	if s.Bucket == nil {
 20103  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20104  	}
 20105  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20106  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20107  	}
 20108  
 20109  	if invalidParams.Len() > 0 {
 20110  		return invalidParams
 20111  	}
 20112  	return nil
 20113  }
 20114  
 20115  // SetBucket sets the Bucket field's value.
 20116  func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
 20117  	s.Bucket = &v
 20118  	return s
 20119  }
 20120  
 20121  func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
 20122  	if s.Bucket == nil {
 20123  		return v
 20124  	}
 20125  	return *s.Bucket
 20126  }
 20127  
 20128  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20129  func (s *GetBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *GetBucketRequestPaymentInput {
 20130  	s.ExpectedBucketOwner = &v
 20131  	return s
 20132  }
 20133  
 20134  func (s *GetBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
 20135  	if s.Bucket == nil {
 20136  		return nil, fmt.Errorf("member Bucket is nil")
 20137  	}
 20138  	return parseEndpointARN(*s.Bucket)
 20139  }
 20140  
 20141  func (s *GetBucketRequestPaymentInput) hasEndpointARN() bool {
 20142  	if s.Bucket == nil {
 20143  		return false
 20144  	}
 20145  	return arn.IsARN(*s.Bucket)
 20146  }
 20147  
 20148  // updateArnableField updates the value of the input field that
 20149  // takes an ARN as an input. This method is useful to backfill
 20150  // the parsed resource name from ARN into the input member.
 20151  // It returns a pointer to a modified copy of input and an error.
 20152  // Note that original input is not modified.
 20153  func (s GetBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
 20154  	if s.Bucket == nil {
 20155  		return nil, fmt.Errorf("member Bucket is nil")
 20156  	}
 20157  	s.Bucket = aws.String(v)
 20158  	return &s, nil
 20159  }
 20160  
 20161  type GetBucketRequestPaymentOutput struct {
 20162  	_ struct{} `type:"structure"`
 20163  
 20164  	// Specifies who pays for the download and request fees.
 20165  	Payer *string `type:"string" enum:"Payer"`
 20166  }
 20167  
 20168  // String returns the string representation.
 20169  //
 20170  // API parameter values that are decorated as "sensitive" in the API will not
 20171  // be included in the string output. The member name will be present, but the
 20172  // value will be replaced with "sensitive".
 20173  func (s GetBucketRequestPaymentOutput) String() string {
 20174  	return awsutil.Prettify(s)
 20175  }
 20176  
 20177  // GoString returns the string representation.
 20178  //
 20179  // API parameter values that are decorated as "sensitive" in the API will not
 20180  // be included in the string output. The member name will be present, but the
 20181  // value will be replaced with "sensitive".
 20182  func (s GetBucketRequestPaymentOutput) GoString() string {
 20183  	return s.String()
 20184  }
 20185  
 20186  // SetPayer sets the Payer field's value.
 20187  func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
 20188  	s.Payer = &v
 20189  	return s
 20190  }
 20191  
 20192  type GetBucketTaggingInput struct {
 20193  	_ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"`
 20194  
 20195  	// The name of the bucket for which to get the tagging information.
 20196  	//
 20197  	// Bucket is a required field
 20198  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20199  
 20200  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20201  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20202  	// error.
 20203  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20204  }
 20205  
 20206  // String returns the string representation.
 20207  //
 20208  // API parameter values that are decorated as "sensitive" in the API will not
 20209  // be included in the string output. The member name will be present, but the
 20210  // value will be replaced with "sensitive".
 20211  func (s GetBucketTaggingInput) String() string {
 20212  	return awsutil.Prettify(s)
 20213  }
 20214  
 20215  // GoString returns the string representation.
 20216  //
 20217  // API parameter values that are decorated as "sensitive" in the API will not
 20218  // be included in the string output. The member name will be present, but the
 20219  // value will be replaced with "sensitive".
 20220  func (s GetBucketTaggingInput) GoString() string {
 20221  	return s.String()
 20222  }
 20223  
 20224  // Validate inspects the fields of the type to determine if they are valid.
 20225  func (s *GetBucketTaggingInput) Validate() error {
 20226  	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
 20227  	if s.Bucket == nil {
 20228  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20229  	}
 20230  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20231  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20232  	}
 20233  
 20234  	if invalidParams.Len() > 0 {
 20235  		return invalidParams
 20236  	}
 20237  	return nil
 20238  }
 20239  
 20240  // SetBucket sets the Bucket field's value.
 20241  func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
 20242  	s.Bucket = &v
 20243  	return s
 20244  }
 20245  
 20246  func (s *GetBucketTaggingInput) getBucket() (v string) {
 20247  	if s.Bucket == nil {
 20248  		return v
 20249  	}
 20250  	return *s.Bucket
 20251  }
 20252  
 20253  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20254  func (s *GetBucketTaggingInput) SetExpectedBucketOwner(v string) *GetBucketTaggingInput {
 20255  	s.ExpectedBucketOwner = &v
 20256  	return s
 20257  }
 20258  
 20259  func (s *GetBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
 20260  	if s.Bucket == nil {
 20261  		return nil, fmt.Errorf("member Bucket is nil")
 20262  	}
 20263  	return parseEndpointARN(*s.Bucket)
 20264  }
 20265  
 20266  func (s *GetBucketTaggingInput) hasEndpointARN() bool {
 20267  	if s.Bucket == nil {
 20268  		return false
 20269  	}
 20270  	return arn.IsARN(*s.Bucket)
 20271  }
 20272  
 20273  // updateArnableField updates the value of the input field that
 20274  // takes an ARN as an input. This method is useful to backfill
 20275  // the parsed resource name from ARN into the input member.
 20276  // It returns a pointer to a modified copy of input and an error.
 20277  // Note that original input is not modified.
 20278  func (s GetBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
 20279  	if s.Bucket == nil {
 20280  		return nil, fmt.Errorf("member Bucket is nil")
 20281  	}
 20282  	s.Bucket = aws.String(v)
 20283  	return &s, nil
 20284  }
 20285  
 20286  type GetBucketTaggingOutput struct {
 20287  	_ struct{} `type:"structure"`
 20288  
 20289  	// Contains the tag set.
 20290  	//
 20291  	// TagSet is a required field
 20292  	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
 20293  }
 20294  
 20295  // String returns the string representation.
 20296  //
 20297  // API parameter values that are decorated as "sensitive" in the API will not
 20298  // be included in the string output. The member name will be present, but the
 20299  // value will be replaced with "sensitive".
 20300  func (s GetBucketTaggingOutput) String() string {
 20301  	return awsutil.Prettify(s)
 20302  }
 20303  
 20304  // GoString returns the string representation.
 20305  //
 20306  // API parameter values that are decorated as "sensitive" in the API will not
 20307  // be included in the string output. The member name will be present, but the
 20308  // value will be replaced with "sensitive".
 20309  func (s GetBucketTaggingOutput) GoString() string {
 20310  	return s.String()
 20311  }
 20312  
 20313  // SetTagSet sets the TagSet field's value.
 20314  func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
 20315  	s.TagSet = v
 20316  	return s
 20317  }
 20318  
 20319  type GetBucketVersioningInput struct {
 20320  	_ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"`
 20321  
 20322  	// The name of the bucket for which to get the versioning information.
 20323  	//
 20324  	// Bucket is a required field
 20325  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20326  
 20327  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20328  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20329  	// error.
 20330  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20331  }
 20332  
 20333  // String returns the string representation.
 20334  //
 20335  // API parameter values that are decorated as "sensitive" in the API will not
 20336  // be included in the string output. The member name will be present, but the
 20337  // value will be replaced with "sensitive".
 20338  func (s GetBucketVersioningInput) String() string {
 20339  	return awsutil.Prettify(s)
 20340  }
 20341  
 20342  // GoString returns the string representation.
 20343  //
 20344  // API parameter values that are decorated as "sensitive" in the API will not
 20345  // be included in the string output. The member name will be present, but the
 20346  // value will be replaced with "sensitive".
 20347  func (s GetBucketVersioningInput) GoString() string {
 20348  	return s.String()
 20349  }
 20350  
 20351  // Validate inspects the fields of the type to determine if they are valid.
 20352  func (s *GetBucketVersioningInput) Validate() error {
 20353  	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
 20354  	if s.Bucket == nil {
 20355  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20356  	}
 20357  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20358  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20359  	}
 20360  
 20361  	if invalidParams.Len() > 0 {
 20362  		return invalidParams
 20363  	}
 20364  	return nil
 20365  }
 20366  
 20367  // SetBucket sets the Bucket field's value.
 20368  func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
 20369  	s.Bucket = &v
 20370  	return s
 20371  }
 20372  
 20373  func (s *GetBucketVersioningInput) getBucket() (v string) {
 20374  	if s.Bucket == nil {
 20375  		return v
 20376  	}
 20377  	return *s.Bucket
 20378  }
 20379  
 20380  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20381  func (s *GetBucketVersioningInput) SetExpectedBucketOwner(v string) *GetBucketVersioningInput {
 20382  	s.ExpectedBucketOwner = &v
 20383  	return s
 20384  }
 20385  
 20386  func (s *GetBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
 20387  	if s.Bucket == nil {
 20388  		return nil, fmt.Errorf("member Bucket is nil")
 20389  	}
 20390  	return parseEndpointARN(*s.Bucket)
 20391  }
 20392  
 20393  func (s *GetBucketVersioningInput) hasEndpointARN() bool {
 20394  	if s.Bucket == nil {
 20395  		return false
 20396  	}
 20397  	return arn.IsARN(*s.Bucket)
 20398  }
 20399  
 20400  // updateArnableField updates the value of the input field that
 20401  // takes an ARN as an input. This method is useful to backfill
 20402  // the parsed resource name from ARN into the input member.
 20403  // It returns a pointer to a modified copy of input and an error.
 20404  // Note that original input is not modified.
 20405  func (s GetBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
 20406  	if s.Bucket == nil {
 20407  		return nil, fmt.Errorf("member Bucket is nil")
 20408  	}
 20409  	s.Bucket = aws.String(v)
 20410  	return &s, nil
 20411  }
 20412  
 20413  type GetBucketVersioningOutput struct {
 20414  	_ struct{} `type:"structure"`
 20415  
 20416  	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
 20417  	// This element is only returned if the bucket has been configured with MFA
 20418  	// delete. If the bucket has never been so configured, this element is not returned.
 20419  	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
 20420  
 20421  	// The versioning state of the bucket.
 20422  	Status *string `type:"string" enum:"BucketVersioningStatus"`
 20423  }
 20424  
 20425  // String returns the string representation.
 20426  //
 20427  // API parameter values that are decorated as "sensitive" in the API will not
 20428  // be included in the string output. The member name will be present, but the
 20429  // value will be replaced with "sensitive".
 20430  func (s GetBucketVersioningOutput) String() string {
 20431  	return awsutil.Prettify(s)
 20432  }
 20433  
 20434  // GoString returns the string representation.
 20435  //
 20436  // API parameter values that are decorated as "sensitive" in the API will not
 20437  // be included in the string output. The member name will be present, but the
 20438  // value will be replaced with "sensitive".
 20439  func (s GetBucketVersioningOutput) GoString() string {
 20440  	return s.String()
 20441  }
 20442  
 20443  // SetMFADelete sets the MFADelete field's value.
 20444  func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
 20445  	s.MFADelete = &v
 20446  	return s
 20447  }
 20448  
 20449  // SetStatus sets the Status field's value.
 20450  func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
 20451  	s.Status = &v
 20452  	return s
 20453  }
 20454  
 20455  type GetBucketWebsiteInput struct {
 20456  	_ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"`
 20457  
 20458  	// The bucket name for which to get the website configuration.
 20459  	//
 20460  	// Bucket is a required field
 20461  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20462  
 20463  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20464  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20465  	// error.
 20466  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20467  }
 20468  
 20469  // String returns the string representation.
 20470  //
 20471  // API parameter values that are decorated as "sensitive" in the API will not
 20472  // be included in the string output. The member name will be present, but the
 20473  // value will be replaced with "sensitive".
 20474  func (s GetBucketWebsiteInput) String() string {
 20475  	return awsutil.Prettify(s)
 20476  }
 20477  
 20478  // GoString returns the string representation.
 20479  //
 20480  // API parameter values that are decorated as "sensitive" in the API will not
 20481  // be included in the string output. The member name will be present, but the
 20482  // value will be replaced with "sensitive".
 20483  func (s GetBucketWebsiteInput) GoString() string {
 20484  	return s.String()
 20485  }
 20486  
 20487  // Validate inspects the fields of the type to determine if they are valid.
 20488  func (s *GetBucketWebsiteInput) Validate() error {
 20489  	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
 20490  	if s.Bucket == nil {
 20491  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20492  	}
 20493  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20494  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20495  	}
 20496  
 20497  	if invalidParams.Len() > 0 {
 20498  		return invalidParams
 20499  	}
 20500  	return nil
 20501  }
 20502  
 20503  // SetBucket sets the Bucket field's value.
 20504  func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
 20505  	s.Bucket = &v
 20506  	return s
 20507  }
 20508  
 20509  func (s *GetBucketWebsiteInput) getBucket() (v string) {
 20510  	if s.Bucket == nil {
 20511  		return v
 20512  	}
 20513  	return *s.Bucket
 20514  }
 20515  
 20516  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20517  func (s *GetBucketWebsiteInput) SetExpectedBucketOwner(v string) *GetBucketWebsiteInput {
 20518  	s.ExpectedBucketOwner = &v
 20519  	return s
 20520  }
 20521  
 20522  func (s *GetBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
 20523  	if s.Bucket == nil {
 20524  		return nil, fmt.Errorf("member Bucket is nil")
 20525  	}
 20526  	return parseEndpointARN(*s.Bucket)
 20527  }
 20528  
 20529  func (s *GetBucketWebsiteInput) hasEndpointARN() bool {
 20530  	if s.Bucket == nil {
 20531  		return false
 20532  	}
 20533  	return arn.IsARN(*s.Bucket)
 20534  }
 20535  
 20536  // updateArnableField updates the value of the input field that
 20537  // takes an ARN as an input. This method is useful to backfill
 20538  // the parsed resource name from ARN into the input member.
 20539  // It returns a pointer to a modified copy of input and an error.
 20540  // Note that original input is not modified.
 20541  func (s GetBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
 20542  	if s.Bucket == nil {
 20543  		return nil, fmt.Errorf("member Bucket is nil")
 20544  	}
 20545  	s.Bucket = aws.String(v)
 20546  	return &s, nil
 20547  }
 20548  
 20549  type GetBucketWebsiteOutput struct {
 20550  	_ struct{} `type:"structure"`
 20551  
 20552  	// The object key name of the website error document to use for 4XX class errors.
 20553  	ErrorDocument *ErrorDocument `type:"structure"`
 20554  
 20555  	// The name of the index document for the website (for example index.html).
 20556  	IndexDocument *IndexDocument `type:"structure"`
 20557  
 20558  	// Specifies the redirect behavior of all requests to a website endpoint of
 20559  	// an Amazon S3 bucket.
 20560  	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
 20561  
 20562  	// Rules that define when a redirect is applied and the redirect behavior.
 20563  	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
 20564  }
 20565  
 20566  // String returns the string representation.
 20567  //
 20568  // API parameter values that are decorated as "sensitive" in the API will not
 20569  // be included in the string output. The member name will be present, but the
 20570  // value will be replaced with "sensitive".
 20571  func (s GetBucketWebsiteOutput) String() string {
 20572  	return awsutil.Prettify(s)
 20573  }
 20574  
 20575  // GoString returns the string representation.
 20576  //
 20577  // API parameter values that are decorated as "sensitive" in the API will not
 20578  // be included in the string output. The member name will be present, but the
 20579  // value will be replaced with "sensitive".
 20580  func (s GetBucketWebsiteOutput) GoString() string {
 20581  	return s.String()
 20582  }
 20583  
 20584  // SetErrorDocument sets the ErrorDocument field's value.
 20585  func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
 20586  	s.ErrorDocument = v
 20587  	return s
 20588  }
 20589  
 20590  // SetIndexDocument sets the IndexDocument field's value.
 20591  func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
 20592  	s.IndexDocument = v
 20593  	return s
 20594  }
 20595  
 20596  // SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
 20597  func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
 20598  	s.RedirectAllRequestsTo = v
 20599  	return s
 20600  }
 20601  
 20602  // SetRoutingRules sets the RoutingRules field's value.
 20603  func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
 20604  	s.RoutingRules = v
 20605  	return s
 20606  }
 20607  
 20608  type GetObjectAclInput struct {
 20609  	_ struct{} `locationName:"GetObjectAclRequest" type:"structure"`
 20610  
 20611  	// The bucket name that contains the object for which to get the ACL information.
 20612  	//
 20613  	// When using this action with an access point, you must direct requests to
 20614  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 20615  	// When using this action with an access point through the Amazon Web Services
 20616  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 20617  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 20618  	// in the Amazon S3 User Guide.
 20619  	//
 20620  	// Bucket is a required field
 20621  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20622  
 20623  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20624  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20625  	// error.
 20626  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20627  
 20628  	// The key of the object for which to get the ACL information.
 20629  	//
 20630  	// Key is a required field
 20631  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 20632  
 20633  	// Confirms that the requester knows that they will be charged for the request.
 20634  	// Bucket owners need not specify this parameter in their requests. For information
 20635  	// about downloading objects from requester pays buckets, see Downloading Objects
 20636  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 20637  	// in the Amazon S3 User Guide.
 20638  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 20639  
 20640  	// VersionId used to reference a specific version of the object.
 20641  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 20642  }
 20643  
 20644  // String returns the string representation.
 20645  //
 20646  // API parameter values that are decorated as "sensitive" in the API will not
 20647  // be included in the string output. The member name will be present, but the
 20648  // value will be replaced with "sensitive".
 20649  func (s GetObjectAclInput) String() string {
 20650  	return awsutil.Prettify(s)
 20651  }
 20652  
 20653  // GoString returns the string representation.
 20654  //
 20655  // API parameter values that are decorated as "sensitive" in the API will not
 20656  // be included in the string output. The member name will be present, but the
 20657  // value will be replaced with "sensitive".
 20658  func (s GetObjectAclInput) GoString() string {
 20659  	return s.String()
 20660  }
 20661  
 20662  // Validate inspects the fields of the type to determine if they are valid.
 20663  func (s *GetObjectAclInput) Validate() error {
 20664  	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
 20665  	if s.Bucket == nil {
 20666  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20667  	}
 20668  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20669  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20670  	}
 20671  	if s.Key == nil {
 20672  		invalidParams.Add(request.NewErrParamRequired("Key"))
 20673  	}
 20674  	if s.Key != nil && len(*s.Key) < 1 {
 20675  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 20676  	}
 20677  
 20678  	if invalidParams.Len() > 0 {
 20679  		return invalidParams
 20680  	}
 20681  	return nil
 20682  }
 20683  
 20684  // SetBucket sets the Bucket field's value.
 20685  func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
 20686  	s.Bucket = &v
 20687  	return s
 20688  }
 20689  
 20690  func (s *GetObjectAclInput) getBucket() (v string) {
 20691  	if s.Bucket == nil {
 20692  		return v
 20693  	}
 20694  	return *s.Bucket
 20695  }
 20696  
 20697  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20698  func (s *GetObjectAclInput) SetExpectedBucketOwner(v string) *GetObjectAclInput {
 20699  	s.ExpectedBucketOwner = &v
 20700  	return s
 20701  }
 20702  
 20703  // SetKey sets the Key field's value.
 20704  func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
 20705  	s.Key = &v
 20706  	return s
 20707  }
 20708  
 20709  // SetRequestPayer sets the RequestPayer field's value.
 20710  func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
 20711  	s.RequestPayer = &v
 20712  	return s
 20713  }
 20714  
 20715  // SetVersionId sets the VersionId field's value.
 20716  func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
 20717  	s.VersionId = &v
 20718  	return s
 20719  }
 20720  
 20721  func (s *GetObjectAclInput) getEndpointARN() (arn.Resource, error) {
 20722  	if s.Bucket == nil {
 20723  		return nil, fmt.Errorf("member Bucket is nil")
 20724  	}
 20725  	return parseEndpointARN(*s.Bucket)
 20726  }
 20727  
 20728  func (s *GetObjectAclInput) hasEndpointARN() bool {
 20729  	if s.Bucket == nil {
 20730  		return false
 20731  	}
 20732  	return arn.IsARN(*s.Bucket)
 20733  }
 20734  
 20735  // updateArnableField updates the value of the input field that
 20736  // takes an ARN as an input. This method is useful to backfill
 20737  // the parsed resource name from ARN into the input member.
 20738  // It returns a pointer to a modified copy of input and an error.
 20739  // Note that original input is not modified.
 20740  func (s GetObjectAclInput) updateArnableField(v string) (interface{}, error) {
 20741  	if s.Bucket == nil {
 20742  		return nil, fmt.Errorf("member Bucket is nil")
 20743  	}
 20744  	s.Bucket = aws.String(v)
 20745  	return &s, nil
 20746  }
 20747  
 20748  type GetObjectAclOutput struct {
 20749  	_ struct{} `type:"structure"`
 20750  
 20751  	// A list of grants.
 20752  	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
 20753  
 20754  	// Container for the bucket owner's display name and ID.
 20755  	Owner *Owner `type:"structure"`
 20756  
 20757  	// If present, indicates that the requester was successfully charged for the
 20758  	// request.
 20759  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 20760  }
 20761  
 20762  // String returns the string representation.
 20763  //
 20764  // API parameter values that are decorated as "sensitive" in the API will not
 20765  // be included in the string output. The member name will be present, but the
 20766  // value will be replaced with "sensitive".
 20767  func (s GetObjectAclOutput) String() string {
 20768  	return awsutil.Prettify(s)
 20769  }
 20770  
 20771  // GoString returns the string representation.
 20772  //
 20773  // API parameter values that are decorated as "sensitive" in the API will not
 20774  // be included in the string output. The member name will be present, but the
 20775  // value will be replaced with "sensitive".
 20776  func (s GetObjectAclOutput) GoString() string {
 20777  	return s.String()
 20778  }
 20779  
 20780  // SetGrants sets the Grants field's value.
 20781  func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
 20782  	s.Grants = v
 20783  	return s
 20784  }
 20785  
 20786  // SetOwner sets the Owner field's value.
 20787  func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
 20788  	s.Owner = v
 20789  	return s
 20790  }
 20791  
 20792  // SetRequestCharged sets the RequestCharged field's value.
 20793  func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
 20794  	s.RequestCharged = &v
 20795  	return s
 20796  }
 20797  
 20798  type GetObjectInput struct {
 20799  	_ struct{} `locationName:"GetObjectRequest" type:"structure"`
 20800  
 20801  	// The bucket name containing the object.
 20802  	//
 20803  	// When using this action with an access point, you must direct requests to
 20804  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 20805  	// When using this action with an access point through the Amazon Web Services
 20806  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 20807  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 20808  	// in the Amazon S3 User Guide.
 20809  	//
 20810  	// When using an Object Lambda access point the hostname takes the form AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com.
 20811  	//
 20812  	// When using this action with Amazon S3 on Outposts, you must direct requests
 20813  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 20814  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 20815  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 20816  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 20817  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 20818  	// in the Amazon S3 User Guide.
 20819  	//
 20820  	// Bucket is a required field
 20821  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 20822  
 20823  	// The account ID of the expected bucket owner. If the bucket is owned by a
 20824  	// different account, the request will fail with an HTTP 403 (Access Denied)
 20825  	// error.
 20826  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 20827  
 20828  	// Return the object only if its entity tag (ETag) is the same as the one specified,
 20829  	// otherwise return a 412 (precondition failed).
 20830  	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
 20831  
 20832  	// Return the object only if it has been modified since the specified time,
 20833  	// otherwise return a 304 (not modified).
 20834  	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
 20835  
 20836  	// Return the object only if its entity tag (ETag) is different from the one
 20837  	// specified, otherwise return a 304 (not modified).
 20838  	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
 20839  
 20840  	// Return the object only if it has not been modified since the specified time,
 20841  	// otherwise return a 412 (precondition failed).
 20842  	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
 20843  
 20844  	// Key of the object to get.
 20845  	//
 20846  	// Key is a required field
 20847  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 20848  
 20849  	// Part number of the object being read. This is a positive integer between
 20850  	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
 20851  	// Useful for downloading just a part of an object.
 20852  	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
 20853  
 20854  	// Downloads the specified range bytes of an object. For more information about
 20855  	// the HTTP Range header, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
 20856  	// (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
 20857  	//
 20858  	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
 20859  	Range *string `location:"header" locationName:"Range" type:"string"`
 20860  
 20861  	// Confirms that the requester knows that they will be charged for the request.
 20862  	// Bucket owners need not specify this parameter in their requests. For information
 20863  	// about downloading objects from requester pays buckets, see Downloading Objects
 20864  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 20865  	// in the Amazon S3 User Guide.
 20866  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 20867  
 20868  	// Sets the Cache-Control header of the response.
 20869  	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
 20870  
 20871  	// Sets the Content-Disposition header of the response
 20872  	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
 20873  
 20874  	// Sets the Content-Encoding header of the response.
 20875  	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
 20876  
 20877  	// Sets the Content-Language header of the response.
 20878  	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
 20879  
 20880  	// Sets the Content-Type header of the response.
 20881  	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
 20882  
 20883  	// Sets the Expires header of the response.
 20884  	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"`
 20885  
 20886  	// Specifies the algorithm to use to when decrypting the object (for example,
 20887  	// AES256).
 20888  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 20889  
 20890  	// Specifies the customer-provided encryption key for Amazon S3 used to encrypt
 20891  	// the data. This value is used to decrypt the object when recovering it and
 20892  	// must match the one used when storing the data. The key must be appropriate
 20893  	// for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 20894  	// header.
 20895  	//
 20896  	// SSECustomerKey is a sensitive parameter and its value will be
 20897  	// replaced with "sensitive" in string returned by GetObjectInput's
 20898  	// String and GoString methods.
 20899  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 20900  
 20901  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 20902  	// Amazon S3 uses this header for a message integrity check to ensure that the
 20903  	// encryption key was transmitted without error.
 20904  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 20905  
 20906  	// VersionId used to reference a specific version of the object.
 20907  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 20908  }
 20909  
 20910  // String returns the string representation.
 20911  //
 20912  // API parameter values that are decorated as "sensitive" in the API will not
 20913  // be included in the string output. The member name will be present, but the
 20914  // value will be replaced with "sensitive".
 20915  func (s GetObjectInput) String() string {
 20916  	return awsutil.Prettify(s)
 20917  }
 20918  
 20919  // GoString returns the string representation.
 20920  //
 20921  // API parameter values that are decorated as "sensitive" in the API will not
 20922  // be included in the string output. The member name will be present, but the
 20923  // value will be replaced with "sensitive".
 20924  func (s GetObjectInput) GoString() string {
 20925  	return s.String()
 20926  }
 20927  
 20928  // Validate inspects the fields of the type to determine if they are valid.
 20929  func (s *GetObjectInput) Validate() error {
 20930  	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
 20931  	if s.Bucket == nil {
 20932  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 20933  	}
 20934  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 20935  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 20936  	}
 20937  	if s.Key == nil {
 20938  		invalidParams.Add(request.NewErrParamRequired("Key"))
 20939  	}
 20940  	if s.Key != nil && len(*s.Key) < 1 {
 20941  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 20942  	}
 20943  
 20944  	if invalidParams.Len() > 0 {
 20945  		return invalidParams
 20946  	}
 20947  	return nil
 20948  }
 20949  
 20950  // SetBucket sets the Bucket field's value.
 20951  func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
 20952  	s.Bucket = &v
 20953  	return s
 20954  }
 20955  
 20956  func (s *GetObjectInput) getBucket() (v string) {
 20957  	if s.Bucket == nil {
 20958  		return v
 20959  	}
 20960  	return *s.Bucket
 20961  }
 20962  
 20963  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 20964  func (s *GetObjectInput) SetExpectedBucketOwner(v string) *GetObjectInput {
 20965  	s.ExpectedBucketOwner = &v
 20966  	return s
 20967  }
 20968  
 20969  // SetIfMatch sets the IfMatch field's value.
 20970  func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
 20971  	s.IfMatch = &v
 20972  	return s
 20973  }
 20974  
 20975  // SetIfModifiedSince sets the IfModifiedSince field's value.
 20976  func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
 20977  	s.IfModifiedSince = &v
 20978  	return s
 20979  }
 20980  
 20981  // SetIfNoneMatch sets the IfNoneMatch field's value.
 20982  func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
 20983  	s.IfNoneMatch = &v
 20984  	return s
 20985  }
 20986  
 20987  // SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
 20988  func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
 20989  	s.IfUnmodifiedSince = &v
 20990  	return s
 20991  }
 20992  
 20993  // SetKey sets the Key field's value.
 20994  func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
 20995  	s.Key = &v
 20996  	return s
 20997  }
 20998  
 20999  // SetPartNumber sets the PartNumber field's value.
 21000  func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
 21001  	s.PartNumber = &v
 21002  	return s
 21003  }
 21004  
 21005  // SetRange sets the Range field's value.
 21006  func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
 21007  	s.Range = &v
 21008  	return s
 21009  }
 21010  
 21011  // SetRequestPayer sets the RequestPayer field's value.
 21012  func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
 21013  	s.RequestPayer = &v
 21014  	return s
 21015  }
 21016  
 21017  // SetResponseCacheControl sets the ResponseCacheControl field's value.
 21018  func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
 21019  	s.ResponseCacheControl = &v
 21020  	return s
 21021  }
 21022  
 21023  // SetResponseContentDisposition sets the ResponseContentDisposition field's value.
 21024  func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
 21025  	s.ResponseContentDisposition = &v
 21026  	return s
 21027  }
 21028  
 21029  // SetResponseContentEncoding sets the ResponseContentEncoding field's value.
 21030  func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
 21031  	s.ResponseContentEncoding = &v
 21032  	return s
 21033  }
 21034  
 21035  // SetResponseContentLanguage sets the ResponseContentLanguage field's value.
 21036  func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
 21037  	s.ResponseContentLanguage = &v
 21038  	return s
 21039  }
 21040  
 21041  // SetResponseContentType sets the ResponseContentType field's value.
 21042  func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
 21043  	s.ResponseContentType = &v
 21044  	return s
 21045  }
 21046  
 21047  // SetResponseExpires sets the ResponseExpires field's value.
 21048  func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
 21049  	s.ResponseExpires = &v
 21050  	return s
 21051  }
 21052  
 21053  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 21054  func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
 21055  	s.SSECustomerAlgorithm = &v
 21056  	return s
 21057  }
 21058  
 21059  // SetSSECustomerKey sets the SSECustomerKey field's value.
 21060  func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
 21061  	s.SSECustomerKey = &v
 21062  	return s
 21063  }
 21064  
 21065  func (s *GetObjectInput) getSSECustomerKey() (v string) {
 21066  	if s.SSECustomerKey == nil {
 21067  		return v
 21068  	}
 21069  	return *s.SSECustomerKey
 21070  }
 21071  
 21072  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 21073  func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
 21074  	s.SSECustomerKeyMD5 = &v
 21075  	return s
 21076  }
 21077  
 21078  // SetVersionId sets the VersionId field's value.
 21079  func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
 21080  	s.VersionId = &v
 21081  	return s
 21082  }
 21083  
 21084  func (s *GetObjectInput) getEndpointARN() (arn.Resource, error) {
 21085  	if s.Bucket == nil {
 21086  		return nil, fmt.Errorf("member Bucket is nil")
 21087  	}
 21088  	return parseEndpointARN(*s.Bucket)
 21089  }
 21090  
 21091  func (s *GetObjectInput) hasEndpointARN() bool {
 21092  	if s.Bucket == nil {
 21093  		return false
 21094  	}
 21095  	return arn.IsARN(*s.Bucket)
 21096  }
 21097  
 21098  // updateArnableField updates the value of the input field that
 21099  // takes an ARN as an input. This method is useful to backfill
 21100  // the parsed resource name from ARN into the input member.
 21101  // It returns a pointer to a modified copy of input and an error.
 21102  // Note that original input is not modified.
 21103  func (s GetObjectInput) updateArnableField(v string) (interface{}, error) {
 21104  	if s.Bucket == nil {
 21105  		return nil, fmt.Errorf("member Bucket is nil")
 21106  	}
 21107  	s.Bucket = aws.String(v)
 21108  	return &s, nil
 21109  }
 21110  
 21111  type GetObjectLegalHoldInput struct {
 21112  	_ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"`
 21113  
 21114  	// The bucket name containing the object whose Legal Hold status you want to
 21115  	// retrieve.
 21116  	//
 21117  	// When using this action with an access point, you must direct requests to
 21118  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 21119  	// When using this action with an access point through the Amazon Web Services
 21120  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 21121  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 21122  	// in the Amazon S3 User Guide.
 21123  	//
 21124  	// Bucket is a required field
 21125  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 21126  
 21127  	// The account ID of the expected bucket owner. If the bucket is owned by a
 21128  	// different account, the request will fail with an HTTP 403 (Access Denied)
 21129  	// error.
 21130  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 21131  
 21132  	// The key name for the object whose Legal Hold status you want to retrieve.
 21133  	//
 21134  	// Key is a required field
 21135  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 21136  
 21137  	// Confirms that the requester knows that they will be charged for the request.
 21138  	// Bucket owners need not specify this parameter in their requests. For information
 21139  	// about downloading objects from requester pays buckets, see Downloading Objects
 21140  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 21141  	// in the Amazon S3 User Guide.
 21142  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 21143  
 21144  	// The version ID of the object whose Legal Hold status you want to retrieve.
 21145  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 21146  }
 21147  
 21148  // String returns the string representation.
 21149  //
 21150  // API parameter values that are decorated as "sensitive" in the API will not
 21151  // be included in the string output. The member name will be present, but the
 21152  // value will be replaced with "sensitive".
 21153  func (s GetObjectLegalHoldInput) String() string {
 21154  	return awsutil.Prettify(s)
 21155  }
 21156  
 21157  // GoString returns the string representation.
 21158  //
 21159  // API parameter values that are decorated as "sensitive" in the API will not
 21160  // be included in the string output. The member name will be present, but the
 21161  // value will be replaced with "sensitive".
 21162  func (s GetObjectLegalHoldInput) GoString() string {
 21163  	return s.String()
 21164  }
 21165  
 21166  // Validate inspects the fields of the type to determine if they are valid.
 21167  func (s *GetObjectLegalHoldInput) Validate() error {
 21168  	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
 21169  	if s.Bucket == nil {
 21170  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 21171  	}
 21172  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 21173  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 21174  	}
 21175  	if s.Key == nil {
 21176  		invalidParams.Add(request.NewErrParamRequired("Key"))
 21177  	}
 21178  	if s.Key != nil && len(*s.Key) < 1 {
 21179  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 21180  	}
 21181  
 21182  	if invalidParams.Len() > 0 {
 21183  		return invalidParams
 21184  	}
 21185  	return nil
 21186  }
 21187  
 21188  // SetBucket sets the Bucket field's value.
 21189  func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
 21190  	s.Bucket = &v
 21191  	return s
 21192  }
 21193  
 21194  func (s *GetObjectLegalHoldInput) getBucket() (v string) {
 21195  	if s.Bucket == nil {
 21196  		return v
 21197  	}
 21198  	return *s.Bucket
 21199  }
 21200  
 21201  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 21202  func (s *GetObjectLegalHoldInput) SetExpectedBucketOwner(v string) *GetObjectLegalHoldInput {
 21203  	s.ExpectedBucketOwner = &v
 21204  	return s
 21205  }
 21206  
 21207  // SetKey sets the Key field's value.
 21208  func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
 21209  	s.Key = &v
 21210  	return s
 21211  }
 21212  
 21213  // SetRequestPayer sets the RequestPayer field's value.
 21214  func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
 21215  	s.RequestPayer = &v
 21216  	return s
 21217  }
 21218  
 21219  // SetVersionId sets the VersionId field's value.
 21220  func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
 21221  	s.VersionId = &v
 21222  	return s
 21223  }
 21224  
 21225  func (s *GetObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
 21226  	if s.Bucket == nil {
 21227  		return nil, fmt.Errorf("member Bucket is nil")
 21228  	}
 21229  	return parseEndpointARN(*s.Bucket)
 21230  }
 21231  
 21232  func (s *GetObjectLegalHoldInput) hasEndpointARN() bool {
 21233  	if s.Bucket == nil {
 21234  		return false
 21235  	}
 21236  	return arn.IsARN(*s.Bucket)
 21237  }
 21238  
 21239  // updateArnableField updates the value of the input field that
 21240  // takes an ARN as an input. This method is useful to backfill
 21241  // the parsed resource name from ARN into the input member.
 21242  // It returns a pointer to a modified copy of input and an error.
 21243  // Note that original input is not modified.
 21244  func (s GetObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
 21245  	if s.Bucket == nil {
 21246  		return nil, fmt.Errorf("member Bucket is nil")
 21247  	}
 21248  	s.Bucket = aws.String(v)
 21249  	return &s, nil
 21250  }
 21251  
 21252  type GetObjectLegalHoldOutput struct {
 21253  	_ struct{} `type:"structure" payload:"LegalHold"`
 21254  
 21255  	// The current Legal Hold status for the specified object.
 21256  	LegalHold *ObjectLockLegalHold `type:"structure"`
 21257  }
 21258  
 21259  // String returns the string representation.
 21260  //
 21261  // API parameter values that are decorated as "sensitive" in the API will not
 21262  // be included in the string output. The member name will be present, but the
 21263  // value will be replaced with "sensitive".
 21264  func (s GetObjectLegalHoldOutput) String() string {
 21265  	return awsutil.Prettify(s)
 21266  }
 21267  
 21268  // GoString returns the string representation.
 21269  //
 21270  // API parameter values that are decorated as "sensitive" in the API will not
 21271  // be included in the string output. The member name will be present, but the
 21272  // value will be replaced with "sensitive".
 21273  func (s GetObjectLegalHoldOutput) GoString() string {
 21274  	return s.String()
 21275  }
 21276  
 21277  // SetLegalHold sets the LegalHold field's value.
 21278  func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
 21279  	s.LegalHold = v
 21280  	return s
 21281  }
 21282  
 21283  type GetObjectLockConfigurationInput struct {
 21284  	_ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"`
 21285  
 21286  	// The bucket whose Object Lock configuration you want to retrieve.
 21287  	//
 21288  	// When using this action with an access point, you must direct requests to
 21289  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 21290  	// When using this action with an access point through the Amazon Web Services
 21291  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 21292  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 21293  	// in the Amazon S3 User Guide.
 21294  	//
 21295  	// Bucket is a required field
 21296  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 21297  
 21298  	// The account ID of the expected bucket owner. If the bucket is owned by a
 21299  	// different account, the request will fail with an HTTP 403 (Access Denied)
 21300  	// error.
 21301  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 21302  }
 21303  
 21304  // String returns the string representation.
 21305  //
 21306  // API parameter values that are decorated as "sensitive" in the API will not
 21307  // be included in the string output. The member name will be present, but the
 21308  // value will be replaced with "sensitive".
 21309  func (s GetObjectLockConfigurationInput) String() string {
 21310  	return awsutil.Prettify(s)
 21311  }
 21312  
 21313  // GoString returns the string representation.
 21314  //
 21315  // API parameter values that are decorated as "sensitive" in the API will not
 21316  // be included in the string output. The member name will be present, but the
 21317  // value will be replaced with "sensitive".
 21318  func (s GetObjectLockConfigurationInput) GoString() string {
 21319  	return s.String()
 21320  }
 21321  
 21322  // Validate inspects the fields of the type to determine if they are valid.
 21323  func (s *GetObjectLockConfigurationInput) Validate() error {
 21324  	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
 21325  	if s.Bucket == nil {
 21326  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 21327  	}
 21328  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 21329  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 21330  	}
 21331  
 21332  	if invalidParams.Len() > 0 {
 21333  		return invalidParams
 21334  	}
 21335  	return nil
 21336  }
 21337  
 21338  // SetBucket sets the Bucket field's value.
 21339  func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
 21340  	s.Bucket = &v
 21341  	return s
 21342  }
 21343  
 21344  func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
 21345  	if s.Bucket == nil {
 21346  		return v
 21347  	}
 21348  	return *s.Bucket
 21349  }
 21350  
 21351  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 21352  func (s *GetObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *GetObjectLockConfigurationInput {
 21353  	s.ExpectedBucketOwner = &v
 21354  	return s
 21355  }
 21356  
 21357  func (s *GetObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
 21358  	if s.Bucket == nil {
 21359  		return nil, fmt.Errorf("member Bucket is nil")
 21360  	}
 21361  	return parseEndpointARN(*s.Bucket)
 21362  }
 21363  
 21364  func (s *GetObjectLockConfigurationInput) hasEndpointARN() bool {
 21365  	if s.Bucket == nil {
 21366  		return false
 21367  	}
 21368  	return arn.IsARN(*s.Bucket)
 21369  }
 21370  
 21371  // updateArnableField updates the value of the input field that
 21372  // takes an ARN as an input. This method is useful to backfill
 21373  // the parsed resource name from ARN into the input member.
 21374  // It returns a pointer to a modified copy of input and an error.
 21375  // Note that original input is not modified.
 21376  func (s GetObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
 21377  	if s.Bucket == nil {
 21378  		return nil, fmt.Errorf("member Bucket is nil")
 21379  	}
 21380  	s.Bucket = aws.String(v)
 21381  	return &s, nil
 21382  }
 21383  
 21384  type GetObjectLockConfigurationOutput struct {
 21385  	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
 21386  
 21387  	// The specified bucket's Object Lock configuration.
 21388  	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
 21389  }
 21390  
 21391  // String returns the string representation.
 21392  //
 21393  // API parameter values that are decorated as "sensitive" in the API will not
 21394  // be included in the string output. The member name will be present, but the
 21395  // value will be replaced with "sensitive".
 21396  func (s GetObjectLockConfigurationOutput) String() string {
 21397  	return awsutil.Prettify(s)
 21398  }
 21399  
 21400  // GoString returns the string representation.
 21401  //
 21402  // API parameter values that are decorated as "sensitive" in the API will not
 21403  // be included in the string output. The member name will be present, but the
 21404  // value will be replaced with "sensitive".
 21405  func (s GetObjectLockConfigurationOutput) GoString() string {
 21406  	return s.String()
 21407  }
 21408  
 21409  // SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
 21410  func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
 21411  	s.ObjectLockConfiguration = v
 21412  	return s
 21413  }
 21414  
 21415  type GetObjectOutput struct {
 21416  	_ struct{} `type:"structure" payload:"Body"`
 21417  
 21418  	// Indicates that a range of bytes was specified.
 21419  	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
 21420  
 21421  	// Object data.
 21422  	Body io.ReadCloser `type:"blob"`
 21423  
 21424  	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
 21425  	// with Amazon Web Services KMS (SSE-KMS).
 21426  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 21427  
 21428  	// Specifies caching behavior along the request/reply chain.
 21429  	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
 21430  
 21431  	// Specifies presentational information for the object.
 21432  	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
 21433  
 21434  	// Specifies what content encodings have been applied to the object and thus
 21435  	// what decoding mechanisms must be applied to obtain the media-type referenced
 21436  	// by the Content-Type header field.
 21437  	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
 21438  
 21439  	// The language the content is in.
 21440  	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
 21441  
 21442  	// Size of the body in bytes.
 21443  	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
 21444  
 21445  	// The portion of the object returned in the response.
 21446  	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
 21447  
 21448  	// A standard MIME type describing the format of the object data.
 21449  	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
 21450  
 21451  	// Specifies whether the object retrieved was (true) or was not (false) a Delete
 21452  	// Marker. If false, this response header does not appear in the response.
 21453  	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
 21454  
 21455  	// An ETag is an opaque identifier assigned by a web server to a specific version
 21456  	// of a resource found at a URL.
 21457  	ETag *string `location:"header" locationName:"ETag" type:"string"`
 21458  
 21459  	// If the object expiration is configured (see PUT Bucket lifecycle), the response
 21460  	// includes this header. It includes the expiry-date and rule-id key-value pairs
 21461  	// providing object expiration information. The value of the rule-id is URL
 21462  	// encoded.
 21463  	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
 21464  
 21465  	// The date and time at which the object is no longer cacheable.
 21466  	Expires *string `location:"header" locationName:"Expires" type:"string"`
 21467  
 21468  	// Creation date of the object.
 21469  	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
 21470  
 21471  	// A map of metadata to store with the object in S3.
 21472  	//
 21473  	// By default unmarshaled keys are written as a map keys in following canonicalized format:
 21474  	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
 21475  	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
 21476  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 21477  
 21478  	// This is set to the number of metadata entries not returned in x-amz-meta
 21479  	// headers. This can happen if you create metadata using an API like SOAP that
 21480  	// supports more flexible metadata than the REST API. For example, using SOAP,
 21481  	// you can create metadata whose values are not legal HTTP headers.
 21482  	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
 21483  
 21484  	// Indicates whether this object has an active legal hold. This field is only
 21485  	// returned if you have permission to view an object's legal hold status.
 21486  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 21487  
 21488  	// The Object Lock mode currently in place for this object.
 21489  	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 21490  
 21491  	// The date and time when this object's Object Lock will expire.
 21492  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 21493  
 21494  	// The count of parts this object has.
 21495  	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
 21496  
 21497  	// Amazon S3 can return this if your request involves a bucket that is either
 21498  	// a source or destination in a replication rule.
 21499  	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
 21500  
 21501  	// If present, indicates that the requester was successfully charged for the
 21502  	// request.
 21503  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 21504  
 21505  	// Provides information about object restoration action and expiration time
 21506  	// of the restored object copy.
 21507  	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
 21508  
 21509  	// If server-side encryption with a customer-provided encryption key was requested,
 21510  	// the response will include this header confirming the encryption algorithm
 21511  	// used.
 21512  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 21513  
 21514  	// If server-side encryption with a customer-provided encryption key was requested,
 21515  	// the response will include this header to provide round-trip message integrity
 21516  	// verification of the customer-provided encryption key.
 21517  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 21518  
 21519  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 21520  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 21521  	// the object.
 21522  	//
 21523  	// SSEKMSKeyId is a sensitive parameter and its value will be
 21524  	// replaced with "sensitive" in string returned by GetObjectOutput's
 21525  	// String and GoString methods.
 21526  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 21527  
 21528  	// The server-side encryption algorithm used when storing this object in Amazon
 21529  	// S3 (for example, AES256, aws:kms).
 21530  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 21531  
 21532  	// Provides storage class information of the object. Amazon S3 returns this
 21533  	// header for all objects except for S3 Standard storage class objects.
 21534  	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
 21535  
 21536  	// The number of tags, if any, on the object.
 21537  	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
 21538  
 21539  	// Version of the object.
 21540  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 21541  
 21542  	// If the bucket is configured as a website, redirects requests for this object
 21543  	// to another object in the same bucket or to an external URL. Amazon S3 stores
 21544  	// the value of this header in the object metadata.
 21545  	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
 21546  }
 21547  
 21548  // String returns the string representation.
 21549  //
 21550  // API parameter values that are decorated as "sensitive" in the API will not
 21551  // be included in the string output. The member name will be present, but the
 21552  // value will be replaced with "sensitive".
 21553  func (s GetObjectOutput) String() string {
 21554  	return awsutil.Prettify(s)
 21555  }
 21556  
 21557  // GoString returns the string representation.
 21558  //
 21559  // API parameter values that are decorated as "sensitive" in the API will not
 21560  // be included in the string output. The member name will be present, but the
 21561  // value will be replaced with "sensitive".
 21562  func (s GetObjectOutput) GoString() string {
 21563  	return s.String()
 21564  }
 21565  
 21566  // SetAcceptRanges sets the AcceptRanges field's value.
 21567  func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
 21568  	s.AcceptRanges = &v
 21569  	return s
 21570  }
 21571  
 21572  // SetBody sets the Body field's value.
 21573  func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
 21574  	s.Body = v
 21575  	return s
 21576  }
 21577  
 21578  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 21579  func (s *GetObjectOutput) SetBucketKeyEnabled(v bool) *GetObjectOutput {
 21580  	s.BucketKeyEnabled = &v
 21581  	return s
 21582  }
 21583  
 21584  // SetCacheControl sets the CacheControl field's value.
 21585  func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
 21586  	s.CacheControl = &v
 21587  	return s
 21588  }
 21589  
 21590  // SetContentDisposition sets the ContentDisposition field's value.
 21591  func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
 21592  	s.ContentDisposition = &v
 21593  	return s
 21594  }
 21595  
 21596  // SetContentEncoding sets the ContentEncoding field's value.
 21597  func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
 21598  	s.ContentEncoding = &v
 21599  	return s
 21600  }
 21601  
 21602  // SetContentLanguage sets the ContentLanguage field's value.
 21603  func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
 21604  	s.ContentLanguage = &v
 21605  	return s
 21606  }
 21607  
 21608  // SetContentLength sets the ContentLength field's value.
 21609  func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
 21610  	s.ContentLength = &v
 21611  	return s
 21612  }
 21613  
 21614  // SetContentRange sets the ContentRange field's value.
 21615  func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
 21616  	s.ContentRange = &v
 21617  	return s
 21618  }
 21619  
 21620  // SetContentType sets the ContentType field's value.
 21621  func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
 21622  	s.ContentType = &v
 21623  	return s
 21624  }
 21625  
 21626  // SetDeleteMarker sets the DeleteMarker field's value.
 21627  func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
 21628  	s.DeleteMarker = &v
 21629  	return s
 21630  }
 21631  
 21632  // SetETag sets the ETag field's value.
 21633  func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
 21634  	s.ETag = &v
 21635  	return s
 21636  }
 21637  
 21638  // SetExpiration sets the Expiration field's value.
 21639  func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
 21640  	s.Expiration = &v
 21641  	return s
 21642  }
 21643  
 21644  // SetExpires sets the Expires field's value.
 21645  func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
 21646  	s.Expires = &v
 21647  	return s
 21648  }
 21649  
 21650  // SetLastModified sets the LastModified field's value.
 21651  func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
 21652  	s.LastModified = &v
 21653  	return s
 21654  }
 21655  
 21656  // SetMetadata sets the Metadata field's value.
 21657  func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
 21658  	s.Metadata = v
 21659  	return s
 21660  }
 21661  
 21662  // SetMissingMeta sets the MissingMeta field's value.
 21663  func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
 21664  	s.MissingMeta = &v
 21665  	return s
 21666  }
 21667  
 21668  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 21669  func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
 21670  	s.ObjectLockLegalHoldStatus = &v
 21671  	return s
 21672  }
 21673  
 21674  // SetObjectLockMode sets the ObjectLockMode field's value.
 21675  func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
 21676  	s.ObjectLockMode = &v
 21677  	return s
 21678  }
 21679  
 21680  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 21681  func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
 21682  	s.ObjectLockRetainUntilDate = &v
 21683  	return s
 21684  }
 21685  
 21686  // SetPartsCount sets the PartsCount field's value.
 21687  func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
 21688  	s.PartsCount = &v
 21689  	return s
 21690  }
 21691  
 21692  // SetReplicationStatus sets the ReplicationStatus field's value.
 21693  func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
 21694  	s.ReplicationStatus = &v
 21695  	return s
 21696  }
 21697  
 21698  // SetRequestCharged sets the RequestCharged field's value.
 21699  func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
 21700  	s.RequestCharged = &v
 21701  	return s
 21702  }
 21703  
 21704  // SetRestore sets the Restore field's value.
 21705  func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
 21706  	s.Restore = &v
 21707  	return s
 21708  }
 21709  
 21710  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 21711  func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
 21712  	s.SSECustomerAlgorithm = &v
 21713  	return s
 21714  }
 21715  
 21716  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 21717  func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
 21718  	s.SSECustomerKeyMD5 = &v
 21719  	return s
 21720  }
 21721  
 21722  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 21723  func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
 21724  	s.SSEKMSKeyId = &v
 21725  	return s
 21726  }
 21727  
 21728  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 21729  func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
 21730  	s.ServerSideEncryption = &v
 21731  	return s
 21732  }
 21733  
 21734  // SetStorageClass sets the StorageClass field's value.
 21735  func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
 21736  	s.StorageClass = &v
 21737  	return s
 21738  }
 21739  
 21740  // SetTagCount sets the TagCount field's value.
 21741  func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
 21742  	s.TagCount = &v
 21743  	return s
 21744  }
 21745  
 21746  // SetVersionId sets the VersionId field's value.
 21747  func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
 21748  	s.VersionId = &v
 21749  	return s
 21750  }
 21751  
 21752  // SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
 21753  func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
 21754  	s.WebsiteRedirectLocation = &v
 21755  	return s
 21756  }
 21757  
 21758  type GetObjectRetentionInput struct {
 21759  	_ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"`
 21760  
 21761  	// The bucket name containing the object whose retention settings you want to
 21762  	// retrieve.
 21763  	//
 21764  	// When using this action with an access point, you must direct requests to
 21765  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 21766  	// When using this action with an access point through the Amazon Web Services
 21767  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 21768  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 21769  	// in the Amazon S3 User Guide.
 21770  	//
 21771  	// Bucket is a required field
 21772  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 21773  
 21774  	// The account ID of the expected bucket owner. If the bucket is owned by a
 21775  	// different account, the request will fail with an HTTP 403 (Access Denied)
 21776  	// error.
 21777  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 21778  
 21779  	// The key name for the object whose retention settings you want to retrieve.
 21780  	//
 21781  	// Key is a required field
 21782  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 21783  
 21784  	// Confirms that the requester knows that they will be charged for the request.
 21785  	// Bucket owners need not specify this parameter in their requests. For information
 21786  	// about downloading objects from requester pays buckets, see Downloading Objects
 21787  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 21788  	// in the Amazon S3 User Guide.
 21789  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 21790  
 21791  	// The version ID for the object whose retention settings you want to retrieve.
 21792  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 21793  }
 21794  
 21795  // String returns the string representation.
 21796  //
 21797  // API parameter values that are decorated as "sensitive" in the API will not
 21798  // be included in the string output. The member name will be present, but the
 21799  // value will be replaced with "sensitive".
 21800  func (s GetObjectRetentionInput) String() string {
 21801  	return awsutil.Prettify(s)
 21802  }
 21803  
 21804  // GoString returns the string representation.
 21805  //
 21806  // API parameter values that are decorated as "sensitive" in the API will not
 21807  // be included in the string output. The member name will be present, but the
 21808  // value will be replaced with "sensitive".
 21809  func (s GetObjectRetentionInput) GoString() string {
 21810  	return s.String()
 21811  }
 21812  
 21813  // Validate inspects the fields of the type to determine if they are valid.
 21814  func (s *GetObjectRetentionInput) Validate() error {
 21815  	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
 21816  	if s.Bucket == nil {
 21817  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 21818  	}
 21819  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 21820  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 21821  	}
 21822  	if s.Key == nil {
 21823  		invalidParams.Add(request.NewErrParamRequired("Key"))
 21824  	}
 21825  	if s.Key != nil && len(*s.Key) < 1 {
 21826  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 21827  	}
 21828  
 21829  	if invalidParams.Len() > 0 {
 21830  		return invalidParams
 21831  	}
 21832  	return nil
 21833  }
 21834  
 21835  // SetBucket sets the Bucket field's value.
 21836  func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
 21837  	s.Bucket = &v
 21838  	return s
 21839  }
 21840  
 21841  func (s *GetObjectRetentionInput) getBucket() (v string) {
 21842  	if s.Bucket == nil {
 21843  		return v
 21844  	}
 21845  	return *s.Bucket
 21846  }
 21847  
 21848  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 21849  func (s *GetObjectRetentionInput) SetExpectedBucketOwner(v string) *GetObjectRetentionInput {
 21850  	s.ExpectedBucketOwner = &v
 21851  	return s
 21852  }
 21853  
 21854  // SetKey sets the Key field's value.
 21855  func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
 21856  	s.Key = &v
 21857  	return s
 21858  }
 21859  
 21860  // SetRequestPayer sets the RequestPayer field's value.
 21861  func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
 21862  	s.RequestPayer = &v
 21863  	return s
 21864  }
 21865  
 21866  // SetVersionId sets the VersionId field's value.
 21867  func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
 21868  	s.VersionId = &v
 21869  	return s
 21870  }
 21871  
 21872  func (s *GetObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
 21873  	if s.Bucket == nil {
 21874  		return nil, fmt.Errorf("member Bucket is nil")
 21875  	}
 21876  	return parseEndpointARN(*s.Bucket)
 21877  }
 21878  
 21879  func (s *GetObjectRetentionInput) hasEndpointARN() bool {
 21880  	if s.Bucket == nil {
 21881  		return false
 21882  	}
 21883  	return arn.IsARN(*s.Bucket)
 21884  }
 21885  
 21886  // updateArnableField updates the value of the input field that
 21887  // takes an ARN as an input. This method is useful to backfill
 21888  // the parsed resource name from ARN into the input member.
 21889  // It returns a pointer to a modified copy of input and an error.
 21890  // Note that original input is not modified.
 21891  func (s GetObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
 21892  	if s.Bucket == nil {
 21893  		return nil, fmt.Errorf("member Bucket is nil")
 21894  	}
 21895  	s.Bucket = aws.String(v)
 21896  	return &s, nil
 21897  }
 21898  
 21899  type GetObjectRetentionOutput struct {
 21900  	_ struct{} `type:"structure" payload:"Retention"`
 21901  
 21902  	// The container element for an object's retention settings.
 21903  	Retention *ObjectLockRetention `type:"structure"`
 21904  }
 21905  
 21906  // String returns the string representation.
 21907  //
 21908  // API parameter values that are decorated as "sensitive" in the API will not
 21909  // be included in the string output. The member name will be present, but the
 21910  // value will be replaced with "sensitive".
 21911  func (s GetObjectRetentionOutput) String() string {
 21912  	return awsutil.Prettify(s)
 21913  }
 21914  
 21915  // GoString returns the string representation.
 21916  //
 21917  // API parameter values that are decorated as "sensitive" in the API will not
 21918  // be included in the string output. The member name will be present, but the
 21919  // value will be replaced with "sensitive".
 21920  func (s GetObjectRetentionOutput) GoString() string {
 21921  	return s.String()
 21922  }
 21923  
 21924  // SetRetention sets the Retention field's value.
 21925  func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
 21926  	s.Retention = v
 21927  	return s
 21928  }
 21929  
 21930  type GetObjectTaggingInput struct {
 21931  	_ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"`
 21932  
 21933  	// The bucket name containing the object for which to get the tagging information.
 21934  	//
 21935  	// When using this action with an access point, you must direct requests to
 21936  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 21937  	// When using this action with an access point through the Amazon Web Services
 21938  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 21939  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 21940  	// in the Amazon S3 User Guide.
 21941  	//
 21942  	// When using this action with Amazon S3 on Outposts, you must direct requests
 21943  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 21944  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 21945  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 21946  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 21947  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 21948  	// in the Amazon S3 User Guide.
 21949  	//
 21950  	// Bucket is a required field
 21951  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 21952  
 21953  	// The account ID of the expected bucket owner. If the bucket is owned by a
 21954  	// different account, the request will fail with an HTTP 403 (Access Denied)
 21955  	// error.
 21956  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 21957  
 21958  	// Object key for which to get the tagging information.
 21959  	//
 21960  	// Key is a required field
 21961  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 21962  
 21963  	// Confirms that the requester knows that they will be charged for the request.
 21964  	// Bucket owners need not specify this parameter in their requests. For information
 21965  	// about downloading objects from requester pays buckets, see Downloading Objects
 21966  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 21967  	// in the Amazon S3 User Guide.
 21968  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 21969  
 21970  	// The versionId of the object for which to get the tagging information.
 21971  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 21972  }
 21973  
 21974  // String returns the string representation.
 21975  //
 21976  // API parameter values that are decorated as "sensitive" in the API will not
 21977  // be included in the string output. The member name will be present, but the
 21978  // value will be replaced with "sensitive".
 21979  func (s GetObjectTaggingInput) String() string {
 21980  	return awsutil.Prettify(s)
 21981  }
 21982  
 21983  // GoString returns the string representation.
 21984  //
 21985  // API parameter values that are decorated as "sensitive" in the API will not
 21986  // be included in the string output. The member name will be present, but the
 21987  // value will be replaced with "sensitive".
 21988  func (s GetObjectTaggingInput) GoString() string {
 21989  	return s.String()
 21990  }
 21991  
 21992  // Validate inspects the fields of the type to determine if they are valid.
 21993  func (s *GetObjectTaggingInput) Validate() error {
 21994  	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
 21995  	if s.Bucket == nil {
 21996  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 21997  	}
 21998  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 21999  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 22000  	}
 22001  	if s.Key == nil {
 22002  		invalidParams.Add(request.NewErrParamRequired("Key"))
 22003  	}
 22004  	if s.Key != nil && len(*s.Key) < 1 {
 22005  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 22006  	}
 22007  
 22008  	if invalidParams.Len() > 0 {
 22009  		return invalidParams
 22010  	}
 22011  	return nil
 22012  }
 22013  
 22014  // SetBucket sets the Bucket field's value.
 22015  func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
 22016  	s.Bucket = &v
 22017  	return s
 22018  }
 22019  
 22020  func (s *GetObjectTaggingInput) getBucket() (v string) {
 22021  	if s.Bucket == nil {
 22022  		return v
 22023  	}
 22024  	return *s.Bucket
 22025  }
 22026  
 22027  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 22028  func (s *GetObjectTaggingInput) SetExpectedBucketOwner(v string) *GetObjectTaggingInput {
 22029  	s.ExpectedBucketOwner = &v
 22030  	return s
 22031  }
 22032  
 22033  // SetKey sets the Key field's value.
 22034  func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
 22035  	s.Key = &v
 22036  	return s
 22037  }
 22038  
 22039  // SetRequestPayer sets the RequestPayer field's value.
 22040  func (s *GetObjectTaggingInput) SetRequestPayer(v string) *GetObjectTaggingInput {
 22041  	s.RequestPayer = &v
 22042  	return s
 22043  }
 22044  
 22045  // SetVersionId sets the VersionId field's value.
 22046  func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
 22047  	s.VersionId = &v
 22048  	return s
 22049  }
 22050  
 22051  func (s *GetObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
 22052  	if s.Bucket == nil {
 22053  		return nil, fmt.Errorf("member Bucket is nil")
 22054  	}
 22055  	return parseEndpointARN(*s.Bucket)
 22056  }
 22057  
 22058  func (s *GetObjectTaggingInput) hasEndpointARN() bool {
 22059  	if s.Bucket == nil {
 22060  		return false
 22061  	}
 22062  	return arn.IsARN(*s.Bucket)
 22063  }
 22064  
 22065  // updateArnableField updates the value of the input field that
 22066  // takes an ARN as an input. This method is useful to backfill
 22067  // the parsed resource name from ARN into the input member.
 22068  // It returns a pointer to a modified copy of input and an error.
 22069  // Note that original input is not modified.
 22070  func (s GetObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
 22071  	if s.Bucket == nil {
 22072  		return nil, fmt.Errorf("member Bucket is nil")
 22073  	}
 22074  	s.Bucket = aws.String(v)
 22075  	return &s, nil
 22076  }
 22077  
 22078  type GetObjectTaggingOutput struct {
 22079  	_ struct{} `type:"structure"`
 22080  
 22081  	// Contains the tag set.
 22082  	//
 22083  	// TagSet is a required field
 22084  	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
 22085  
 22086  	// The versionId of the object for which you got the tagging information.
 22087  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 22088  }
 22089  
 22090  // String returns the string representation.
 22091  //
 22092  // API parameter values that are decorated as "sensitive" in the API will not
 22093  // be included in the string output. The member name will be present, but the
 22094  // value will be replaced with "sensitive".
 22095  func (s GetObjectTaggingOutput) String() string {
 22096  	return awsutil.Prettify(s)
 22097  }
 22098  
 22099  // GoString returns the string representation.
 22100  //
 22101  // API parameter values that are decorated as "sensitive" in the API will not
 22102  // be included in the string output. The member name will be present, but the
 22103  // value will be replaced with "sensitive".
 22104  func (s GetObjectTaggingOutput) GoString() string {
 22105  	return s.String()
 22106  }
 22107  
 22108  // SetTagSet sets the TagSet field's value.
 22109  func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
 22110  	s.TagSet = v
 22111  	return s
 22112  }
 22113  
 22114  // SetVersionId sets the VersionId field's value.
 22115  func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
 22116  	s.VersionId = &v
 22117  	return s
 22118  }
 22119  
 22120  type GetObjectTorrentInput struct {
 22121  	_ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"`
 22122  
 22123  	// The name of the bucket containing the object for which to get the torrent
 22124  	// files.
 22125  	//
 22126  	// Bucket is a required field
 22127  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 22128  
 22129  	// The account ID of the expected bucket owner. If the bucket is owned by a
 22130  	// different account, the request will fail with an HTTP 403 (Access Denied)
 22131  	// error.
 22132  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 22133  
 22134  	// The object key for which to get the information.
 22135  	//
 22136  	// Key is a required field
 22137  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 22138  
 22139  	// Confirms that the requester knows that they will be charged for the request.
 22140  	// Bucket owners need not specify this parameter in their requests. For information
 22141  	// about downloading objects from requester pays buckets, see Downloading Objects
 22142  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 22143  	// in the Amazon S3 User Guide.
 22144  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 22145  }
 22146  
 22147  // String returns the string representation.
 22148  //
 22149  // API parameter values that are decorated as "sensitive" in the API will not
 22150  // be included in the string output. The member name will be present, but the
 22151  // value will be replaced with "sensitive".
 22152  func (s GetObjectTorrentInput) String() string {
 22153  	return awsutil.Prettify(s)
 22154  }
 22155  
 22156  // GoString returns the string representation.
 22157  //
 22158  // API parameter values that are decorated as "sensitive" in the API will not
 22159  // be included in the string output. The member name will be present, but the
 22160  // value will be replaced with "sensitive".
 22161  func (s GetObjectTorrentInput) GoString() string {
 22162  	return s.String()
 22163  }
 22164  
 22165  // Validate inspects the fields of the type to determine if they are valid.
 22166  func (s *GetObjectTorrentInput) Validate() error {
 22167  	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
 22168  	if s.Bucket == nil {
 22169  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 22170  	}
 22171  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 22172  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 22173  	}
 22174  	if s.Key == nil {
 22175  		invalidParams.Add(request.NewErrParamRequired("Key"))
 22176  	}
 22177  	if s.Key != nil && len(*s.Key) < 1 {
 22178  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 22179  	}
 22180  
 22181  	if invalidParams.Len() > 0 {
 22182  		return invalidParams
 22183  	}
 22184  	return nil
 22185  }
 22186  
 22187  // SetBucket sets the Bucket field's value.
 22188  func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
 22189  	s.Bucket = &v
 22190  	return s
 22191  }
 22192  
 22193  func (s *GetObjectTorrentInput) getBucket() (v string) {
 22194  	if s.Bucket == nil {
 22195  		return v
 22196  	}
 22197  	return *s.Bucket
 22198  }
 22199  
 22200  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 22201  func (s *GetObjectTorrentInput) SetExpectedBucketOwner(v string) *GetObjectTorrentInput {
 22202  	s.ExpectedBucketOwner = &v
 22203  	return s
 22204  }
 22205  
 22206  // SetKey sets the Key field's value.
 22207  func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
 22208  	s.Key = &v
 22209  	return s
 22210  }
 22211  
 22212  // SetRequestPayer sets the RequestPayer field's value.
 22213  func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
 22214  	s.RequestPayer = &v
 22215  	return s
 22216  }
 22217  
 22218  func (s *GetObjectTorrentInput) getEndpointARN() (arn.Resource, error) {
 22219  	if s.Bucket == nil {
 22220  		return nil, fmt.Errorf("member Bucket is nil")
 22221  	}
 22222  	return parseEndpointARN(*s.Bucket)
 22223  }
 22224  
 22225  func (s *GetObjectTorrentInput) hasEndpointARN() bool {
 22226  	if s.Bucket == nil {
 22227  		return false
 22228  	}
 22229  	return arn.IsARN(*s.Bucket)
 22230  }
 22231  
 22232  // updateArnableField updates the value of the input field that
 22233  // takes an ARN as an input. This method is useful to backfill
 22234  // the parsed resource name from ARN into the input member.
 22235  // It returns a pointer to a modified copy of input and an error.
 22236  // Note that original input is not modified.
 22237  func (s GetObjectTorrentInput) updateArnableField(v string) (interface{}, error) {
 22238  	if s.Bucket == nil {
 22239  		return nil, fmt.Errorf("member Bucket is nil")
 22240  	}
 22241  	s.Bucket = aws.String(v)
 22242  	return &s, nil
 22243  }
 22244  
 22245  type GetObjectTorrentOutput struct {
 22246  	_ struct{} `type:"structure" payload:"Body"`
 22247  
 22248  	// A Bencoded dictionary as defined by the BitTorrent specification
 22249  	Body io.ReadCloser `type:"blob"`
 22250  
 22251  	// If present, indicates that the requester was successfully charged for the
 22252  	// request.
 22253  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 22254  }
 22255  
 22256  // String returns the string representation.
 22257  //
 22258  // API parameter values that are decorated as "sensitive" in the API will not
 22259  // be included in the string output. The member name will be present, but the
 22260  // value will be replaced with "sensitive".
 22261  func (s GetObjectTorrentOutput) String() string {
 22262  	return awsutil.Prettify(s)
 22263  }
 22264  
 22265  // GoString returns the string representation.
 22266  //
 22267  // API parameter values that are decorated as "sensitive" in the API will not
 22268  // be included in the string output. The member name will be present, but the
 22269  // value will be replaced with "sensitive".
 22270  func (s GetObjectTorrentOutput) GoString() string {
 22271  	return s.String()
 22272  }
 22273  
 22274  // SetBody sets the Body field's value.
 22275  func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
 22276  	s.Body = v
 22277  	return s
 22278  }
 22279  
 22280  // SetRequestCharged sets the RequestCharged field's value.
 22281  func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
 22282  	s.RequestCharged = &v
 22283  	return s
 22284  }
 22285  
 22286  type GetPublicAccessBlockInput struct {
 22287  	_ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"`
 22288  
 22289  	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
 22290  	// want to retrieve.
 22291  	//
 22292  	// Bucket is a required field
 22293  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 22294  
 22295  	// The account ID of the expected bucket owner. If the bucket is owned by a
 22296  	// different account, the request will fail with an HTTP 403 (Access Denied)
 22297  	// error.
 22298  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 22299  }
 22300  
 22301  // String returns the string representation.
 22302  //
 22303  // API parameter values that are decorated as "sensitive" in the API will not
 22304  // be included in the string output. The member name will be present, but the
 22305  // value will be replaced with "sensitive".
 22306  func (s GetPublicAccessBlockInput) String() string {
 22307  	return awsutil.Prettify(s)
 22308  }
 22309  
 22310  // GoString returns the string representation.
 22311  //
 22312  // API parameter values that are decorated as "sensitive" in the API will not
 22313  // be included in the string output. The member name will be present, but the
 22314  // value will be replaced with "sensitive".
 22315  func (s GetPublicAccessBlockInput) GoString() string {
 22316  	return s.String()
 22317  }
 22318  
 22319  // Validate inspects the fields of the type to determine if they are valid.
 22320  func (s *GetPublicAccessBlockInput) Validate() error {
 22321  	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
 22322  	if s.Bucket == nil {
 22323  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 22324  	}
 22325  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 22326  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 22327  	}
 22328  
 22329  	if invalidParams.Len() > 0 {
 22330  		return invalidParams
 22331  	}
 22332  	return nil
 22333  }
 22334  
 22335  // SetBucket sets the Bucket field's value.
 22336  func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
 22337  	s.Bucket = &v
 22338  	return s
 22339  }
 22340  
 22341  func (s *GetPublicAccessBlockInput) getBucket() (v string) {
 22342  	if s.Bucket == nil {
 22343  		return v
 22344  	}
 22345  	return *s.Bucket
 22346  }
 22347  
 22348  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 22349  func (s *GetPublicAccessBlockInput) SetExpectedBucketOwner(v string) *GetPublicAccessBlockInput {
 22350  	s.ExpectedBucketOwner = &v
 22351  	return s
 22352  }
 22353  
 22354  func (s *GetPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
 22355  	if s.Bucket == nil {
 22356  		return nil, fmt.Errorf("member Bucket is nil")
 22357  	}
 22358  	return parseEndpointARN(*s.Bucket)
 22359  }
 22360  
 22361  func (s *GetPublicAccessBlockInput) hasEndpointARN() bool {
 22362  	if s.Bucket == nil {
 22363  		return false
 22364  	}
 22365  	return arn.IsARN(*s.Bucket)
 22366  }
 22367  
 22368  // updateArnableField updates the value of the input field that
 22369  // takes an ARN as an input. This method is useful to backfill
 22370  // the parsed resource name from ARN into the input member.
 22371  // It returns a pointer to a modified copy of input and an error.
 22372  // Note that original input is not modified.
 22373  func (s GetPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
 22374  	if s.Bucket == nil {
 22375  		return nil, fmt.Errorf("member Bucket is nil")
 22376  	}
 22377  	s.Bucket = aws.String(v)
 22378  	return &s, nil
 22379  }
 22380  
 22381  type GetPublicAccessBlockOutput struct {
 22382  	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
 22383  
 22384  	// The PublicAccessBlock configuration currently in effect for this Amazon S3
 22385  	// bucket.
 22386  	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
 22387  }
 22388  
 22389  // String returns the string representation.
 22390  //
 22391  // API parameter values that are decorated as "sensitive" in the API will not
 22392  // be included in the string output. The member name will be present, but the
 22393  // value will be replaced with "sensitive".
 22394  func (s GetPublicAccessBlockOutput) String() string {
 22395  	return awsutil.Prettify(s)
 22396  }
 22397  
 22398  // GoString returns the string representation.
 22399  //
 22400  // API parameter values that are decorated as "sensitive" in the API will not
 22401  // be included in the string output. The member name will be present, but the
 22402  // value will be replaced with "sensitive".
 22403  func (s GetPublicAccessBlockOutput) GoString() string {
 22404  	return s.String()
 22405  }
 22406  
 22407  // SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
 22408  func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
 22409  	s.PublicAccessBlockConfiguration = v
 22410  	return s
 22411  }
 22412  
 22413  // Container for S3 Glacier job parameters.
 22414  type GlacierJobParameters struct {
 22415  	_ struct{} `type:"structure"`
 22416  
 22417  	// Retrieval tier at which the restore will be processed.
 22418  	//
 22419  	// Tier is a required field
 22420  	Tier *string `type:"string" required:"true" enum:"Tier"`
 22421  }
 22422  
 22423  // String returns the string representation.
 22424  //
 22425  // API parameter values that are decorated as "sensitive" in the API will not
 22426  // be included in the string output. The member name will be present, but the
 22427  // value will be replaced with "sensitive".
 22428  func (s GlacierJobParameters) String() string {
 22429  	return awsutil.Prettify(s)
 22430  }
 22431  
 22432  // GoString returns the string representation.
 22433  //
 22434  // API parameter values that are decorated as "sensitive" in the API will not
 22435  // be included in the string output. The member name will be present, but the
 22436  // value will be replaced with "sensitive".
 22437  func (s GlacierJobParameters) GoString() string {
 22438  	return s.String()
 22439  }
 22440  
 22441  // Validate inspects the fields of the type to determine if they are valid.
 22442  func (s *GlacierJobParameters) Validate() error {
 22443  	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
 22444  	if s.Tier == nil {
 22445  		invalidParams.Add(request.NewErrParamRequired("Tier"))
 22446  	}
 22447  
 22448  	if invalidParams.Len() > 0 {
 22449  		return invalidParams
 22450  	}
 22451  	return nil
 22452  }
 22453  
 22454  // SetTier sets the Tier field's value.
 22455  func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
 22456  	s.Tier = &v
 22457  	return s
 22458  }
 22459  
 22460  // Container for grant information.
 22461  type Grant struct {
 22462  	_ struct{} `type:"structure"`
 22463  
 22464  	// The person being granted permissions.
 22465  	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
 22466  
 22467  	// Specifies the permission given to the grantee.
 22468  	Permission *string `type:"string" enum:"Permission"`
 22469  }
 22470  
 22471  // String returns the string representation.
 22472  //
 22473  // API parameter values that are decorated as "sensitive" in the API will not
 22474  // be included in the string output. The member name will be present, but the
 22475  // value will be replaced with "sensitive".
 22476  func (s Grant) String() string {
 22477  	return awsutil.Prettify(s)
 22478  }
 22479  
 22480  // GoString returns the string representation.
 22481  //
 22482  // API parameter values that are decorated as "sensitive" in the API will not
 22483  // be included in the string output. The member name will be present, but the
 22484  // value will be replaced with "sensitive".
 22485  func (s Grant) GoString() string {
 22486  	return s.String()
 22487  }
 22488  
 22489  // Validate inspects the fields of the type to determine if they are valid.
 22490  func (s *Grant) Validate() error {
 22491  	invalidParams := request.ErrInvalidParams{Context: "Grant"}
 22492  	if s.Grantee != nil {
 22493  		if err := s.Grantee.Validate(); err != nil {
 22494  			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
 22495  		}
 22496  	}
 22497  
 22498  	if invalidParams.Len() > 0 {
 22499  		return invalidParams
 22500  	}
 22501  	return nil
 22502  }
 22503  
 22504  // SetGrantee sets the Grantee field's value.
 22505  func (s *Grant) SetGrantee(v *Grantee) *Grant {
 22506  	s.Grantee = v
 22507  	return s
 22508  }
 22509  
 22510  // SetPermission sets the Permission field's value.
 22511  func (s *Grant) SetPermission(v string) *Grant {
 22512  	s.Permission = &v
 22513  	return s
 22514  }
 22515  
 22516  // Container for the person being granted permissions.
 22517  type Grantee struct {
 22518  	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
 22519  
 22520  	// Screen name of the grantee.
 22521  	DisplayName *string `type:"string"`
 22522  
 22523  	// Email address of the grantee.
 22524  	//
 22525  	// Using email addresses to specify a grantee is only supported in the following
 22526  	// Amazon Web Services Regions:
 22527  	//
 22528  	//    * US East (N. Virginia)
 22529  	//
 22530  	//    * US West (N. California)
 22531  	//
 22532  	//    * US West (Oregon)
 22533  	//
 22534  	//    * Asia Pacific (Singapore)
 22535  	//
 22536  	//    * Asia Pacific (Sydney)
 22537  	//
 22538  	//    * Asia Pacific (Tokyo)
 22539  	//
 22540  	//    * Europe (Ireland)
 22541  	//
 22542  	//    * South America (São Paulo)
 22543  	//
 22544  	// For a list of all the Amazon S3 supported Regions and endpoints, see Regions
 22545  	// and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
 22546  	// in the Amazon Web Services General Reference.
 22547  	EmailAddress *string `type:"string"`
 22548  
 22549  	// The canonical user ID of the grantee.
 22550  	ID *string `type:"string"`
 22551  
 22552  	// Type of grantee
 22553  	//
 22554  	// Type is a required field
 22555  	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
 22556  
 22557  	// URI of the grantee group.
 22558  	URI *string `type:"string"`
 22559  }
 22560  
 22561  // String returns the string representation.
 22562  //
 22563  // API parameter values that are decorated as "sensitive" in the API will not
 22564  // be included in the string output. The member name will be present, but the
 22565  // value will be replaced with "sensitive".
 22566  func (s Grantee) String() string {
 22567  	return awsutil.Prettify(s)
 22568  }
 22569  
 22570  // GoString returns the string representation.
 22571  //
 22572  // API parameter values that are decorated as "sensitive" in the API will not
 22573  // be included in the string output. The member name will be present, but the
 22574  // value will be replaced with "sensitive".
 22575  func (s Grantee) GoString() string {
 22576  	return s.String()
 22577  }
 22578  
 22579  // Validate inspects the fields of the type to determine if they are valid.
 22580  func (s *Grantee) Validate() error {
 22581  	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
 22582  	if s.Type == nil {
 22583  		invalidParams.Add(request.NewErrParamRequired("Type"))
 22584  	}
 22585  
 22586  	if invalidParams.Len() > 0 {
 22587  		return invalidParams
 22588  	}
 22589  	return nil
 22590  }
 22591  
 22592  // SetDisplayName sets the DisplayName field's value.
 22593  func (s *Grantee) SetDisplayName(v string) *Grantee {
 22594  	s.DisplayName = &v
 22595  	return s
 22596  }
 22597  
 22598  // SetEmailAddress sets the EmailAddress field's value.
 22599  func (s *Grantee) SetEmailAddress(v string) *Grantee {
 22600  	s.EmailAddress = &v
 22601  	return s
 22602  }
 22603  
 22604  // SetID sets the ID field's value.
 22605  func (s *Grantee) SetID(v string) *Grantee {
 22606  	s.ID = &v
 22607  	return s
 22608  }
 22609  
 22610  // SetType sets the Type field's value.
 22611  func (s *Grantee) SetType(v string) *Grantee {
 22612  	s.Type = &v
 22613  	return s
 22614  }
 22615  
 22616  // SetURI sets the URI field's value.
 22617  func (s *Grantee) SetURI(v string) *Grantee {
 22618  	s.URI = &v
 22619  	return s
 22620  }
 22621  
 22622  type HeadBucketInput struct {
 22623  	_ struct{} `locationName:"HeadBucketRequest" type:"structure"`
 22624  
 22625  	// The bucket name.
 22626  	//
 22627  	// When using this action with an access point, you must direct requests to
 22628  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 22629  	// When using this action with an access point through the Amazon Web Services
 22630  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 22631  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 22632  	// in the Amazon S3 User Guide.
 22633  	//
 22634  	// When using this action with Amazon S3 on Outposts, you must direct requests
 22635  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 22636  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 22637  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 22638  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 22639  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 22640  	// in the Amazon S3 User Guide.
 22641  	//
 22642  	// Bucket is a required field
 22643  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 22644  
 22645  	// The account ID of the expected bucket owner. If the bucket is owned by a
 22646  	// different account, the request will fail with an HTTP 403 (Access Denied)
 22647  	// error.
 22648  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 22649  }
 22650  
 22651  // String returns the string representation.
 22652  //
 22653  // API parameter values that are decorated as "sensitive" in the API will not
 22654  // be included in the string output. The member name will be present, but the
 22655  // value will be replaced with "sensitive".
 22656  func (s HeadBucketInput) String() string {
 22657  	return awsutil.Prettify(s)
 22658  }
 22659  
 22660  // GoString returns the string representation.
 22661  //
 22662  // API parameter values that are decorated as "sensitive" in the API will not
 22663  // be included in the string output. The member name will be present, but the
 22664  // value will be replaced with "sensitive".
 22665  func (s HeadBucketInput) GoString() string {
 22666  	return s.String()
 22667  }
 22668  
 22669  // Validate inspects the fields of the type to determine if they are valid.
 22670  func (s *HeadBucketInput) Validate() error {
 22671  	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
 22672  	if s.Bucket == nil {
 22673  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 22674  	}
 22675  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 22676  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 22677  	}
 22678  
 22679  	if invalidParams.Len() > 0 {
 22680  		return invalidParams
 22681  	}
 22682  	return nil
 22683  }
 22684  
 22685  // SetBucket sets the Bucket field's value.
 22686  func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
 22687  	s.Bucket = &v
 22688  	return s
 22689  }
 22690  
 22691  func (s *HeadBucketInput) getBucket() (v string) {
 22692  	if s.Bucket == nil {
 22693  		return v
 22694  	}
 22695  	return *s.Bucket
 22696  }
 22697  
 22698  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 22699  func (s *HeadBucketInput) SetExpectedBucketOwner(v string) *HeadBucketInput {
 22700  	s.ExpectedBucketOwner = &v
 22701  	return s
 22702  }
 22703  
 22704  func (s *HeadBucketInput) getEndpointARN() (arn.Resource, error) {
 22705  	if s.Bucket == nil {
 22706  		return nil, fmt.Errorf("member Bucket is nil")
 22707  	}
 22708  	return parseEndpointARN(*s.Bucket)
 22709  }
 22710  
 22711  func (s *HeadBucketInput) hasEndpointARN() bool {
 22712  	if s.Bucket == nil {
 22713  		return false
 22714  	}
 22715  	return arn.IsARN(*s.Bucket)
 22716  }
 22717  
 22718  // updateArnableField updates the value of the input field that
 22719  // takes an ARN as an input. This method is useful to backfill
 22720  // the parsed resource name from ARN into the input member.
 22721  // It returns a pointer to a modified copy of input and an error.
 22722  // Note that original input is not modified.
 22723  func (s HeadBucketInput) updateArnableField(v string) (interface{}, error) {
 22724  	if s.Bucket == nil {
 22725  		return nil, fmt.Errorf("member Bucket is nil")
 22726  	}
 22727  	s.Bucket = aws.String(v)
 22728  	return &s, nil
 22729  }
 22730  
 22731  type HeadBucketOutput struct {
 22732  	_ struct{} `type:"structure"`
 22733  }
 22734  
 22735  // String returns the string representation.
 22736  //
 22737  // API parameter values that are decorated as "sensitive" in the API will not
 22738  // be included in the string output. The member name will be present, but the
 22739  // value will be replaced with "sensitive".
 22740  func (s HeadBucketOutput) String() string {
 22741  	return awsutil.Prettify(s)
 22742  }
 22743  
 22744  // GoString returns the string representation.
 22745  //
 22746  // API parameter values that are decorated as "sensitive" in the API will not
 22747  // be included in the string output. The member name will be present, but the
 22748  // value will be replaced with "sensitive".
 22749  func (s HeadBucketOutput) GoString() string {
 22750  	return s.String()
 22751  }
 22752  
 22753  type HeadObjectInput struct {
 22754  	_ struct{} `locationName:"HeadObjectRequest" type:"structure"`
 22755  
 22756  	// The name of the bucket containing the object.
 22757  	//
 22758  	// When using this action with an access point, you must direct requests to
 22759  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 22760  	// When using this action with an access point through the Amazon Web Services
 22761  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 22762  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 22763  	// in the Amazon S3 User Guide.
 22764  	//
 22765  	// When using this action with Amazon S3 on Outposts, you must direct requests
 22766  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 22767  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 22768  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 22769  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 22770  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 22771  	// in the Amazon S3 User Guide.
 22772  	//
 22773  	// Bucket is a required field
 22774  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 22775  
 22776  	// The account ID of the expected bucket owner. If the bucket is owned by a
 22777  	// different account, the request will fail with an HTTP 403 (Access Denied)
 22778  	// error.
 22779  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 22780  
 22781  	// Return the object only if its entity tag (ETag) is the same as the one specified,
 22782  	// otherwise return a 412 (precondition failed).
 22783  	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
 22784  
 22785  	// Return the object only if it has been modified since the specified time,
 22786  	// otherwise return a 304 (not modified).
 22787  	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
 22788  
 22789  	// Return the object only if its entity tag (ETag) is different from the one
 22790  	// specified, otherwise return a 304 (not modified).
 22791  	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
 22792  
 22793  	// Return the object only if it has not been modified since the specified time,
 22794  	// otherwise return a 412 (precondition failed).
 22795  	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
 22796  
 22797  	// The object key.
 22798  	//
 22799  	// Key is a required field
 22800  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 22801  
 22802  	// Part number of the object being read. This is a positive integer between
 22803  	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
 22804  	// Useful querying about the size of the part and the number of parts in this
 22805  	// object.
 22806  	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
 22807  
 22808  	// Downloads the specified range bytes of an object. For more information about
 22809  	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
 22810  	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
 22811  	//
 22812  	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
 22813  	Range *string `location:"header" locationName:"Range" type:"string"`
 22814  
 22815  	// Confirms that the requester knows that they will be charged for the request.
 22816  	// Bucket owners need not specify this parameter in their requests. For information
 22817  	// about downloading objects from requester pays buckets, see Downloading Objects
 22818  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 22819  	// in the Amazon S3 User Guide.
 22820  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 22821  
 22822  	// Specifies the algorithm to use to when encrypting the object (for example,
 22823  	// AES256).
 22824  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 22825  
 22826  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 22827  	// data. This value is used to store the object and then it is discarded; Amazon
 22828  	// S3 does not store the encryption key. The key must be appropriate for use
 22829  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 22830  	// header.
 22831  	//
 22832  	// SSECustomerKey is a sensitive parameter and its value will be
 22833  	// replaced with "sensitive" in string returned by HeadObjectInput's
 22834  	// String and GoString methods.
 22835  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 22836  
 22837  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 22838  	// Amazon S3 uses this header for a message integrity check to ensure that the
 22839  	// encryption key was transmitted without error.
 22840  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 22841  
 22842  	// VersionId used to reference a specific version of the object.
 22843  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 22844  }
 22845  
 22846  // String returns the string representation.
 22847  //
 22848  // API parameter values that are decorated as "sensitive" in the API will not
 22849  // be included in the string output. The member name will be present, but the
 22850  // value will be replaced with "sensitive".
 22851  func (s HeadObjectInput) String() string {
 22852  	return awsutil.Prettify(s)
 22853  }
 22854  
 22855  // GoString returns the string representation.
 22856  //
 22857  // API parameter values that are decorated as "sensitive" in the API will not
 22858  // be included in the string output. The member name will be present, but the
 22859  // value will be replaced with "sensitive".
 22860  func (s HeadObjectInput) GoString() string {
 22861  	return s.String()
 22862  }
 22863  
 22864  // Validate inspects the fields of the type to determine if they are valid.
 22865  func (s *HeadObjectInput) Validate() error {
 22866  	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
 22867  	if s.Bucket == nil {
 22868  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 22869  	}
 22870  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 22871  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 22872  	}
 22873  	if s.Key == nil {
 22874  		invalidParams.Add(request.NewErrParamRequired("Key"))
 22875  	}
 22876  	if s.Key != nil && len(*s.Key) < 1 {
 22877  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 22878  	}
 22879  
 22880  	if invalidParams.Len() > 0 {
 22881  		return invalidParams
 22882  	}
 22883  	return nil
 22884  }
 22885  
 22886  // SetBucket sets the Bucket field's value.
 22887  func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
 22888  	s.Bucket = &v
 22889  	return s
 22890  }
 22891  
 22892  func (s *HeadObjectInput) getBucket() (v string) {
 22893  	if s.Bucket == nil {
 22894  		return v
 22895  	}
 22896  	return *s.Bucket
 22897  }
 22898  
 22899  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 22900  func (s *HeadObjectInput) SetExpectedBucketOwner(v string) *HeadObjectInput {
 22901  	s.ExpectedBucketOwner = &v
 22902  	return s
 22903  }
 22904  
 22905  // SetIfMatch sets the IfMatch field's value.
 22906  func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
 22907  	s.IfMatch = &v
 22908  	return s
 22909  }
 22910  
 22911  // SetIfModifiedSince sets the IfModifiedSince field's value.
 22912  func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
 22913  	s.IfModifiedSince = &v
 22914  	return s
 22915  }
 22916  
 22917  // SetIfNoneMatch sets the IfNoneMatch field's value.
 22918  func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
 22919  	s.IfNoneMatch = &v
 22920  	return s
 22921  }
 22922  
 22923  // SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
 22924  func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
 22925  	s.IfUnmodifiedSince = &v
 22926  	return s
 22927  }
 22928  
 22929  // SetKey sets the Key field's value.
 22930  func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
 22931  	s.Key = &v
 22932  	return s
 22933  }
 22934  
 22935  // SetPartNumber sets the PartNumber field's value.
 22936  func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
 22937  	s.PartNumber = &v
 22938  	return s
 22939  }
 22940  
 22941  // SetRange sets the Range field's value.
 22942  func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
 22943  	s.Range = &v
 22944  	return s
 22945  }
 22946  
 22947  // SetRequestPayer sets the RequestPayer field's value.
 22948  func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
 22949  	s.RequestPayer = &v
 22950  	return s
 22951  }
 22952  
 22953  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 22954  func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
 22955  	s.SSECustomerAlgorithm = &v
 22956  	return s
 22957  }
 22958  
 22959  // SetSSECustomerKey sets the SSECustomerKey field's value.
 22960  func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
 22961  	s.SSECustomerKey = &v
 22962  	return s
 22963  }
 22964  
 22965  func (s *HeadObjectInput) getSSECustomerKey() (v string) {
 22966  	if s.SSECustomerKey == nil {
 22967  		return v
 22968  	}
 22969  	return *s.SSECustomerKey
 22970  }
 22971  
 22972  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 22973  func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
 22974  	s.SSECustomerKeyMD5 = &v
 22975  	return s
 22976  }
 22977  
 22978  // SetVersionId sets the VersionId field's value.
 22979  func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
 22980  	s.VersionId = &v
 22981  	return s
 22982  }
 22983  
 22984  func (s *HeadObjectInput) getEndpointARN() (arn.Resource, error) {
 22985  	if s.Bucket == nil {
 22986  		return nil, fmt.Errorf("member Bucket is nil")
 22987  	}
 22988  	return parseEndpointARN(*s.Bucket)
 22989  }
 22990  
 22991  func (s *HeadObjectInput) hasEndpointARN() bool {
 22992  	if s.Bucket == nil {
 22993  		return false
 22994  	}
 22995  	return arn.IsARN(*s.Bucket)
 22996  }
 22997  
 22998  // updateArnableField updates the value of the input field that
 22999  // takes an ARN as an input. This method is useful to backfill
 23000  // the parsed resource name from ARN into the input member.
 23001  // It returns a pointer to a modified copy of input and an error.
 23002  // Note that original input is not modified.
 23003  func (s HeadObjectInput) updateArnableField(v string) (interface{}, error) {
 23004  	if s.Bucket == nil {
 23005  		return nil, fmt.Errorf("member Bucket is nil")
 23006  	}
 23007  	s.Bucket = aws.String(v)
 23008  	return &s, nil
 23009  }
 23010  
 23011  type HeadObjectOutput struct {
 23012  	_ struct{} `type:"structure"`
 23013  
 23014  	// Indicates that a range of bytes was specified.
 23015  	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
 23016  
 23017  	// The archive state of the head object.
 23018  	ArchiveStatus *string `location:"header" locationName:"x-amz-archive-status" type:"string" enum:"ArchiveStatus"`
 23019  
 23020  	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
 23021  	// with Amazon Web Services KMS (SSE-KMS).
 23022  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 23023  
 23024  	// Specifies caching behavior along the request/reply chain.
 23025  	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
 23026  
 23027  	// Specifies presentational information for the object.
 23028  	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
 23029  
 23030  	// Specifies what content encodings have been applied to the object and thus
 23031  	// what decoding mechanisms must be applied to obtain the media-type referenced
 23032  	// by the Content-Type header field.
 23033  	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
 23034  
 23035  	// The language the content is in.
 23036  	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
 23037  
 23038  	// Size of the body in bytes.
 23039  	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
 23040  
 23041  	// A standard MIME type describing the format of the object data.
 23042  	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
 23043  
 23044  	// Specifies whether the object retrieved was (true) or was not (false) a Delete
 23045  	// Marker. If false, this response header does not appear in the response.
 23046  	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
 23047  
 23048  	// An ETag is an opaque identifier assigned by a web server to a specific version
 23049  	// of a resource found at a URL.
 23050  	ETag *string `location:"header" locationName:"ETag" type:"string"`
 23051  
 23052  	// If the object expiration is configured (see PUT Bucket lifecycle), the response
 23053  	// includes this header. It includes the expiry-date and rule-id key-value pairs
 23054  	// providing object expiration information. The value of the rule-id is URL
 23055  	// encoded.
 23056  	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
 23057  
 23058  	// The date and time at which the object is no longer cacheable.
 23059  	Expires *string `location:"header" locationName:"Expires" type:"string"`
 23060  
 23061  	// Creation date of the object.
 23062  	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
 23063  
 23064  	// A map of metadata to store with the object in S3.
 23065  	//
 23066  	// By default unmarshaled keys are written as a map keys in following canonicalized format:
 23067  	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
 23068  	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
 23069  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 23070  
 23071  	// This is set to the number of metadata entries not returned in x-amz-meta
 23072  	// headers. This can happen if you create metadata using an API like SOAP that
 23073  	// supports more flexible metadata than the REST API. For example, using SOAP,
 23074  	// you can create metadata whose values are not legal HTTP headers.
 23075  	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
 23076  
 23077  	// Specifies whether a legal hold is in effect for this object. This header
 23078  	// is only returned if the requester has the s3:GetObjectLegalHold permission.
 23079  	// This header is not returned if the specified version of this object has never
 23080  	// had a legal hold applied. For more information about S3 Object Lock, see
 23081  	// Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
 23082  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 23083  
 23084  	// The Object Lock mode, if any, that's in effect for this object. This header
 23085  	// is only returned if the requester has the s3:GetObjectRetention permission.
 23086  	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
 23087  	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 23088  
 23089  	// The date and time when the Object Lock retention period expires. This header
 23090  	// is only returned if the requester has the s3:GetObjectRetention permission.
 23091  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 23092  
 23093  	// The count of parts this object has.
 23094  	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
 23095  
 23096  	// Amazon S3 can return this header if your request involves a bucket that is
 23097  	// either a source or a destination in a replication rule.
 23098  	//
 23099  	// In replication, you have a source bucket on which you configure replication
 23100  	// and destination bucket or buckets where Amazon S3 stores object replicas.
 23101  	// When you request an object (GetObject) or object metadata (HeadObject) from
 23102  	// these buckets, Amazon S3 will return the x-amz-replication-status header
 23103  	// in the response as follows:
 23104  	//
 23105  	//    * If requesting an object from the source bucket — Amazon S3 will return
 23106  	//    the x-amz-replication-status header if the object in your request is eligible
 23107  	//    for replication. For example, suppose that in your replication configuration,
 23108  	//    you specify object prefix TaxDocs requesting Amazon S3 to replicate objects
 23109  	//    with key prefix TaxDocs. Any objects you upload with this key name prefix,
 23110  	//    for example TaxDocs/document1.pdf, are eligible for replication. For any
 23111  	//    object request with this key name prefix, Amazon S3 will return the x-amz-replication-status
 23112  	//    header with value PENDING, COMPLETED or FAILED indicating object replication
 23113  	//    status.
 23114  	//
 23115  	//    * If requesting an object from a destination bucket — Amazon S3 will
 23116  	//    return the x-amz-replication-status header with value REPLICA if the object
 23117  	//    in your request is a replica that Amazon S3 created and there is no replica
 23118  	//    modification replication in progress.
 23119  	//
 23120  	//    * When replicating objects to multiple destination buckets the x-amz-replication-status
 23121  	//    header acts differently. The header of the source object will only return
 23122  	//    a value of COMPLETED when replication is successful to all destinations.
 23123  	//    The header will remain at value PENDING until replication has completed
 23124  	//    for all destinations. If one or more destinations fails replication the
 23125  	//    header will return FAILED.
 23126  	//
 23127  	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
 23128  	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
 23129  
 23130  	// If present, indicates that the requester was successfully charged for the
 23131  	// request.
 23132  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 23133  
 23134  	// If the object is an archived object (an object whose storage class is GLACIER),
 23135  	// the response includes this header if either the archive restoration is in
 23136  	// progress (see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
 23137  	// or an archive copy is already restored.
 23138  	//
 23139  	// If an archive copy is already restored, the header value indicates when Amazon
 23140  	// S3 is scheduled to delete the object copy. For example:
 23141  	//
 23142  	// x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00
 23143  	// GMT"
 23144  	//
 23145  	// If the object restoration is in progress, the header returns the value ongoing-request="true".
 23146  	//
 23147  	// For more information about archiving objects, see Transitioning Objects:
 23148  	// General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations).
 23149  	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
 23150  
 23151  	// If server-side encryption with a customer-provided encryption key was requested,
 23152  	// the response will include this header confirming the encryption algorithm
 23153  	// used.
 23154  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 23155  
 23156  	// If server-side encryption with a customer-provided encryption key was requested,
 23157  	// the response will include this header to provide round-trip message integrity
 23158  	// verification of the customer-provided encryption key.
 23159  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 23160  
 23161  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 23162  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 23163  	// the object.
 23164  	//
 23165  	// SSEKMSKeyId is a sensitive parameter and its value will be
 23166  	// replaced with "sensitive" in string returned by HeadObjectOutput's
 23167  	// String and GoString methods.
 23168  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 23169  
 23170  	// If the object is stored using server-side encryption either with an Amazon
 23171  	// Web Services KMS key or an Amazon S3-managed encryption key, the response
 23172  	// includes this header with the value of the server-side encryption algorithm
 23173  	// used when storing this object in Amazon S3 (for example, AES256, aws:kms).
 23174  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 23175  
 23176  	// Provides storage class information of the object. Amazon S3 returns this
 23177  	// header for all objects except for S3 Standard storage class objects.
 23178  	//
 23179  	// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
 23180  	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
 23181  
 23182  	// Version of the object.
 23183  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 23184  
 23185  	// If the bucket is configured as a website, redirects requests for this object
 23186  	// to another object in the same bucket or to an external URL. Amazon S3 stores
 23187  	// the value of this header in the object metadata.
 23188  	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
 23189  }
 23190  
 23191  // String returns the string representation.
 23192  //
 23193  // API parameter values that are decorated as "sensitive" in the API will not
 23194  // be included in the string output. The member name will be present, but the
 23195  // value will be replaced with "sensitive".
 23196  func (s HeadObjectOutput) String() string {
 23197  	return awsutil.Prettify(s)
 23198  }
 23199  
 23200  // GoString returns the string representation.
 23201  //
 23202  // API parameter values that are decorated as "sensitive" in the API will not
 23203  // be included in the string output. The member name will be present, but the
 23204  // value will be replaced with "sensitive".
 23205  func (s HeadObjectOutput) GoString() string {
 23206  	return s.String()
 23207  }
 23208  
 23209  // SetAcceptRanges sets the AcceptRanges field's value.
 23210  func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
 23211  	s.AcceptRanges = &v
 23212  	return s
 23213  }
 23214  
 23215  // SetArchiveStatus sets the ArchiveStatus field's value.
 23216  func (s *HeadObjectOutput) SetArchiveStatus(v string) *HeadObjectOutput {
 23217  	s.ArchiveStatus = &v
 23218  	return s
 23219  }
 23220  
 23221  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 23222  func (s *HeadObjectOutput) SetBucketKeyEnabled(v bool) *HeadObjectOutput {
 23223  	s.BucketKeyEnabled = &v
 23224  	return s
 23225  }
 23226  
 23227  // SetCacheControl sets the CacheControl field's value.
 23228  func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
 23229  	s.CacheControl = &v
 23230  	return s
 23231  }
 23232  
 23233  // SetContentDisposition sets the ContentDisposition field's value.
 23234  func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
 23235  	s.ContentDisposition = &v
 23236  	return s
 23237  }
 23238  
 23239  // SetContentEncoding sets the ContentEncoding field's value.
 23240  func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
 23241  	s.ContentEncoding = &v
 23242  	return s
 23243  }
 23244  
 23245  // SetContentLanguage sets the ContentLanguage field's value.
 23246  func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
 23247  	s.ContentLanguage = &v
 23248  	return s
 23249  }
 23250  
 23251  // SetContentLength sets the ContentLength field's value.
 23252  func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
 23253  	s.ContentLength = &v
 23254  	return s
 23255  }
 23256  
 23257  // SetContentType sets the ContentType field's value.
 23258  func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
 23259  	s.ContentType = &v
 23260  	return s
 23261  }
 23262  
 23263  // SetDeleteMarker sets the DeleteMarker field's value.
 23264  func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
 23265  	s.DeleteMarker = &v
 23266  	return s
 23267  }
 23268  
 23269  // SetETag sets the ETag field's value.
 23270  func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
 23271  	s.ETag = &v
 23272  	return s
 23273  }
 23274  
 23275  // SetExpiration sets the Expiration field's value.
 23276  func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
 23277  	s.Expiration = &v
 23278  	return s
 23279  }
 23280  
 23281  // SetExpires sets the Expires field's value.
 23282  func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
 23283  	s.Expires = &v
 23284  	return s
 23285  }
 23286  
 23287  // SetLastModified sets the LastModified field's value.
 23288  func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
 23289  	s.LastModified = &v
 23290  	return s
 23291  }
 23292  
 23293  // SetMetadata sets the Metadata field's value.
 23294  func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
 23295  	s.Metadata = v
 23296  	return s
 23297  }
 23298  
 23299  // SetMissingMeta sets the MissingMeta field's value.
 23300  func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
 23301  	s.MissingMeta = &v
 23302  	return s
 23303  }
 23304  
 23305  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 23306  func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
 23307  	s.ObjectLockLegalHoldStatus = &v
 23308  	return s
 23309  }
 23310  
 23311  // SetObjectLockMode sets the ObjectLockMode field's value.
 23312  func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
 23313  	s.ObjectLockMode = &v
 23314  	return s
 23315  }
 23316  
 23317  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 23318  func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
 23319  	s.ObjectLockRetainUntilDate = &v
 23320  	return s
 23321  }
 23322  
 23323  // SetPartsCount sets the PartsCount field's value.
 23324  func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
 23325  	s.PartsCount = &v
 23326  	return s
 23327  }
 23328  
 23329  // SetReplicationStatus sets the ReplicationStatus field's value.
 23330  func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
 23331  	s.ReplicationStatus = &v
 23332  	return s
 23333  }
 23334  
 23335  // SetRequestCharged sets the RequestCharged field's value.
 23336  func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
 23337  	s.RequestCharged = &v
 23338  	return s
 23339  }
 23340  
 23341  // SetRestore sets the Restore field's value.
 23342  func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
 23343  	s.Restore = &v
 23344  	return s
 23345  }
 23346  
 23347  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 23348  func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
 23349  	s.SSECustomerAlgorithm = &v
 23350  	return s
 23351  }
 23352  
 23353  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 23354  func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
 23355  	s.SSECustomerKeyMD5 = &v
 23356  	return s
 23357  }
 23358  
 23359  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 23360  func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
 23361  	s.SSEKMSKeyId = &v
 23362  	return s
 23363  }
 23364  
 23365  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 23366  func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
 23367  	s.ServerSideEncryption = &v
 23368  	return s
 23369  }
 23370  
 23371  // SetStorageClass sets the StorageClass field's value.
 23372  func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
 23373  	s.StorageClass = &v
 23374  	return s
 23375  }
 23376  
 23377  // SetVersionId sets the VersionId field's value.
 23378  func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
 23379  	s.VersionId = &v
 23380  	return s
 23381  }
 23382  
 23383  // SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
 23384  func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
 23385  	s.WebsiteRedirectLocation = &v
 23386  	return s
 23387  }
 23388  
 23389  // Container for the Suffix element.
 23390  type IndexDocument struct {
 23391  	_ struct{} `type:"structure"`
 23392  
 23393  	// A suffix that is appended to a request that is for a directory on the website
 23394  	// endpoint (for example,if the suffix is index.html and you make a request
 23395  	// to samplebucket/images/ the data that is returned will be for the object
 23396  	// with the key name images/index.html) The suffix must not be empty and must
 23397  	// not include a slash character.
 23398  	//
 23399  	// Replacement must be made for object keys containing special characters (such
 23400  	// as carriage returns) when using XML requests. For more information, see XML
 23401  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 23402  	//
 23403  	// Suffix is a required field
 23404  	Suffix *string `type:"string" required:"true"`
 23405  }
 23406  
 23407  // String returns the string representation.
 23408  //
 23409  // API parameter values that are decorated as "sensitive" in the API will not
 23410  // be included in the string output. The member name will be present, but the
 23411  // value will be replaced with "sensitive".
 23412  func (s IndexDocument) String() string {
 23413  	return awsutil.Prettify(s)
 23414  }
 23415  
 23416  // GoString returns the string representation.
 23417  //
 23418  // API parameter values that are decorated as "sensitive" in the API will not
 23419  // be included in the string output. The member name will be present, but the
 23420  // value will be replaced with "sensitive".
 23421  func (s IndexDocument) GoString() string {
 23422  	return s.String()
 23423  }
 23424  
 23425  // Validate inspects the fields of the type to determine if they are valid.
 23426  func (s *IndexDocument) Validate() error {
 23427  	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
 23428  	if s.Suffix == nil {
 23429  		invalidParams.Add(request.NewErrParamRequired("Suffix"))
 23430  	}
 23431  
 23432  	if invalidParams.Len() > 0 {
 23433  		return invalidParams
 23434  	}
 23435  	return nil
 23436  }
 23437  
 23438  // SetSuffix sets the Suffix field's value.
 23439  func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
 23440  	s.Suffix = &v
 23441  	return s
 23442  }
 23443  
 23444  // Container element that identifies who initiated the multipart upload.
 23445  type Initiator struct {
 23446  	_ struct{} `type:"structure"`
 23447  
 23448  	// Name of the Principal.
 23449  	DisplayName *string `type:"string"`
 23450  
 23451  	// If the principal is an Amazon Web Services account, it provides the Canonical
 23452  	// User ID. If the principal is an IAM User, it provides a user ARN value.
 23453  	ID *string `type:"string"`
 23454  }
 23455  
 23456  // String returns the string representation.
 23457  //
 23458  // API parameter values that are decorated as "sensitive" in the API will not
 23459  // be included in the string output. The member name will be present, but the
 23460  // value will be replaced with "sensitive".
 23461  func (s Initiator) String() string {
 23462  	return awsutil.Prettify(s)
 23463  }
 23464  
 23465  // GoString returns the string representation.
 23466  //
 23467  // API parameter values that are decorated as "sensitive" in the API will not
 23468  // be included in the string output. The member name will be present, but the
 23469  // value will be replaced with "sensitive".
 23470  func (s Initiator) GoString() string {
 23471  	return s.String()
 23472  }
 23473  
 23474  // SetDisplayName sets the DisplayName field's value.
 23475  func (s *Initiator) SetDisplayName(v string) *Initiator {
 23476  	s.DisplayName = &v
 23477  	return s
 23478  }
 23479  
 23480  // SetID sets the ID field's value.
 23481  func (s *Initiator) SetID(v string) *Initiator {
 23482  	s.ID = &v
 23483  	return s
 23484  }
 23485  
 23486  // Describes the serialization format of the object.
 23487  type InputSerialization struct {
 23488  	_ struct{} `type:"structure"`
 23489  
 23490  	// Describes the serialization of a CSV-encoded object.
 23491  	CSV *CSVInput `type:"structure"`
 23492  
 23493  	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
 23494  	// Value: NONE.
 23495  	CompressionType *string `type:"string" enum:"CompressionType"`
 23496  
 23497  	// Specifies JSON as object's input serialization format.
 23498  	JSON *JSONInput `type:"structure"`
 23499  
 23500  	// Specifies Parquet as object's input serialization format.
 23501  	Parquet *ParquetInput `type:"structure"`
 23502  }
 23503  
 23504  // String returns the string representation.
 23505  //
 23506  // API parameter values that are decorated as "sensitive" in the API will not
 23507  // be included in the string output. The member name will be present, but the
 23508  // value will be replaced with "sensitive".
 23509  func (s InputSerialization) String() string {
 23510  	return awsutil.Prettify(s)
 23511  }
 23512  
 23513  // GoString returns the string representation.
 23514  //
 23515  // API parameter values that are decorated as "sensitive" in the API will not
 23516  // be included in the string output. The member name will be present, but the
 23517  // value will be replaced with "sensitive".
 23518  func (s InputSerialization) GoString() string {
 23519  	return s.String()
 23520  }
 23521  
 23522  // SetCSV sets the CSV field's value.
 23523  func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
 23524  	s.CSV = v
 23525  	return s
 23526  }
 23527  
 23528  // SetCompressionType sets the CompressionType field's value.
 23529  func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
 23530  	s.CompressionType = &v
 23531  	return s
 23532  }
 23533  
 23534  // SetJSON sets the JSON field's value.
 23535  func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
 23536  	s.JSON = v
 23537  	return s
 23538  }
 23539  
 23540  // SetParquet sets the Parquet field's value.
 23541  func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
 23542  	s.Parquet = v
 23543  	return s
 23544  }
 23545  
 23546  // A container for specifying S3 Intelligent-Tiering filters. The filters determine
 23547  // the subset of objects to which the rule applies.
 23548  type IntelligentTieringAndOperator struct {
 23549  	_ struct{} `type:"structure"`
 23550  
 23551  	// An object key name prefix that identifies the subset of objects to which
 23552  	// the configuration applies.
 23553  	Prefix *string `type:"string"`
 23554  
 23555  	// All of these tags must exist in the object's tag set in order for the configuration
 23556  	// to apply.
 23557  	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
 23558  }
 23559  
 23560  // String returns the string representation.
 23561  //
 23562  // API parameter values that are decorated as "sensitive" in the API will not
 23563  // be included in the string output. The member name will be present, but the
 23564  // value will be replaced with "sensitive".
 23565  func (s IntelligentTieringAndOperator) String() string {
 23566  	return awsutil.Prettify(s)
 23567  }
 23568  
 23569  // GoString returns the string representation.
 23570  //
 23571  // API parameter values that are decorated as "sensitive" in the API will not
 23572  // be included in the string output. The member name will be present, but the
 23573  // value will be replaced with "sensitive".
 23574  func (s IntelligentTieringAndOperator) GoString() string {
 23575  	return s.String()
 23576  }
 23577  
 23578  // Validate inspects the fields of the type to determine if they are valid.
 23579  func (s *IntelligentTieringAndOperator) Validate() error {
 23580  	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringAndOperator"}
 23581  	if s.Tags != nil {
 23582  		for i, v := range s.Tags {
 23583  			if v == nil {
 23584  				continue
 23585  			}
 23586  			if err := v.Validate(); err != nil {
 23587  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 23588  			}
 23589  		}
 23590  	}
 23591  
 23592  	if invalidParams.Len() > 0 {
 23593  		return invalidParams
 23594  	}
 23595  	return nil
 23596  }
 23597  
 23598  // SetPrefix sets the Prefix field's value.
 23599  func (s *IntelligentTieringAndOperator) SetPrefix(v string) *IntelligentTieringAndOperator {
 23600  	s.Prefix = &v
 23601  	return s
 23602  }
 23603  
 23604  // SetTags sets the Tags field's value.
 23605  func (s *IntelligentTieringAndOperator) SetTags(v []*Tag) *IntelligentTieringAndOperator {
 23606  	s.Tags = v
 23607  	return s
 23608  }
 23609  
 23610  // Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.
 23611  //
 23612  // For information about the S3 Intelligent-Tiering storage class, see Storage
 23613  // class for automatically optimizing frequently and infrequently accessed objects
 23614  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
 23615  type IntelligentTieringConfiguration struct {
 23616  	_ struct{} `type:"structure"`
 23617  
 23618  	// Specifies a bucket filter. The configuration only includes objects that meet
 23619  	// the filter's criteria.
 23620  	Filter *IntelligentTieringFilter `type:"structure"`
 23621  
 23622  	// The ID used to identify the S3 Intelligent-Tiering configuration.
 23623  	//
 23624  	// Id is a required field
 23625  	Id *string `type:"string" required:"true"`
 23626  
 23627  	// Specifies the status of the configuration.
 23628  	//
 23629  	// Status is a required field
 23630  	Status *string `type:"string" required:"true" enum:"IntelligentTieringStatus"`
 23631  
 23632  	// Specifies the S3 Intelligent-Tiering storage class tier of the configuration.
 23633  	//
 23634  	// Tierings is a required field
 23635  	Tierings []*Tiering `locationName:"Tiering" type:"list" flattened:"true" required:"true"`
 23636  }
 23637  
 23638  // String returns the string representation.
 23639  //
 23640  // API parameter values that are decorated as "sensitive" in the API will not
 23641  // be included in the string output. The member name will be present, but the
 23642  // value will be replaced with "sensitive".
 23643  func (s IntelligentTieringConfiguration) String() string {
 23644  	return awsutil.Prettify(s)
 23645  }
 23646  
 23647  // GoString returns the string representation.
 23648  //
 23649  // API parameter values that are decorated as "sensitive" in the API will not
 23650  // be included in the string output. The member name will be present, but the
 23651  // value will be replaced with "sensitive".
 23652  func (s IntelligentTieringConfiguration) GoString() string {
 23653  	return s.String()
 23654  }
 23655  
 23656  // Validate inspects the fields of the type to determine if they are valid.
 23657  func (s *IntelligentTieringConfiguration) Validate() error {
 23658  	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringConfiguration"}
 23659  	if s.Id == nil {
 23660  		invalidParams.Add(request.NewErrParamRequired("Id"))
 23661  	}
 23662  	if s.Status == nil {
 23663  		invalidParams.Add(request.NewErrParamRequired("Status"))
 23664  	}
 23665  	if s.Tierings == nil {
 23666  		invalidParams.Add(request.NewErrParamRequired("Tierings"))
 23667  	}
 23668  	if s.Filter != nil {
 23669  		if err := s.Filter.Validate(); err != nil {
 23670  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 23671  		}
 23672  	}
 23673  	if s.Tierings != nil {
 23674  		for i, v := range s.Tierings {
 23675  			if v == nil {
 23676  				continue
 23677  			}
 23678  			if err := v.Validate(); err != nil {
 23679  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tierings", i), err.(request.ErrInvalidParams))
 23680  			}
 23681  		}
 23682  	}
 23683  
 23684  	if invalidParams.Len() > 0 {
 23685  		return invalidParams
 23686  	}
 23687  	return nil
 23688  }
 23689  
 23690  // SetFilter sets the Filter field's value.
 23691  func (s *IntelligentTieringConfiguration) SetFilter(v *IntelligentTieringFilter) *IntelligentTieringConfiguration {
 23692  	s.Filter = v
 23693  	return s
 23694  }
 23695  
 23696  // SetId sets the Id field's value.
 23697  func (s *IntelligentTieringConfiguration) SetId(v string) *IntelligentTieringConfiguration {
 23698  	s.Id = &v
 23699  	return s
 23700  }
 23701  
 23702  // SetStatus sets the Status field's value.
 23703  func (s *IntelligentTieringConfiguration) SetStatus(v string) *IntelligentTieringConfiguration {
 23704  	s.Status = &v
 23705  	return s
 23706  }
 23707  
 23708  // SetTierings sets the Tierings field's value.
 23709  func (s *IntelligentTieringConfiguration) SetTierings(v []*Tiering) *IntelligentTieringConfiguration {
 23710  	s.Tierings = v
 23711  	return s
 23712  }
 23713  
 23714  // The Filter is used to identify objects that the S3 Intelligent-Tiering configuration
 23715  // applies to.
 23716  type IntelligentTieringFilter struct {
 23717  	_ struct{} `type:"structure"`
 23718  
 23719  	// A conjunction (logical AND) of predicates, which is used in evaluating a
 23720  	// metrics filter. The operator must have at least two predicates, and an object
 23721  	// must match all of the predicates in order for the filter to apply.
 23722  	And *IntelligentTieringAndOperator `type:"structure"`
 23723  
 23724  	// An object key name prefix that identifies the subset of objects to which
 23725  	// the rule applies.
 23726  	//
 23727  	// Replacement must be made for object keys containing special characters (such
 23728  	// as carriage returns) when using XML requests. For more information, see XML
 23729  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 23730  	Prefix *string `type:"string"`
 23731  
 23732  	// A container of a key value name pair.
 23733  	Tag *Tag `type:"structure"`
 23734  }
 23735  
 23736  // String returns the string representation.
 23737  //
 23738  // API parameter values that are decorated as "sensitive" in the API will not
 23739  // be included in the string output. The member name will be present, but the
 23740  // value will be replaced with "sensitive".
 23741  func (s IntelligentTieringFilter) String() string {
 23742  	return awsutil.Prettify(s)
 23743  }
 23744  
 23745  // GoString returns the string representation.
 23746  //
 23747  // API parameter values that are decorated as "sensitive" in the API will not
 23748  // be included in the string output. The member name will be present, but the
 23749  // value will be replaced with "sensitive".
 23750  func (s IntelligentTieringFilter) GoString() string {
 23751  	return s.String()
 23752  }
 23753  
 23754  // Validate inspects the fields of the type to determine if they are valid.
 23755  func (s *IntelligentTieringFilter) Validate() error {
 23756  	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringFilter"}
 23757  	if s.And != nil {
 23758  		if err := s.And.Validate(); err != nil {
 23759  			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
 23760  		}
 23761  	}
 23762  	if s.Tag != nil {
 23763  		if err := s.Tag.Validate(); err != nil {
 23764  			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
 23765  		}
 23766  	}
 23767  
 23768  	if invalidParams.Len() > 0 {
 23769  		return invalidParams
 23770  	}
 23771  	return nil
 23772  }
 23773  
 23774  // SetAnd sets the And field's value.
 23775  func (s *IntelligentTieringFilter) SetAnd(v *IntelligentTieringAndOperator) *IntelligentTieringFilter {
 23776  	s.And = v
 23777  	return s
 23778  }
 23779  
 23780  // SetPrefix sets the Prefix field's value.
 23781  func (s *IntelligentTieringFilter) SetPrefix(v string) *IntelligentTieringFilter {
 23782  	s.Prefix = &v
 23783  	return s
 23784  }
 23785  
 23786  // SetTag sets the Tag field's value.
 23787  func (s *IntelligentTieringFilter) SetTag(v *Tag) *IntelligentTieringFilter {
 23788  	s.Tag = v
 23789  	return s
 23790  }
 23791  
 23792  // Specifies the inventory configuration for an Amazon S3 bucket. For more information,
 23793  // see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
 23794  // in the Amazon S3 API Reference.
 23795  type InventoryConfiguration struct {
 23796  	_ struct{} `type:"structure"`
 23797  
 23798  	// Contains information about where to publish the inventory results.
 23799  	//
 23800  	// Destination is a required field
 23801  	Destination *InventoryDestination `type:"structure" required:"true"`
 23802  
 23803  	// Specifies an inventory filter. The inventory only includes objects that meet
 23804  	// the filter's criteria.
 23805  	Filter *InventoryFilter `type:"structure"`
 23806  
 23807  	// The ID used to identify the inventory configuration.
 23808  	//
 23809  	// Id is a required field
 23810  	Id *string `type:"string" required:"true"`
 23811  
 23812  	// Object versions to include in the inventory list. If set to All, the list
 23813  	// includes all the object versions, which adds the version-related fields VersionId,
 23814  	// IsLatest, and DeleteMarker to the list. If set to Current, the list does
 23815  	// not contain these version-related fields.
 23816  	//
 23817  	// IncludedObjectVersions is a required field
 23818  	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
 23819  
 23820  	// Specifies whether the inventory is enabled or disabled. If set to True, an
 23821  	// inventory list is generated. If set to False, no inventory list is generated.
 23822  	//
 23823  	// IsEnabled is a required field
 23824  	IsEnabled *bool `type:"boolean" required:"true"`
 23825  
 23826  	// Contains the optional fields that are included in the inventory results.
 23827  	OptionalFields []*string `locationNameList:"Field" type:"list"`
 23828  
 23829  	// Specifies the schedule for generating inventory results.
 23830  	//
 23831  	// Schedule is a required field
 23832  	Schedule *InventorySchedule `type:"structure" required:"true"`
 23833  }
 23834  
 23835  // String returns the string representation.
 23836  //
 23837  // API parameter values that are decorated as "sensitive" in the API will not
 23838  // be included in the string output. The member name will be present, but the
 23839  // value will be replaced with "sensitive".
 23840  func (s InventoryConfiguration) String() string {
 23841  	return awsutil.Prettify(s)
 23842  }
 23843  
 23844  // GoString returns the string representation.
 23845  //
 23846  // API parameter values that are decorated as "sensitive" in the API will not
 23847  // be included in the string output. The member name will be present, but the
 23848  // value will be replaced with "sensitive".
 23849  func (s InventoryConfiguration) GoString() string {
 23850  	return s.String()
 23851  }
 23852  
 23853  // Validate inspects the fields of the type to determine if they are valid.
 23854  func (s *InventoryConfiguration) Validate() error {
 23855  	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
 23856  	if s.Destination == nil {
 23857  		invalidParams.Add(request.NewErrParamRequired("Destination"))
 23858  	}
 23859  	if s.Id == nil {
 23860  		invalidParams.Add(request.NewErrParamRequired("Id"))
 23861  	}
 23862  	if s.IncludedObjectVersions == nil {
 23863  		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
 23864  	}
 23865  	if s.IsEnabled == nil {
 23866  		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
 23867  	}
 23868  	if s.Schedule == nil {
 23869  		invalidParams.Add(request.NewErrParamRequired("Schedule"))
 23870  	}
 23871  	if s.Destination != nil {
 23872  		if err := s.Destination.Validate(); err != nil {
 23873  			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
 23874  		}
 23875  	}
 23876  	if s.Filter != nil {
 23877  		if err := s.Filter.Validate(); err != nil {
 23878  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 23879  		}
 23880  	}
 23881  	if s.Schedule != nil {
 23882  		if err := s.Schedule.Validate(); err != nil {
 23883  			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
 23884  		}
 23885  	}
 23886  
 23887  	if invalidParams.Len() > 0 {
 23888  		return invalidParams
 23889  	}
 23890  	return nil
 23891  }
 23892  
 23893  // SetDestination sets the Destination field's value.
 23894  func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
 23895  	s.Destination = v
 23896  	return s
 23897  }
 23898  
 23899  // SetFilter sets the Filter field's value.
 23900  func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
 23901  	s.Filter = v
 23902  	return s
 23903  }
 23904  
 23905  // SetId sets the Id field's value.
 23906  func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
 23907  	s.Id = &v
 23908  	return s
 23909  }
 23910  
 23911  // SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
 23912  func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
 23913  	s.IncludedObjectVersions = &v
 23914  	return s
 23915  }
 23916  
 23917  // SetIsEnabled sets the IsEnabled field's value.
 23918  func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
 23919  	s.IsEnabled = &v
 23920  	return s
 23921  }
 23922  
 23923  // SetOptionalFields sets the OptionalFields field's value.
 23924  func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
 23925  	s.OptionalFields = v
 23926  	return s
 23927  }
 23928  
 23929  // SetSchedule sets the Schedule field's value.
 23930  func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
 23931  	s.Schedule = v
 23932  	return s
 23933  }
 23934  
 23935  // Specifies the inventory configuration for an Amazon S3 bucket.
 23936  type InventoryDestination struct {
 23937  	_ struct{} `type:"structure"`
 23938  
 23939  	// Contains the bucket name, file format, bucket owner (optional), and prefix
 23940  	// (optional) where inventory results are published.
 23941  	//
 23942  	// S3BucketDestination is a required field
 23943  	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
 23944  }
 23945  
 23946  // String returns the string representation.
 23947  //
 23948  // API parameter values that are decorated as "sensitive" in the API will not
 23949  // be included in the string output. The member name will be present, but the
 23950  // value will be replaced with "sensitive".
 23951  func (s InventoryDestination) String() string {
 23952  	return awsutil.Prettify(s)
 23953  }
 23954  
 23955  // GoString returns the string representation.
 23956  //
 23957  // API parameter values that are decorated as "sensitive" in the API will not
 23958  // be included in the string output. The member name will be present, but the
 23959  // value will be replaced with "sensitive".
 23960  func (s InventoryDestination) GoString() string {
 23961  	return s.String()
 23962  }
 23963  
 23964  // Validate inspects the fields of the type to determine if they are valid.
 23965  func (s *InventoryDestination) Validate() error {
 23966  	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
 23967  	if s.S3BucketDestination == nil {
 23968  		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
 23969  	}
 23970  	if s.S3BucketDestination != nil {
 23971  		if err := s.S3BucketDestination.Validate(); err != nil {
 23972  			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
 23973  		}
 23974  	}
 23975  
 23976  	if invalidParams.Len() > 0 {
 23977  		return invalidParams
 23978  	}
 23979  	return nil
 23980  }
 23981  
 23982  // SetS3BucketDestination sets the S3BucketDestination field's value.
 23983  func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
 23984  	s.S3BucketDestination = v
 23985  	return s
 23986  }
 23987  
 23988  // Contains the type of server-side encryption used to encrypt the inventory
 23989  // results.
 23990  type InventoryEncryption struct {
 23991  	_ struct{} `type:"structure"`
 23992  
 23993  	// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
 23994  	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
 23995  
 23996  	// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
 23997  	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
 23998  }
 23999  
 24000  // String returns the string representation.
 24001  //
 24002  // API parameter values that are decorated as "sensitive" in the API will not
 24003  // be included in the string output. The member name will be present, but the
 24004  // value will be replaced with "sensitive".
 24005  func (s InventoryEncryption) String() string {
 24006  	return awsutil.Prettify(s)
 24007  }
 24008  
 24009  // GoString returns the string representation.
 24010  //
 24011  // API parameter values that are decorated as "sensitive" in the API will not
 24012  // be included in the string output. The member name will be present, but the
 24013  // value will be replaced with "sensitive".
 24014  func (s InventoryEncryption) GoString() string {
 24015  	return s.String()
 24016  }
 24017  
 24018  // Validate inspects the fields of the type to determine if they are valid.
 24019  func (s *InventoryEncryption) Validate() error {
 24020  	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
 24021  	if s.SSEKMS != nil {
 24022  		if err := s.SSEKMS.Validate(); err != nil {
 24023  			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
 24024  		}
 24025  	}
 24026  
 24027  	if invalidParams.Len() > 0 {
 24028  		return invalidParams
 24029  	}
 24030  	return nil
 24031  }
 24032  
 24033  // SetSSEKMS sets the SSEKMS field's value.
 24034  func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
 24035  	s.SSEKMS = v
 24036  	return s
 24037  }
 24038  
 24039  // SetSSES3 sets the SSES3 field's value.
 24040  func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
 24041  	s.SSES3 = v
 24042  	return s
 24043  }
 24044  
 24045  // Specifies an inventory filter. The inventory only includes objects that meet
 24046  // the filter's criteria.
 24047  type InventoryFilter struct {
 24048  	_ struct{} `type:"structure"`
 24049  
 24050  	// The prefix that an object must have to be included in the inventory results.
 24051  	//
 24052  	// Prefix is a required field
 24053  	Prefix *string `type:"string" required:"true"`
 24054  }
 24055  
 24056  // String returns the string representation.
 24057  //
 24058  // API parameter values that are decorated as "sensitive" in the API will not
 24059  // be included in the string output. The member name will be present, but the
 24060  // value will be replaced with "sensitive".
 24061  func (s InventoryFilter) String() string {
 24062  	return awsutil.Prettify(s)
 24063  }
 24064  
 24065  // GoString returns the string representation.
 24066  //
 24067  // API parameter values that are decorated as "sensitive" in the API will not
 24068  // be included in the string output. The member name will be present, but the
 24069  // value will be replaced with "sensitive".
 24070  func (s InventoryFilter) GoString() string {
 24071  	return s.String()
 24072  }
 24073  
 24074  // Validate inspects the fields of the type to determine if they are valid.
 24075  func (s *InventoryFilter) Validate() error {
 24076  	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
 24077  	if s.Prefix == nil {
 24078  		invalidParams.Add(request.NewErrParamRequired("Prefix"))
 24079  	}
 24080  
 24081  	if invalidParams.Len() > 0 {
 24082  		return invalidParams
 24083  	}
 24084  	return nil
 24085  }
 24086  
 24087  // SetPrefix sets the Prefix field's value.
 24088  func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
 24089  	s.Prefix = &v
 24090  	return s
 24091  }
 24092  
 24093  // Contains the bucket name, file format, bucket owner (optional), and prefix
 24094  // (optional) where inventory results are published.
 24095  type InventoryS3BucketDestination struct {
 24096  	_ struct{} `type:"structure"`
 24097  
 24098  	// The account ID that owns the destination S3 bucket. If no account ID is provided,
 24099  	// the owner is not validated before exporting data.
 24100  	//
 24101  	// Although this value is optional, we strongly recommend that you set it to
 24102  	// help prevent problems if the destination bucket ownership changes.
 24103  	AccountId *string `type:"string"`
 24104  
 24105  	// The Amazon Resource Name (ARN) of the bucket where inventory results will
 24106  	// be published.
 24107  	//
 24108  	// Bucket is a required field
 24109  	Bucket *string `type:"string" required:"true"`
 24110  
 24111  	// Contains the type of server-side encryption used to encrypt the inventory
 24112  	// results.
 24113  	Encryption *InventoryEncryption `type:"structure"`
 24114  
 24115  	// Specifies the output format of the inventory results.
 24116  	//
 24117  	// Format is a required field
 24118  	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
 24119  
 24120  	// The prefix that is prepended to all inventory results.
 24121  	Prefix *string `type:"string"`
 24122  }
 24123  
 24124  // String returns the string representation.
 24125  //
 24126  // API parameter values that are decorated as "sensitive" in the API will not
 24127  // be included in the string output. The member name will be present, but the
 24128  // value will be replaced with "sensitive".
 24129  func (s InventoryS3BucketDestination) String() string {
 24130  	return awsutil.Prettify(s)
 24131  }
 24132  
 24133  // GoString returns the string representation.
 24134  //
 24135  // API parameter values that are decorated as "sensitive" in the API will not
 24136  // be included in the string output. The member name will be present, but the
 24137  // value will be replaced with "sensitive".
 24138  func (s InventoryS3BucketDestination) GoString() string {
 24139  	return s.String()
 24140  }
 24141  
 24142  // Validate inspects the fields of the type to determine if they are valid.
 24143  func (s *InventoryS3BucketDestination) Validate() error {
 24144  	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
 24145  	if s.Bucket == nil {
 24146  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 24147  	}
 24148  	if s.Format == nil {
 24149  		invalidParams.Add(request.NewErrParamRequired("Format"))
 24150  	}
 24151  	if s.Encryption != nil {
 24152  		if err := s.Encryption.Validate(); err != nil {
 24153  			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
 24154  		}
 24155  	}
 24156  
 24157  	if invalidParams.Len() > 0 {
 24158  		return invalidParams
 24159  	}
 24160  	return nil
 24161  }
 24162  
 24163  // SetAccountId sets the AccountId field's value.
 24164  func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
 24165  	s.AccountId = &v
 24166  	return s
 24167  }
 24168  
 24169  // SetBucket sets the Bucket field's value.
 24170  func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
 24171  	s.Bucket = &v
 24172  	return s
 24173  }
 24174  
 24175  func (s *InventoryS3BucketDestination) getBucket() (v string) {
 24176  	if s.Bucket == nil {
 24177  		return v
 24178  	}
 24179  	return *s.Bucket
 24180  }
 24181  
 24182  // SetEncryption sets the Encryption field's value.
 24183  func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
 24184  	s.Encryption = v
 24185  	return s
 24186  }
 24187  
 24188  // SetFormat sets the Format field's value.
 24189  func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
 24190  	s.Format = &v
 24191  	return s
 24192  }
 24193  
 24194  // SetPrefix sets the Prefix field's value.
 24195  func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
 24196  	s.Prefix = &v
 24197  	return s
 24198  }
 24199  
 24200  // Specifies the schedule for generating inventory results.
 24201  type InventorySchedule struct {
 24202  	_ struct{} `type:"structure"`
 24203  
 24204  	// Specifies how frequently inventory results are produced.
 24205  	//
 24206  	// Frequency is a required field
 24207  	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
 24208  }
 24209  
 24210  // String returns the string representation.
 24211  //
 24212  // API parameter values that are decorated as "sensitive" in the API will not
 24213  // be included in the string output. The member name will be present, but the
 24214  // value will be replaced with "sensitive".
 24215  func (s InventorySchedule) String() string {
 24216  	return awsutil.Prettify(s)
 24217  }
 24218  
 24219  // GoString returns the string representation.
 24220  //
 24221  // API parameter values that are decorated as "sensitive" in the API will not
 24222  // be included in the string output. The member name will be present, but the
 24223  // value will be replaced with "sensitive".
 24224  func (s InventorySchedule) GoString() string {
 24225  	return s.String()
 24226  }
 24227  
 24228  // Validate inspects the fields of the type to determine if they are valid.
 24229  func (s *InventorySchedule) Validate() error {
 24230  	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
 24231  	if s.Frequency == nil {
 24232  		invalidParams.Add(request.NewErrParamRequired("Frequency"))
 24233  	}
 24234  
 24235  	if invalidParams.Len() > 0 {
 24236  		return invalidParams
 24237  	}
 24238  	return nil
 24239  }
 24240  
 24241  // SetFrequency sets the Frequency field's value.
 24242  func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
 24243  	s.Frequency = &v
 24244  	return s
 24245  }
 24246  
 24247  // Specifies JSON as object's input serialization format.
 24248  type JSONInput struct {
 24249  	_ struct{} `type:"structure"`
 24250  
 24251  	// The type of JSON. Valid values: Document, Lines.
 24252  	Type *string `type:"string" enum:"JSONType"`
 24253  }
 24254  
 24255  // String returns the string representation.
 24256  //
 24257  // API parameter values that are decorated as "sensitive" in the API will not
 24258  // be included in the string output. The member name will be present, but the
 24259  // value will be replaced with "sensitive".
 24260  func (s JSONInput) String() string {
 24261  	return awsutil.Prettify(s)
 24262  }
 24263  
 24264  // GoString returns the string representation.
 24265  //
 24266  // API parameter values that are decorated as "sensitive" in the API will not
 24267  // be included in the string output. The member name will be present, but the
 24268  // value will be replaced with "sensitive".
 24269  func (s JSONInput) GoString() string {
 24270  	return s.String()
 24271  }
 24272  
 24273  // SetType sets the Type field's value.
 24274  func (s *JSONInput) SetType(v string) *JSONInput {
 24275  	s.Type = &v
 24276  	return s
 24277  }
 24278  
 24279  // Specifies JSON as request's output serialization format.
 24280  type JSONOutput struct {
 24281  	_ struct{} `type:"structure"`
 24282  
 24283  	// The value used to separate individual records in the output. If no value
 24284  	// is specified, Amazon S3 uses a newline character ('\n').
 24285  	RecordDelimiter *string `type:"string"`
 24286  }
 24287  
 24288  // String returns the string representation.
 24289  //
 24290  // API parameter values that are decorated as "sensitive" in the API will not
 24291  // be included in the string output. The member name will be present, but the
 24292  // value will be replaced with "sensitive".
 24293  func (s JSONOutput) String() string {
 24294  	return awsutil.Prettify(s)
 24295  }
 24296  
 24297  // GoString returns the string representation.
 24298  //
 24299  // API parameter values that are decorated as "sensitive" in the API will not
 24300  // be included in the string output. The member name will be present, but the
 24301  // value will be replaced with "sensitive".
 24302  func (s JSONOutput) GoString() string {
 24303  	return s.String()
 24304  }
 24305  
 24306  // SetRecordDelimiter sets the RecordDelimiter field's value.
 24307  func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
 24308  	s.RecordDelimiter = &v
 24309  	return s
 24310  }
 24311  
 24312  // A container for object key name prefix and suffix filtering rules.
 24313  type KeyFilter struct {
 24314  	_ struct{} `type:"structure"`
 24315  
 24316  	// A list of containers for the key-value pair that defines the criteria for
 24317  	// the filter rule.
 24318  	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
 24319  }
 24320  
 24321  // String returns the string representation.
 24322  //
 24323  // API parameter values that are decorated as "sensitive" in the API will not
 24324  // be included in the string output. The member name will be present, but the
 24325  // value will be replaced with "sensitive".
 24326  func (s KeyFilter) String() string {
 24327  	return awsutil.Prettify(s)
 24328  }
 24329  
 24330  // GoString returns the string representation.
 24331  //
 24332  // API parameter values that are decorated as "sensitive" in the API will not
 24333  // be included in the string output. The member name will be present, but the
 24334  // value will be replaced with "sensitive".
 24335  func (s KeyFilter) GoString() string {
 24336  	return s.String()
 24337  }
 24338  
 24339  // SetFilterRules sets the FilterRules field's value.
 24340  func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
 24341  	s.FilterRules = v
 24342  	return s
 24343  }
 24344  
 24345  // A container for specifying the configuration for Lambda notifications.
 24346  type LambdaFunctionConfiguration struct {
 24347  	_ struct{} `type:"structure"`
 24348  
 24349  	// The Amazon S3 bucket event for which to invoke the Lambda function. For more
 24350  	// information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 24351  	// in the Amazon S3 User Guide.
 24352  	//
 24353  	// Events is a required field
 24354  	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
 24355  
 24356  	// Specifies object key name filtering rules. For information about key name
 24357  	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 24358  	// in the Amazon S3 User Guide.
 24359  	Filter *NotificationConfigurationFilter `type:"structure"`
 24360  
 24361  	// An optional unique identifier for configurations in a notification configuration.
 24362  	// If you don't provide one, Amazon S3 will assign an ID.
 24363  	Id *string `type:"string"`
 24364  
 24365  	// The Amazon Resource Name (ARN) of the Lambda function that Amazon S3 invokes
 24366  	// when the specified event type occurs.
 24367  	//
 24368  	// LambdaFunctionArn is a required field
 24369  	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
 24370  }
 24371  
 24372  // String returns the string representation.
 24373  //
 24374  // API parameter values that are decorated as "sensitive" in the API will not
 24375  // be included in the string output. The member name will be present, but the
 24376  // value will be replaced with "sensitive".
 24377  func (s LambdaFunctionConfiguration) String() string {
 24378  	return awsutil.Prettify(s)
 24379  }
 24380  
 24381  // GoString returns the string representation.
 24382  //
 24383  // API parameter values that are decorated as "sensitive" in the API will not
 24384  // be included in the string output. The member name will be present, but the
 24385  // value will be replaced with "sensitive".
 24386  func (s LambdaFunctionConfiguration) GoString() string {
 24387  	return s.String()
 24388  }
 24389  
 24390  // Validate inspects the fields of the type to determine if they are valid.
 24391  func (s *LambdaFunctionConfiguration) Validate() error {
 24392  	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
 24393  	if s.Events == nil {
 24394  		invalidParams.Add(request.NewErrParamRequired("Events"))
 24395  	}
 24396  	if s.LambdaFunctionArn == nil {
 24397  		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
 24398  	}
 24399  
 24400  	if invalidParams.Len() > 0 {
 24401  		return invalidParams
 24402  	}
 24403  	return nil
 24404  }
 24405  
 24406  // SetEvents sets the Events field's value.
 24407  func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
 24408  	s.Events = v
 24409  	return s
 24410  }
 24411  
 24412  // SetFilter sets the Filter field's value.
 24413  func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
 24414  	s.Filter = v
 24415  	return s
 24416  }
 24417  
 24418  // SetId sets the Id field's value.
 24419  func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
 24420  	s.Id = &v
 24421  	return s
 24422  }
 24423  
 24424  // SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
 24425  func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
 24426  	s.LambdaFunctionArn = &v
 24427  	return s
 24428  }
 24429  
 24430  // Container for lifecycle rules. You can add as many as 1000 rules.
 24431  type LifecycleConfiguration struct {
 24432  	_ struct{} `type:"structure"`
 24433  
 24434  	// Specifies lifecycle configuration rules for an Amazon S3 bucket.
 24435  	//
 24436  	// Rules is a required field
 24437  	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
 24438  }
 24439  
 24440  // String returns the string representation.
 24441  //
 24442  // API parameter values that are decorated as "sensitive" in the API will not
 24443  // be included in the string output. The member name will be present, but the
 24444  // value will be replaced with "sensitive".
 24445  func (s LifecycleConfiguration) String() string {
 24446  	return awsutil.Prettify(s)
 24447  }
 24448  
 24449  // GoString returns the string representation.
 24450  //
 24451  // API parameter values that are decorated as "sensitive" in the API will not
 24452  // be included in the string output. The member name will be present, but the
 24453  // value will be replaced with "sensitive".
 24454  func (s LifecycleConfiguration) GoString() string {
 24455  	return s.String()
 24456  }
 24457  
 24458  // Validate inspects the fields of the type to determine if they are valid.
 24459  func (s *LifecycleConfiguration) Validate() error {
 24460  	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
 24461  	if s.Rules == nil {
 24462  		invalidParams.Add(request.NewErrParamRequired("Rules"))
 24463  	}
 24464  	if s.Rules != nil {
 24465  		for i, v := range s.Rules {
 24466  			if v == nil {
 24467  				continue
 24468  			}
 24469  			if err := v.Validate(); err != nil {
 24470  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 24471  			}
 24472  		}
 24473  	}
 24474  
 24475  	if invalidParams.Len() > 0 {
 24476  		return invalidParams
 24477  	}
 24478  	return nil
 24479  }
 24480  
 24481  // SetRules sets the Rules field's value.
 24482  func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
 24483  	s.Rules = v
 24484  	return s
 24485  }
 24486  
 24487  // Container for the expiration for the lifecycle of the object.
 24488  type LifecycleExpiration struct {
 24489  	_ struct{} `type:"structure"`
 24490  
 24491  	// Indicates at what date the object is to be moved or deleted. Should be in
 24492  	// GMT ISO 8601 Format.
 24493  	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
 24494  
 24495  	// Indicates the lifetime, in days, of the objects that are subject to the rule.
 24496  	// The value must be a non-zero positive integer.
 24497  	Days *int64 `type:"integer"`
 24498  
 24499  	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
 24500  	// versions. If set to true, the delete marker will be expired; if set to false
 24501  	// the policy takes no action. This cannot be specified with Days or Date in
 24502  	// a Lifecycle Expiration Policy.
 24503  	ExpiredObjectDeleteMarker *bool `type:"boolean"`
 24504  }
 24505  
 24506  // String returns the string representation.
 24507  //
 24508  // API parameter values that are decorated as "sensitive" in the API will not
 24509  // be included in the string output. The member name will be present, but the
 24510  // value will be replaced with "sensitive".
 24511  func (s LifecycleExpiration) String() string {
 24512  	return awsutil.Prettify(s)
 24513  }
 24514  
 24515  // GoString returns the string representation.
 24516  //
 24517  // API parameter values that are decorated as "sensitive" in the API will not
 24518  // be included in the string output. The member name will be present, but the
 24519  // value will be replaced with "sensitive".
 24520  func (s LifecycleExpiration) GoString() string {
 24521  	return s.String()
 24522  }
 24523  
 24524  // SetDate sets the Date field's value.
 24525  func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
 24526  	s.Date = &v
 24527  	return s
 24528  }
 24529  
 24530  // SetDays sets the Days field's value.
 24531  func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
 24532  	s.Days = &v
 24533  	return s
 24534  }
 24535  
 24536  // SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
 24537  func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
 24538  	s.ExpiredObjectDeleteMarker = &v
 24539  	return s
 24540  }
 24541  
 24542  // A lifecycle rule for individual objects in an Amazon S3 bucket.
 24543  type LifecycleRule struct {
 24544  	_ struct{} `type:"structure"`
 24545  
 24546  	// Specifies the days since the initiation of an incomplete multipart upload
 24547  	// that Amazon S3 will wait before permanently removing all parts of the upload.
 24548  	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
 24549  	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
 24550  	// in the Amazon S3 User Guide.
 24551  	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
 24552  
 24553  	// Specifies the expiration for the lifecycle of the object in the form of date,
 24554  	// days and, whether the object has a delete marker.
 24555  	Expiration *LifecycleExpiration `type:"structure"`
 24556  
 24557  	// The Filter is used to identify objects that a Lifecycle Rule applies to.
 24558  	// A Filter must have exactly one of Prefix, Tag, or And specified. Filter is
 24559  	// required if the LifecycleRule does not containt a Prefix element.
 24560  	Filter *LifecycleRuleFilter `type:"structure"`
 24561  
 24562  	// Unique identifier for the rule. The value cannot be longer than 255 characters.
 24563  	ID *string `type:"string"`
 24564  
 24565  	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
 24566  	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
 24567  	// configuration action on a bucket that has versioning enabled (or suspended)
 24568  	// to request that Amazon S3 delete noncurrent object versions at a specific
 24569  	// period in the object's lifetime.
 24570  	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
 24571  
 24572  	// Specifies the transition rule for the lifecycle rule that describes when
 24573  	// noncurrent objects transition to a specific storage class. If your bucket
 24574  	// is versioning-enabled (or versioning is suspended), you can set this action
 24575  	// to request that Amazon S3 transition noncurrent object versions to a specific
 24576  	// storage class at a set period in the object's lifetime.
 24577  	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
 24578  
 24579  	// Prefix identifying one or more objects to which the rule applies. This is
 24580  	// no longer used; use Filter instead.
 24581  	//
 24582  	// Replacement must be made for object keys containing special characters (such
 24583  	// as carriage returns) when using XML requests. For more information, see XML
 24584  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 24585  	//
 24586  	// Deprecated: Prefix has been deprecated
 24587  	Prefix *string `deprecated:"true" type:"string"`
 24588  
 24589  	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
 24590  	// is not currently being applied.
 24591  	//
 24592  	// Status is a required field
 24593  	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
 24594  
 24595  	// Specifies when an Amazon S3 object transitions to a specified storage class.
 24596  	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
 24597  }
 24598  
 24599  // String returns the string representation.
 24600  //
 24601  // API parameter values that are decorated as "sensitive" in the API will not
 24602  // be included in the string output. The member name will be present, but the
 24603  // value will be replaced with "sensitive".
 24604  func (s LifecycleRule) String() string {
 24605  	return awsutil.Prettify(s)
 24606  }
 24607  
 24608  // GoString returns the string representation.
 24609  //
 24610  // API parameter values that are decorated as "sensitive" in the API will not
 24611  // be included in the string output. The member name will be present, but the
 24612  // value will be replaced with "sensitive".
 24613  func (s LifecycleRule) GoString() string {
 24614  	return s.String()
 24615  }
 24616  
 24617  // Validate inspects the fields of the type to determine if they are valid.
 24618  func (s *LifecycleRule) Validate() error {
 24619  	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
 24620  	if s.Status == nil {
 24621  		invalidParams.Add(request.NewErrParamRequired("Status"))
 24622  	}
 24623  	if s.Filter != nil {
 24624  		if err := s.Filter.Validate(); err != nil {
 24625  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 24626  		}
 24627  	}
 24628  
 24629  	if invalidParams.Len() > 0 {
 24630  		return invalidParams
 24631  	}
 24632  	return nil
 24633  }
 24634  
 24635  // SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
 24636  func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
 24637  	s.AbortIncompleteMultipartUpload = v
 24638  	return s
 24639  }
 24640  
 24641  // SetExpiration sets the Expiration field's value.
 24642  func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
 24643  	s.Expiration = v
 24644  	return s
 24645  }
 24646  
 24647  // SetFilter sets the Filter field's value.
 24648  func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
 24649  	s.Filter = v
 24650  	return s
 24651  }
 24652  
 24653  // SetID sets the ID field's value.
 24654  func (s *LifecycleRule) SetID(v string) *LifecycleRule {
 24655  	s.ID = &v
 24656  	return s
 24657  }
 24658  
 24659  // SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
 24660  func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
 24661  	s.NoncurrentVersionExpiration = v
 24662  	return s
 24663  }
 24664  
 24665  // SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
 24666  func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
 24667  	s.NoncurrentVersionTransitions = v
 24668  	return s
 24669  }
 24670  
 24671  // SetPrefix sets the Prefix field's value.
 24672  func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
 24673  	s.Prefix = &v
 24674  	return s
 24675  }
 24676  
 24677  // SetStatus sets the Status field's value.
 24678  func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
 24679  	s.Status = &v
 24680  	return s
 24681  }
 24682  
 24683  // SetTransitions sets the Transitions field's value.
 24684  func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
 24685  	s.Transitions = v
 24686  	return s
 24687  }
 24688  
 24689  // This is used in a Lifecycle Rule Filter to apply a logical AND to two or
 24690  // more predicates. The Lifecycle Rule will apply to any object matching all
 24691  // of the predicates configured inside the And operator.
 24692  type LifecycleRuleAndOperator struct {
 24693  	_ struct{} `type:"structure"`
 24694  
 24695  	// Prefix identifying one or more objects to which the rule applies.
 24696  	Prefix *string `type:"string"`
 24697  
 24698  	// All of these tags must exist in the object's tag set in order for the rule
 24699  	// to apply.
 24700  	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
 24701  }
 24702  
 24703  // String returns the string representation.
 24704  //
 24705  // API parameter values that are decorated as "sensitive" in the API will not
 24706  // be included in the string output. The member name will be present, but the
 24707  // value will be replaced with "sensitive".
 24708  func (s LifecycleRuleAndOperator) String() string {
 24709  	return awsutil.Prettify(s)
 24710  }
 24711  
 24712  // GoString returns the string representation.
 24713  //
 24714  // API parameter values that are decorated as "sensitive" in the API will not
 24715  // be included in the string output. The member name will be present, but the
 24716  // value will be replaced with "sensitive".
 24717  func (s LifecycleRuleAndOperator) GoString() string {
 24718  	return s.String()
 24719  }
 24720  
 24721  // Validate inspects the fields of the type to determine if they are valid.
 24722  func (s *LifecycleRuleAndOperator) Validate() error {
 24723  	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
 24724  	if s.Tags != nil {
 24725  		for i, v := range s.Tags {
 24726  			if v == nil {
 24727  				continue
 24728  			}
 24729  			if err := v.Validate(); err != nil {
 24730  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 24731  			}
 24732  		}
 24733  	}
 24734  
 24735  	if invalidParams.Len() > 0 {
 24736  		return invalidParams
 24737  	}
 24738  	return nil
 24739  }
 24740  
 24741  // SetPrefix sets the Prefix field's value.
 24742  func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
 24743  	s.Prefix = &v
 24744  	return s
 24745  }
 24746  
 24747  // SetTags sets the Tags field's value.
 24748  func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
 24749  	s.Tags = v
 24750  	return s
 24751  }
 24752  
 24753  // The Filter is used to identify objects that a Lifecycle Rule applies to.
 24754  // A Filter must have exactly one of Prefix, Tag, or And specified.
 24755  type LifecycleRuleFilter struct {
 24756  	_ struct{} `type:"structure"`
 24757  
 24758  	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
 24759  	// more predicates. The Lifecycle Rule will apply to any object matching all
 24760  	// of the predicates configured inside the And operator.
 24761  	And *LifecycleRuleAndOperator `type:"structure"`
 24762  
 24763  	// Prefix identifying one or more objects to which the rule applies.
 24764  	//
 24765  	// Replacement must be made for object keys containing special characters (such
 24766  	// as carriage returns) when using XML requests. For more information, see XML
 24767  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 24768  	Prefix *string `type:"string"`
 24769  
 24770  	// This tag must exist in the object's tag set in order for the rule to apply.
 24771  	Tag *Tag `type:"structure"`
 24772  }
 24773  
 24774  // String returns the string representation.
 24775  //
 24776  // API parameter values that are decorated as "sensitive" in the API will not
 24777  // be included in the string output. The member name will be present, but the
 24778  // value will be replaced with "sensitive".
 24779  func (s LifecycleRuleFilter) String() string {
 24780  	return awsutil.Prettify(s)
 24781  }
 24782  
 24783  // GoString returns the string representation.
 24784  //
 24785  // API parameter values that are decorated as "sensitive" in the API will not
 24786  // be included in the string output. The member name will be present, but the
 24787  // value will be replaced with "sensitive".
 24788  func (s LifecycleRuleFilter) GoString() string {
 24789  	return s.String()
 24790  }
 24791  
 24792  // Validate inspects the fields of the type to determine if they are valid.
 24793  func (s *LifecycleRuleFilter) Validate() error {
 24794  	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
 24795  	if s.And != nil {
 24796  		if err := s.And.Validate(); err != nil {
 24797  			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
 24798  		}
 24799  	}
 24800  	if s.Tag != nil {
 24801  		if err := s.Tag.Validate(); err != nil {
 24802  			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
 24803  		}
 24804  	}
 24805  
 24806  	if invalidParams.Len() > 0 {
 24807  		return invalidParams
 24808  	}
 24809  	return nil
 24810  }
 24811  
 24812  // SetAnd sets the And field's value.
 24813  func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
 24814  	s.And = v
 24815  	return s
 24816  }
 24817  
 24818  // SetPrefix sets the Prefix field's value.
 24819  func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
 24820  	s.Prefix = &v
 24821  	return s
 24822  }
 24823  
 24824  // SetTag sets the Tag field's value.
 24825  func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
 24826  	s.Tag = v
 24827  	return s
 24828  }
 24829  
 24830  type ListBucketAnalyticsConfigurationsInput struct {
 24831  	_ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"`
 24832  
 24833  	// The name of the bucket from which analytics configurations are retrieved.
 24834  	//
 24835  	// Bucket is a required field
 24836  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 24837  
 24838  	// The ContinuationToken that represents a placeholder from where this request
 24839  	// should begin.
 24840  	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
 24841  
 24842  	// The account ID of the expected bucket owner. If the bucket is owned by a
 24843  	// different account, the request will fail with an HTTP 403 (Access Denied)
 24844  	// error.
 24845  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 24846  }
 24847  
 24848  // String returns the string representation.
 24849  //
 24850  // API parameter values that are decorated as "sensitive" in the API will not
 24851  // be included in the string output. The member name will be present, but the
 24852  // value will be replaced with "sensitive".
 24853  func (s ListBucketAnalyticsConfigurationsInput) String() string {
 24854  	return awsutil.Prettify(s)
 24855  }
 24856  
 24857  // GoString returns the string representation.
 24858  //
 24859  // API parameter values that are decorated as "sensitive" in the API will not
 24860  // be included in the string output. The member name will be present, but the
 24861  // value will be replaced with "sensitive".
 24862  func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
 24863  	return s.String()
 24864  }
 24865  
 24866  // Validate inspects the fields of the type to determine if they are valid.
 24867  func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
 24868  	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
 24869  	if s.Bucket == nil {
 24870  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 24871  	}
 24872  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 24873  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 24874  	}
 24875  
 24876  	if invalidParams.Len() > 0 {
 24877  		return invalidParams
 24878  	}
 24879  	return nil
 24880  }
 24881  
 24882  // SetBucket sets the Bucket field's value.
 24883  func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
 24884  	s.Bucket = &v
 24885  	return s
 24886  }
 24887  
 24888  func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
 24889  	if s.Bucket == nil {
 24890  		return v
 24891  	}
 24892  	return *s.Bucket
 24893  }
 24894  
 24895  // SetContinuationToken sets the ContinuationToken field's value.
 24896  func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
 24897  	s.ContinuationToken = &v
 24898  	return s
 24899  }
 24900  
 24901  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 24902  func (s *ListBucketAnalyticsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketAnalyticsConfigurationsInput {
 24903  	s.ExpectedBucketOwner = &v
 24904  	return s
 24905  }
 24906  
 24907  func (s *ListBucketAnalyticsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
 24908  	if s.Bucket == nil {
 24909  		return nil, fmt.Errorf("member Bucket is nil")
 24910  	}
 24911  	return parseEndpointARN(*s.Bucket)
 24912  }
 24913  
 24914  func (s *ListBucketAnalyticsConfigurationsInput) hasEndpointARN() bool {
 24915  	if s.Bucket == nil {
 24916  		return false
 24917  	}
 24918  	return arn.IsARN(*s.Bucket)
 24919  }
 24920  
 24921  // updateArnableField updates the value of the input field that
 24922  // takes an ARN as an input. This method is useful to backfill
 24923  // the parsed resource name from ARN into the input member.
 24924  // It returns a pointer to a modified copy of input and an error.
 24925  // Note that original input is not modified.
 24926  func (s ListBucketAnalyticsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
 24927  	if s.Bucket == nil {
 24928  		return nil, fmt.Errorf("member Bucket is nil")
 24929  	}
 24930  	s.Bucket = aws.String(v)
 24931  	return &s, nil
 24932  }
 24933  
 24934  type ListBucketAnalyticsConfigurationsOutput struct {
 24935  	_ struct{} `type:"structure"`
 24936  
 24937  	// The list of analytics configurations for a bucket.
 24938  	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
 24939  
 24940  	// The marker that is used as a starting point for this analytics configuration
 24941  	// list response. This value is present if it was sent in the request.
 24942  	ContinuationToken *string `type:"string"`
 24943  
 24944  	// Indicates whether the returned list of analytics configurations is complete.
 24945  	// A value of true indicates that the list is not complete and the NextContinuationToken
 24946  	// will be provided for a subsequent request.
 24947  	IsTruncated *bool `type:"boolean"`
 24948  
 24949  	// NextContinuationToken is sent when isTruncated is true, which indicates that
 24950  	// there are more analytics configurations to list. The next request must include
 24951  	// this NextContinuationToken. The token is obfuscated and is not a usable value.
 24952  	NextContinuationToken *string `type:"string"`
 24953  }
 24954  
 24955  // String returns the string representation.
 24956  //
 24957  // API parameter values that are decorated as "sensitive" in the API will not
 24958  // be included in the string output. The member name will be present, but the
 24959  // value will be replaced with "sensitive".
 24960  func (s ListBucketAnalyticsConfigurationsOutput) String() string {
 24961  	return awsutil.Prettify(s)
 24962  }
 24963  
 24964  // GoString returns the string representation.
 24965  //
 24966  // API parameter values that are decorated as "sensitive" in the API will not
 24967  // be included in the string output. The member name will be present, but the
 24968  // value will be replaced with "sensitive".
 24969  func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
 24970  	return s.String()
 24971  }
 24972  
 24973  // SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
 24974  func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
 24975  	s.AnalyticsConfigurationList = v
 24976  	return s
 24977  }
 24978  
 24979  // SetContinuationToken sets the ContinuationToken field's value.
 24980  func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
 24981  	s.ContinuationToken = &v
 24982  	return s
 24983  }
 24984  
 24985  // SetIsTruncated sets the IsTruncated field's value.
 24986  func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
 24987  	s.IsTruncated = &v
 24988  	return s
 24989  }
 24990  
 24991  // SetNextContinuationToken sets the NextContinuationToken field's value.
 24992  func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
 24993  	s.NextContinuationToken = &v
 24994  	return s
 24995  }
 24996  
 24997  type ListBucketIntelligentTieringConfigurationsInput struct {
 24998  	_ struct{} `locationName:"ListBucketIntelligentTieringConfigurationsRequest" type:"structure"`
 24999  
 25000  	// The name of the Amazon S3 bucket whose configuration you want to modify or
 25001  	// retrieve.
 25002  	//
 25003  	// Bucket is a required field
 25004  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 25005  
 25006  	// The ContinuationToken that represents a placeholder from where this request
 25007  	// should begin.
 25008  	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
 25009  }
 25010  
 25011  // String returns the string representation.
 25012  //
 25013  // API parameter values that are decorated as "sensitive" in the API will not
 25014  // be included in the string output. The member name will be present, but the
 25015  // value will be replaced with "sensitive".
 25016  func (s ListBucketIntelligentTieringConfigurationsInput) String() string {
 25017  	return awsutil.Prettify(s)
 25018  }
 25019  
 25020  // GoString returns the string representation.
 25021  //
 25022  // API parameter values that are decorated as "sensitive" in the API will not
 25023  // be included in the string output. The member name will be present, but the
 25024  // value will be replaced with "sensitive".
 25025  func (s ListBucketIntelligentTieringConfigurationsInput) GoString() string {
 25026  	return s.String()
 25027  }
 25028  
 25029  // Validate inspects the fields of the type to determine if they are valid.
 25030  func (s *ListBucketIntelligentTieringConfigurationsInput) Validate() error {
 25031  	invalidParams := request.ErrInvalidParams{Context: "ListBucketIntelligentTieringConfigurationsInput"}
 25032  	if s.Bucket == nil {
 25033  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 25034  	}
 25035  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 25036  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 25037  	}
 25038  
 25039  	if invalidParams.Len() > 0 {
 25040  		return invalidParams
 25041  	}
 25042  	return nil
 25043  }
 25044  
 25045  // SetBucket sets the Bucket field's value.
 25046  func (s *ListBucketIntelligentTieringConfigurationsInput) SetBucket(v string) *ListBucketIntelligentTieringConfigurationsInput {
 25047  	s.Bucket = &v
 25048  	return s
 25049  }
 25050  
 25051  func (s *ListBucketIntelligentTieringConfigurationsInput) getBucket() (v string) {
 25052  	if s.Bucket == nil {
 25053  		return v
 25054  	}
 25055  	return *s.Bucket
 25056  }
 25057  
 25058  // SetContinuationToken sets the ContinuationToken field's value.
 25059  func (s *ListBucketIntelligentTieringConfigurationsInput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsInput {
 25060  	s.ContinuationToken = &v
 25061  	return s
 25062  }
 25063  
 25064  func (s *ListBucketIntelligentTieringConfigurationsInput) getEndpointARN() (arn.Resource, error) {
 25065  	if s.Bucket == nil {
 25066  		return nil, fmt.Errorf("member Bucket is nil")
 25067  	}
 25068  	return parseEndpointARN(*s.Bucket)
 25069  }
 25070  
 25071  func (s *ListBucketIntelligentTieringConfigurationsInput) hasEndpointARN() bool {
 25072  	if s.Bucket == nil {
 25073  		return false
 25074  	}
 25075  	return arn.IsARN(*s.Bucket)
 25076  }
 25077  
 25078  // updateArnableField updates the value of the input field that
 25079  // takes an ARN as an input. This method is useful to backfill
 25080  // the parsed resource name from ARN into the input member.
 25081  // It returns a pointer to a modified copy of input and an error.
 25082  // Note that original input is not modified.
 25083  func (s ListBucketIntelligentTieringConfigurationsInput) updateArnableField(v string) (interface{}, error) {
 25084  	if s.Bucket == nil {
 25085  		return nil, fmt.Errorf("member Bucket is nil")
 25086  	}
 25087  	s.Bucket = aws.String(v)
 25088  	return &s, nil
 25089  }
 25090  
 25091  type ListBucketIntelligentTieringConfigurationsOutput struct {
 25092  	_ struct{} `type:"structure"`
 25093  
 25094  	// The ContinuationToken that represents a placeholder from where this request
 25095  	// should begin.
 25096  	ContinuationToken *string `type:"string"`
 25097  
 25098  	// The list of S3 Intelligent-Tiering configurations for a bucket.
 25099  	IntelligentTieringConfigurationList []*IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"list" flattened:"true"`
 25100  
 25101  	// Indicates whether the returned list of analytics configurations is complete.
 25102  	// A value of true indicates that the list is not complete and the NextContinuationToken
 25103  	// will be provided for a subsequent request.
 25104  	IsTruncated *bool `type:"boolean"`
 25105  
 25106  	// The marker used to continue this inventory configuration listing. Use the
 25107  	// NextContinuationToken from this response to continue the listing in a subsequent
 25108  	// request. The continuation token is an opaque value that Amazon S3 understands.
 25109  	NextContinuationToken *string `type:"string"`
 25110  }
 25111  
 25112  // String returns the string representation.
 25113  //
 25114  // API parameter values that are decorated as "sensitive" in the API will not
 25115  // be included in the string output. The member name will be present, but the
 25116  // value will be replaced with "sensitive".
 25117  func (s ListBucketIntelligentTieringConfigurationsOutput) String() string {
 25118  	return awsutil.Prettify(s)
 25119  }
 25120  
 25121  // GoString returns the string representation.
 25122  //
 25123  // API parameter values that are decorated as "sensitive" in the API will not
 25124  // be included in the string output. The member name will be present, but the
 25125  // value will be replaced with "sensitive".
 25126  func (s ListBucketIntelligentTieringConfigurationsOutput) GoString() string {
 25127  	return s.String()
 25128  }
 25129  
 25130  // SetContinuationToken sets the ContinuationToken field's value.
 25131  func (s *ListBucketIntelligentTieringConfigurationsOutput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
 25132  	s.ContinuationToken = &v
 25133  	return s
 25134  }
 25135  
 25136  // SetIntelligentTieringConfigurationList sets the IntelligentTieringConfigurationList field's value.
 25137  func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIntelligentTieringConfigurationList(v []*IntelligentTieringConfiguration) *ListBucketIntelligentTieringConfigurationsOutput {
 25138  	s.IntelligentTieringConfigurationList = v
 25139  	return s
 25140  }
 25141  
 25142  // SetIsTruncated sets the IsTruncated field's value.
 25143  func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIsTruncated(v bool) *ListBucketIntelligentTieringConfigurationsOutput {
 25144  	s.IsTruncated = &v
 25145  	return s
 25146  }
 25147  
 25148  // SetNextContinuationToken sets the NextContinuationToken field's value.
 25149  func (s *ListBucketIntelligentTieringConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
 25150  	s.NextContinuationToken = &v
 25151  	return s
 25152  }
 25153  
 25154  type ListBucketInventoryConfigurationsInput struct {
 25155  	_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
 25156  
 25157  	// The name of the bucket containing the inventory configurations to retrieve.
 25158  	//
 25159  	// Bucket is a required field
 25160  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 25161  
 25162  	// The marker used to continue an inventory configuration listing that has been
 25163  	// truncated. Use the NextContinuationToken from a previously truncated list
 25164  	// response to continue the listing. The continuation token is an opaque value
 25165  	// that Amazon S3 understands.
 25166  	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
 25167  
 25168  	// The account ID of the expected bucket owner. If the bucket is owned by a
 25169  	// different account, the request will fail with an HTTP 403 (Access Denied)
 25170  	// error.
 25171  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 25172  }
 25173  
 25174  // String returns the string representation.
 25175  //
 25176  // API parameter values that are decorated as "sensitive" in the API will not
 25177  // be included in the string output. The member name will be present, but the
 25178  // value will be replaced with "sensitive".
 25179  func (s ListBucketInventoryConfigurationsInput) String() string {
 25180  	return awsutil.Prettify(s)
 25181  }
 25182  
 25183  // GoString returns the string representation.
 25184  //
 25185  // API parameter values that are decorated as "sensitive" in the API will not
 25186  // be included in the string output. The member name will be present, but the
 25187  // value will be replaced with "sensitive".
 25188  func (s ListBucketInventoryConfigurationsInput) GoString() string {
 25189  	return s.String()
 25190  }
 25191  
 25192  // Validate inspects the fields of the type to determine if they are valid.
 25193  func (s *ListBucketInventoryConfigurationsInput) Validate() error {
 25194  	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
 25195  	if s.Bucket == nil {
 25196  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 25197  	}
 25198  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 25199  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 25200  	}
 25201  
 25202  	if invalidParams.Len() > 0 {
 25203  		return invalidParams
 25204  	}
 25205  	return nil
 25206  }
 25207  
 25208  // SetBucket sets the Bucket field's value.
 25209  func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
 25210  	s.Bucket = &v
 25211  	return s
 25212  }
 25213  
 25214  func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
 25215  	if s.Bucket == nil {
 25216  		return v
 25217  	}
 25218  	return *s.Bucket
 25219  }
 25220  
 25221  // SetContinuationToken sets the ContinuationToken field's value.
 25222  func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
 25223  	s.ContinuationToken = &v
 25224  	return s
 25225  }
 25226  
 25227  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 25228  func (s *ListBucketInventoryConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketInventoryConfigurationsInput {
 25229  	s.ExpectedBucketOwner = &v
 25230  	return s
 25231  }
 25232  
 25233  func (s *ListBucketInventoryConfigurationsInput) getEndpointARN() (arn.Resource, error) {
 25234  	if s.Bucket == nil {
 25235  		return nil, fmt.Errorf("member Bucket is nil")
 25236  	}
 25237  	return parseEndpointARN(*s.Bucket)
 25238  }
 25239  
 25240  func (s *ListBucketInventoryConfigurationsInput) hasEndpointARN() bool {
 25241  	if s.Bucket == nil {
 25242  		return false
 25243  	}
 25244  	return arn.IsARN(*s.Bucket)
 25245  }
 25246  
 25247  // updateArnableField updates the value of the input field that
 25248  // takes an ARN as an input. This method is useful to backfill
 25249  // the parsed resource name from ARN into the input member.
 25250  // It returns a pointer to a modified copy of input and an error.
 25251  // Note that original input is not modified.
 25252  func (s ListBucketInventoryConfigurationsInput) updateArnableField(v string) (interface{}, error) {
 25253  	if s.Bucket == nil {
 25254  		return nil, fmt.Errorf("member Bucket is nil")
 25255  	}
 25256  	s.Bucket = aws.String(v)
 25257  	return &s, nil
 25258  }
 25259  
 25260  type ListBucketInventoryConfigurationsOutput struct {
 25261  	_ struct{} `type:"structure"`
 25262  
 25263  	// If sent in the request, the marker that is used as a starting point for this
 25264  	// inventory configuration list response.
 25265  	ContinuationToken *string `type:"string"`
 25266  
 25267  	// The list of inventory configurations for a bucket.
 25268  	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
 25269  
 25270  	// Tells whether the returned list of inventory configurations is complete.
 25271  	// A value of true indicates that the list is not complete and the NextContinuationToken
 25272  	// is provided for a subsequent request.
 25273  	IsTruncated *bool `type:"boolean"`
 25274  
 25275  	// The marker used to continue this inventory configuration listing. Use the
 25276  	// NextContinuationToken from this response to continue the listing in a subsequent
 25277  	// request. The continuation token is an opaque value that Amazon S3 understands.
 25278  	NextContinuationToken *string `type:"string"`
 25279  }
 25280  
 25281  // String returns the string representation.
 25282  //
 25283  // API parameter values that are decorated as "sensitive" in the API will not
 25284  // be included in the string output. The member name will be present, but the
 25285  // value will be replaced with "sensitive".
 25286  func (s ListBucketInventoryConfigurationsOutput) String() string {
 25287  	return awsutil.Prettify(s)
 25288  }
 25289  
 25290  // GoString returns the string representation.
 25291  //
 25292  // API parameter values that are decorated as "sensitive" in the API will not
 25293  // be included in the string output. The member name will be present, but the
 25294  // value will be replaced with "sensitive".
 25295  func (s ListBucketInventoryConfigurationsOutput) GoString() string {
 25296  	return s.String()
 25297  }
 25298  
 25299  // SetContinuationToken sets the ContinuationToken field's value.
 25300  func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
 25301  	s.ContinuationToken = &v
 25302  	return s
 25303  }
 25304  
 25305  // SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
 25306  func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
 25307  	s.InventoryConfigurationList = v
 25308  	return s
 25309  }
 25310  
 25311  // SetIsTruncated sets the IsTruncated field's value.
 25312  func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
 25313  	s.IsTruncated = &v
 25314  	return s
 25315  }
 25316  
 25317  // SetNextContinuationToken sets the NextContinuationToken field's value.
 25318  func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
 25319  	s.NextContinuationToken = &v
 25320  	return s
 25321  }
 25322  
 25323  type ListBucketMetricsConfigurationsInput struct {
 25324  	_ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"`
 25325  
 25326  	// The name of the bucket containing the metrics configurations to retrieve.
 25327  	//
 25328  	// Bucket is a required field
 25329  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 25330  
 25331  	// The marker that is used to continue a metrics configuration listing that
 25332  	// has been truncated. Use the NextContinuationToken from a previously truncated
 25333  	// list response to continue the listing. The continuation token is an opaque
 25334  	// value that Amazon S3 understands.
 25335  	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
 25336  
 25337  	// The account ID of the expected bucket owner. If the bucket is owned by a
 25338  	// different account, the request will fail with an HTTP 403 (Access Denied)
 25339  	// error.
 25340  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 25341  }
 25342  
 25343  // String returns the string representation.
 25344  //
 25345  // API parameter values that are decorated as "sensitive" in the API will not
 25346  // be included in the string output. The member name will be present, but the
 25347  // value will be replaced with "sensitive".
 25348  func (s ListBucketMetricsConfigurationsInput) String() string {
 25349  	return awsutil.Prettify(s)
 25350  }
 25351  
 25352  // GoString returns the string representation.
 25353  //
 25354  // API parameter values that are decorated as "sensitive" in the API will not
 25355  // be included in the string output. The member name will be present, but the
 25356  // value will be replaced with "sensitive".
 25357  func (s ListBucketMetricsConfigurationsInput) GoString() string {
 25358  	return s.String()
 25359  }
 25360  
 25361  // Validate inspects the fields of the type to determine if they are valid.
 25362  func (s *ListBucketMetricsConfigurationsInput) Validate() error {
 25363  	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
 25364  	if s.Bucket == nil {
 25365  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 25366  	}
 25367  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 25368  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 25369  	}
 25370  
 25371  	if invalidParams.Len() > 0 {
 25372  		return invalidParams
 25373  	}
 25374  	return nil
 25375  }
 25376  
 25377  // SetBucket sets the Bucket field's value.
 25378  func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
 25379  	s.Bucket = &v
 25380  	return s
 25381  }
 25382  
 25383  func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
 25384  	if s.Bucket == nil {
 25385  		return v
 25386  	}
 25387  	return *s.Bucket
 25388  }
 25389  
 25390  // SetContinuationToken sets the ContinuationToken field's value.
 25391  func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
 25392  	s.ContinuationToken = &v
 25393  	return s
 25394  }
 25395  
 25396  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 25397  func (s *ListBucketMetricsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketMetricsConfigurationsInput {
 25398  	s.ExpectedBucketOwner = &v
 25399  	return s
 25400  }
 25401  
 25402  func (s *ListBucketMetricsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
 25403  	if s.Bucket == nil {
 25404  		return nil, fmt.Errorf("member Bucket is nil")
 25405  	}
 25406  	return parseEndpointARN(*s.Bucket)
 25407  }
 25408  
 25409  func (s *ListBucketMetricsConfigurationsInput) hasEndpointARN() bool {
 25410  	if s.Bucket == nil {
 25411  		return false
 25412  	}
 25413  	return arn.IsARN(*s.Bucket)
 25414  }
 25415  
 25416  // updateArnableField updates the value of the input field that
 25417  // takes an ARN as an input. This method is useful to backfill
 25418  // the parsed resource name from ARN into the input member.
 25419  // It returns a pointer to a modified copy of input and an error.
 25420  // Note that original input is not modified.
 25421  func (s ListBucketMetricsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
 25422  	if s.Bucket == nil {
 25423  		return nil, fmt.Errorf("member Bucket is nil")
 25424  	}
 25425  	s.Bucket = aws.String(v)
 25426  	return &s, nil
 25427  }
 25428  
 25429  type ListBucketMetricsConfigurationsOutput struct {
 25430  	_ struct{} `type:"structure"`
 25431  
 25432  	// The marker that is used as a starting point for this metrics configuration
 25433  	// list response. This value is present if it was sent in the request.
 25434  	ContinuationToken *string `type:"string"`
 25435  
 25436  	// Indicates whether the returned list of metrics configurations is complete.
 25437  	// A value of true indicates that the list is not complete and the NextContinuationToken
 25438  	// will be provided for a subsequent request.
 25439  	IsTruncated *bool `type:"boolean"`
 25440  
 25441  	// The list of metrics configurations for a bucket.
 25442  	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
 25443  
 25444  	// The marker used to continue a metrics configuration listing that has been
 25445  	// truncated. Use the NextContinuationToken from a previously truncated list
 25446  	// response to continue the listing. The continuation token is an opaque value
 25447  	// that Amazon S3 understands.
 25448  	NextContinuationToken *string `type:"string"`
 25449  }
 25450  
 25451  // String returns the string representation.
 25452  //
 25453  // API parameter values that are decorated as "sensitive" in the API will not
 25454  // be included in the string output. The member name will be present, but the
 25455  // value will be replaced with "sensitive".
 25456  func (s ListBucketMetricsConfigurationsOutput) String() string {
 25457  	return awsutil.Prettify(s)
 25458  }
 25459  
 25460  // GoString returns the string representation.
 25461  //
 25462  // API parameter values that are decorated as "sensitive" in the API will not
 25463  // be included in the string output. The member name will be present, but the
 25464  // value will be replaced with "sensitive".
 25465  func (s ListBucketMetricsConfigurationsOutput) GoString() string {
 25466  	return s.String()
 25467  }
 25468  
 25469  // SetContinuationToken sets the ContinuationToken field's value.
 25470  func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
 25471  	s.ContinuationToken = &v
 25472  	return s
 25473  }
 25474  
 25475  // SetIsTruncated sets the IsTruncated field's value.
 25476  func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
 25477  	s.IsTruncated = &v
 25478  	return s
 25479  }
 25480  
 25481  // SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
 25482  func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
 25483  	s.MetricsConfigurationList = v
 25484  	return s
 25485  }
 25486  
 25487  // SetNextContinuationToken sets the NextContinuationToken field's value.
 25488  func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
 25489  	s.NextContinuationToken = &v
 25490  	return s
 25491  }
 25492  
 25493  type ListBucketsInput struct {
 25494  	_ struct{} `type:"structure"`
 25495  }
 25496  
 25497  // String returns the string representation.
 25498  //
 25499  // API parameter values that are decorated as "sensitive" in the API will not
 25500  // be included in the string output. The member name will be present, but the
 25501  // value will be replaced with "sensitive".
 25502  func (s ListBucketsInput) String() string {
 25503  	return awsutil.Prettify(s)
 25504  }
 25505  
 25506  // GoString returns the string representation.
 25507  //
 25508  // API parameter values that are decorated as "sensitive" in the API will not
 25509  // be included in the string output. The member name will be present, but the
 25510  // value will be replaced with "sensitive".
 25511  func (s ListBucketsInput) GoString() string {
 25512  	return s.String()
 25513  }
 25514  
 25515  type ListBucketsOutput struct {
 25516  	_ struct{} `type:"structure"`
 25517  
 25518  	// The list of buckets owned by the requestor.
 25519  	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
 25520  
 25521  	// The owner of the buckets listed.
 25522  	Owner *Owner `type:"structure"`
 25523  }
 25524  
 25525  // String returns the string representation.
 25526  //
 25527  // API parameter values that are decorated as "sensitive" in the API will not
 25528  // be included in the string output. The member name will be present, but the
 25529  // value will be replaced with "sensitive".
 25530  func (s ListBucketsOutput) String() string {
 25531  	return awsutil.Prettify(s)
 25532  }
 25533  
 25534  // GoString returns the string representation.
 25535  //
 25536  // API parameter values that are decorated as "sensitive" in the API will not
 25537  // be included in the string output. The member name will be present, but the
 25538  // value will be replaced with "sensitive".
 25539  func (s ListBucketsOutput) GoString() string {
 25540  	return s.String()
 25541  }
 25542  
 25543  // SetBuckets sets the Buckets field's value.
 25544  func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
 25545  	s.Buckets = v
 25546  	return s
 25547  }
 25548  
 25549  // SetOwner sets the Owner field's value.
 25550  func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
 25551  	s.Owner = v
 25552  	return s
 25553  }
 25554  
 25555  type ListMultipartUploadsInput struct {
 25556  	_ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"`
 25557  
 25558  	// The name of the bucket to which the multipart upload was initiated.
 25559  	//
 25560  	// When using this action with an access point, you must direct requests to
 25561  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 25562  	// When using this action with an access point through the Amazon Web Services
 25563  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 25564  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 25565  	// in the Amazon S3 User Guide.
 25566  	//
 25567  	// When using this action with Amazon S3 on Outposts, you must direct requests
 25568  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 25569  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 25570  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 25571  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 25572  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 25573  	// in the Amazon S3 User Guide.
 25574  	//
 25575  	// Bucket is a required field
 25576  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 25577  
 25578  	// Character you use to group keys.
 25579  	//
 25580  	// All keys that contain the same string between the prefix, if specified, and
 25581  	// the first occurrence of the delimiter after the prefix are grouped under
 25582  	// a single result element, CommonPrefixes. If you don't specify the prefix
 25583  	// parameter, then the substring starts at the beginning of the key. The keys
 25584  	// that are grouped under CommonPrefixes result element are not returned elsewhere
 25585  	// in the response.
 25586  	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
 25587  
 25588  	// Requests Amazon S3 to encode the object keys in the response and specifies
 25589  	// the encoding method to use. An object key may contain any Unicode character;
 25590  	// however, XML 1.0 parser cannot parse some characters, such as characters
 25591  	// with an ASCII value from 0 to 10. For characters that are not supported in
 25592  	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
 25593  	// keys in the response.
 25594  	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
 25595  
 25596  	// The account ID of the expected bucket owner. If the bucket is owned by a
 25597  	// different account, the request will fail with an HTTP 403 (Access Denied)
 25598  	// error.
 25599  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 25600  
 25601  	// Together with upload-id-marker, this parameter specifies the multipart upload
 25602  	// after which listing should begin.
 25603  	//
 25604  	// If upload-id-marker is not specified, only the keys lexicographically greater
 25605  	// than the specified key-marker will be included in the list.
 25606  	//
 25607  	// If upload-id-marker is specified, any multipart uploads for a key equal to
 25608  	// the key-marker might also be included, provided those multipart uploads have
 25609  	// upload IDs lexicographically greater than the specified upload-id-marker.
 25610  	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
 25611  
 25612  	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
 25613  	// in the response body. 1,000 is the maximum number of uploads that can be
 25614  	// returned in a response.
 25615  	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
 25616  
 25617  	// Lists in-progress uploads only for those keys that begin with the specified
 25618  	// prefix. You can use prefixes to separate a bucket into different grouping
 25619  	// of keys. (You can think of using prefix to make groups in the same way you'd
 25620  	// use a folder in a file system.)
 25621  	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
 25622  
 25623  	// Together with key-marker, specifies the multipart upload after which listing
 25624  	// should begin. If key-marker is not specified, the upload-id-marker parameter
 25625  	// is ignored. Otherwise, any multipart uploads for a key equal to the key-marker
 25626  	// might be included in the list only if they have an upload ID lexicographically
 25627  	// greater than the specified upload-id-marker.
 25628  	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
 25629  }
 25630  
 25631  // String returns the string representation.
 25632  //
 25633  // API parameter values that are decorated as "sensitive" in the API will not
 25634  // be included in the string output. The member name will be present, but the
 25635  // value will be replaced with "sensitive".
 25636  func (s ListMultipartUploadsInput) String() string {
 25637  	return awsutil.Prettify(s)
 25638  }
 25639  
 25640  // GoString returns the string representation.
 25641  //
 25642  // API parameter values that are decorated as "sensitive" in the API will not
 25643  // be included in the string output. The member name will be present, but the
 25644  // value will be replaced with "sensitive".
 25645  func (s ListMultipartUploadsInput) GoString() string {
 25646  	return s.String()
 25647  }
 25648  
 25649  // Validate inspects the fields of the type to determine if they are valid.
 25650  func (s *ListMultipartUploadsInput) Validate() error {
 25651  	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
 25652  	if s.Bucket == nil {
 25653  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 25654  	}
 25655  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 25656  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 25657  	}
 25658  
 25659  	if invalidParams.Len() > 0 {
 25660  		return invalidParams
 25661  	}
 25662  	return nil
 25663  }
 25664  
 25665  // SetBucket sets the Bucket field's value.
 25666  func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
 25667  	s.Bucket = &v
 25668  	return s
 25669  }
 25670  
 25671  func (s *ListMultipartUploadsInput) getBucket() (v string) {
 25672  	if s.Bucket == nil {
 25673  		return v
 25674  	}
 25675  	return *s.Bucket
 25676  }
 25677  
 25678  // SetDelimiter sets the Delimiter field's value.
 25679  func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
 25680  	s.Delimiter = &v
 25681  	return s
 25682  }
 25683  
 25684  // SetEncodingType sets the EncodingType field's value.
 25685  func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
 25686  	s.EncodingType = &v
 25687  	return s
 25688  }
 25689  
 25690  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 25691  func (s *ListMultipartUploadsInput) SetExpectedBucketOwner(v string) *ListMultipartUploadsInput {
 25692  	s.ExpectedBucketOwner = &v
 25693  	return s
 25694  }
 25695  
 25696  // SetKeyMarker sets the KeyMarker field's value.
 25697  func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
 25698  	s.KeyMarker = &v
 25699  	return s
 25700  }
 25701  
 25702  // SetMaxUploads sets the MaxUploads field's value.
 25703  func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
 25704  	s.MaxUploads = &v
 25705  	return s
 25706  }
 25707  
 25708  // SetPrefix sets the Prefix field's value.
 25709  func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
 25710  	s.Prefix = &v
 25711  	return s
 25712  }
 25713  
 25714  // SetUploadIdMarker sets the UploadIdMarker field's value.
 25715  func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
 25716  	s.UploadIdMarker = &v
 25717  	return s
 25718  }
 25719  
 25720  func (s *ListMultipartUploadsInput) getEndpointARN() (arn.Resource, error) {
 25721  	if s.Bucket == nil {
 25722  		return nil, fmt.Errorf("member Bucket is nil")
 25723  	}
 25724  	return parseEndpointARN(*s.Bucket)
 25725  }
 25726  
 25727  func (s *ListMultipartUploadsInput) hasEndpointARN() bool {
 25728  	if s.Bucket == nil {
 25729  		return false
 25730  	}
 25731  	return arn.IsARN(*s.Bucket)
 25732  }
 25733  
 25734  // updateArnableField updates the value of the input field that
 25735  // takes an ARN as an input. This method is useful to backfill
 25736  // the parsed resource name from ARN into the input member.
 25737  // It returns a pointer to a modified copy of input and an error.
 25738  // Note that original input is not modified.
 25739  func (s ListMultipartUploadsInput) updateArnableField(v string) (interface{}, error) {
 25740  	if s.Bucket == nil {
 25741  		return nil, fmt.Errorf("member Bucket is nil")
 25742  	}
 25743  	s.Bucket = aws.String(v)
 25744  	return &s, nil
 25745  }
 25746  
 25747  type ListMultipartUploadsOutput struct {
 25748  	_ struct{} `type:"structure"`
 25749  
 25750  	// The name of the bucket to which the multipart upload was initiated. Does
 25751  	// not return the access point ARN or access point alias if used.
 25752  	Bucket *string `type:"string"`
 25753  
 25754  	// If you specify a delimiter in the request, then the result returns each distinct
 25755  	// key prefix containing the delimiter in a CommonPrefixes element. The distinct
 25756  	// key prefixes are returned in the Prefix child element.
 25757  	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
 25758  
 25759  	// Contains the delimiter you specified in the request. If you don't specify
 25760  	// a delimiter in your request, this element is absent from the response.
 25761  	Delimiter *string `type:"string"`
 25762  
 25763  	// Encoding type used by Amazon S3 to encode object keys in the response.
 25764  	//
 25765  	// If you specify encoding-type request parameter, Amazon S3 includes this element
 25766  	// in the response, and returns encoded key name values in the following response
 25767  	// elements:
 25768  	//
 25769  	// Delimiter, KeyMarker, Prefix, NextKeyMarker, Key.
 25770  	EncodingType *string `type:"string" enum:"EncodingType"`
 25771  
 25772  	// Indicates whether the returned list of multipart uploads is truncated. A
 25773  	// value of true indicates that the list was truncated. The list can be truncated
 25774  	// if the number of multipart uploads exceeds the limit allowed or specified
 25775  	// by max uploads.
 25776  	IsTruncated *bool `type:"boolean"`
 25777  
 25778  	// The key at or after which the listing began.
 25779  	KeyMarker *string `type:"string"`
 25780  
 25781  	// Maximum number of multipart uploads that could have been included in the
 25782  	// response.
 25783  	MaxUploads *int64 `type:"integer"`
 25784  
 25785  	// When a list is truncated, this element specifies the value that should be
 25786  	// used for the key-marker request parameter in a subsequent request.
 25787  	NextKeyMarker *string `type:"string"`
 25788  
 25789  	// When a list is truncated, this element specifies the value that should be
 25790  	// used for the upload-id-marker request parameter in a subsequent request.
 25791  	NextUploadIdMarker *string `type:"string"`
 25792  
 25793  	// When a prefix is provided in the request, this field contains the specified
 25794  	// prefix. The result contains only keys starting with the specified prefix.
 25795  	Prefix *string `type:"string"`
 25796  
 25797  	// Upload ID after which listing began.
 25798  	UploadIdMarker *string `type:"string"`
 25799  
 25800  	// Container for elements related to a particular multipart upload. A response
 25801  	// can contain zero or more Upload elements.
 25802  	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
 25803  }
 25804  
 25805  // String returns the string representation.
 25806  //
 25807  // API parameter values that are decorated as "sensitive" in the API will not
 25808  // be included in the string output. The member name will be present, but the
 25809  // value will be replaced with "sensitive".
 25810  func (s ListMultipartUploadsOutput) String() string {
 25811  	return awsutil.Prettify(s)
 25812  }
 25813  
 25814  // GoString returns the string representation.
 25815  //
 25816  // API parameter values that are decorated as "sensitive" in the API will not
 25817  // be included in the string output. The member name will be present, but the
 25818  // value will be replaced with "sensitive".
 25819  func (s ListMultipartUploadsOutput) GoString() string {
 25820  	return s.String()
 25821  }
 25822  
 25823  // SetBucket sets the Bucket field's value.
 25824  func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
 25825  	s.Bucket = &v
 25826  	return s
 25827  }
 25828  
 25829  func (s *ListMultipartUploadsOutput) getBucket() (v string) {
 25830  	if s.Bucket == nil {
 25831  		return v
 25832  	}
 25833  	return *s.Bucket
 25834  }
 25835  
 25836  // SetCommonPrefixes sets the CommonPrefixes field's value.
 25837  func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
 25838  	s.CommonPrefixes = v
 25839  	return s
 25840  }
 25841  
 25842  // SetDelimiter sets the Delimiter field's value.
 25843  func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
 25844  	s.Delimiter = &v
 25845  	return s
 25846  }
 25847  
 25848  // SetEncodingType sets the EncodingType field's value.
 25849  func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
 25850  	s.EncodingType = &v
 25851  	return s
 25852  }
 25853  
 25854  // SetIsTruncated sets the IsTruncated field's value.
 25855  func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
 25856  	s.IsTruncated = &v
 25857  	return s
 25858  }
 25859  
 25860  // SetKeyMarker sets the KeyMarker field's value.
 25861  func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
 25862  	s.KeyMarker = &v
 25863  	return s
 25864  }
 25865  
 25866  // SetMaxUploads sets the MaxUploads field's value.
 25867  func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
 25868  	s.MaxUploads = &v
 25869  	return s
 25870  }
 25871  
 25872  // SetNextKeyMarker sets the NextKeyMarker field's value.
 25873  func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
 25874  	s.NextKeyMarker = &v
 25875  	return s
 25876  }
 25877  
 25878  // SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
 25879  func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
 25880  	s.NextUploadIdMarker = &v
 25881  	return s
 25882  }
 25883  
 25884  // SetPrefix sets the Prefix field's value.
 25885  func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
 25886  	s.Prefix = &v
 25887  	return s
 25888  }
 25889  
 25890  // SetUploadIdMarker sets the UploadIdMarker field's value.
 25891  func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
 25892  	s.UploadIdMarker = &v
 25893  	return s
 25894  }
 25895  
 25896  // SetUploads sets the Uploads field's value.
 25897  func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
 25898  	s.Uploads = v
 25899  	return s
 25900  }
 25901  
 25902  type ListObjectVersionsInput struct {
 25903  	_ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"`
 25904  
 25905  	// The bucket name that contains the objects.
 25906  	//
 25907  	// Bucket is a required field
 25908  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 25909  
 25910  	// A delimiter is a character that you specify to group keys. All keys that
 25911  	// contain the same string between the prefix and the first occurrence of the
 25912  	// delimiter are grouped under a single result element in CommonPrefixes. These
 25913  	// groups are counted as one result against the max-keys limitation. These keys
 25914  	// are not returned elsewhere in the response.
 25915  	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
 25916  
 25917  	// Requests Amazon S3 to encode the object keys in the response and specifies
 25918  	// the encoding method to use. An object key may contain any Unicode character;
 25919  	// however, XML 1.0 parser cannot parse some characters, such as characters
 25920  	// with an ASCII value from 0 to 10. For characters that are not supported in
 25921  	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
 25922  	// keys in the response.
 25923  	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
 25924  
 25925  	// The account ID of the expected bucket owner. If the bucket is owned by a
 25926  	// different account, the request will fail with an HTTP 403 (Access Denied)
 25927  	// error.
 25928  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 25929  
 25930  	// Specifies the key to start with when listing objects in a bucket.
 25931  	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
 25932  
 25933  	// Sets the maximum number of keys returned in the response. By default the
 25934  	// action returns up to 1,000 key names. The response might contain fewer keys
 25935  	// but will never contain more. If additional keys satisfy the search criteria,
 25936  	// but were not returned because max-keys was exceeded, the response contains
 25937  	// <isTruncated>true</isTruncated>. To return the additional keys, see key-marker
 25938  	// and version-id-marker.
 25939  	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
 25940  
 25941  	// Use this parameter to select only those keys that begin with the specified
 25942  	// prefix. You can use prefixes to separate a bucket into different groupings
 25943  	// of keys. (You can think of using prefix to make groups in the same way you'd
 25944  	// use a folder in a file system.) You can use prefix with delimiter to roll
 25945  	// up numerous objects into a single result under CommonPrefixes.
 25946  	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
 25947  
 25948  	// Specifies the object version you want to start listing from.
 25949  	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
 25950  }
 25951  
 25952  // String returns the string representation.
 25953  //
 25954  // API parameter values that are decorated as "sensitive" in the API will not
 25955  // be included in the string output. The member name will be present, but the
 25956  // value will be replaced with "sensitive".
 25957  func (s ListObjectVersionsInput) String() string {
 25958  	return awsutil.Prettify(s)
 25959  }
 25960  
 25961  // GoString returns the string representation.
 25962  //
 25963  // API parameter values that are decorated as "sensitive" in the API will not
 25964  // be included in the string output. The member name will be present, but the
 25965  // value will be replaced with "sensitive".
 25966  func (s ListObjectVersionsInput) GoString() string {
 25967  	return s.String()
 25968  }
 25969  
 25970  // Validate inspects the fields of the type to determine if they are valid.
 25971  func (s *ListObjectVersionsInput) Validate() error {
 25972  	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
 25973  	if s.Bucket == nil {
 25974  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 25975  	}
 25976  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 25977  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 25978  	}
 25979  
 25980  	if invalidParams.Len() > 0 {
 25981  		return invalidParams
 25982  	}
 25983  	return nil
 25984  }
 25985  
 25986  // SetBucket sets the Bucket field's value.
 25987  func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
 25988  	s.Bucket = &v
 25989  	return s
 25990  }
 25991  
 25992  func (s *ListObjectVersionsInput) getBucket() (v string) {
 25993  	if s.Bucket == nil {
 25994  		return v
 25995  	}
 25996  	return *s.Bucket
 25997  }
 25998  
 25999  // SetDelimiter sets the Delimiter field's value.
 26000  func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
 26001  	s.Delimiter = &v
 26002  	return s
 26003  }
 26004  
 26005  // SetEncodingType sets the EncodingType field's value.
 26006  func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
 26007  	s.EncodingType = &v
 26008  	return s
 26009  }
 26010  
 26011  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 26012  func (s *ListObjectVersionsInput) SetExpectedBucketOwner(v string) *ListObjectVersionsInput {
 26013  	s.ExpectedBucketOwner = &v
 26014  	return s
 26015  }
 26016  
 26017  // SetKeyMarker sets the KeyMarker field's value.
 26018  func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
 26019  	s.KeyMarker = &v
 26020  	return s
 26021  }
 26022  
 26023  // SetMaxKeys sets the MaxKeys field's value.
 26024  func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
 26025  	s.MaxKeys = &v
 26026  	return s
 26027  }
 26028  
 26029  // SetPrefix sets the Prefix field's value.
 26030  func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
 26031  	s.Prefix = &v
 26032  	return s
 26033  }
 26034  
 26035  // SetVersionIdMarker sets the VersionIdMarker field's value.
 26036  func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
 26037  	s.VersionIdMarker = &v
 26038  	return s
 26039  }
 26040  
 26041  func (s *ListObjectVersionsInput) getEndpointARN() (arn.Resource, error) {
 26042  	if s.Bucket == nil {
 26043  		return nil, fmt.Errorf("member Bucket is nil")
 26044  	}
 26045  	return parseEndpointARN(*s.Bucket)
 26046  }
 26047  
 26048  func (s *ListObjectVersionsInput) hasEndpointARN() bool {
 26049  	if s.Bucket == nil {
 26050  		return false
 26051  	}
 26052  	return arn.IsARN(*s.Bucket)
 26053  }
 26054  
 26055  // updateArnableField updates the value of the input field that
 26056  // takes an ARN as an input. This method is useful to backfill
 26057  // the parsed resource name from ARN into the input member.
 26058  // It returns a pointer to a modified copy of input and an error.
 26059  // Note that original input is not modified.
 26060  func (s ListObjectVersionsInput) updateArnableField(v string) (interface{}, error) {
 26061  	if s.Bucket == nil {
 26062  		return nil, fmt.Errorf("member Bucket is nil")
 26063  	}
 26064  	s.Bucket = aws.String(v)
 26065  	return &s, nil
 26066  }
 26067  
 26068  type ListObjectVersionsOutput struct {
 26069  	_ struct{} `type:"structure"`
 26070  
 26071  	// All of the keys rolled up into a common prefix count as a single return when
 26072  	// calculating the number of returns.
 26073  	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
 26074  
 26075  	// Container for an object that is a delete marker.
 26076  	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
 26077  
 26078  	// The delimiter grouping the included keys. A delimiter is a character that
 26079  	// you specify to group keys. All keys that contain the same string between
 26080  	// the prefix and the first occurrence of the delimiter are grouped under a
 26081  	// single result element in CommonPrefixes. These groups are counted as one
 26082  	// result against the max-keys limitation. These keys are not returned elsewhere
 26083  	// in the response.
 26084  	Delimiter *string `type:"string"`
 26085  
 26086  	// Encoding type used by Amazon S3 to encode object key names in the XML response.
 26087  	//
 26088  	// If you specify encoding-type request parameter, Amazon S3 includes this element
 26089  	// in the response, and returns encoded key name values in the following response
 26090  	// elements:
 26091  	//
 26092  	// KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.
 26093  	EncodingType *string `type:"string" enum:"EncodingType"`
 26094  
 26095  	// A flag that indicates whether Amazon S3 returned all of the results that
 26096  	// satisfied the search criteria. If your results were truncated, you can make
 26097  	// a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
 26098  	// response parameters as a starting place in another request to return the
 26099  	// rest of the results.
 26100  	IsTruncated *bool `type:"boolean"`
 26101  
 26102  	// Marks the last key returned in a truncated response.
 26103  	KeyMarker *string `type:"string"`
 26104  
 26105  	// Specifies the maximum number of objects to return.
 26106  	MaxKeys *int64 `type:"integer"`
 26107  
 26108  	// The bucket name.
 26109  	Name *string `type:"string"`
 26110  
 26111  	// When the number of responses exceeds the value of MaxKeys, NextKeyMarker
 26112  	// specifies the first key not returned that satisfies the search criteria.
 26113  	// Use this value for the key-marker request parameter in a subsequent request.
 26114  	NextKeyMarker *string `type:"string"`
 26115  
 26116  	// When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker
 26117  	// specifies the first object version not returned that satisfies the search
 26118  	// criteria. Use this value for the version-id-marker request parameter in a
 26119  	// subsequent request.
 26120  	NextVersionIdMarker *string `type:"string"`
 26121  
 26122  	// Selects objects that start with the value supplied by this parameter.
 26123  	Prefix *string `type:"string"`
 26124  
 26125  	// Marks the last version of the key returned in a truncated response.
 26126  	VersionIdMarker *string `type:"string"`
 26127  
 26128  	// Container for version information.
 26129  	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
 26130  }
 26131  
 26132  // String returns the string representation.
 26133  //
 26134  // API parameter values that are decorated as "sensitive" in the API will not
 26135  // be included in the string output. The member name will be present, but the
 26136  // value will be replaced with "sensitive".
 26137  func (s ListObjectVersionsOutput) String() string {
 26138  	return awsutil.Prettify(s)
 26139  }
 26140  
 26141  // GoString returns the string representation.
 26142  //
 26143  // API parameter values that are decorated as "sensitive" in the API will not
 26144  // be included in the string output. The member name will be present, but the
 26145  // value will be replaced with "sensitive".
 26146  func (s ListObjectVersionsOutput) GoString() string {
 26147  	return s.String()
 26148  }
 26149  
 26150  // SetCommonPrefixes sets the CommonPrefixes field's value.
 26151  func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
 26152  	s.CommonPrefixes = v
 26153  	return s
 26154  }
 26155  
 26156  // SetDeleteMarkers sets the DeleteMarkers field's value.
 26157  func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
 26158  	s.DeleteMarkers = v
 26159  	return s
 26160  }
 26161  
 26162  // SetDelimiter sets the Delimiter field's value.
 26163  func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
 26164  	s.Delimiter = &v
 26165  	return s
 26166  }
 26167  
 26168  // SetEncodingType sets the EncodingType field's value.
 26169  func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
 26170  	s.EncodingType = &v
 26171  	return s
 26172  }
 26173  
 26174  // SetIsTruncated sets the IsTruncated field's value.
 26175  func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
 26176  	s.IsTruncated = &v
 26177  	return s
 26178  }
 26179  
 26180  // SetKeyMarker sets the KeyMarker field's value.
 26181  func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
 26182  	s.KeyMarker = &v
 26183  	return s
 26184  }
 26185  
 26186  // SetMaxKeys sets the MaxKeys field's value.
 26187  func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
 26188  	s.MaxKeys = &v
 26189  	return s
 26190  }
 26191  
 26192  // SetName sets the Name field's value.
 26193  func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
 26194  	s.Name = &v
 26195  	return s
 26196  }
 26197  
 26198  // SetNextKeyMarker sets the NextKeyMarker field's value.
 26199  func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
 26200  	s.NextKeyMarker = &v
 26201  	return s
 26202  }
 26203  
 26204  // SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
 26205  func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
 26206  	s.NextVersionIdMarker = &v
 26207  	return s
 26208  }
 26209  
 26210  // SetPrefix sets the Prefix field's value.
 26211  func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
 26212  	s.Prefix = &v
 26213  	return s
 26214  }
 26215  
 26216  // SetVersionIdMarker sets the VersionIdMarker field's value.
 26217  func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
 26218  	s.VersionIdMarker = &v
 26219  	return s
 26220  }
 26221  
 26222  // SetVersions sets the Versions field's value.
 26223  func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
 26224  	s.Versions = v
 26225  	return s
 26226  }
 26227  
 26228  type ListObjectsInput struct {
 26229  	_ struct{} `locationName:"ListObjectsRequest" type:"structure"`
 26230  
 26231  	// The name of the bucket containing the objects.
 26232  	//
 26233  	// When using this action with an access point, you must direct requests to
 26234  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 26235  	// When using this action with an access point through the Amazon Web Services
 26236  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 26237  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 26238  	// in the Amazon S3 User Guide.
 26239  	//
 26240  	// When using this action with Amazon S3 on Outposts, you must direct requests
 26241  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 26242  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 26243  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 26244  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 26245  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 26246  	// in the Amazon S3 User Guide.
 26247  	//
 26248  	// Bucket is a required field
 26249  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 26250  
 26251  	// A delimiter is a character you use to group keys.
 26252  	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
 26253  
 26254  	// Requests Amazon S3 to encode the object keys in the response and specifies
 26255  	// the encoding method to use. An object key may contain any Unicode character;
 26256  	// however, XML 1.0 parser cannot parse some characters, such as characters
 26257  	// with an ASCII value from 0 to 10. For characters that are not supported in
 26258  	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
 26259  	// keys in the response.
 26260  	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
 26261  
 26262  	// The account ID of the expected bucket owner. If the bucket is owned by a
 26263  	// different account, the request will fail with an HTTP 403 (Access Denied)
 26264  	// error.
 26265  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 26266  
 26267  	// Marker is where you want Amazon S3 to start listing from. Amazon S3 starts
 26268  	// listing after this specified key. Marker can be any key in the bucket.
 26269  	Marker *string `location:"querystring" locationName:"marker" type:"string"`
 26270  
 26271  	// Sets the maximum number of keys returned in the response. By default the
 26272  	// action returns up to 1,000 key names. The response might contain fewer keys
 26273  	// but will never contain more.
 26274  	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
 26275  
 26276  	// Limits the response to keys that begin with the specified prefix.
 26277  	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
 26278  
 26279  	// Confirms that the requester knows that she or he will be charged for the
 26280  	// list objects request. Bucket owners need not specify this parameter in their
 26281  	// requests.
 26282  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 26283  }
 26284  
 26285  // String returns the string representation.
 26286  //
 26287  // API parameter values that are decorated as "sensitive" in the API will not
 26288  // be included in the string output. The member name will be present, but the
 26289  // value will be replaced with "sensitive".
 26290  func (s ListObjectsInput) String() string {
 26291  	return awsutil.Prettify(s)
 26292  }
 26293  
 26294  // GoString returns the string representation.
 26295  //
 26296  // API parameter values that are decorated as "sensitive" in the API will not
 26297  // be included in the string output. The member name will be present, but the
 26298  // value will be replaced with "sensitive".
 26299  func (s ListObjectsInput) GoString() string {
 26300  	return s.String()
 26301  }
 26302  
 26303  // Validate inspects the fields of the type to determine if they are valid.
 26304  func (s *ListObjectsInput) Validate() error {
 26305  	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
 26306  	if s.Bucket == nil {
 26307  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 26308  	}
 26309  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 26310  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 26311  	}
 26312  
 26313  	if invalidParams.Len() > 0 {
 26314  		return invalidParams
 26315  	}
 26316  	return nil
 26317  }
 26318  
 26319  // SetBucket sets the Bucket field's value.
 26320  func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
 26321  	s.Bucket = &v
 26322  	return s
 26323  }
 26324  
 26325  func (s *ListObjectsInput) getBucket() (v string) {
 26326  	if s.Bucket == nil {
 26327  		return v
 26328  	}
 26329  	return *s.Bucket
 26330  }
 26331  
 26332  // SetDelimiter sets the Delimiter field's value.
 26333  func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
 26334  	s.Delimiter = &v
 26335  	return s
 26336  }
 26337  
 26338  // SetEncodingType sets the EncodingType field's value.
 26339  func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
 26340  	s.EncodingType = &v
 26341  	return s
 26342  }
 26343  
 26344  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 26345  func (s *ListObjectsInput) SetExpectedBucketOwner(v string) *ListObjectsInput {
 26346  	s.ExpectedBucketOwner = &v
 26347  	return s
 26348  }
 26349  
 26350  // SetMarker sets the Marker field's value.
 26351  func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
 26352  	s.Marker = &v
 26353  	return s
 26354  }
 26355  
 26356  // SetMaxKeys sets the MaxKeys field's value.
 26357  func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
 26358  	s.MaxKeys = &v
 26359  	return s
 26360  }
 26361  
 26362  // SetPrefix sets the Prefix field's value.
 26363  func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
 26364  	s.Prefix = &v
 26365  	return s
 26366  }
 26367  
 26368  // SetRequestPayer sets the RequestPayer field's value.
 26369  func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
 26370  	s.RequestPayer = &v
 26371  	return s
 26372  }
 26373  
 26374  func (s *ListObjectsInput) getEndpointARN() (arn.Resource, error) {
 26375  	if s.Bucket == nil {
 26376  		return nil, fmt.Errorf("member Bucket is nil")
 26377  	}
 26378  	return parseEndpointARN(*s.Bucket)
 26379  }
 26380  
 26381  func (s *ListObjectsInput) hasEndpointARN() bool {
 26382  	if s.Bucket == nil {
 26383  		return false
 26384  	}
 26385  	return arn.IsARN(*s.Bucket)
 26386  }
 26387  
 26388  // updateArnableField updates the value of the input field that
 26389  // takes an ARN as an input. This method is useful to backfill
 26390  // the parsed resource name from ARN into the input member.
 26391  // It returns a pointer to a modified copy of input and an error.
 26392  // Note that original input is not modified.
 26393  func (s ListObjectsInput) updateArnableField(v string) (interface{}, error) {
 26394  	if s.Bucket == nil {
 26395  		return nil, fmt.Errorf("member Bucket is nil")
 26396  	}
 26397  	s.Bucket = aws.String(v)
 26398  	return &s, nil
 26399  }
 26400  
 26401  type ListObjectsOutput struct {
 26402  	_ struct{} `type:"structure"`
 26403  
 26404  	// All of the keys (up to 1,000) rolled up in a common prefix count as a single
 26405  	// return when calculating the number of returns.
 26406  	//
 26407  	// A response can contain CommonPrefixes only if you specify a delimiter.
 26408  	//
 26409  	// CommonPrefixes contains all (if there are any) keys between Prefix and the
 26410  	// next occurrence of the string specified by the delimiter.
 26411  	//
 26412  	// CommonPrefixes lists keys that act like subdirectories in the directory specified
 26413  	// by Prefix.
 26414  	//
 26415  	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
 26416  	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
 26417  	// that roll up into a common prefix count as a single return when calculating
 26418  	// the number of returns.
 26419  	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
 26420  
 26421  	// Metadata about each object returned.
 26422  	Contents []*Object `type:"list" flattened:"true"`
 26423  
 26424  	// Causes keys that contain the same string between the prefix and the first
 26425  	// occurrence of the delimiter to be rolled up into a single result element
 26426  	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
 26427  	// in the response. Each rolled-up result counts as only one return against
 26428  	// the MaxKeys value.
 26429  	Delimiter *string `type:"string"`
 26430  
 26431  	// Encoding type used by Amazon S3 to encode object keys in the response.
 26432  	EncodingType *string `type:"string" enum:"EncodingType"`
 26433  
 26434  	// A flag that indicates whether Amazon S3 returned all of the results that
 26435  	// satisfied the search criteria.
 26436  	IsTruncated *bool `type:"boolean"`
 26437  
 26438  	// Indicates where in the bucket listing begins. Marker is included in the response
 26439  	// if it was sent with the request.
 26440  	Marker *string `type:"string"`
 26441  
 26442  	// The maximum number of keys returned in the response body.
 26443  	MaxKeys *int64 `type:"integer"`
 26444  
 26445  	// The bucket name.
 26446  	Name *string `type:"string"`
 26447  
 26448  	// When response is truncated (the IsTruncated element value in the response
 26449  	// is true), you can use the key name in this field as marker in the subsequent
 26450  	// request to get next set of objects. Amazon S3 lists objects in alphabetical
 26451  	// order Note: This element is returned only if you have delimiter request parameter
 26452  	// specified. If response does not include the NextMarker and it is truncated,
 26453  	// you can use the value of the last Key in the response as the marker in the
 26454  	// subsequent request to get the next set of object keys.
 26455  	NextMarker *string `type:"string"`
 26456  
 26457  	// Keys that begin with the indicated prefix.
 26458  	Prefix *string `type:"string"`
 26459  }
 26460  
 26461  // String returns the string representation.
 26462  //
 26463  // API parameter values that are decorated as "sensitive" in the API will not
 26464  // be included in the string output. The member name will be present, but the
 26465  // value will be replaced with "sensitive".
 26466  func (s ListObjectsOutput) String() string {
 26467  	return awsutil.Prettify(s)
 26468  }
 26469  
 26470  // GoString returns the string representation.
 26471  //
 26472  // API parameter values that are decorated as "sensitive" in the API will not
 26473  // be included in the string output. The member name will be present, but the
 26474  // value will be replaced with "sensitive".
 26475  func (s ListObjectsOutput) GoString() string {
 26476  	return s.String()
 26477  }
 26478  
 26479  // SetCommonPrefixes sets the CommonPrefixes field's value.
 26480  func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
 26481  	s.CommonPrefixes = v
 26482  	return s
 26483  }
 26484  
 26485  // SetContents sets the Contents field's value.
 26486  func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
 26487  	s.Contents = v
 26488  	return s
 26489  }
 26490  
 26491  // SetDelimiter sets the Delimiter field's value.
 26492  func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
 26493  	s.Delimiter = &v
 26494  	return s
 26495  }
 26496  
 26497  // SetEncodingType sets the EncodingType field's value.
 26498  func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
 26499  	s.EncodingType = &v
 26500  	return s
 26501  }
 26502  
 26503  // SetIsTruncated sets the IsTruncated field's value.
 26504  func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
 26505  	s.IsTruncated = &v
 26506  	return s
 26507  }
 26508  
 26509  // SetMarker sets the Marker field's value.
 26510  func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
 26511  	s.Marker = &v
 26512  	return s
 26513  }
 26514  
 26515  // SetMaxKeys sets the MaxKeys field's value.
 26516  func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
 26517  	s.MaxKeys = &v
 26518  	return s
 26519  }
 26520  
 26521  // SetName sets the Name field's value.
 26522  func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
 26523  	s.Name = &v
 26524  	return s
 26525  }
 26526  
 26527  // SetNextMarker sets the NextMarker field's value.
 26528  func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
 26529  	s.NextMarker = &v
 26530  	return s
 26531  }
 26532  
 26533  // SetPrefix sets the Prefix field's value.
 26534  func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
 26535  	s.Prefix = &v
 26536  	return s
 26537  }
 26538  
 26539  type ListObjectsV2Input struct {
 26540  	_ struct{} `locationName:"ListObjectsV2Request" type:"structure"`
 26541  
 26542  	// Bucket name to list.
 26543  	//
 26544  	// When using this action with an access point, you must direct requests to
 26545  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 26546  	// When using this action with an access point through the Amazon Web Services
 26547  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 26548  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 26549  	// in the Amazon S3 User Guide.
 26550  	//
 26551  	// When using this action with Amazon S3 on Outposts, you must direct requests
 26552  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 26553  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 26554  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 26555  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 26556  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 26557  	// in the Amazon S3 User Guide.
 26558  	//
 26559  	// Bucket is a required field
 26560  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 26561  
 26562  	// ContinuationToken indicates Amazon S3 that the list is being continued on
 26563  	// this bucket with a token. ContinuationToken is obfuscated and is not a real
 26564  	// key.
 26565  	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
 26566  
 26567  	// A delimiter is a character you use to group keys.
 26568  	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
 26569  
 26570  	// Encoding type used by Amazon S3 to encode object keys in the response.
 26571  	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
 26572  
 26573  	// The account ID of the expected bucket owner. If the bucket is owned by a
 26574  	// different account, the request will fail with an HTTP 403 (Access Denied)
 26575  	// error.
 26576  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 26577  
 26578  	// The owner field is not present in listV2 by default, if you want to return
 26579  	// owner field with each key in the result then set the fetch owner field to
 26580  	// true.
 26581  	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
 26582  
 26583  	// Sets the maximum number of keys returned in the response. By default the
 26584  	// action returns up to 1,000 key names. The response might contain fewer keys
 26585  	// but will never contain more.
 26586  	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
 26587  
 26588  	// Limits the response to keys that begin with the specified prefix.
 26589  	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
 26590  
 26591  	// Confirms that the requester knows that she or he will be charged for the
 26592  	// list objects request in V2 style. Bucket owners need not specify this parameter
 26593  	// in their requests.
 26594  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 26595  
 26596  	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
 26597  	// listing after this specified key. StartAfter can be any key in the bucket.
 26598  	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
 26599  }
 26600  
 26601  // String returns the string representation.
 26602  //
 26603  // API parameter values that are decorated as "sensitive" in the API will not
 26604  // be included in the string output. The member name will be present, but the
 26605  // value will be replaced with "sensitive".
 26606  func (s ListObjectsV2Input) String() string {
 26607  	return awsutil.Prettify(s)
 26608  }
 26609  
 26610  // GoString returns the string representation.
 26611  //
 26612  // API parameter values that are decorated as "sensitive" in the API will not
 26613  // be included in the string output. The member name will be present, but the
 26614  // value will be replaced with "sensitive".
 26615  func (s ListObjectsV2Input) GoString() string {
 26616  	return s.String()
 26617  }
 26618  
 26619  // Validate inspects the fields of the type to determine if they are valid.
 26620  func (s *ListObjectsV2Input) Validate() error {
 26621  	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
 26622  	if s.Bucket == nil {
 26623  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 26624  	}
 26625  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 26626  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 26627  	}
 26628  
 26629  	if invalidParams.Len() > 0 {
 26630  		return invalidParams
 26631  	}
 26632  	return nil
 26633  }
 26634  
 26635  // SetBucket sets the Bucket field's value.
 26636  func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
 26637  	s.Bucket = &v
 26638  	return s
 26639  }
 26640  
 26641  func (s *ListObjectsV2Input) getBucket() (v string) {
 26642  	if s.Bucket == nil {
 26643  		return v
 26644  	}
 26645  	return *s.Bucket
 26646  }
 26647  
 26648  // SetContinuationToken sets the ContinuationToken field's value.
 26649  func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
 26650  	s.ContinuationToken = &v
 26651  	return s
 26652  }
 26653  
 26654  // SetDelimiter sets the Delimiter field's value.
 26655  func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
 26656  	s.Delimiter = &v
 26657  	return s
 26658  }
 26659  
 26660  // SetEncodingType sets the EncodingType field's value.
 26661  func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
 26662  	s.EncodingType = &v
 26663  	return s
 26664  }
 26665  
 26666  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 26667  func (s *ListObjectsV2Input) SetExpectedBucketOwner(v string) *ListObjectsV2Input {
 26668  	s.ExpectedBucketOwner = &v
 26669  	return s
 26670  }
 26671  
 26672  // SetFetchOwner sets the FetchOwner field's value.
 26673  func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
 26674  	s.FetchOwner = &v
 26675  	return s
 26676  }
 26677  
 26678  // SetMaxKeys sets the MaxKeys field's value.
 26679  func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
 26680  	s.MaxKeys = &v
 26681  	return s
 26682  }
 26683  
 26684  // SetPrefix sets the Prefix field's value.
 26685  func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
 26686  	s.Prefix = &v
 26687  	return s
 26688  }
 26689  
 26690  // SetRequestPayer sets the RequestPayer field's value.
 26691  func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
 26692  	s.RequestPayer = &v
 26693  	return s
 26694  }
 26695  
 26696  // SetStartAfter sets the StartAfter field's value.
 26697  func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
 26698  	s.StartAfter = &v
 26699  	return s
 26700  }
 26701  
 26702  func (s *ListObjectsV2Input) getEndpointARN() (arn.Resource, error) {
 26703  	if s.Bucket == nil {
 26704  		return nil, fmt.Errorf("member Bucket is nil")
 26705  	}
 26706  	return parseEndpointARN(*s.Bucket)
 26707  }
 26708  
 26709  func (s *ListObjectsV2Input) hasEndpointARN() bool {
 26710  	if s.Bucket == nil {
 26711  		return false
 26712  	}
 26713  	return arn.IsARN(*s.Bucket)
 26714  }
 26715  
 26716  // updateArnableField updates the value of the input field that
 26717  // takes an ARN as an input. This method is useful to backfill
 26718  // the parsed resource name from ARN into the input member.
 26719  // It returns a pointer to a modified copy of input and an error.
 26720  // Note that original input is not modified.
 26721  func (s ListObjectsV2Input) updateArnableField(v string) (interface{}, error) {
 26722  	if s.Bucket == nil {
 26723  		return nil, fmt.Errorf("member Bucket is nil")
 26724  	}
 26725  	s.Bucket = aws.String(v)
 26726  	return &s, nil
 26727  }
 26728  
 26729  type ListObjectsV2Output struct {
 26730  	_ struct{} `type:"structure"`
 26731  
 26732  	// All of the keys (up to 1,000) rolled up into a common prefix count as a single
 26733  	// return when calculating the number of returns.
 26734  	//
 26735  	// A response can contain CommonPrefixes only if you specify a delimiter.
 26736  	//
 26737  	// CommonPrefixes contains all (if there are any) keys between Prefix and the
 26738  	// next occurrence of the string specified by a delimiter.
 26739  	//
 26740  	// CommonPrefixes lists keys that act like subdirectories in the directory specified
 26741  	// by Prefix.
 26742  	//
 26743  	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
 26744  	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
 26745  	// that roll up into a common prefix count as a single return when calculating
 26746  	// the number of returns.
 26747  	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
 26748  
 26749  	// Metadata about each object returned.
 26750  	Contents []*Object `type:"list" flattened:"true"`
 26751  
 26752  	// If ContinuationToken was sent with the request, it is included in the response.
 26753  	ContinuationToken *string `type:"string"`
 26754  
 26755  	// Causes keys that contain the same string between the prefix and the first
 26756  	// occurrence of the delimiter to be rolled up into a single result element
 26757  	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
 26758  	// in the response. Each rolled-up result counts as only one return against
 26759  	// the MaxKeys value.
 26760  	Delimiter *string `type:"string"`
 26761  
 26762  	// Encoding type used by Amazon S3 to encode object key names in the XML response.
 26763  	//
 26764  	// If you specify the encoding-type request parameter, Amazon S3 includes this
 26765  	// element in the response, and returns encoded key name values in the following
 26766  	// response elements:
 26767  	//
 26768  	// Delimiter, Prefix, Key, and StartAfter.
 26769  	EncodingType *string `type:"string" enum:"EncodingType"`
 26770  
 26771  	// Set to false if all of the results were returned. Set to true if more keys
 26772  	// are available to return. If the number of results exceeds that specified
 26773  	// by MaxKeys, all of the results might not be returned.
 26774  	IsTruncated *bool `type:"boolean"`
 26775  
 26776  	// KeyCount is the number of keys returned with this request. KeyCount will
 26777  	// always be less than or equals to MaxKeys field. Say you ask for 50 keys,
 26778  	// your result will include less than equals 50 keys
 26779  	KeyCount *int64 `type:"integer"`
 26780  
 26781  	// Sets the maximum number of keys returned in the response. By default the
 26782  	// action returns up to 1,000 key names. The response might contain fewer keys
 26783  	// but will never contain more.
 26784  	MaxKeys *int64 `type:"integer"`
 26785  
 26786  	// The bucket name.
 26787  	//
 26788  	// When using this action with an access point, you must direct requests to
 26789  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 26790  	// When using this action with an access point through the Amazon Web Services
 26791  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 26792  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 26793  	// in the Amazon S3 User Guide.
 26794  	//
 26795  	// When using this action with Amazon S3 on Outposts, you must direct requests
 26796  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 26797  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 26798  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 26799  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 26800  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 26801  	// in the Amazon S3 User Guide.
 26802  	Name *string `type:"string"`
 26803  
 26804  	// NextContinuationToken is sent when isTruncated is true, which means there
 26805  	// are more keys in the bucket that can be listed. The next list requests to
 26806  	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
 26807  	// is obfuscated and is not a real key
 26808  	NextContinuationToken *string `type:"string"`
 26809  
 26810  	// Keys that begin with the indicated prefix.
 26811  	Prefix *string `type:"string"`
 26812  
 26813  	// If StartAfter was sent with the request, it is included in the response.
 26814  	StartAfter *string `type:"string"`
 26815  }
 26816  
 26817  // String returns the string representation.
 26818  //
 26819  // API parameter values that are decorated as "sensitive" in the API will not
 26820  // be included in the string output. The member name will be present, but the
 26821  // value will be replaced with "sensitive".
 26822  func (s ListObjectsV2Output) String() string {
 26823  	return awsutil.Prettify(s)
 26824  }
 26825  
 26826  // GoString returns the string representation.
 26827  //
 26828  // API parameter values that are decorated as "sensitive" in the API will not
 26829  // be included in the string output. The member name will be present, but the
 26830  // value will be replaced with "sensitive".
 26831  func (s ListObjectsV2Output) GoString() string {
 26832  	return s.String()
 26833  }
 26834  
 26835  // SetCommonPrefixes sets the CommonPrefixes field's value.
 26836  func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
 26837  	s.CommonPrefixes = v
 26838  	return s
 26839  }
 26840  
 26841  // SetContents sets the Contents field's value.
 26842  func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
 26843  	s.Contents = v
 26844  	return s
 26845  }
 26846  
 26847  // SetContinuationToken sets the ContinuationToken field's value.
 26848  func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
 26849  	s.ContinuationToken = &v
 26850  	return s
 26851  }
 26852  
 26853  // SetDelimiter sets the Delimiter field's value.
 26854  func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
 26855  	s.Delimiter = &v
 26856  	return s
 26857  }
 26858  
 26859  // SetEncodingType sets the EncodingType field's value.
 26860  func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
 26861  	s.EncodingType = &v
 26862  	return s
 26863  }
 26864  
 26865  // SetIsTruncated sets the IsTruncated field's value.
 26866  func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
 26867  	s.IsTruncated = &v
 26868  	return s
 26869  }
 26870  
 26871  // SetKeyCount sets the KeyCount field's value.
 26872  func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
 26873  	s.KeyCount = &v
 26874  	return s
 26875  }
 26876  
 26877  // SetMaxKeys sets the MaxKeys field's value.
 26878  func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
 26879  	s.MaxKeys = &v
 26880  	return s
 26881  }
 26882  
 26883  // SetName sets the Name field's value.
 26884  func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
 26885  	s.Name = &v
 26886  	return s
 26887  }
 26888  
 26889  // SetNextContinuationToken sets the NextContinuationToken field's value.
 26890  func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
 26891  	s.NextContinuationToken = &v
 26892  	return s
 26893  }
 26894  
 26895  // SetPrefix sets the Prefix field's value.
 26896  func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
 26897  	s.Prefix = &v
 26898  	return s
 26899  }
 26900  
 26901  // SetStartAfter sets the StartAfter field's value.
 26902  func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
 26903  	s.StartAfter = &v
 26904  	return s
 26905  }
 26906  
 26907  type ListPartsInput struct {
 26908  	_ struct{} `locationName:"ListPartsRequest" type:"structure"`
 26909  
 26910  	// The name of the bucket to which the parts are being uploaded.
 26911  	//
 26912  	// When using this action with an access point, you must direct requests to
 26913  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 26914  	// When using this action with an access point through the Amazon Web Services
 26915  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 26916  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 26917  	// in the Amazon S3 User Guide.
 26918  	//
 26919  	// When using this action with Amazon S3 on Outposts, you must direct requests
 26920  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 26921  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 26922  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 26923  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 26924  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 26925  	// in the Amazon S3 User Guide.
 26926  	//
 26927  	// Bucket is a required field
 26928  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 26929  
 26930  	// The account ID of the expected bucket owner. If the bucket is owned by a
 26931  	// different account, the request will fail with an HTTP 403 (Access Denied)
 26932  	// error.
 26933  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 26934  
 26935  	// Object key for which the multipart upload was initiated.
 26936  	//
 26937  	// Key is a required field
 26938  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 26939  
 26940  	// Sets the maximum number of parts to return.
 26941  	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
 26942  
 26943  	// Specifies the part after which listing should begin. Only parts with higher
 26944  	// part numbers will be listed.
 26945  	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
 26946  
 26947  	// Confirms that the requester knows that they will be charged for the request.
 26948  	// Bucket owners need not specify this parameter in their requests. For information
 26949  	// about downloading objects from requester pays buckets, see Downloading Objects
 26950  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 26951  	// in the Amazon S3 User Guide.
 26952  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 26953  
 26954  	// Upload ID identifying the multipart upload whose parts are being listed.
 26955  	//
 26956  	// UploadId is a required field
 26957  	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
 26958  }
 26959  
 26960  // String returns the string representation.
 26961  //
 26962  // API parameter values that are decorated as "sensitive" in the API will not
 26963  // be included in the string output. The member name will be present, but the
 26964  // value will be replaced with "sensitive".
 26965  func (s ListPartsInput) String() string {
 26966  	return awsutil.Prettify(s)
 26967  }
 26968  
 26969  // GoString returns the string representation.
 26970  //
 26971  // API parameter values that are decorated as "sensitive" in the API will not
 26972  // be included in the string output. The member name will be present, but the
 26973  // value will be replaced with "sensitive".
 26974  func (s ListPartsInput) GoString() string {
 26975  	return s.String()
 26976  }
 26977  
 26978  // Validate inspects the fields of the type to determine if they are valid.
 26979  func (s *ListPartsInput) Validate() error {
 26980  	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
 26981  	if s.Bucket == nil {
 26982  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 26983  	}
 26984  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 26985  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 26986  	}
 26987  	if s.Key == nil {
 26988  		invalidParams.Add(request.NewErrParamRequired("Key"))
 26989  	}
 26990  	if s.Key != nil && len(*s.Key) < 1 {
 26991  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 26992  	}
 26993  	if s.UploadId == nil {
 26994  		invalidParams.Add(request.NewErrParamRequired("UploadId"))
 26995  	}
 26996  
 26997  	if invalidParams.Len() > 0 {
 26998  		return invalidParams
 26999  	}
 27000  	return nil
 27001  }
 27002  
 27003  // SetBucket sets the Bucket field's value.
 27004  func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
 27005  	s.Bucket = &v
 27006  	return s
 27007  }
 27008  
 27009  func (s *ListPartsInput) getBucket() (v string) {
 27010  	if s.Bucket == nil {
 27011  		return v
 27012  	}
 27013  	return *s.Bucket
 27014  }
 27015  
 27016  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 27017  func (s *ListPartsInput) SetExpectedBucketOwner(v string) *ListPartsInput {
 27018  	s.ExpectedBucketOwner = &v
 27019  	return s
 27020  }
 27021  
 27022  // SetKey sets the Key field's value.
 27023  func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
 27024  	s.Key = &v
 27025  	return s
 27026  }
 27027  
 27028  // SetMaxParts sets the MaxParts field's value.
 27029  func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
 27030  	s.MaxParts = &v
 27031  	return s
 27032  }
 27033  
 27034  // SetPartNumberMarker sets the PartNumberMarker field's value.
 27035  func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
 27036  	s.PartNumberMarker = &v
 27037  	return s
 27038  }
 27039  
 27040  // SetRequestPayer sets the RequestPayer field's value.
 27041  func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
 27042  	s.RequestPayer = &v
 27043  	return s
 27044  }
 27045  
 27046  // SetUploadId sets the UploadId field's value.
 27047  func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
 27048  	s.UploadId = &v
 27049  	return s
 27050  }
 27051  
 27052  func (s *ListPartsInput) getEndpointARN() (arn.Resource, error) {
 27053  	if s.Bucket == nil {
 27054  		return nil, fmt.Errorf("member Bucket is nil")
 27055  	}
 27056  	return parseEndpointARN(*s.Bucket)
 27057  }
 27058  
 27059  func (s *ListPartsInput) hasEndpointARN() bool {
 27060  	if s.Bucket == nil {
 27061  		return false
 27062  	}
 27063  	return arn.IsARN(*s.Bucket)
 27064  }
 27065  
 27066  // updateArnableField updates the value of the input field that
 27067  // takes an ARN as an input. This method is useful to backfill
 27068  // the parsed resource name from ARN into the input member.
 27069  // It returns a pointer to a modified copy of input and an error.
 27070  // Note that original input is not modified.
 27071  func (s ListPartsInput) updateArnableField(v string) (interface{}, error) {
 27072  	if s.Bucket == nil {
 27073  		return nil, fmt.Errorf("member Bucket is nil")
 27074  	}
 27075  	s.Bucket = aws.String(v)
 27076  	return &s, nil
 27077  }
 27078  
 27079  type ListPartsOutput struct {
 27080  	_ struct{} `type:"structure"`
 27081  
 27082  	// If the bucket has a lifecycle rule configured with an action to abort incomplete
 27083  	// multipart uploads and the prefix in the lifecycle rule matches the object
 27084  	// name in the request, then the response includes this header indicating when
 27085  	// the initiated multipart upload will become eligible for abort operation.
 27086  	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
 27087  	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
 27088  	//
 27089  	// The response will also include the x-amz-abort-rule-id header that will provide
 27090  	// the ID of the lifecycle configuration rule that defines this action.
 27091  	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
 27092  
 27093  	// This header is returned along with the x-amz-abort-date header. It identifies
 27094  	// applicable lifecycle configuration rule that defines the action to abort
 27095  	// incomplete multipart uploads.
 27096  	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
 27097  
 27098  	// The name of the bucket to which the multipart upload was initiated. Does
 27099  	// not return the access point ARN or access point alias if used.
 27100  	Bucket *string `type:"string"`
 27101  
 27102  	// Container element that identifies who initiated the multipart upload. If
 27103  	// the initiator is an Amazon Web Services account, this element provides the
 27104  	// same information as the Owner element. If the initiator is an IAM User, this
 27105  	// element provides the user ARN and display name.
 27106  	Initiator *Initiator `type:"structure"`
 27107  
 27108  	// Indicates whether the returned list of parts is truncated. A true value indicates
 27109  	// that the list was truncated. A list can be truncated if the number of parts
 27110  	// exceeds the limit returned in the MaxParts element.
 27111  	IsTruncated *bool `type:"boolean"`
 27112  
 27113  	// Object key for which the multipart upload was initiated.
 27114  	Key *string `min:"1" type:"string"`
 27115  
 27116  	// Maximum number of parts that were allowed in the response.
 27117  	MaxParts *int64 `type:"integer"`
 27118  
 27119  	// When a list is truncated, this element specifies the last part in the list,
 27120  	// as well as the value to use for the part-number-marker request parameter
 27121  	// in a subsequent request.
 27122  	NextPartNumberMarker *int64 `type:"integer"`
 27123  
 27124  	// Container element that identifies the object owner, after the object is created.
 27125  	// If multipart upload is initiated by an IAM user, this element provides the
 27126  	// parent account ID and display name.
 27127  	Owner *Owner `type:"structure"`
 27128  
 27129  	// When a list is truncated, this element specifies the last part in the list,
 27130  	// as well as the value to use for the part-number-marker request parameter
 27131  	// in a subsequent request.
 27132  	PartNumberMarker *int64 `type:"integer"`
 27133  
 27134  	// Container for elements related to a particular part. A response can contain
 27135  	// zero or more Part elements.
 27136  	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
 27137  
 27138  	// If present, indicates that the requester was successfully charged for the
 27139  	// request.
 27140  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 27141  
 27142  	// Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
 27143  	// object.
 27144  	StorageClass *string `type:"string" enum:"StorageClass"`
 27145  
 27146  	// Upload ID identifying the multipart upload whose parts are being listed.
 27147  	UploadId *string `type:"string"`
 27148  }
 27149  
 27150  // String returns the string representation.
 27151  //
 27152  // API parameter values that are decorated as "sensitive" in the API will not
 27153  // be included in the string output. The member name will be present, but the
 27154  // value will be replaced with "sensitive".
 27155  func (s ListPartsOutput) String() string {
 27156  	return awsutil.Prettify(s)
 27157  }
 27158  
 27159  // GoString returns the string representation.
 27160  //
 27161  // API parameter values that are decorated as "sensitive" in the API will not
 27162  // be included in the string output. The member name will be present, but the
 27163  // value will be replaced with "sensitive".
 27164  func (s ListPartsOutput) GoString() string {
 27165  	return s.String()
 27166  }
 27167  
 27168  // SetAbortDate sets the AbortDate field's value.
 27169  func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
 27170  	s.AbortDate = &v
 27171  	return s
 27172  }
 27173  
 27174  // SetAbortRuleId sets the AbortRuleId field's value.
 27175  func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
 27176  	s.AbortRuleId = &v
 27177  	return s
 27178  }
 27179  
 27180  // SetBucket sets the Bucket field's value.
 27181  func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
 27182  	s.Bucket = &v
 27183  	return s
 27184  }
 27185  
 27186  func (s *ListPartsOutput) getBucket() (v string) {
 27187  	if s.Bucket == nil {
 27188  		return v
 27189  	}
 27190  	return *s.Bucket
 27191  }
 27192  
 27193  // SetInitiator sets the Initiator field's value.
 27194  func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
 27195  	s.Initiator = v
 27196  	return s
 27197  }
 27198  
 27199  // SetIsTruncated sets the IsTruncated field's value.
 27200  func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
 27201  	s.IsTruncated = &v
 27202  	return s
 27203  }
 27204  
 27205  // SetKey sets the Key field's value.
 27206  func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
 27207  	s.Key = &v
 27208  	return s
 27209  }
 27210  
 27211  // SetMaxParts sets the MaxParts field's value.
 27212  func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
 27213  	s.MaxParts = &v
 27214  	return s
 27215  }
 27216  
 27217  // SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
 27218  func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
 27219  	s.NextPartNumberMarker = &v
 27220  	return s
 27221  }
 27222  
 27223  // SetOwner sets the Owner field's value.
 27224  func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
 27225  	s.Owner = v
 27226  	return s
 27227  }
 27228  
 27229  // SetPartNumberMarker sets the PartNumberMarker field's value.
 27230  func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
 27231  	s.PartNumberMarker = &v
 27232  	return s
 27233  }
 27234  
 27235  // SetParts sets the Parts field's value.
 27236  func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
 27237  	s.Parts = v
 27238  	return s
 27239  }
 27240  
 27241  // SetRequestCharged sets the RequestCharged field's value.
 27242  func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
 27243  	s.RequestCharged = &v
 27244  	return s
 27245  }
 27246  
 27247  // SetStorageClass sets the StorageClass field's value.
 27248  func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
 27249  	s.StorageClass = &v
 27250  	return s
 27251  }
 27252  
 27253  // SetUploadId sets the UploadId field's value.
 27254  func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
 27255  	s.UploadId = &v
 27256  	return s
 27257  }
 27258  
 27259  // Describes an Amazon S3 location that will receive the results of the restore
 27260  // request.
 27261  type Location struct {
 27262  	_ struct{} `type:"structure"`
 27263  
 27264  	// A list of grants that control access to the staged results.
 27265  	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
 27266  
 27267  	// The name of the bucket where the restore results will be placed.
 27268  	//
 27269  	// BucketName is a required field
 27270  	BucketName *string `type:"string" required:"true"`
 27271  
 27272  	// The canned ACL to apply to the restore results.
 27273  	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
 27274  
 27275  	// Contains the type of server-side encryption used.
 27276  	Encryption *Encryption `type:"structure"`
 27277  
 27278  	// The prefix that is prepended to the restore results for this request.
 27279  	//
 27280  	// Prefix is a required field
 27281  	Prefix *string `type:"string" required:"true"`
 27282  
 27283  	// The class of storage used to store the restore results.
 27284  	StorageClass *string `type:"string" enum:"StorageClass"`
 27285  
 27286  	// The tag-set that is applied to the restore results.
 27287  	Tagging *Tagging `type:"structure"`
 27288  
 27289  	// A list of metadata to store with the restore results in S3.
 27290  	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
 27291  }
 27292  
 27293  // String returns the string representation.
 27294  //
 27295  // API parameter values that are decorated as "sensitive" in the API will not
 27296  // be included in the string output. The member name will be present, but the
 27297  // value will be replaced with "sensitive".
 27298  func (s Location) String() string {
 27299  	return awsutil.Prettify(s)
 27300  }
 27301  
 27302  // GoString returns the string representation.
 27303  //
 27304  // API parameter values that are decorated as "sensitive" in the API will not
 27305  // be included in the string output. The member name will be present, but the
 27306  // value will be replaced with "sensitive".
 27307  func (s Location) GoString() string {
 27308  	return s.String()
 27309  }
 27310  
 27311  // Validate inspects the fields of the type to determine if they are valid.
 27312  func (s *Location) Validate() error {
 27313  	invalidParams := request.ErrInvalidParams{Context: "Location"}
 27314  	if s.BucketName == nil {
 27315  		invalidParams.Add(request.NewErrParamRequired("BucketName"))
 27316  	}
 27317  	if s.Prefix == nil {
 27318  		invalidParams.Add(request.NewErrParamRequired("Prefix"))
 27319  	}
 27320  	if s.AccessControlList != nil {
 27321  		for i, v := range s.AccessControlList {
 27322  			if v == nil {
 27323  				continue
 27324  			}
 27325  			if err := v.Validate(); err != nil {
 27326  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
 27327  			}
 27328  		}
 27329  	}
 27330  	if s.Encryption != nil {
 27331  		if err := s.Encryption.Validate(); err != nil {
 27332  			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
 27333  		}
 27334  	}
 27335  	if s.Tagging != nil {
 27336  		if err := s.Tagging.Validate(); err != nil {
 27337  			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
 27338  		}
 27339  	}
 27340  
 27341  	if invalidParams.Len() > 0 {
 27342  		return invalidParams
 27343  	}
 27344  	return nil
 27345  }
 27346  
 27347  // SetAccessControlList sets the AccessControlList field's value.
 27348  func (s *Location) SetAccessControlList(v []*Grant) *Location {
 27349  	s.AccessControlList = v
 27350  	return s
 27351  }
 27352  
 27353  // SetBucketName sets the BucketName field's value.
 27354  func (s *Location) SetBucketName(v string) *Location {
 27355  	s.BucketName = &v
 27356  	return s
 27357  }
 27358  
 27359  // SetCannedACL sets the CannedACL field's value.
 27360  func (s *Location) SetCannedACL(v string) *Location {
 27361  	s.CannedACL = &v
 27362  	return s
 27363  }
 27364  
 27365  // SetEncryption sets the Encryption field's value.
 27366  func (s *Location) SetEncryption(v *Encryption) *Location {
 27367  	s.Encryption = v
 27368  	return s
 27369  }
 27370  
 27371  // SetPrefix sets the Prefix field's value.
 27372  func (s *Location) SetPrefix(v string) *Location {
 27373  	s.Prefix = &v
 27374  	return s
 27375  }
 27376  
 27377  // SetStorageClass sets the StorageClass field's value.
 27378  func (s *Location) SetStorageClass(v string) *Location {
 27379  	s.StorageClass = &v
 27380  	return s
 27381  }
 27382  
 27383  // SetTagging sets the Tagging field's value.
 27384  func (s *Location) SetTagging(v *Tagging) *Location {
 27385  	s.Tagging = v
 27386  	return s
 27387  }
 27388  
 27389  // SetUserMetadata sets the UserMetadata field's value.
 27390  func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
 27391  	s.UserMetadata = v
 27392  	return s
 27393  }
 27394  
 27395  // Describes where logs are stored and the prefix that Amazon S3 assigns to
 27396  // all log object keys for a bucket. For more information, see PUT Bucket logging
 27397  // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
 27398  // in the Amazon S3 API Reference.
 27399  type LoggingEnabled struct {
 27400  	_ struct{} `type:"structure"`
 27401  
 27402  	// Specifies the bucket where you want Amazon S3 to store server access logs.
 27403  	// You can have your logs delivered to any bucket that you own, including the
 27404  	// same bucket that is being logged. You can also configure multiple buckets
 27405  	// to deliver their logs to the same target bucket. In this case, you should
 27406  	// choose a different TargetPrefix for each source bucket so that the delivered
 27407  	// log files can be distinguished by key.
 27408  	//
 27409  	// TargetBucket is a required field
 27410  	TargetBucket *string `type:"string" required:"true"`
 27411  
 27412  	// Container for granting information.
 27413  	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
 27414  
 27415  	// A prefix for all log object keys. If you store log files from multiple Amazon
 27416  	// S3 buckets in a single bucket, you can use a prefix to distinguish which
 27417  	// log files came from which bucket.
 27418  	//
 27419  	// TargetPrefix is a required field
 27420  	TargetPrefix *string `type:"string" required:"true"`
 27421  }
 27422  
 27423  // String returns the string representation.
 27424  //
 27425  // API parameter values that are decorated as "sensitive" in the API will not
 27426  // be included in the string output. The member name will be present, but the
 27427  // value will be replaced with "sensitive".
 27428  func (s LoggingEnabled) String() string {
 27429  	return awsutil.Prettify(s)
 27430  }
 27431  
 27432  // GoString returns the string representation.
 27433  //
 27434  // API parameter values that are decorated as "sensitive" in the API will not
 27435  // be included in the string output. The member name will be present, but the
 27436  // value will be replaced with "sensitive".
 27437  func (s LoggingEnabled) GoString() string {
 27438  	return s.String()
 27439  }
 27440  
 27441  // Validate inspects the fields of the type to determine if they are valid.
 27442  func (s *LoggingEnabled) Validate() error {
 27443  	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
 27444  	if s.TargetBucket == nil {
 27445  		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
 27446  	}
 27447  	if s.TargetPrefix == nil {
 27448  		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
 27449  	}
 27450  	if s.TargetGrants != nil {
 27451  		for i, v := range s.TargetGrants {
 27452  			if v == nil {
 27453  				continue
 27454  			}
 27455  			if err := v.Validate(); err != nil {
 27456  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
 27457  			}
 27458  		}
 27459  	}
 27460  
 27461  	if invalidParams.Len() > 0 {
 27462  		return invalidParams
 27463  	}
 27464  	return nil
 27465  }
 27466  
 27467  // SetTargetBucket sets the TargetBucket field's value.
 27468  func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
 27469  	s.TargetBucket = &v
 27470  	return s
 27471  }
 27472  
 27473  // SetTargetGrants sets the TargetGrants field's value.
 27474  func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
 27475  	s.TargetGrants = v
 27476  	return s
 27477  }
 27478  
 27479  // SetTargetPrefix sets the TargetPrefix field's value.
 27480  func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
 27481  	s.TargetPrefix = &v
 27482  	return s
 27483  }
 27484  
 27485  // A metadata key-value pair to store with an object.
 27486  type MetadataEntry struct {
 27487  	_ struct{} `type:"structure"`
 27488  
 27489  	// Name of the Object.
 27490  	Name *string `type:"string"`
 27491  
 27492  	// Value of the Object.
 27493  	Value *string `type:"string"`
 27494  }
 27495  
 27496  // String returns the string representation.
 27497  //
 27498  // API parameter values that are decorated as "sensitive" in the API will not
 27499  // be included in the string output. The member name will be present, but the
 27500  // value will be replaced with "sensitive".
 27501  func (s MetadataEntry) String() string {
 27502  	return awsutil.Prettify(s)
 27503  }
 27504  
 27505  // GoString returns the string representation.
 27506  //
 27507  // API parameter values that are decorated as "sensitive" in the API will not
 27508  // be included in the string output. The member name will be present, but the
 27509  // value will be replaced with "sensitive".
 27510  func (s MetadataEntry) GoString() string {
 27511  	return s.String()
 27512  }
 27513  
 27514  // SetName sets the Name field's value.
 27515  func (s *MetadataEntry) SetName(v string) *MetadataEntry {
 27516  	s.Name = &v
 27517  	return s
 27518  }
 27519  
 27520  // SetValue sets the Value field's value.
 27521  func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
 27522  	s.Value = &v
 27523  	return s
 27524  }
 27525  
 27526  // A container specifying replication metrics-related settings enabling replication
 27527  // metrics and events.
 27528  type Metrics struct {
 27529  	_ struct{} `type:"structure"`
 27530  
 27531  	// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
 27532  	// event.
 27533  	EventThreshold *ReplicationTimeValue `type:"structure"`
 27534  
 27535  	// Specifies whether the replication metrics are enabled.
 27536  	//
 27537  	// Status is a required field
 27538  	Status *string `type:"string" required:"true" enum:"MetricsStatus"`
 27539  }
 27540  
 27541  // String returns the string representation.
 27542  //
 27543  // API parameter values that are decorated as "sensitive" in the API will not
 27544  // be included in the string output. The member name will be present, but the
 27545  // value will be replaced with "sensitive".
 27546  func (s Metrics) String() string {
 27547  	return awsutil.Prettify(s)
 27548  }
 27549  
 27550  // GoString returns the string representation.
 27551  //
 27552  // API parameter values that are decorated as "sensitive" in the API will not
 27553  // be included in the string output. The member name will be present, but the
 27554  // value will be replaced with "sensitive".
 27555  func (s Metrics) GoString() string {
 27556  	return s.String()
 27557  }
 27558  
 27559  // Validate inspects the fields of the type to determine if they are valid.
 27560  func (s *Metrics) Validate() error {
 27561  	invalidParams := request.ErrInvalidParams{Context: "Metrics"}
 27562  	if s.Status == nil {
 27563  		invalidParams.Add(request.NewErrParamRequired("Status"))
 27564  	}
 27565  
 27566  	if invalidParams.Len() > 0 {
 27567  		return invalidParams
 27568  	}
 27569  	return nil
 27570  }
 27571  
 27572  // SetEventThreshold sets the EventThreshold field's value.
 27573  func (s *Metrics) SetEventThreshold(v *ReplicationTimeValue) *Metrics {
 27574  	s.EventThreshold = v
 27575  	return s
 27576  }
 27577  
 27578  // SetStatus sets the Status field's value.
 27579  func (s *Metrics) SetStatus(v string) *Metrics {
 27580  	s.Status = &v
 27581  	return s
 27582  }
 27583  
 27584  // A conjunction (logical AND) of predicates, which is used in evaluating a
 27585  // metrics filter. The operator must have at least two predicates, and an object
 27586  // must match all of the predicates in order for the filter to apply.
 27587  type MetricsAndOperator struct {
 27588  	_ struct{} `type:"structure"`
 27589  
 27590  	// The access point ARN used when evaluating an AND predicate.
 27591  	AccessPointArn *string `type:"string"`
 27592  
 27593  	// The prefix used when evaluating an AND predicate.
 27594  	Prefix *string `type:"string"`
 27595  
 27596  	// The list of tags used when evaluating an AND predicate.
 27597  	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
 27598  }
 27599  
 27600  // String returns the string representation.
 27601  //
 27602  // API parameter values that are decorated as "sensitive" in the API will not
 27603  // be included in the string output. The member name will be present, but the
 27604  // value will be replaced with "sensitive".
 27605  func (s MetricsAndOperator) String() string {
 27606  	return awsutil.Prettify(s)
 27607  }
 27608  
 27609  // GoString returns the string representation.
 27610  //
 27611  // API parameter values that are decorated as "sensitive" in the API will not
 27612  // be included in the string output. The member name will be present, but the
 27613  // value will be replaced with "sensitive".
 27614  func (s MetricsAndOperator) GoString() string {
 27615  	return s.String()
 27616  }
 27617  
 27618  // Validate inspects the fields of the type to determine if they are valid.
 27619  func (s *MetricsAndOperator) Validate() error {
 27620  	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
 27621  	if s.Tags != nil {
 27622  		for i, v := range s.Tags {
 27623  			if v == nil {
 27624  				continue
 27625  			}
 27626  			if err := v.Validate(); err != nil {
 27627  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 27628  			}
 27629  		}
 27630  	}
 27631  
 27632  	if invalidParams.Len() > 0 {
 27633  		return invalidParams
 27634  	}
 27635  	return nil
 27636  }
 27637  
 27638  // SetAccessPointArn sets the AccessPointArn field's value.
 27639  func (s *MetricsAndOperator) SetAccessPointArn(v string) *MetricsAndOperator {
 27640  	s.AccessPointArn = &v
 27641  	return s
 27642  }
 27643  
 27644  // SetPrefix sets the Prefix field's value.
 27645  func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
 27646  	s.Prefix = &v
 27647  	return s
 27648  }
 27649  
 27650  // SetTags sets the Tags field's value.
 27651  func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
 27652  	s.Tags = v
 27653  	return s
 27654  }
 27655  
 27656  // Specifies a metrics configuration for the CloudWatch request metrics (specified
 27657  // by the metrics configuration ID) from an Amazon S3 bucket. If you're updating
 27658  // an existing metrics configuration, note that this is a full replacement of
 27659  // the existing metrics configuration. If you don't include the elements you
 27660  // want to keep, they are erased. For more information, see PutBucketMetricsConfiguration
 27661  // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).
 27662  type MetricsConfiguration struct {
 27663  	_ struct{} `type:"structure"`
 27664  
 27665  	// Specifies a metrics configuration filter. The metrics configuration will
 27666  	// only include objects that meet the filter's criteria. A filter must be a
 27667  	// prefix, an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
 27668  	Filter *MetricsFilter `type:"structure"`
 27669  
 27670  	// The ID used to identify the metrics configuration.
 27671  	//
 27672  	// Id is a required field
 27673  	Id *string `type:"string" required:"true"`
 27674  }
 27675  
 27676  // String returns the string representation.
 27677  //
 27678  // API parameter values that are decorated as "sensitive" in the API will not
 27679  // be included in the string output. The member name will be present, but the
 27680  // value will be replaced with "sensitive".
 27681  func (s MetricsConfiguration) String() string {
 27682  	return awsutil.Prettify(s)
 27683  }
 27684  
 27685  // GoString returns the string representation.
 27686  //
 27687  // API parameter values that are decorated as "sensitive" in the API will not
 27688  // be included in the string output. The member name will be present, but the
 27689  // value will be replaced with "sensitive".
 27690  func (s MetricsConfiguration) GoString() string {
 27691  	return s.String()
 27692  }
 27693  
 27694  // Validate inspects the fields of the type to determine if they are valid.
 27695  func (s *MetricsConfiguration) Validate() error {
 27696  	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
 27697  	if s.Id == nil {
 27698  		invalidParams.Add(request.NewErrParamRequired("Id"))
 27699  	}
 27700  	if s.Filter != nil {
 27701  		if err := s.Filter.Validate(); err != nil {
 27702  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 27703  		}
 27704  	}
 27705  
 27706  	if invalidParams.Len() > 0 {
 27707  		return invalidParams
 27708  	}
 27709  	return nil
 27710  }
 27711  
 27712  // SetFilter sets the Filter field's value.
 27713  func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
 27714  	s.Filter = v
 27715  	return s
 27716  }
 27717  
 27718  // SetId sets the Id field's value.
 27719  func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
 27720  	s.Id = &v
 27721  	return s
 27722  }
 27723  
 27724  // Specifies a metrics configuration filter. The metrics configuration only
 27725  // includes objects that meet the filter's criteria. A filter must be a prefix,
 27726  // an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
 27727  // For more information, see PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html).
 27728  type MetricsFilter struct {
 27729  	_ struct{} `type:"structure"`
 27730  
 27731  	// The access point ARN used when evaluating a metrics filter.
 27732  	AccessPointArn *string `type:"string"`
 27733  
 27734  	// A conjunction (logical AND) of predicates, which is used in evaluating a
 27735  	// metrics filter. The operator must have at least two predicates, and an object
 27736  	// must match all of the predicates in order for the filter to apply.
 27737  	And *MetricsAndOperator `type:"structure"`
 27738  
 27739  	// The prefix used when evaluating a metrics filter.
 27740  	Prefix *string `type:"string"`
 27741  
 27742  	// The tag used when evaluating a metrics filter.
 27743  	Tag *Tag `type:"structure"`
 27744  }
 27745  
 27746  // String returns the string representation.
 27747  //
 27748  // API parameter values that are decorated as "sensitive" in the API will not
 27749  // be included in the string output. The member name will be present, but the
 27750  // value will be replaced with "sensitive".
 27751  func (s MetricsFilter) String() string {
 27752  	return awsutil.Prettify(s)
 27753  }
 27754  
 27755  // GoString returns the string representation.
 27756  //
 27757  // API parameter values that are decorated as "sensitive" in the API will not
 27758  // be included in the string output. The member name will be present, but the
 27759  // value will be replaced with "sensitive".
 27760  func (s MetricsFilter) GoString() string {
 27761  	return s.String()
 27762  }
 27763  
 27764  // Validate inspects the fields of the type to determine if they are valid.
 27765  func (s *MetricsFilter) Validate() error {
 27766  	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
 27767  	if s.And != nil {
 27768  		if err := s.And.Validate(); err != nil {
 27769  			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
 27770  		}
 27771  	}
 27772  	if s.Tag != nil {
 27773  		if err := s.Tag.Validate(); err != nil {
 27774  			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
 27775  		}
 27776  	}
 27777  
 27778  	if invalidParams.Len() > 0 {
 27779  		return invalidParams
 27780  	}
 27781  	return nil
 27782  }
 27783  
 27784  // SetAccessPointArn sets the AccessPointArn field's value.
 27785  func (s *MetricsFilter) SetAccessPointArn(v string) *MetricsFilter {
 27786  	s.AccessPointArn = &v
 27787  	return s
 27788  }
 27789  
 27790  // SetAnd sets the And field's value.
 27791  func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
 27792  	s.And = v
 27793  	return s
 27794  }
 27795  
 27796  // SetPrefix sets the Prefix field's value.
 27797  func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
 27798  	s.Prefix = &v
 27799  	return s
 27800  }
 27801  
 27802  // SetTag sets the Tag field's value.
 27803  func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
 27804  	s.Tag = v
 27805  	return s
 27806  }
 27807  
 27808  // Container for the MultipartUpload for the Amazon S3 object.
 27809  type MultipartUpload struct {
 27810  	_ struct{} `type:"structure"`
 27811  
 27812  	// Date and time at which the multipart upload was initiated.
 27813  	Initiated *time.Time `type:"timestamp"`
 27814  
 27815  	// Identifies who initiated the multipart upload.
 27816  	Initiator *Initiator `type:"structure"`
 27817  
 27818  	// Key of the object for which the multipart upload was initiated.
 27819  	Key *string `min:"1" type:"string"`
 27820  
 27821  	// Specifies the owner of the object that is part of the multipart upload.
 27822  	Owner *Owner `type:"structure"`
 27823  
 27824  	// The class of storage used to store the object.
 27825  	StorageClass *string `type:"string" enum:"StorageClass"`
 27826  
 27827  	// Upload ID that identifies the multipart upload.
 27828  	UploadId *string `type:"string"`
 27829  }
 27830  
 27831  // String returns the string representation.
 27832  //
 27833  // API parameter values that are decorated as "sensitive" in the API will not
 27834  // be included in the string output. The member name will be present, but the
 27835  // value will be replaced with "sensitive".
 27836  func (s MultipartUpload) String() string {
 27837  	return awsutil.Prettify(s)
 27838  }
 27839  
 27840  // GoString returns the string representation.
 27841  //
 27842  // API parameter values that are decorated as "sensitive" in the API will not
 27843  // be included in the string output. The member name will be present, but the
 27844  // value will be replaced with "sensitive".
 27845  func (s MultipartUpload) GoString() string {
 27846  	return s.String()
 27847  }
 27848  
 27849  // SetInitiated sets the Initiated field's value.
 27850  func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
 27851  	s.Initiated = &v
 27852  	return s
 27853  }
 27854  
 27855  // SetInitiator sets the Initiator field's value.
 27856  func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
 27857  	s.Initiator = v
 27858  	return s
 27859  }
 27860  
 27861  // SetKey sets the Key field's value.
 27862  func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
 27863  	s.Key = &v
 27864  	return s
 27865  }
 27866  
 27867  // SetOwner sets the Owner field's value.
 27868  func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
 27869  	s.Owner = v
 27870  	return s
 27871  }
 27872  
 27873  // SetStorageClass sets the StorageClass field's value.
 27874  func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
 27875  	s.StorageClass = &v
 27876  	return s
 27877  }
 27878  
 27879  // SetUploadId sets the UploadId field's value.
 27880  func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
 27881  	s.UploadId = &v
 27882  	return s
 27883  }
 27884  
 27885  // Specifies when noncurrent object versions expire. Upon expiration, Amazon
 27886  // S3 permanently deletes the noncurrent object versions. You set this lifecycle
 27887  // configuration action on a bucket that has versioning enabled (or suspended)
 27888  // to request that Amazon S3 delete noncurrent object versions at a specific
 27889  // period in the object's lifetime.
 27890  type NoncurrentVersionExpiration struct {
 27891  	_ struct{} `type:"structure"`
 27892  
 27893  	// Specifies the number of days an object is noncurrent before Amazon S3 can
 27894  	// perform the associated action. For information about the noncurrent days
 27895  	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
 27896  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
 27897  	// in the Amazon S3 User Guide.
 27898  	NoncurrentDays *int64 `type:"integer"`
 27899  }
 27900  
 27901  // String returns the string representation.
 27902  //
 27903  // API parameter values that are decorated as "sensitive" in the API will not
 27904  // be included in the string output. The member name will be present, but the
 27905  // value will be replaced with "sensitive".
 27906  func (s NoncurrentVersionExpiration) String() string {
 27907  	return awsutil.Prettify(s)
 27908  }
 27909  
 27910  // GoString returns the string representation.
 27911  //
 27912  // API parameter values that are decorated as "sensitive" in the API will not
 27913  // be included in the string output. The member name will be present, but the
 27914  // value will be replaced with "sensitive".
 27915  func (s NoncurrentVersionExpiration) GoString() string {
 27916  	return s.String()
 27917  }
 27918  
 27919  // SetNoncurrentDays sets the NoncurrentDays field's value.
 27920  func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
 27921  	s.NoncurrentDays = &v
 27922  	return s
 27923  }
 27924  
 27925  // Container for the transition rule that describes when noncurrent objects
 27926  // transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
 27927  // or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
 27928  // is suspended), you can set this action to request that Amazon S3 transition
 27929  // noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
 27930  // GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
 27931  // lifetime.
 27932  type NoncurrentVersionTransition struct {
 27933  	_ struct{} `type:"structure"`
 27934  
 27935  	// Specifies the number of days an object is noncurrent before Amazon S3 can
 27936  	// perform the associated action. For information about the noncurrent days
 27937  	// calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent
 27938  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
 27939  	// in the Amazon S3 User Guide.
 27940  	NoncurrentDays *int64 `type:"integer"`
 27941  
 27942  	// The class of storage used to store the object.
 27943  	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
 27944  }
 27945  
 27946  // String returns the string representation.
 27947  //
 27948  // API parameter values that are decorated as "sensitive" in the API will not
 27949  // be included in the string output. The member name will be present, but the
 27950  // value will be replaced with "sensitive".
 27951  func (s NoncurrentVersionTransition) String() string {
 27952  	return awsutil.Prettify(s)
 27953  }
 27954  
 27955  // GoString returns the string representation.
 27956  //
 27957  // API parameter values that are decorated as "sensitive" in the API will not
 27958  // be included in the string output. The member name will be present, but the
 27959  // value will be replaced with "sensitive".
 27960  func (s NoncurrentVersionTransition) GoString() string {
 27961  	return s.String()
 27962  }
 27963  
 27964  // SetNoncurrentDays sets the NoncurrentDays field's value.
 27965  func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
 27966  	s.NoncurrentDays = &v
 27967  	return s
 27968  }
 27969  
 27970  // SetStorageClass sets the StorageClass field's value.
 27971  func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
 27972  	s.StorageClass = &v
 27973  	return s
 27974  }
 27975  
 27976  // A container for specifying the notification configuration of the bucket.
 27977  // If this element is empty, notifications are turned off for the bucket.
 27978  type NotificationConfiguration struct {
 27979  	_ struct{} `type:"structure"`
 27980  
 27981  	// Describes the Lambda functions to invoke and the events for which to invoke
 27982  	// them.
 27983  	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
 27984  
 27985  	// The Amazon Simple Queue Service queues to publish messages to and the events
 27986  	// for which to publish messages.
 27987  	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
 27988  
 27989  	// The topic to which notifications are sent and the events for which notifications
 27990  	// are generated.
 27991  	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
 27992  }
 27993  
 27994  // String returns the string representation.
 27995  //
 27996  // API parameter values that are decorated as "sensitive" in the API will not
 27997  // be included in the string output. The member name will be present, but the
 27998  // value will be replaced with "sensitive".
 27999  func (s NotificationConfiguration) String() string {
 28000  	return awsutil.Prettify(s)
 28001  }
 28002  
 28003  // GoString returns the string representation.
 28004  //
 28005  // API parameter values that are decorated as "sensitive" in the API will not
 28006  // be included in the string output. The member name will be present, but the
 28007  // value will be replaced with "sensitive".
 28008  func (s NotificationConfiguration) GoString() string {
 28009  	return s.String()
 28010  }
 28011  
 28012  // Validate inspects the fields of the type to determine if they are valid.
 28013  func (s *NotificationConfiguration) Validate() error {
 28014  	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
 28015  	if s.LambdaFunctionConfigurations != nil {
 28016  		for i, v := range s.LambdaFunctionConfigurations {
 28017  			if v == nil {
 28018  				continue
 28019  			}
 28020  			if err := v.Validate(); err != nil {
 28021  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
 28022  			}
 28023  		}
 28024  	}
 28025  	if s.QueueConfigurations != nil {
 28026  		for i, v := range s.QueueConfigurations {
 28027  			if v == nil {
 28028  				continue
 28029  			}
 28030  			if err := v.Validate(); err != nil {
 28031  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
 28032  			}
 28033  		}
 28034  	}
 28035  	if s.TopicConfigurations != nil {
 28036  		for i, v := range s.TopicConfigurations {
 28037  			if v == nil {
 28038  				continue
 28039  			}
 28040  			if err := v.Validate(); err != nil {
 28041  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
 28042  			}
 28043  		}
 28044  	}
 28045  
 28046  	if invalidParams.Len() > 0 {
 28047  		return invalidParams
 28048  	}
 28049  	return nil
 28050  }
 28051  
 28052  // SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
 28053  func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
 28054  	s.LambdaFunctionConfigurations = v
 28055  	return s
 28056  }
 28057  
 28058  // SetQueueConfigurations sets the QueueConfigurations field's value.
 28059  func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
 28060  	s.QueueConfigurations = v
 28061  	return s
 28062  }
 28063  
 28064  // SetTopicConfigurations sets the TopicConfigurations field's value.
 28065  func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
 28066  	s.TopicConfigurations = v
 28067  	return s
 28068  }
 28069  
 28070  type NotificationConfigurationDeprecated struct {
 28071  	_ struct{} `type:"structure"`
 28072  
 28073  	// Container for specifying the Lambda notification configuration.
 28074  	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
 28075  
 28076  	// This data type is deprecated. This data type specifies the configuration
 28077  	// for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue
 28078  	// when Amazon S3 detects specified events.
 28079  	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
 28080  
 28081  	// This data type is deprecated. A container for specifying the configuration
 28082  	// for publication of messages to an Amazon Simple Notification Service (Amazon
 28083  	// SNS) topic when Amazon S3 detects specified events.
 28084  	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
 28085  }
 28086  
 28087  // String returns the string representation.
 28088  //
 28089  // API parameter values that are decorated as "sensitive" in the API will not
 28090  // be included in the string output. The member name will be present, but the
 28091  // value will be replaced with "sensitive".
 28092  func (s NotificationConfigurationDeprecated) String() string {
 28093  	return awsutil.Prettify(s)
 28094  }
 28095  
 28096  // GoString returns the string representation.
 28097  //
 28098  // API parameter values that are decorated as "sensitive" in the API will not
 28099  // be included in the string output. The member name will be present, but the
 28100  // value will be replaced with "sensitive".
 28101  func (s NotificationConfigurationDeprecated) GoString() string {
 28102  	return s.String()
 28103  }
 28104  
 28105  // SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
 28106  func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
 28107  	s.CloudFunctionConfiguration = v
 28108  	return s
 28109  }
 28110  
 28111  // SetQueueConfiguration sets the QueueConfiguration field's value.
 28112  func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
 28113  	s.QueueConfiguration = v
 28114  	return s
 28115  }
 28116  
 28117  // SetTopicConfiguration sets the TopicConfiguration field's value.
 28118  func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
 28119  	s.TopicConfiguration = v
 28120  	return s
 28121  }
 28122  
 28123  // Specifies object key name filtering rules. For information about key name
 28124  // filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 28125  // in the Amazon S3 User Guide.
 28126  type NotificationConfigurationFilter struct {
 28127  	_ struct{} `type:"structure"`
 28128  
 28129  	// A container for object key name prefix and suffix filtering rules.
 28130  	Key *KeyFilter `locationName:"S3Key" type:"structure"`
 28131  }
 28132  
 28133  // String returns the string representation.
 28134  //
 28135  // API parameter values that are decorated as "sensitive" in the API will not
 28136  // be included in the string output. The member name will be present, but the
 28137  // value will be replaced with "sensitive".
 28138  func (s NotificationConfigurationFilter) String() string {
 28139  	return awsutil.Prettify(s)
 28140  }
 28141  
 28142  // GoString returns the string representation.
 28143  //
 28144  // API parameter values that are decorated as "sensitive" in the API will not
 28145  // be included in the string output. The member name will be present, but the
 28146  // value will be replaced with "sensitive".
 28147  func (s NotificationConfigurationFilter) GoString() string {
 28148  	return s.String()
 28149  }
 28150  
 28151  // SetKey sets the Key field's value.
 28152  func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
 28153  	s.Key = v
 28154  	return s
 28155  }
 28156  
 28157  // An object consists of data and its descriptive metadata.
 28158  type Object struct {
 28159  	_ struct{} `type:"structure"`
 28160  
 28161  	// The entity tag is a hash of the object. The ETag reflects changes only to
 28162  	// the contents of an object, not its metadata. The ETag may or may not be an
 28163  	// MD5 digest of the object data. Whether or not it is depends on how the object
 28164  	// was created and how it is encrypted as described below:
 28165  	//
 28166  	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
 28167  	//    through the Amazon Web Services Management Console, and are encrypted
 28168  	//    by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object
 28169  	//    data.
 28170  	//
 28171  	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
 28172  	//    through the Amazon Web Services Management Console, and are encrypted
 28173  	//    by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object
 28174  	//    data.
 28175  	//
 28176  	//    * If an object is created by either the Multipart Upload or Part Copy
 28177  	//    operation, the ETag is not an MD5 digest, regardless of the method of
 28178  	//    encryption.
 28179  	ETag *string `type:"string"`
 28180  
 28181  	// The name that you assign to an object. You use the object key to retrieve
 28182  	// the object.
 28183  	Key *string `min:"1" type:"string"`
 28184  
 28185  	// Creation date of the object.
 28186  	LastModified *time.Time `type:"timestamp"`
 28187  
 28188  	// The owner of the object
 28189  	Owner *Owner `type:"structure"`
 28190  
 28191  	// Size in bytes of the object
 28192  	Size *int64 `type:"integer"`
 28193  
 28194  	// The class of storage used to store the object.
 28195  	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
 28196  }
 28197  
 28198  // String returns the string representation.
 28199  //
 28200  // API parameter values that are decorated as "sensitive" in the API will not
 28201  // be included in the string output. The member name will be present, but the
 28202  // value will be replaced with "sensitive".
 28203  func (s Object) String() string {
 28204  	return awsutil.Prettify(s)
 28205  }
 28206  
 28207  // GoString returns the string representation.
 28208  //
 28209  // API parameter values that are decorated as "sensitive" in the API will not
 28210  // be included in the string output. The member name will be present, but the
 28211  // value will be replaced with "sensitive".
 28212  func (s Object) GoString() string {
 28213  	return s.String()
 28214  }
 28215  
 28216  // SetETag sets the ETag field's value.
 28217  func (s *Object) SetETag(v string) *Object {
 28218  	s.ETag = &v
 28219  	return s
 28220  }
 28221  
 28222  // SetKey sets the Key field's value.
 28223  func (s *Object) SetKey(v string) *Object {
 28224  	s.Key = &v
 28225  	return s
 28226  }
 28227  
 28228  // SetLastModified sets the LastModified field's value.
 28229  func (s *Object) SetLastModified(v time.Time) *Object {
 28230  	s.LastModified = &v
 28231  	return s
 28232  }
 28233  
 28234  // SetOwner sets the Owner field's value.
 28235  func (s *Object) SetOwner(v *Owner) *Object {
 28236  	s.Owner = v
 28237  	return s
 28238  }
 28239  
 28240  // SetSize sets the Size field's value.
 28241  func (s *Object) SetSize(v int64) *Object {
 28242  	s.Size = &v
 28243  	return s
 28244  }
 28245  
 28246  // SetStorageClass sets the StorageClass field's value.
 28247  func (s *Object) SetStorageClass(v string) *Object {
 28248  	s.StorageClass = &v
 28249  	return s
 28250  }
 28251  
 28252  // Object Identifier is unique value to identify objects.
 28253  type ObjectIdentifier struct {
 28254  	_ struct{} `type:"structure"`
 28255  
 28256  	// Key name of the object.
 28257  	//
 28258  	// Replacement must be made for object keys containing special characters (such
 28259  	// as carriage returns) when using XML requests. For more information, see XML
 28260  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 28261  	//
 28262  	// Key is a required field
 28263  	Key *string `min:"1" type:"string" required:"true"`
 28264  
 28265  	// VersionId for the specific version of the object to delete.
 28266  	VersionId *string `type:"string"`
 28267  }
 28268  
 28269  // String returns the string representation.
 28270  //
 28271  // API parameter values that are decorated as "sensitive" in the API will not
 28272  // be included in the string output. The member name will be present, but the
 28273  // value will be replaced with "sensitive".
 28274  func (s ObjectIdentifier) String() string {
 28275  	return awsutil.Prettify(s)
 28276  }
 28277  
 28278  // GoString returns the string representation.
 28279  //
 28280  // API parameter values that are decorated as "sensitive" in the API will not
 28281  // be included in the string output. The member name will be present, but the
 28282  // value will be replaced with "sensitive".
 28283  func (s ObjectIdentifier) GoString() string {
 28284  	return s.String()
 28285  }
 28286  
 28287  // Validate inspects the fields of the type to determine if they are valid.
 28288  func (s *ObjectIdentifier) Validate() error {
 28289  	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
 28290  	if s.Key == nil {
 28291  		invalidParams.Add(request.NewErrParamRequired("Key"))
 28292  	}
 28293  	if s.Key != nil && len(*s.Key) < 1 {
 28294  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 28295  	}
 28296  
 28297  	if invalidParams.Len() > 0 {
 28298  		return invalidParams
 28299  	}
 28300  	return nil
 28301  }
 28302  
 28303  // SetKey sets the Key field's value.
 28304  func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
 28305  	s.Key = &v
 28306  	return s
 28307  }
 28308  
 28309  // SetVersionId sets the VersionId field's value.
 28310  func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
 28311  	s.VersionId = &v
 28312  	return s
 28313  }
 28314  
 28315  // The container element for Object Lock configuration parameters.
 28316  type ObjectLockConfiguration struct {
 28317  	_ struct{} `type:"structure"`
 28318  
 28319  	// Indicates whether this bucket has an Object Lock configuration enabled. Enable
 28320  	// ObjectLockEnabled when you apply ObjectLockConfiguration to a bucket.
 28321  	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
 28322  
 28323  	// Specifies the Object Lock rule for the specified object. Enable the this
 28324  	// rule when you apply ObjectLockConfiguration to a bucket. Bucket settings
 28325  	// require both a mode and a period. The period can be either Days or Years
 28326  	// but you must select one. You cannot specify Days and Years at the same time.
 28327  	Rule *ObjectLockRule `type:"structure"`
 28328  }
 28329  
 28330  // String returns the string representation.
 28331  //
 28332  // API parameter values that are decorated as "sensitive" in the API will not
 28333  // be included in the string output. The member name will be present, but the
 28334  // value will be replaced with "sensitive".
 28335  func (s ObjectLockConfiguration) String() string {
 28336  	return awsutil.Prettify(s)
 28337  }
 28338  
 28339  // GoString returns the string representation.
 28340  //
 28341  // API parameter values that are decorated as "sensitive" in the API will not
 28342  // be included in the string output. The member name will be present, but the
 28343  // value will be replaced with "sensitive".
 28344  func (s ObjectLockConfiguration) GoString() string {
 28345  	return s.String()
 28346  }
 28347  
 28348  // SetObjectLockEnabled sets the ObjectLockEnabled field's value.
 28349  func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
 28350  	s.ObjectLockEnabled = &v
 28351  	return s
 28352  }
 28353  
 28354  // SetRule sets the Rule field's value.
 28355  func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
 28356  	s.Rule = v
 28357  	return s
 28358  }
 28359  
 28360  // A Legal Hold configuration for an object.
 28361  type ObjectLockLegalHold struct {
 28362  	_ struct{} `type:"structure"`
 28363  
 28364  	// Indicates whether the specified object has a Legal Hold in place.
 28365  	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
 28366  }
 28367  
 28368  // String returns the string representation.
 28369  //
 28370  // API parameter values that are decorated as "sensitive" in the API will not
 28371  // be included in the string output. The member name will be present, but the
 28372  // value will be replaced with "sensitive".
 28373  func (s ObjectLockLegalHold) String() string {
 28374  	return awsutil.Prettify(s)
 28375  }
 28376  
 28377  // GoString returns the string representation.
 28378  //
 28379  // API parameter values that are decorated as "sensitive" in the API will not
 28380  // be included in the string output. The member name will be present, but the
 28381  // value will be replaced with "sensitive".
 28382  func (s ObjectLockLegalHold) GoString() string {
 28383  	return s.String()
 28384  }
 28385  
 28386  // SetStatus sets the Status field's value.
 28387  func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
 28388  	s.Status = &v
 28389  	return s
 28390  }
 28391  
 28392  // A Retention configuration for an object.
 28393  type ObjectLockRetention struct {
 28394  	_ struct{} `type:"structure"`
 28395  
 28396  	// Indicates the Retention mode for the specified object.
 28397  	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
 28398  
 28399  	// The date on which this Object Lock Retention will expire.
 28400  	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
 28401  }
 28402  
 28403  // String returns the string representation.
 28404  //
 28405  // API parameter values that are decorated as "sensitive" in the API will not
 28406  // be included in the string output. The member name will be present, but the
 28407  // value will be replaced with "sensitive".
 28408  func (s ObjectLockRetention) String() string {
 28409  	return awsutil.Prettify(s)
 28410  }
 28411  
 28412  // GoString returns the string representation.
 28413  //
 28414  // API parameter values that are decorated as "sensitive" in the API will not
 28415  // be included in the string output. The member name will be present, but the
 28416  // value will be replaced with "sensitive".
 28417  func (s ObjectLockRetention) GoString() string {
 28418  	return s.String()
 28419  }
 28420  
 28421  // SetMode sets the Mode field's value.
 28422  func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
 28423  	s.Mode = &v
 28424  	return s
 28425  }
 28426  
 28427  // SetRetainUntilDate sets the RetainUntilDate field's value.
 28428  func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
 28429  	s.RetainUntilDate = &v
 28430  	return s
 28431  }
 28432  
 28433  // The container element for an Object Lock rule.
 28434  type ObjectLockRule struct {
 28435  	_ struct{} `type:"structure"`
 28436  
 28437  	// The default Object Lock retention mode and period that you want to apply
 28438  	// to new objects placed in the specified bucket. Bucket settings require both
 28439  	// a mode and a period. The period can be either Days or Years but you must
 28440  	// select one. You cannot specify Days and Years at the same time.
 28441  	DefaultRetention *DefaultRetention `type:"structure"`
 28442  }
 28443  
 28444  // String returns the string representation.
 28445  //
 28446  // API parameter values that are decorated as "sensitive" in the API will not
 28447  // be included in the string output. The member name will be present, but the
 28448  // value will be replaced with "sensitive".
 28449  func (s ObjectLockRule) String() string {
 28450  	return awsutil.Prettify(s)
 28451  }
 28452  
 28453  // GoString returns the string representation.
 28454  //
 28455  // API parameter values that are decorated as "sensitive" in the API will not
 28456  // be included in the string output. The member name will be present, but the
 28457  // value will be replaced with "sensitive".
 28458  func (s ObjectLockRule) GoString() string {
 28459  	return s.String()
 28460  }
 28461  
 28462  // SetDefaultRetention sets the DefaultRetention field's value.
 28463  func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
 28464  	s.DefaultRetention = v
 28465  	return s
 28466  }
 28467  
 28468  // The version of an object.
 28469  type ObjectVersion struct {
 28470  	_ struct{} `type:"structure"`
 28471  
 28472  	// The entity tag is an MD5 hash of that version of the object.
 28473  	ETag *string `type:"string"`
 28474  
 28475  	// Specifies whether the object is (true) or is not (false) the latest version
 28476  	// of an object.
 28477  	IsLatest *bool `type:"boolean"`
 28478  
 28479  	// The object key.
 28480  	Key *string `min:"1" type:"string"`
 28481  
 28482  	// Date and time the object was last modified.
 28483  	LastModified *time.Time `type:"timestamp"`
 28484  
 28485  	// Specifies the owner of the object.
 28486  	Owner *Owner `type:"structure"`
 28487  
 28488  	// Size in bytes of the object.
 28489  	Size *int64 `type:"integer"`
 28490  
 28491  	// The class of storage used to store the object.
 28492  	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
 28493  
 28494  	// Version ID of an object.
 28495  	VersionId *string `type:"string"`
 28496  }
 28497  
 28498  // String returns the string representation.
 28499  //
 28500  // API parameter values that are decorated as "sensitive" in the API will not
 28501  // be included in the string output. The member name will be present, but the
 28502  // value will be replaced with "sensitive".
 28503  func (s ObjectVersion) String() string {
 28504  	return awsutil.Prettify(s)
 28505  }
 28506  
 28507  // GoString returns the string representation.
 28508  //
 28509  // API parameter values that are decorated as "sensitive" in the API will not
 28510  // be included in the string output. The member name will be present, but the
 28511  // value will be replaced with "sensitive".
 28512  func (s ObjectVersion) GoString() string {
 28513  	return s.String()
 28514  }
 28515  
 28516  // SetETag sets the ETag field's value.
 28517  func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
 28518  	s.ETag = &v
 28519  	return s
 28520  }
 28521  
 28522  // SetIsLatest sets the IsLatest field's value.
 28523  func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
 28524  	s.IsLatest = &v
 28525  	return s
 28526  }
 28527  
 28528  // SetKey sets the Key field's value.
 28529  func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
 28530  	s.Key = &v
 28531  	return s
 28532  }
 28533  
 28534  // SetLastModified sets the LastModified field's value.
 28535  func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
 28536  	s.LastModified = &v
 28537  	return s
 28538  }
 28539  
 28540  // SetOwner sets the Owner field's value.
 28541  func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
 28542  	s.Owner = v
 28543  	return s
 28544  }
 28545  
 28546  // SetSize sets the Size field's value.
 28547  func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
 28548  	s.Size = &v
 28549  	return s
 28550  }
 28551  
 28552  // SetStorageClass sets the StorageClass field's value.
 28553  func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
 28554  	s.StorageClass = &v
 28555  	return s
 28556  }
 28557  
 28558  // SetVersionId sets the VersionId field's value.
 28559  func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
 28560  	s.VersionId = &v
 28561  	return s
 28562  }
 28563  
 28564  // Describes the location where the restore job's output is stored.
 28565  type OutputLocation struct {
 28566  	_ struct{} `type:"structure"`
 28567  
 28568  	// Describes an S3 location that will receive the results of the restore request.
 28569  	S3 *Location `type:"structure"`
 28570  }
 28571  
 28572  // String returns the string representation.
 28573  //
 28574  // API parameter values that are decorated as "sensitive" in the API will not
 28575  // be included in the string output. The member name will be present, but the
 28576  // value will be replaced with "sensitive".
 28577  func (s OutputLocation) String() string {
 28578  	return awsutil.Prettify(s)
 28579  }
 28580  
 28581  // GoString returns the string representation.
 28582  //
 28583  // API parameter values that are decorated as "sensitive" in the API will not
 28584  // be included in the string output. The member name will be present, but the
 28585  // value will be replaced with "sensitive".
 28586  func (s OutputLocation) GoString() string {
 28587  	return s.String()
 28588  }
 28589  
 28590  // Validate inspects the fields of the type to determine if they are valid.
 28591  func (s *OutputLocation) Validate() error {
 28592  	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
 28593  	if s.S3 != nil {
 28594  		if err := s.S3.Validate(); err != nil {
 28595  			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
 28596  		}
 28597  	}
 28598  
 28599  	if invalidParams.Len() > 0 {
 28600  		return invalidParams
 28601  	}
 28602  	return nil
 28603  }
 28604  
 28605  // SetS3 sets the S3 field's value.
 28606  func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
 28607  	s.S3 = v
 28608  	return s
 28609  }
 28610  
 28611  // Describes how results of the Select job are serialized.
 28612  type OutputSerialization struct {
 28613  	_ struct{} `type:"structure"`
 28614  
 28615  	// Describes the serialization of CSV-encoded Select results.
 28616  	CSV *CSVOutput `type:"structure"`
 28617  
 28618  	// Specifies JSON as request's output serialization format.
 28619  	JSON *JSONOutput `type:"structure"`
 28620  }
 28621  
 28622  // String returns the string representation.
 28623  //
 28624  // API parameter values that are decorated as "sensitive" in the API will not
 28625  // be included in the string output. The member name will be present, but the
 28626  // value will be replaced with "sensitive".
 28627  func (s OutputSerialization) String() string {
 28628  	return awsutil.Prettify(s)
 28629  }
 28630  
 28631  // GoString returns the string representation.
 28632  //
 28633  // API parameter values that are decorated as "sensitive" in the API will not
 28634  // be included in the string output. The member name will be present, but the
 28635  // value will be replaced with "sensitive".
 28636  func (s OutputSerialization) GoString() string {
 28637  	return s.String()
 28638  }
 28639  
 28640  // SetCSV sets the CSV field's value.
 28641  func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
 28642  	s.CSV = v
 28643  	return s
 28644  }
 28645  
 28646  // SetJSON sets the JSON field's value.
 28647  func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
 28648  	s.JSON = v
 28649  	return s
 28650  }
 28651  
 28652  // Container for the owner's display name and ID.
 28653  type Owner struct {
 28654  	_ struct{} `type:"structure"`
 28655  
 28656  	// Container for the display name of the owner.
 28657  	DisplayName *string `type:"string"`
 28658  
 28659  	// Container for the ID of the owner.
 28660  	ID *string `type:"string"`
 28661  }
 28662  
 28663  // String returns the string representation.
 28664  //
 28665  // API parameter values that are decorated as "sensitive" in the API will not
 28666  // be included in the string output. The member name will be present, but the
 28667  // value will be replaced with "sensitive".
 28668  func (s Owner) String() string {
 28669  	return awsutil.Prettify(s)
 28670  }
 28671  
 28672  // GoString returns the string representation.
 28673  //
 28674  // API parameter values that are decorated as "sensitive" in the API will not
 28675  // be included in the string output. The member name will be present, but the
 28676  // value will be replaced with "sensitive".
 28677  func (s Owner) GoString() string {
 28678  	return s.String()
 28679  }
 28680  
 28681  // SetDisplayName sets the DisplayName field's value.
 28682  func (s *Owner) SetDisplayName(v string) *Owner {
 28683  	s.DisplayName = &v
 28684  	return s
 28685  }
 28686  
 28687  // SetID sets the ID field's value.
 28688  func (s *Owner) SetID(v string) *Owner {
 28689  	s.ID = &v
 28690  	return s
 28691  }
 28692  
 28693  // The container element for a bucket's ownership controls.
 28694  type OwnershipControls struct {
 28695  	_ struct{} `type:"structure"`
 28696  
 28697  	// The container element for an ownership control rule.
 28698  	//
 28699  	// Rules is a required field
 28700  	Rules []*OwnershipControlsRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
 28701  }
 28702  
 28703  // String returns the string representation.
 28704  //
 28705  // API parameter values that are decorated as "sensitive" in the API will not
 28706  // be included in the string output. The member name will be present, but the
 28707  // value will be replaced with "sensitive".
 28708  func (s OwnershipControls) String() string {
 28709  	return awsutil.Prettify(s)
 28710  }
 28711  
 28712  // GoString returns the string representation.
 28713  //
 28714  // API parameter values that are decorated as "sensitive" in the API will not
 28715  // be included in the string output. The member name will be present, but the
 28716  // value will be replaced with "sensitive".
 28717  func (s OwnershipControls) GoString() string {
 28718  	return s.String()
 28719  }
 28720  
 28721  // Validate inspects the fields of the type to determine if they are valid.
 28722  func (s *OwnershipControls) Validate() error {
 28723  	invalidParams := request.ErrInvalidParams{Context: "OwnershipControls"}
 28724  	if s.Rules == nil {
 28725  		invalidParams.Add(request.NewErrParamRequired("Rules"))
 28726  	}
 28727  	if s.Rules != nil {
 28728  		for i, v := range s.Rules {
 28729  			if v == nil {
 28730  				continue
 28731  			}
 28732  			if err := v.Validate(); err != nil {
 28733  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 28734  			}
 28735  		}
 28736  	}
 28737  
 28738  	if invalidParams.Len() > 0 {
 28739  		return invalidParams
 28740  	}
 28741  	return nil
 28742  }
 28743  
 28744  // SetRules sets the Rules field's value.
 28745  func (s *OwnershipControls) SetRules(v []*OwnershipControlsRule) *OwnershipControls {
 28746  	s.Rules = v
 28747  	return s
 28748  }
 28749  
 28750  // The container element for an ownership control rule.
 28751  type OwnershipControlsRule struct {
 28752  	_ struct{} `type:"structure"`
 28753  
 28754  	// The container element for object ownership for a bucket's ownership controls.
 28755  	//
 28756  	// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
 28757  	// the bucket owner if the objects are uploaded with the bucket-owner-full-control
 28758  	// canned ACL.
 28759  	//
 28760  	// ObjectWriter - The uploading account will own the object if the object is
 28761  	// uploaded with the bucket-owner-full-control canned ACL.
 28762  	//
 28763  	// ObjectOwnership is a required field
 28764  	ObjectOwnership *string `type:"string" required:"true" enum:"ObjectOwnership"`
 28765  }
 28766  
 28767  // String returns the string representation.
 28768  //
 28769  // API parameter values that are decorated as "sensitive" in the API will not
 28770  // be included in the string output. The member name will be present, but the
 28771  // value will be replaced with "sensitive".
 28772  func (s OwnershipControlsRule) String() string {
 28773  	return awsutil.Prettify(s)
 28774  }
 28775  
 28776  // GoString returns the string representation.
 28777  //
 28778  // API parameter values that are decorated as "sensitive" in the API will not
 28779  // be included in the string output. The member name will be present, but the
 28780  // value will be replaced with "sensitive".
 28781  func (s OwnershipControlsRule) GoString() string {
 28782  	return s.String()
 28783  }
 28784  
 28785  // Validate inspects the fields of the type to determine if they are valid.
 28786  func (s *OwnershipControlsRule) Validate() error {
 28787  	invalidParams := request.ErrInvalidParams{Context: "OwnershipControlsRule"}
 28788  	if s.ObjectOwnership == nil {
 28789  		invalidParams.Add(request.NewErrParamRequired("ObjectOwnership"))
 28790  	}
 28791  
 28792  	if invalidParams.Len() > 0 {
 28793  		return invalidParams
 28794  	}
 28795  	return nil
 28796  }
 28797  
 28798  // SetObjectOwnership sets the ObjectOwnership field's value.
 28799  func (s *OwnershipControlsRule) SetObjectOwnership(v string) *OwnershipControlsRule {
 28800  	s.ObjectOwnership = &v
 28801  	return s
 28802  }
 28803  
 28804  // Container for Parquet.
 28805  type ParquetInput struct {
 28806  	_ struct{} `type:"structure"`
 28807  }
 28808  
 28809  // String returns the string representation.
 28810  //
 28811  // API parameter values that are decorated as "sensitive" in the API will not
 28812  // be included in the string output. The member name will be present, but the
 28813  // value will be replaced with "sensitive".
 28814  func (s ParquetInput) String() string {
 28815  	return awsutil.Prettify(s)
 28816  }
 28817  
 28818  // GoString returns the string representation.
 28819  //
 28820  // API parameter values that are decorated as "sensitive" in the API will not
 28821  // be included in the string output. The member name will be present, but the
 28822  // value will be replaced with "sensitive".
 28823  func (s ParquetInput) GoString() string {
 28824  	return s.String()
 28825  }
 28826  
 28827  // Container for elements related to a part.
 28828  type Part struct {
 28829  	_ struct{} `type:"structure"`
 28830  
 28831  	// Entity tag returned when the part was uploaded.
 28832  	ETag *string `type:"string"`
 28833  
 28834  	// Date and time at which the part was uploaded.
 28835  	LastModified *time.Time `type:"timestamp"`
 28836  
 28837  	// Part number identifying the part. This is a positive integer between 1 and
 28838  	// 10,000.
 28839  	PartNumber *int64 `type:"integer"`
 28840  
 28841  	// Size in bytes of the uploaded part data.
 28842  	Size *int64 `type:"integer"`
 28843  }
 28844  
 28845  // String returns the string representation.
 28846  //
 28847  // API parameter values that are decorated as "sensitive" in the API will not
 28848  // be included in the string output. The member name will be present, but the
 28849  // value will be replaced with "sensitive".
 28850  func (s Part) String() string {
 28851  	return awsutil.Prettify(s)
 28852  }
 28853  
 28854  // GoString returns the string representation.
 28855  //
 28856  // API parameter values that are decorated as "sensitive" in the API will not
 28857  // be included in the string output. The member name will be present, but the
 28858  // value will be replaced with "sensitive".
 28859  func (s Part) GoString() string {
 28860  	return s.String()
 28861  }
 28862  
 28863  // SetETag sets the ETag field's value.
 28864  func (s *Part) SetETag(v string) *Part {
 28865  	s.ETag = &v
 28866  	return s
 28867  }
 28868  
 28869  // SetLastModified sets the LastModified field's value.
 28870  func (s *Part) SetLastModified(v time.Time) *Part {
 28871  	s.LastModified = &v
 28872  	return s
 28873  }
 28874  
 28875  // SetPartNumber sets the PartNumber field's value.
 28876  func (s *Part) SetPartNumber(v int64) *Part {
 28877  	s.PartNumber = &v
 28878  	return s
 28879  }
 28880  
 28881  // SetSize sets the Size field's value.
 28882  func (s *Part) SetSize(v int64) *Part {
 28883  	s.Size = &v
 28884  	return s
 28885  }
 28886  
 28887  // The container element for a bucket's policy status.
 28888  type PolicyStatus struct {
 28889  	_ struct{} `type:"structure"`
 28890  
 28891  	// The policy status for this bucket. TRUE indicates that this bucket is public.
 28892  	// FALSE indicates that the bucket is not public.
 28893  	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
 28894  }
 28895  
 28896  // String returns the string representation.
 28897  //
 28898  // API parameter values that are decorated as "sensitive" in the API will not
 28899  // be included in the string output. The member name will be present, but the
 28900  // value will be replaced with "sensitive".
 28901  func (s PolicyStatus) String() string {
 28902  	return awsutil.Prettify(s)
 28903  }
 28904  
 28905  // GoString returns the string representation.
 28906  //
 28907  // API parameter values that are decorated as "sensitive" in the API will not
 28908  // be included in the string output. The member name will be present, but the
 28909  // value will be replaced with "sensitive".
 28910  func (s PolicyStatus) GoString() string {
 28911  	return s.String()
 28912  }
 28913  
 28914  // SetIsPublic sets the IsPublic field's value.
 28915  func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
 28916  	s.IsPublic = &v
 28917  	return s
 28918  }
 28919  
 28920  // This data type contains information about progress of an operation.
 28921  type Progress struct {
 28922  	_ struct{} `type:"structure"`
 28923  
 28924  	// The current number of uncompressed object bytes processed.
 28925  	BytesProcessed *int64 `type:"long"`
 28926  
 28927  	// The current number of bytes of records payload data returned.
 28928  	BytesReturned *int64 `type:"long"`
 28929  
 28930  	// The current number of object bytes scanned.
 28931  	BytesScanned *int64 `type:"long"`
 28932  }
 28933  
 28934  // String returns the string representation.
 28935  //
 28936  // API parameter values that are decorated as "sensitive" in the API will not
 28937  // be included in the string output. The member name will be present, but the
 28938  // value will be replaced with "sensitive".
 28939  func (s Progress) String() string {
 28940  	return awsutil.Prettify(s)
 28941  }
 28942  
 28943  // GoString returns the string representation.
 28944  //
 28945  // API parameter values that are decorated as "sensitive" in the API will not
 28946  // be included in the string output. The member name will be present, but the
 28947  // value will be replaced with "sensitive".
 28948  func (s Progress) GoString() string {
 28949  	return s.String()
 28950  }
 28951  
 28952  // SetBytesProcessed sets the BytesProcessed field's value.
 28953  func (s *Progress) SetBytesProcessed(v int64) *Progress {
 28954  	s.BytesProcessed = &v
 28955  	return s
 28956  }
 28957  
 28958  // SetBytesReturned sets the BytesReturned field's value.
 28959  func (s *Progress) SetBytesReturned(v int64) *Progress {
 28960  	s.BytesReturned = &v
 28961  	return s
 28962  }
 28963  
 28964  // SetBytesScanned sets the BytesScanned field's value.
 28965  func (s *Progress) SetBytesScanned(v int64) *Progress {
 28966  	s.BytesScanned = &v
 28967  	return s
 28968  }
 28969  
 28970  // This data type contains information about the progress event of an operation.
 28971  type ProgressEvent struct {
 28972  	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
 28973  
 28974  	// The Progress event details.
 28975  	Details *Progress `locationName:"Details" type:"structure"`
 28976  }
 28977  
 28978  // String returns the string representation.
 28979  //
 28980  // API parameter values that are decorated as "sensitive" in the API will not
 28981  // be included in the string output. The member name will be present, but the
 28982  // value will be replaced with "sensitive".
 28983  func (s ProgressEvent) String() string {
 28984  	return awsutil.Prettify(s)
 28985  }
 28986  
 28987  // GoString returns the string representation.
 28988  //
 28989  // API parameter values that are decorated as "sensitive" in the API will not
 28990  // be included in the string output. The member name will be present, but the
 28991  // value will be replaced with "sensitive".
 28992  func (s ProgressEvent) GoString() string {
 28993  	return s.String()
 28994  }
 28995  
 28996  // SetDetails sets the Details field's value.
 28997  func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
 28998  	s.Details = v
 28999  	return s
 29000  }
 29001  
 29002  // The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
 29003  func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
 29004  
 29005  // UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
 29006  // This method is only used internally within the SDK's EventStream handling.
 29007  func (s *ProgressEvent) UnmarshalEvent(
 29008  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 29009  	msg eventstream.Message,
 29010  ) error {
 29011  	if err := payloadUnmarshaler.UnmarshalPayload(
 29012  		bytes.NewReader(msg.Payload), s,
 29013  	); err != nil {
 29014  		return err
 29015  	}
 29016  	return nil
 29017  }
 29018  
 29019  // MarshalEvent marshals the type into an stream event value. This method
 29020  // should only used internally within the SDK's EventStream handling.
 29021  func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
 29022  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
 29023  	var buf bytes.Buffer
 29024  	if err = pm.MarshalPayload(&buf, s); err != nil {
 29025  		return eventstream.Message{}, err
 29026  	}
 29027  	msg.Payload = buf.Bytes()
 29028  	return msg, err
 29029  }
 29030  
 29031  // The PublicAccessBlock configuration that you want to apply to this Amazon
 29032  // S3 bucket. You can enable the configuration options in any combination. For
 29033  // more information about when Amazon S3 considers a bucket or object public,
 29034  // see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status)
 29035  // in the Amazon S3 User Guide.
 29036  type PublicAccessBlockConfiguration struct {
 29037  	_ struct{} `type:"structure"`
 29038  
 29039  	// Specifies whether Amazon S3 should block public access control lists (ACLs)
 29040  	// for this bucket and objects in this bucket. Setting this element to TRUE
 29041  	// causes the following behavior:
 29042  	//
 29043  	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
 29044  	//    public.
 29045  	//
 29046  	//    * PUT Object calls fail if the request includes a public ACL.
 29047  	//
 29048  	//    * PUT Bucket calls fail if the request includes a public ACL.
 29049  	//
 29050  	// Enabling this setting doesn't affect existing policies or ACLs.
 29051  	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
 29052  
 29053  	// Specifies whether Amazon S3 should block public bucket policies for this
 29054  	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
 29055  	// PUT Bucket policy if the specified bucket policy allows public access.
 29056  	//
 29057  	// Enabling this setting doesn't affect existing bucket policies.
 29058  	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
 29059  
 29060  	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
 29061  	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
 29062  	// ignore all public ACLs on this bucket and objects in this bucket.
 29063  	//
 29064  	// Enabling this setting doesn't affect the persistence of any existing ACLs
 29065  	// and doesn't prevent new public ACLs from being set.
 29066  	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
 29067  
 29068  	// Specifies whether Amazon S3 should restrict public bucket policies for this
 29069  	// bucket. Setting this element to TRUE restricts access to this bucket to only
 29070  	// Amazon Web Service principals and authorized users within this account if
 29071  	// the bucket has a public policy.
 29072  	//
 29073  	// Enabling this setting doesn't affect previously stored bucket policies, except
 29074  	// that public and cross-account access within any public bucket policy, including
 29075  	// non-public delegation to specific accounts, is blocked.
 29076  	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
 29077  }
 29078  
 29079  // String returns the string representation.
 29080  //
 29081  // API parameter values that are decorated as "sensitive" in the API will not
 29082  // be included in the string output. The member name will be present, but the
 29083  // value will be replaced with "sensitive".
 29084  func (s PublicAccessBlockConfiguration) String() string {
 29085  	return awsutil.Prettify(s)
 29086  }
 29087  
 29088  // GoString returns the string representation.
 29089  //
 29090  // API parameter values that are decorated as "sensitive" in the API will not
 29091  // be included in the string output. The member name will be present, but the
 29092  // value will be replaced with "sensitive".
 29093  func (s PublicAccessBlockConfiguration) GoString() string {
 29094  	return s.String()
 29095  }
 29096  
 29097  // SetBlockPublicAcls sets the BlockPublicAcls field's value.
 29098  func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
 29099  	s.BlockPublicAcls = &v
 29100  	return s
 29101  }
 29102  
 29103  // SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
 29104  func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
 29105  	s.BlockPublicPolicy = &v
 29106  	return s
 29107  }
 29108  
 29109  // SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
 29110  func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
 29111  	s.IgnorePublicAcls = &v
 29112  	return s
 29113  }
 29114  
 29115  // SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
 29116  func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
 29117  	s.RestrictPublicBuckets = &v
 29118  	return s
 29119  }
 29120  
 29121  type PutBucketAccelerateConfigurationInput struct {
 29122  	_ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"`
 29123  
 29124  	// Container for setting the transfer acceleration state.
 29125  	//
 29126  	// AccelerateConfiguration is a required field
 29127  	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29128  
 29129  	// The name of the bucket for which the accelerate configuration is set.
 29130  	//
 29131  	// Bucket is a required field
 29132  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29133  
 29134  	// The account ID of the expected bucket owner. If the bucket is owned by a
 29135  	// different account, the request will fail with an HTTP 403 (Access Denied)
 29136  	// error.
 29137  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 29138  }
 29139  
 29140  // String returns the string representation.
 29141  //
 29142  // API parameter values that are decorated as "sensitive" in the API will not
 29143  // be included in the string output. The member name will be present, but the
 29144  // value will be replaced with "sensitive".
 29145  func (s PutBucketAccelerateConfigurationInput) String() string {
 29146  	return awsutil.Prettify(s)
 29147  }
 29148  
 29149  // GoString returns the string representation.
 29150  //
 29151  // API parameter values that are decorated as "sensitive" in the API will not
 29152  // be included in the string output. The member name will be present, but the
 29153  // value will be replaced with "sensitive".
 29154  func (s PutBucketAccelerateConfigurationInput) GoString() string {
 29155  	return s.String()
 29156  }
 29157  
 29158  // Validate inspects the fields of the type to determine if they are valid.
 29159  func (s *PutBucketAccelerateConfigurationInput) Validate() error {
 29160  	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
 29161  	if s.AccelerateConfiguration == nil {
 29162  		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
 29163  	}
 29164  	if s.Bucket == nil {
 29165  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29166  	}
 29167  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29168  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29169  	}
 29170  
 29171  	if invalidParams.Len() > 0 {
 29172  		return invalidParams
 29173  	}
 29174  	return nil
 29175  }
 29176  
 29177  // SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
 29178  func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
 29179  	s.AccelerateConfiguration = v
 29180  	return s
 29181  }
 29182  
 29183  // SetBucket sets the Bucket field's value.
 29184  func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
 29185  	s.Bucket = &v
 29186  	return s
 29187  }
 29188  
 29189  func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
 29190  	if s.Bucket == nil {
 29191  		return v
 29192  	}
 29193  	return *s.Bucket
 29194  }
 29195  
 29196  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 29197  func (s *PutBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAccelerateConfigurationInput {
 29198  	s.ExpectedBucketOwner = &v
 29199  	return s
 29200  }
 29201  
 29202  func (s *PutBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
 29203  	if s.Bucket == nil {
 29204  		return nil, fmt.Errorf("member Bucket is nil")
 29205  	}
 29206  	return parseEndpointARN(*s.Bucket)
 29207  }
 29208  
 29209  func (s *PutBucketAccelerateConfigurationInput) hasEndpointARN() bool {
 29210  	if s.Bucket == nil {
 29211  		return false
 29212  	}
 29213  	return arn.IsARN(*s.Bucket)
 29214  }
 29215  
 29216  // updateArnableField updates the value of the input field that
 29217  // takes an ARN as an input. This method is useful to backfill
 29218  // the parsed resource name from ARN into the input member.
 29219  // It returns a pointer to a modified copy of input and an error.
 29220  // Note that original input is not modified.
 29221  func (s PutBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
 29222  	if s.Bucket == nil {
 29223  		return nil, fmt.Errorf("member Bucket is nil")
 29224  	}
 29225  	s.Bucket = aws.String(v)
 29226  	return &s, nil
 29227  }
 29228  
 29229  type PutBucketAccelerateConfigurationOutput struct {
 29230  	_ struct{} `type:"structure"`
 29231  }
 29232  
 29233  // String returns the string representation.
 29234  //
 29235  // API parameter values that are decorated as "sensitive" in the API will not
 29236  // be included in the string output. The member name will be present, but the
 29237  // value will be replaced with "sensitive".
 29238  func (s PutBucketAccelerateConfigurationOutput) String() string {
 29239  	return awsutil.Prettify(s)
 29240  }
 29241  
 29242  // GoString returns the string representation.
 29243  //
 29244  // API parameter values that are decorated as "sensitive" in the API will not
 29245  // be included in the string output. The member name will be present, but the
 29246  // value will be replaced with "sensitive".
 29247  func (s PutBucketAccelerateConfigurationOutput) GoString() string {
 29248  	return s.String()
 29249  }
 29250  
 29251  type PutBucketAclInput struct {
 29252  	_ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"`
 29253  
 29254  	// The canned ACL to apply to the bucket.
 29255  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
 29256  
 29257  	// Contains the elements that set the ACL permissions for an object per grantee.
 29258  	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29259  
 29260  	// The bucket to which to apply the ACL.
 29261  	//
 29262  	// Bucket is a required field
 29263  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29264  
 29265  	// The account ID of the expected bucket owner. If the bucket is owned by a
 29266  	// different account, the request will fail with an HTTP 403 (Access Denied)
 29267  	// error.
 29268  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 29269  
 29270  	// Allows grantee the read, write, read ACP, and write ACP permissions on the
 29271  	// bucket.
 29272  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 29273  
 29274  	// Allows grantee to list the objects in the bucket.
 29275  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 29276  
 29277  	// Allows grantee to read the bucket ACL.
 29278  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 29279  
 29280  	// Allows grantee to create new objects in the bucket.
 29281  	//
 29282  	// For the bucket and object owners of existing objects, also allows deletions
 29283  	// and overwrites of those objects.
 29284  	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
 29285  
 29286  	// Allows grantee to write the ACL for the applicable bucket.
 29287  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 29288  }
 29289  
 29290  // String returns the string representation.
 29291  //
 29292  // API parameter values that are decorated as "sensitive" in the API will not
 29293  // be included in the string output. The member name will be present, but the
 29294  // value will be replaced with "sensitive".
 29295  func (s PutBucketAclInput) String() string {
 29296  	return awsutil.Prettify(s)
 29297  }
 29298  
 29299  // GoString returns the string representation.
 29300  //
 29301  // API parameter values that are decorated as "sensitive" in the API will not
 29302  // be included in the string output. The member name will be present, but the
 29303  // value will be replaced with "sensitive".
 29304  func (s PutBucketAclInput) GoString() string {
 29305  	return s.String()
 29306  }
 29307  
 29308  // Validate inspects the fields of the type to determine if they are valid.
 29309  func (s *PutBucketAclInput) Validate() error {
 29310  	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
 29311  	if s.Bucket == nil {
 29312  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29313  	}
 29314  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29315  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29316  	}
 29317  	if s.AccessControlPolicy != nil {
 29318  		if err := s.AccessControlPolicy.Validate(); err != nil {
 29319  			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
 29320  		}
 29321  	}
 29322  
 29323  	if invalidParams.Len() > 0 {
 29324  		return invalidParams
 29325  	}
 29326  	return nil
 29327  }
 29328  
 29329  // SetACL sets the ACL field's value.
 29330  func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
 29331  	s.ACL = &v
 29332  	return s
 29333  }
 29334  
 29335  // SetAccessControlPolicy sets the AccessControlPolicy field's value.
 29336  func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
 29337  	s.AccessControlPolicy = v
 29338  	return s
 29339  }
 29340  
 29341  // SetBucket sets the Bucket field's value.
 29342  func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
 29343  	s.Bucket = &v
 29344  	return s
 29345  }
 29346  
 29347  func (s *PutBucketAclInput) getBucket() (v string) {
 29348  	if s.Bucket == nil {
 29349  		return v
 29350  	}
 29351  	return *s.Bucket
 29352  }
 29353  
 29354  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 29355  func (s *PutBucketAclInput) SetExpectedBucketOwner(v string) *PutBucketAclInput {
 29356  	s.ExpectedBucketOwner = &v
 29357  	return s
 29358  }
 29359  
 29360  // SetGrantFullControl sets the GrantFullControl field's value.
 29361  func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
 29362  	s.GrantFullControl = &v
 29363  	return s
 29364  }
 29365  
 29366  // SetGrantRead sets the GrantRead field's value.
 29367  func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
 29368  	s.GrantRead = &v
 29369  	return s
 29370  }
 29371  
 29372  // SetGrantReadACP sets the GrantReadACP field's value.
 29373  func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
 29374  	s.GrantReadACP = &v
 29375  	return s
 29376  }
 29377  
 29378  // SetGrantWrite sets the GrantWrite field's value.
 29379  func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
 29380  	s.GrantWrite = &v
 29381  	return s
 29382  }
 29383  
 29384  // SetGrantWriteACP sets the GrantWriteACP field's value.
 29385  func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
 29386  	s.GrantWriteACP = &v
 29387  	return s
 29388  }
 29389  
 29390  func (s *PutBucketAclInput) getEndpointARN() (arn.Resource, error) {
 29391  	if s.Bucket == nil {
 29392  		return nil, fmt.Errorf("member Bucket is nil")
 29393  	}
 29394  	return parseEndpointARN(*s.Bucket)
 29395  }
 29396  
 29397  func (s *PutBucketAclInput) hasEndpointARN() bool {
 29398  	if s.Bucket == nil {
 29399  		return false
 29400  	}
 29401  	return arn.IsARN(*s.Bucket)
 29402  }
 29403  
 29404  // updateArnableField updates the value of the input field that
 29405  // takes an ARN as an input. This method is useful to backfill
 29406  // the parsed resource name from ARN into the input member.
 29407  // It returns a pointer to a modified copy of input and an error.
 29408  // Note that original input is not modified.
 29409  func (s PutBucketAclInput) updateArnableField(v string) (interface{}, error) {
 29410  	if s.Bucket == nil {
 29411  		return nil, fmt.Errorf("member Bucket is nil")
 29412  	}
 29413  	s.Bucket = aws.String(v)
 29414  	return &s, nil
 29415  }
 29416  
 29417  type PutBucketAclOutput struct {
 29418  	_ struct{} `type:"structure"`
 29419  }
 29420  
 29421  // String returns the string representation.
 29422  //
 29423  // API parameter values that are decorated as "sensitive" in the API will not
 29424  // be included in the string output. The member name will be present, but the
 29425  // value will be replaced with "sensitive".
 29426  func (s PutBucketAclOutput) String() string {
 29427  	return awsutil.Prettify(s)
 29428  }
 29429  
 29430  // GoString returns the string representation.
 29431  //
 29432  // API parameter values that are decorated as "sensitive" in the API will not
 29433  // be included in the string output. The member name will be present, but the
 29434  // value will be replaced with "sensitive".
 29435  func (s PutBucketAclOutput) GoString() string {
 29436  	return s.String()
 29437  }
 29438  
 29439  type PutBucketAnalyticsConfigurationInput struct {
 29440  	_ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"`
 29441  
 29442  	// The configuration and any analyses for the analytics filter.
 29443  	//
 29444  	// AnalyticsConfiguration is a required field
 29445  	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29446  
 29447  	// The name of the bucket to which an analytics configuration is stored.
 29448  	//
 29449  	// Bucket is a required field
 29450  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29451  
 29452  	// The account ID of the expected bucket owner. If the bucket is owned by a
 29453  	// different account, the request will fail with an HTTP 403 (Access Denied)
 29454  	// error.
 29455  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 29456  
 29457  	// The ID that identifies the analytics configuration.
 29458  	//
 29459  	// Id is a required field
 29460  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 29461  }
 29462  
 29463  // String returns the string representation.
 29464  //
 29465  // API parameter values that are decorated as "sensitive" in the API will not
 29466  // be included in the string output. The member name will be present, but the
 29467  // value will be replaced with "sensitive".
 29468  func (s PutBucketAnalyticsConfigurationInput) String() string {
 29469  	return awsutil.Prettify(s)
 29470  }
 29471  
 29472  // GoString returns the string representation.
 29473  //
 29474  // API parameter values that are decorated as "sensitive" in the API will not
 29475  // be included in the string output. The member name will be present, but the
 29476  // value will be replaced with "sensitive".
 29477  func (s PutBucketAnalyticsConfigurationInput) GoString() string {
 29478  	return s.String()
 29479  }
 29480  
 29481  // Validate inspects the fields of the type to determine if they are valid.
 29482  func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
 29483  	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
 29484  	if s.AnalyticsConfiguration == nil {
 29485  		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
 29486  	}
 29487  	if s.Bucket == nil {
 29488  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29489  	}
 29490  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29491  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29492  	}
 29493  	if s.Id == nil {
 29494  		invalidParams.Add(request.NewErrParamRequired("Id"))
 29495  	}
 29496  	if s.AnalyticsConfiguration != nil {
 29497  		if err := s.AnalyticsConfiguration.Validate(); err != nil {
 29498  			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
 29499  		}
 29500  	}
 29501  
 29502  	if invalidParams.Len() > 0 {
 29503  		return invalidParams
 29504  	}
 29505  	return nil
 29506  }
 29507  
 29508  // SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
 29509  func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
 29510  	s.AnalyticsConfiguration = v
 29511  	return s
 29512  }
 29513  
 29514  // SetBucket sets the Bucket field's value.
 29515  func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
 29516  	s.Bucket = &v
 29517  	return s
 29518  }
 29519  
 29520  func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
 29521  	if s.Bucket == nil {
 29522  		return v
 29523  	}
 29524  	return *s.Bucket
 29525  }
 29526  
 29527  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 29528  func (s *PutBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAnalyticsConfigurationInput {
 29529  	s.ExpectedBucketOwner = &v
 29530  	return s
 29531  }
 29532  
 29533  // SetId sets the Id field's value.
 29534  func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
 29535  	s.Id = &v
 29536  	return s
 29537  }
 29538  
 29539  func (s *PutBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 29540  	if s.Bucket == nil {
 29541  		return nil, fmt.Errorf("member Bucket is nil")
 29542  	}
 29543  	return parseEndpointARN(*s.Bucket)
 29544  }
 29545  
 29546  func (s *PutBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
 29547  	if s.Bucket == nil {
 29548  		return false
 29549  	}
 29550  	return arn.IsARN(*s.Bucket)
 29551  }
 29552  
 29553  // updateArnableField updates the value of the input field that
 29554  // takes an ARN as an input. This method is useful to backfill
 29555  // the parsed resource name from ARN into the input member.
 29556  // It returns a pointer to a modified copy of input and an error.
 29557  // Note that original input is not modified.
 29558  func (s PutBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 29559  	if s.Bucket == nil {
 29560  		return nil, fmt.Errorf("member Bucket is nil")
 29561  	}
 29562  	s.Bucket = aws.String(v)
 29563  	return &s, nil
 29564  }
 29565  
 29566  type PutBucketAnalyticsConfigurationOutput struct {
 29567  	_ struct{} `type:"structure"`
 29568  }
 29569  
 29570  // String returns the string representation.
 29571  //
 29572  // API parameter values that are decorated as "sensitive" in the API will not
 29573  // be included in the string output. The member name will be present, but the
 29574  // value will be replaced with "sensitive".
 29575  func (s PutBucketAnalyticsConfigurationOutput) String() string {
 29576  	return awsutil.Prettify(s)
 29577  }
 29578  
 29579  // GoString returns the string representation.
 29580  //
 29581  // API parameter values that are decorated as "sensitive" in the API will not
 29582  // be included in the string output. The member name will be present, but the
 29583  // value will be replaced with "sensitive".
 29584  func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
 29585  	return s.String()
 29586  }
 29587  
 29588  type PutBucketCorsInput struct {
 29589  	_ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"`
 29590  
 29591  	// Specifies the bucket impacted by the corsconfiguration.
 29592  	//
 29593  	// Bucket is a required field
 29594  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29595  
 29596  	// Describes the cross-origin access configuration for objects in an Amazon
 29597  	// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
 29598  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
 29599  	// S3 User Guide.
 29600  	//
 29601  	// CORSConfiguration is a required field
 29602  	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29603  
 29604  	// The account ID of the expected bucket owner. If the bucket is owned by a
 29605  	// different account, the request will fail with an HTTP 403 (Access Denied)
 29606  	// error.
 29607  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 29608  }
 29609  
 29610  // String returns the string representation.
 29611  //
 29612  // API parameter values that are decorated as "sensitive" in the API will not
 29613  // be included in the string output. The member name will be present, but the
 29614  // value will be replaced with "sensitive".
 29615  func (s PutBucketCorsInput) String() string {
 29616  	return awsutil.Prettify(s)
 29617  }
 29618  
 29619  // GoString returns the string representation.
 29620  //
 29621  // API parameter values that are decorated as "sensitive" in the API will not
 29622  // be included in the string output. The member name will be present, but the
 29623  // value will be replaced with "sensitive".
 29624  func (s PutBucketCorsInput) GoString() string {
 29625  	return s.String()
 29626  }
 29627  
 29628  // Validate inspects the fields of the type to determine if they are valid.
 29629  func (s *PutBucketCorsInput) Validate() error {
 29630  	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
 29631  	if s.Bucket == nil {
 29632  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29633  	}
 29634  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29635  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29636  	}
 29637  	if s.CORSConfiguration == nil {
 29638  		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
 29639  	}
 29640  	if s.CORSConfiguration != nil {
 29641  		if err := s.CORSConfiguration.Validate(); err != nil {
 29642  			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
 29643  		}
 29644  	}
 29645  
 29646  	if invalidParams.Len() > 0 {
 29647  		return invalidParams
 29648  	}
 29649  	return nil
 29650  }
 29651  
 29652  // SetBucket sets the Bucket field's value.
 29653  func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
 29654  	s.Bucket = &v
 29655  	return s
 29656  }
 29657  
 29658  func (s *PutBucketCorsInput) getBucket() (v string) {
 29659  	if s.Bucket == nil {
 29660  		return v
 29661  	}
 29662  	return *s.Bucket
 29663  }
 29664  
 29665  // SetCORSConfiguration sets the CORSConfiguration field's value.
 29666  func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
 29667  	s.CORSConfiguration = v
 29668  	return s
 29669  }
 29670  
 29671  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 29672  func (s *PutBucketCorsInput) SetExpectedBucketOwner(v string) *PutBucketCorsInput {
 29673  	s.ExpectedBucketOwner = &v
 29674  	return s
 29675  }
 29676  
 29677  func (s *PutBucketCorsInput) getEndpointARN() (arn.Resource, error) {
 29678  	if s.Bucket == nil {
 29679  		return nil, fmt.Errorf("member Bucket is nil")
 29680  	}
 29681  	return parseEndpointARN(*s.Bucket)
 29682  }
 29683  
 29684  func (s *PutBucketCorsInput) hasEndpointARN() bool {
 29685  	if s.Bucket == nil {
 29686  		return false
 29687  	}
 29688  	return arn.IsARN(*s.Bucket)
 29689  }
 29690  
 29691  // updateArnableField updates the value of the input field that
 29692  // takes an ARN as an input. This method is useful to backfill
 29693  // the parsed resource name from ARN into the input member.
 29694  // It returns a pointer to a modified copy of input and an error.
 29695  // Note that original input is not modified.
 29696  func (s PutBucketCorsInput) updateArnableField(v string) (interface{}, error) {
 29697  	if s.Bucket == nil {
 29698  		return nil, fmt.Errorf("member Bucket is nil")
 29699  	}
 29700  	s.Bucket = aws.String(v)
 29701  	return &s, nil
 29702  }
 29703  
 29704  type PutBucketCorsOutput struct {
 29705  	_ struct{} `type:"structure"`
 29706  }
 29707  
 29708  // String returns the string representation.
 29709  //
 29710  // API parameter values that are decorated as "sensitive" in the API will not
 29711  // be included in the string output. The member name will be present, but the
 29712  // value will be replaced with "sensitive".
 29713  func (s PutBucketCorsOutput) String() string {
 29714  	return awsutil.Prettify(s)
 29715  }
 29716  
 29717  // GoString returns the string representation.
 29718  //
 29719  // API parameter values that are decorated as "sensitive" in the API will not
 29720  // be included in the string output. The member name will be present, but the
 29721  // value will be replaced with "sensitive".
 29722  func (s PutBucketCorsOutput) GoString() string {
 29723  	return s.String()
 29724  }
 29725  
 29726  type PutBucketEncryptionInput struct {
 29727  	_ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"`
 29728  
 29729  	// Specifies default encryption for a bucket using server-side encryption with
 29730  	// Amazon S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). For information
 29731  	// about the Amazon S3 default encryption feature, see Amazon S3 Default Bucket
 29732  	// Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
 29733  	// in the Amazon S3 User Guide.
 29734  	//
 29735  	// Bucket is a required field
 29736  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29737  
 29738  	// The account ID of the expected bucket owner. If the bucket is owned by a
 29739  	// different account, the request will fail with an HTTP 403 (Access Denied)
 29740  	// error.
 29741  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 29742  
 29743  	// Specifies the default server-side-encryption configuration.
 29744  	//
 29745  	// ServerSideEncryptionConfiguration is a required field
 29746  	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29747  }
 29748  
 29749  // String returns the string representation.
 29750  //
 29751  // API parameter values that are decorated as "sensitive" in the API will not
 29752  // be included in the string output. The member name will be present, but the
 29753  // value will be replaced with "sensitive".
 29754  func (s PutBucketEncryptionInput) String() string {
 29755  	return awsutil.Prettify(s)
 29756  }
 29757  
 29758  // GoString returns the string representation.
 29759  //
 29760  // API parameter values that are decorated as "sensitive" in the API will not
 29761  // be included in the string output. The member name will be present, but the
 29762  // value will be replaced with "sensitive".
 29763  func (s PutBucketEncryptionInput) GoString() string {
 29764  	return s.String()
 29765  }
 29766  
 29767  // Validate inspects the fields of the type to determine if they are valid.
 29768  func (s *PutBucketEncryptionInput) Validate() error {
 29769  	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
 29770  	if s.Bucket == nil {
 29771  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29772  	}
 29773  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29774  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29775  	}
 29776  	if s.ServerSideEncryptionConfiguration == nil {
 29777  		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
 29778  	}
 29779  	if s.ServerSideEncryptionConfiguration != nil {
 29780  		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
 29781  			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
 29782  		}
 29783  	}
 29784  
 29785  	if invalidParams.Len() > 0 {
 29786  		return invalidParams
 29787  	}
 29788  	return nil
 29789  }
 29790  
 29791  // SetBucket sets the Bucket field's value.
 29792  func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
 29793  	s.Bucket = &v
 29794  	return s
 29795  }
 29796  
 29797  func (s *PutBucketEncryptionInput) getBucket() (v string) {
 29798  	if s.Bucket == nil {
 29799  		return v
 29800  	}
 29801  	return *s.Bucket
 29802  }
 29803  
 29804  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 29805  func (s *PutBucketEncryptionInput) SetExpectedBucketOwner(v string) *PutBucketEncryptionInput {
 29806  	s.ExpectedBucketOwner = &v
 29807  	return s
 29808  }
 29809  
 29810  // SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
 29811  func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
 29812  	s.ServerSideEncryptionConfiguration = v
 29813  	return s
 29814  }
 29815  
 29816  func (s *PutBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
 29817  	if s.Bucket == nil {
 29818  		return nil, fmt.Errorf("member Bucket is nil")
 29819  	}
 29820  	return parseEndpointARN(*s.Bucket)
 29821  }
 29822  
 29823  func (s *PutBucketEncryptionInput) hasEndpointARN() bool {
 29824  	if s.Bucket == nil {
 29825  		return false
 29826  	}
 29827  	return arn.IsARN(*s.Bucket)
 29828  }
 29829  
 29830  // updateArnableField updates the value of the input field that
 29831  // takes an ARN as an input. This method is useful to backfill
 29832  // the parsed resource name from ARN into the input member.
 29833  // It returns a pointer to a modified copy of input and an error.
 29834  // Note that original input is not modified.
 29835  func (s PutBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
 29836  	if s.Bucket == nil {
 29837  		return nil, fmt.Errorf("member Bucket is nil")
 29838  	}
 29839  	s.Bucket = aws.String(v)
 29840  	return &s, nil
 29841  }
 29842  
 29843  type PutBucketEncryptionOutput struct {
 29844  	_ struct{} `type:"structure"`
 29845  }
 29846  
 29847  // String returns the string representation.
 29848  //
 29849  // API parameter values that are decorated as "sensitive" in the API will not
 29850  // be included in the string output. The member name will be present, but the
 29851  // value will be replaced with "sensitive".
 29852  func (s PutBucketEncryptionOutput) String() string {
 29853  	return awsutil.Prettify(s)
 29854  }
 29855  
 29856  // GoString returns the string representation.
 29857  //
 29858  // API parameter values that are decorated as "sensitive" in the API will not
 29859  // be included in the string output. The member name will be present, but the
 29860  // value will be replaced with "sensitive".
 29861  func (s PutBucketEncryptionOutput) GoString() string {
 29862  	return s.String()
 29863  }
 29864  
 29865  type PutBucketIntelligentTieringConfigurationInput struct {
 29866  	_ struct{} `locationName:"PutBucketIntelligentTieringConfigurationRequest" type:"structure" payload:"IntelligentTieringConfiguration"`
 29867  
 29868  	// The name of the Amazon S3 bucket whose configuration you want to modify or
 29869  	// retrieve.
 29870  	//
 29871  	// Bucket is a required field
 29872  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 29873  
 29874  	// The ID used to identify the S3 Intelligent-Tiering configuration.
 29875  	//
 29876  	// Id is a required field
 29877  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 29878  
 29879  	// Container for S3 Intelligent-Tiering configuration.
 29880  	//
 29881  	// IntelligentTieringConfiguration is a required field
 29882  	IntelligentTieringConfiguration *IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 29883  }
 29884  
 29885  // String returns the string representation.
 29886  //
 29887  // API parameter values that are decorated as "sensitive" in the API will not
 29888  // be included in the string output. The member name will be present, but the
 29889  // value will be replaced with "sensitive".
 29890  func (s PutBucketIntelligentTieringConfigurationInput) String() string {
 29891  	return awsutil.Prettify(s)
 29892  }
 29893  
 29894  // GoString returns the string representation.
 29895  //
 29896  // API parameter values that are decorated as "sensitive" in the API will not
 29897  // be included in the string output. The member name will be present, but the
 29898  // value will be replaced with "sensitive".
 29899  func (s PutBucketIntelligentTieringConfigurationInput) GoString() string {
 29900  	return s.String()
 29901  }
 29902  
 29903  // Validate inspects the fields of the type to determine if they are valid.
 29904  func (s *PutBucketIntelligentTieringConfigurationInput) Validate() error {
 29905  	invalidParams := request.ErrInvalidParams{Context: "PutBucketIntelligentTieringConfigurationInput"}
 29906  	if s.Bucket == nil {
 29907  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 29908  	}
 29909  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 29910  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 29911  	}
 29912  	if s.Id == nil {
 29913  		invalidParams.Add(request.NewErrParamRequired("Id"))
 29914  	}
 29915  	if s.IntelligentTieringConfiguration == nil {
 29916  		invalidParams.Add(request.NewErrParamRequired("IntelligentTieringConfiguration"))
 29917  	}
 29918  	if s.IntelligentTieringConfiguration != nil {
 29919  		if err := s.IntelligentTieringConfiguration.Validate(); err != nil {
 29920  			invalidParams.AddNested("IntelligentTieringConfiguration", err.(request.ErrInvalidParams))
 29921  		}
 29922  	}
 29923  
 29924  	if invalidParams.Len() > 0 {
 29925  		return invalidParams
 29926  	}
 29927  	return nil
 29928  }
 29929  
 29930  // SetBucket sets the Bucket field's value.
 29931  func (s *PutBucketIntelligentTieringConfigurationInput) SetBucket(v string) *PutBucketIntelligentTieringConfigurationInput {
 29932  	s.Bucket = &v
 29933  	return s
 29934  }
 29935  
 29936  func (s *PutBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
 29937  	if s.Bucket == nil {
 29938  		return v
 29939  	}
 29940  	return *s.Bucket
 29941  }
 29942  
 29943  // SetId sets the Id field's value.
 29944  func (s *PutBucketIntelligentTieringConfigurationInput) SetId(v string) *PutBucketIntelligentTieringConfigurationInput {
 29945  	s.Id = &v
 29946  	return s
 29947  }
 29948  
 29949  // SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
 29950  func (s *PutBucketIntelligentTieringConfigurationInput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *PutBucketIntelligentTieringConfigurationInput {
 29951  	s.IntelligentTieringConfiguration = v
 29952  	return s
 29953  }
 29954  
 29955  func (s *PutBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
 29956  	if s.Bucket == nil {
 29957  		return nil, fmt.Errorf("member Bucket is nil")
 29958  	}
 29959  	return parseEndpointARN(*s.Bucket)
 29960  }
 29961  
 29962  func (s *PutBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
 29963  	if s.Bucket == nil {
 29964  		return false
 29965  	}
 29966  	return arn.IsARN(*s.Bucket)
 29967  }
 29968  
 29969  // updateArnableField updates the value of the input field that
 29970  // takes an ARN as an input. This method is useful to backfill
 29971  // the parsed resource name from ARN into the input member.
 29972  // It returns a pointer to a modified copy of input and an error.
 29973  // Note that original input is not modified.
 29974  func (s PutBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
 29975  	if s.Bucket == nil {
 29976  		return nil, fmt.Errorf("member Bucket is nil")
 29977  	}
 29978  	s.Bucket = aws.String(v)
 29979  	return &s, nil
 29980  }
 29981  
 29982  type PutBucketIntelligentTieringConfigurationOutput struct {
 29983  	_ struct{} `type:"structure"`
 29984  }
 29985  
 29986  // String returns the string representation.
 29987  //
 29988  // API parameter values that are decorated as "sensitive" in the API will not
 29989  // be included in the string output. The member name will be present, but the
 29990  // value will be replaced with "sensitive".
 29991  func (s PutBucketIntelligentTieringConfigurationOutput) String() string {
 29992  	return awsutil.Prettify(s)
 29993  }
 29994  
 29995  // GoString returns the string representation.
 29996  //
 29997  // API parameter values that are decorated as "sensitive" in the API will not
 29998  // be included in the string output. The member name will be present, but the
 29999  // value will be replaced with "sensitive".
 30000  func (s PutBucketIntelligentTieringConfigurationOutput) GoString() string {
 30001  	return s.String()
 30002  }
 30003  
 30004  type PutBucketInventoryConfigurationInput struct {
 30005  	_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
 30006  
 30007  	// The name of the bucket where the inventory configuration will be stored.
 30008  	//
 30009  	// Bucket is a required field
 30010  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30011  
 30012  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30013  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30014  	// error.
 30015  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30016  
 30017  	// The ID used to identify the inventory configuration.
 30018  	//
 30019  	// Id is a required field
 30020  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 30021  
 30022  	// Specifies the inventory configuration.
 30023  	//
 30024  	// InventoryConfiguration is a required field
 30025  	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30026  }
 30027  
 30028  // String returns the string representation.
 30029  //
 30030  // API parameter values that are decorated as "sensitive" in the API will not
 30031  // be included in the string output. The member name will be present, but the
 30032  // value will be replaced with "sensitive".
 30033  func (s PutBucketInventoryConfigurationInput) String() string {
 30034  	return awsutil.Prettify(s)
 30035  }
 30036  
 30037  // GoString returns the string representation.
 30038  //
 30039  // API parameter values that are decorated as "sensitive" in the API will not
 30040  // be included in the string output. The member name will be present, but the
 30041  // value will be replaced with "sensitive".
 30042  func (s PutBucketInventoryConfigurationInput) GoString() string {
 30043  	return s.String()
 30044  }
 30045  
 30046  // Validate inspects the fields of the type to determine if they are valid.
 30047  func (s *PutBucketInventoryConfigurationInput) Validate() error {
 30048  	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
 30049  	if s.Bucket == nil {
 30050  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30051  	}
 30052  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30053  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30054  	}
 30055  	if s.Id == nil {
 30056  		invalidParams.Add(request.NewErrParamRequired("Id"))
 30057  	}
 30058  	if s.InventoryConfiguration == nil {
 30059  		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
 30060  	}
 30061  	if s.InventoryConfiguration != nil {
 30062  		if err := s.InventoryConfiguration.Validate(); err != nil {
 30063  			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
 30064  		}
 30065  	}
 30066  
 30067  	if invalidParams.Len() > 0 {
 30068  		return invalidParams
 30069  	}
 30070  	return nil
 30071  }
 30072  
 30073  // SetBucket sets the Bucket field's value.
 30074  func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
 30075  	s.Bucket = &v
 30076  	return s
 30077  }
 30078  
 30079  func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
 30080  	if s.Bucket == nil {
 30081  		return v
 30082  	}
 30083  	return *s.Bucket
 30084  }
 30085  
 30086  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30087  func (s *PutBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketInventoryConfigurationInput {
 30088  	s.ExpectedBucketOwner = &v
 30089  	return s
 30090  }
 30091  
 30092  // SetId sets the Id field's value.
 30093  func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
 30094  	s.Id = &v
 30095  	return s
 30096  }
 30097  
 30098  // SetInventoryConfiguration sets the InventoryConfiguration field's value.
 30099  func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
 30100  	s.InventoryConfiguration = v
 30101  	return s
 30102  }
 30103  
 30104  func (s *PutBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
 30105  	if s.Bucket == nil {
 30106  		return nil, fmt.Errorf("member Bucket is nil")
 30107  	}
 30108  	return parseEndpointARN(*s.Bucket)
 30109  }
 30110  
 30111  func (s *PutBucketInventoryConfigurationInput) hasEndpointARN() bool {
 30112  	if s.Bucket == nil {
 30113  		return false
 30114  	}
 30115  	return arn.IsARN(*s.Bucket)
 30116  }
 30117  
 30118  // updateArnableField updates the value of the input field that
 30119  // takes an ARN as an input. This method is useful to backfill
 30120  // the parsed resource name from ARN into the input member.
 30121  // It returns a pointer to a modified copy of input and an error.
 30122  // Note that original input is not modified.
 30123  func (s PutBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
 30124  	if s.Bucket == nil {
 30125  		return nil, fmt.Errorf("member Bucket is nil")
 30126  	}
 30127  	s.Bucket = aws.String(v)
 30128  	return &s, nil
 30129  }
 30130  
 30131  type PutBucketInventoryConfigurationOutput struct {
 30132  	_ struct{} `type:"structure"`
 30133  }
 30134  
 30135  // String returns the string representation.
 30136  //
 30137  // API parameter values that are decorated as "sensitive" in the API will not
 30138  // be included in the string output. The member name will be present, but the
 30139  // value will be replaced with "sensitive".
 30140  func (s PutBucketInventoryConfigurationOutput) String() string {
 30141  	return awsutil.Prettify(s)
 30142  }
 30143  
 30144  // GoString returns the string representation.
 30145  //
 30146  // API parameter values that are decorated as "sensitive" in the API will not
 30147  // be included in the string output. The member name will be present, but the
 30148  // value will be replaced with "sensitive".
 30149  func (s PutBucketInventoryConfigurationOutput) GoString() string {
 30150  	return s.String()
 30151  }
 30152  
 30153  type PutBucketLifecycleConfigurationInput struct {
 30154  	_ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"`
 30155  
 30156  	// The name of the bucket for which to set the configuration.
 30157  	//
 30158  	// Bucket is a required field
 30159  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30160  
 30161  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30162  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30163  	// error.
 30164  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30165  
 30166  	// Container for lifecycle rules. You can add as many as 1,000 rules.
 30167  	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30168  }
 30169  
 30170  // String returns the string representation.
 30171  //
 30172  // API parameter values that are decorated as "sensitive" in the API will not
 30173  // be included in the string output. The member name will be present, but the
 30174  // value will be replaced with "sensitive".
 30175  func (s PutBucketLifecycleConfigurationInput) String() string {
 30176  	return awsutil.Prettify(s)
 30177  }
 30178  
 30179  // GoString returns the string representation.
 30180  //
 30181  // API parameter values that are decorated as "sensitive" in the API will not
 30182  // be included in the string output. The member name will be present, but the
 30183  // value will be replaced with "sensitive".
 30184  func (s PutBucketLifecycleConfigurationInput) GoString() string {
 30185  	return s.String()
 30186  }
 30187  
 30188  // Validate inspects the fields of the type to determine if they are valid.
 30189  func (s *PutBucketLifecycleConfigurationInput) Validate() error {
 30190  	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
 30191  	if s.Bucket == nil {
 30192  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30193  	}
 30194  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30195  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30196  	}
 30197  	if s.LifecycleConfiguration != nil {
 30198  		if err := s.LifecycleConfiguration.Validate(); err != nil {
 30199  			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
 30200  		}
 30201  	}
 30202  
 30203  	if invalidParams.Len() > 0 {
 30204  		return invalidParams
 30205  	}
 30206  	return nil
 30207  }
 30208  
 30209  // SetBucket sets the Bucket field's value.
 30210  func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
 30211  	s.Bucket = &v
 30212  	return s
 30213  }
 30214  
 30215  func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
 30216  	if s.Bucket == nil {
 30217  		return v
 30218  	}
 30219  	return *s.Bucket
 30220  }
 30221  
 30222  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30223  func (s *PutBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleConfigurationInput {
 30224  	s.ExpectedBucketOwner = &v
 30225  	return s
 30226  }
 30227  
 30228  // SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
 30229  func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
 30230  	s.LifecycleConfiguration = v
 30231  	return s
 30232  }
 30233  
 30234  func (s *PutBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
 30235  	if s.Bucket == nil {
 30236  		return nil, fmt.Errorf("member Bucket is nil")
 30237  	}
 30238  	return parseEndpointARN(*s.Bucket)
 30239  }
 30240  
 30241  func (s *PutBucketLifecycleConfigurationInput) hasEndpointARN() bool {
 30242  	if s.Bucket == nil {
 30243  		return false
 30244  	}
 30245  	return arn.IsARN(*s.Bucket)
 30246  }
 30247  
 30248  // updateArnableField updates the value of the input field that
 30249  // takes an ARN as an input. This method is useful to backfill
 30250  // the parsed resource name from ARN into the input member.
 30251  // It returns a pointer to a modified copy of input and an error.
 30252  // Note that original input is not modified.
 30253  func (s PutBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
 30254  	if s.Bucket == nil {
 30255  		return nil, fmt.Errorf("member Bucket is nil")
 30256  	}
 30257  	s.Bucket = aws.String(v)
 30258  	return &s, nil
 30259  }
 30260  
 30261  type PutBucketLifecycleConfigurationOutput struct {
 30262  	_ struct{} `type:"structure"`
 30263  }
 30264  
 30265  // String returns the string representation.
 30266  //
 30267  // API parameter values that are decorated as "sensitive" in the API will not
 30268  // be included in the string output. The member name will be present, but the
 30269  // value will be replaced with "sensitive".
 30270  func (s PutBucketLifecycleConfigurationOutput) String() string {
 30271  	return awsutil.Prettify(s)
 30272  }
 30273  
 30274  // GoString returns the string representation.
 30275  //
 30276  // API parameter values that are decorated as "sensitive" in the API will not
 30277  // be included in the string output. The member name will be present, but the
 30278  // value will be replaced with "sensitive".
 30279  func (s PutBucketLifecycleConfigurationOutput) GoString() string {
 30280  	return s.String()
 30281  }
 30282  
 30283  type PutBucketLifecycleInput struct {
 30284  	_ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"`
 30285  
 30286  	// Bucket is a required field
 30287  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30288  
 30289  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30290  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30291  	// error.
 30292  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30293  
 30294  	// Container for lifecycle rules. You can add as many as 1000 rules.
 30295  	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30296  }
 30297  
 30298  // String returns the string representation.
 30299  //
 30300  // API parameter values that are decorated as "sensitive" in the API will not
 30301  // be included in the string output. The member name will be present, but the
 30302  // value will be replaced with "sensitive".
 30303  func (s PutBucketLifecycleInput) String() string {
 30304  	return awsutil.Prettify(s)
 30305  }
 30306  
 30307  // GoString returns the string representation.
 30308  //
 30309  // API parameter values that are decorated as "sensitive" in the API will not
 30310  // be included in the string output. The member name will be present, but the
 30311  // value will be replaced with "sensitive".
 30312  func (s PutBucketLifecycleInput) GoString() string {
 30313  	return s.String()
 30314  }
 30315  
 30316  // Validate inspects the fields of the type to determine if they are valid.
 30317  func (s *PutBucketLifecycleInput) Validate() error {
 30318  	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
 30319  	if s.Bucket == nil {
 30320  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30321  	}
 30322  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30323  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30324  	}
 30325  	if s.LifecycleConfiguration != nil {
 30326  		if err := s.LifecycleConfiguration.Validate(); err != nil {
 30327  			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
 30328  		}
 30329  	}
 30330  
 30331  	if invalidParams.Len() > 0 {
 30332  		return invalidParams
 30333  	}
 30334  	return nil
 30335  }
 30336  
 30337  // SetBucket sets the Bucket field's value.
 30338  func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
 30339  	s.Bucket = &v
 30340  	return s
 30341  }
 30342  
 30343  func (s *PutBucketLifecycleInput) getBucket() (v string) {
 30344  	if s.Bucket == nil {
 30345  		return v
 30346  	}
 30347  	return *s.Bucket
 30348  }
 30349  
 30350  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30351  func (s *PutBucketLifecycleInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleInput {
 30352  	s.ExpectedBucketOwner = &v
 30353  	return s
 30354  }
 30355  
 30356  // SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
 30357  func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
 30358  	s.LifecycleConfiguration = v
 30359  	return s
 30360  }
 30361  
 30362  func (s *PutBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
 30363  	if s.Bucket == nil {
 30364  		return nil, fmt.Errorf("member Bucket is nil")
 30365  	}
 30366  	return parseEndpointARN(*s.Bucket)
 30367  }
 30368  
 30369  func (s *PutBucketLifecycleInput) hasEndpointARN() bool {
 30370  	if s.Bucket == nil {
 30371  		return false
 30372  	}
 30373  	return arn.IsARN(*s.Bucket)
 30374  }
 30375  
 30376  // updateArnableField updates the value of the input field that
 30377  // takes an ARN as an input. This method is useful to backfill
 30378  // the parsed resource name from ARN into the input member.
 30379  // It returns a pointer to a modified copy of input and an error.
 30380  // Note that original input is not modified.
 30381  func (s PutBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
 30382  	if s.Bucket == nil {
 30383  		return nil, fmt.Errorf("member Bucket is nil")
 30384  	}
 30385  	s.Bucket = aws.String(v)
 30386  	return &s, nil
 30387  }
 30388  
 30389  type PutBucketLifecycleOutput struct {
 30390  	_ struct{} `type:"structure"`
 30391  }
 30392  
 30393  // String returns the string representation.
 30394  //
 30395  // API parameter values that are decorated as "sensitive" in the API will not
 30396  // be included in the string output. The member name will be present, but the
 30397  // value will be replaced with "sensitive".
 30398  func (s PutBucketLifecycleOutput) String() string {
 30399  	return awsutil.Prettify(s)
 30400  }
 30401  
 30402  // GoString returns the string representation.
 30403  //
 30404  // API parameter values that are decorated as "sensitive" in the API will not
 30405  // be included in the string output. The member name will be present, but the
 30406  // value will be replaced with "sensitive".
 30407  func (s PutBucketLifecycleOutput) GoString() string {
 30408  	return s.String()
 30409  }
 30410  
 30411  type PutBucketLoggingInput struct {
 30412  	_ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"`
 30413  
 30414  	// The name of the bucket for which to set the logging parameters.
 30415  	//
 30416  	// Bucket is a required field
 30417  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30418  
 30419  	// Container for logging status information.
 30420  	//
 30421  	// BucketLoggingStatus is a required field
 30422  	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30423  
 30424  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30425  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30426  	// error.
 30427  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30428  }
 30429  
 30430  // String returns the string representation.
 30431  //
 30432  // API parameter values that are decorated as "sensitive" in the API will not
 30433  // be included in the string output. The member name will be present, but the
 30434  // value will be replaced with "sensitive".
 30435  func (s PutBucketLoggingInput) String() string {
 30436  	return awsutil.Prettify(s)
 30437  }
 30438  
 30439  // GoString returns the string representation.
 30440  //
 30441  // API parameter values that are decorated as "sensitive" in the API will not
 30442  // be included in the string output. The member name will be present, but the
 30443  // value will be replaced with "sensitive".
 30444  func (s PutBucketLoggingInput) GoString() string {
 30445  	return s.String()
 30446  }
 30447  
 30448  // Validate inspects the fields of the type to determine if they are valid.
 30449  func (s *PutBucketLoggingInput) Validate() error {
 30450  	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
 30451  	if s.Bucket == nil {
 30452  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30453  	}
 30454  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30455  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30456  	}
 30457  	if s.BucketLoggingStatus == nil {
 30458  		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
 30459  	}
 30460  	if s.BucketLoggingStatus != nil {
 30461  		if err := s.BucketLoggingStatus.Validate(); err != nil {
 30462  			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
 30463  		}
 30464  	}
 30465  
 30466  	if invalidParams.Len() > 0 {
 30467  		return invalidParams
 30468  	}
 30469  	return nil
 30470  }
 30471  
 30472  // SetBucket sets the Bucket field's value.
 30473  func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
 30474  	s.Bucket = &v
 30475  	return s
 30476  }
 30477  
 30478  func (s *PutBucketLoggingInput) getBucket() (v string) {
 30479  	if s.Bucket == nil {
 30480  		return v
 30481  	}
 30482  	return *s.Bucket
 30483  }
 30484  
 30485  // SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
 30486  func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
 30487  	s.BucketLoggingStatus = v
 30488  	return s
 30489  }
 30490  
 30491  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30492  func (s *PutBucketLoggingInput) SetExpectedBucketOwner(v string) *PutBucketLoggingInput {
 30493  	s.ExpectedBucketOwner = &v
 30494  	return s
 30495  }
 30496  
 30497  func (s *PutBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
 30498  	if s.Bucket == nil {
 30499  		return nil, fmt.Errorf("member Bucket is nil")
 30500  	}
 30501  	return parseEndpointARN(*s.Bucket)
 30502  }
 30503  
 30504  func (s *PutBucketLoggingInput) hasEndpointARN() bool {
 30505  	if s.Bucket == nil {
 30506  		return false
 30507  	}
 30508  	return arn.IsARN(*s.Bucket)
 30509  }
 30510  
 30511  // updateArnableField updates the value of the input field that
 30512  // takes an ARN as an input. This method is useful to backfill
 30513  // the parsed resource name from ARN into the input member.
 30514  // It returns a pointer to a modified copy of input and an error.
 30515  // Note that original input is not modified.
 30516  func (s PutBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
 30517  	if s.Bucket == nil {
 30518  		return nil, fmt.Errorf("member Bucket is nil")
 30519  	}
 30520  	s.Bucket = aws.String(v)
 30521  	return &s, nil
 30522  }
 30523  
 30524  type PutBucketLoggingOutput struct {
 30525  	_ struct{} `type:"structure"`
 30526  }
 30527  
 30528  // String returns the string representation.
 30529  //
 30530  // API parameter values that are decorated as "sensitive" in the API will not
 30531  // be included in the string output. The member name will be present, but the
 30532  // value will be replaced with "sensitive".
 30533  func (s PutBucketLoggingOutput) String() string {
 30534  	return awsutil.Prettify(s)
 30535  }
 30536  
 30537  // GoString returns the string representation.
 30538  //
 30539  // API parameter values that are decorated as "sensitive" in the API will not
 30540  // be included in the string output. The member name will be present, but the
 30541  // value will be replaced with "sensitive".
 30542  func (s PutBucketLoggingOutput) GoString() string {
 30543  	return s.String()
 30544  }
 30545  
 30546  type PutBucketMetricsConfigurationInput struct {
 30547  	_ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"`
 30548  
 30549  	// The name of the bucket for which the metrics configuration is set.
 30550  	//
 30551  	// Bucket is a required field
 30552  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30553  
 30554  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30555  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30556  	// error.
 30557  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30558  
 30559  	// The ID used to identify the metrics configuration.
 30560  	//
 30561  	// Id is a required field
 30562  	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
 30563  
 30564  	// Specifies the metrics configuration.
 30565  	//
 30566  	// MetricsConfiguration is a required field
 30567  	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30568  }
 30569  
 30570  // String returns the string representation.
 30571  //
 30572  // API parameter values that are decorated as "sensitive" in the API will not
 30573  // be included in the string output. The member name will be present, but the
 30574  // value will be replaced with "sensitive".
 30575  func (s PutBucketMetricsConfigurationInput) String() string {
 30576  	return awsutil.Prettify(s)
 30577  }
 30578  
 30579  // GoString returns the string representation.
 30580  //
 30581  // API parameter values that are decorated as "sensitive" in the API will not
 30582  // be included in the string output. The member name will be present, but the
 30583  // value will be replaced with "sensitive".
 30584  func (s PutBucketMetricsConfigurationInput) GoString() string {
 30585  	return s.String()
 30586  }
 30587  
 30588  // Validate inspects the fields of the type to determine if they are valid.
 30589  func (s *PutBucketMetricsConfigurationInput) Validate() error {
 30590  	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
 30591  	if s.Bucket == nil {
 30592  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30593  	}
 30594  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30595  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30596  	}
 30597  	if s.Id == nil {
 30598  		invalidParams.Add(request.NewErrParamRequired("Id"))
 30599  	}
 30600  	if s.MetricsConfiguration == nil {
 30601  		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
 30602  	}
 30603  	if s.MetricsConfiguration != nil {
 30604  		if err := s.MetricsConfiguration.Validate(); err != nil {
 30605  			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
 30606  		}
 30607  	}
 30608  
 30609  	if invalidParams.Len() > 0 {
 30610  		return invalidParams
 30611  	}
 30612  	return nil
 30613  }
 30614  
 30615  // SetBucket sets the Bucket field's value.
 30616  func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
 30617  	s.Bucket = &v
 30618  	return s
 30619  }
 30620  
 30621  func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
 30622  	if s.Bucket == nil {
 30623  		return v
 30624  	}
 30625  	return *s.Bucket
 30626  }
 30627  
 30628  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30629  func (s *PutBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketMetricsConfigurationInput {
 30630  	s.ExpectedBucketOwner = &v
 30631  	return s
 30632  }
 30633  
 30634  // SetId sets the Id field's value.
 30635  func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
 30636  	s.Id = &v
 30637  	return s
 30638  }
 30639  
 30640  // SetMetricsConfiguration sets the MetricsConfiguration field's value.
 30641  func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
 30642  	s.MetricsConfiguration = v
 30643  	return s
 30644  }
 30645  
 30646  func (s *PutBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
 30647  	if s.Bucket == nil {
 30648  		return nil, fmt.Errorf("member Bucket is nil")
 30649  	}
 30650  	return parseEndpointARN(*s.Bucket)
 30651  }
 30652  
 30653  func (s *PutBucketMetricsConfigurationInput) hasEndpointARN() bool {
 30654  	if s.Bucket == nil {
 30655  		return false
 30656  	}
 30657  	return arn.IsARN(*s.Bucket)
 30658  }
 30659  
 30660  // updateArnableField updates the value of the input field that
 30661  // takes an ARN as an input. This method is useful to backfill
 30662  // the parsed resource name from ARN into the input member.
 30663  // It returns a pointer to a modified copy of input and an error.
 30664  // Note that original input is not modified.
 30665  func (s PutBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
 30666  	if s.Bucket == nil {
 30667  		return nil, fmt.Errorf("member Bucket is nil")
 30668  	}
 30669  	s.Bucket = aws.String(v)
 30670  	return &s, nil
 30671  }
 30672  
 30673  type PutBucketMetricsConfigurationOutput struct {
 30674  	_ struct{} `type:"structure"`
 30675  }
 30676  
 30677  // String returns the string representation.
 30678  //
 30679  // API parameter values that are decorated as "sensitive" in the API will not
 30680  // be included in the string output. The member name will be present, but the
 30681  // value will be replaced with "sensitive".
 30682  func (s PutBucketMetricsConfigurationOutput) String() string {
 30683  	return awsutil.Prettify(s)
 30684  }
 30685  
 30686  // GoString returns the string representation.
 30687  //
 30688  // API parameter values that are decorated as "sensitive" in the API will not
 30689  // be included in the string output. The member name will be present, but the
 30690  // value will be replaced with "sensitive".
 30691  func (s PutBucketMetricsConfigurationOutput) GoString() string {
 30692  	return s.String()
 30693  }
 30694  
 30695  type PutBucketNotificationConfigurationInput struct {
 30696  	_ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"`
 30697  
 30698  	// The name of the bucket.
 30699  	//
 30700  	// Bucket is a required field
 30701  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30702  
 30703  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30704  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30705  	// error.
 30706  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30707  
 30708  	// A container for specifying the notification configuration of the bucket.
 30709  	// If this element is empty, notifications are turned off for the bucket.
 30710  	//
 30711  	// NotificationConfiguration is a required field
 30712  	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30713  }
 30714  
 30715  // String returns the string representation.
 30716  //
 30717  // API parameter values that are decorated as "sensitive" in the API will not
 30718  // be included in the string output. The member name will be present, but the
 30719  // value will be replaced with "sensitive".
 30720  func (s PutBucketNotificationConfigurationInput) String() string {
 30721  	return awsutil.Prettify(s)
 30722  }
 30723  
 30724  // GoString returns the string representation.
 30725  //
 30726  // API parameter values that are decorated as "sensitive" in the API will not
 30727  // be included in the string output. The member name will be present, but the
 30728  // value will be replaced with "sensitive".
 30729  func (s PutBucketNotificationConfigurationInput) GoString() string {
 30730  	return s.String()
 30731  }
 30732  
 30733  // Validate inspects the fields of the type to determine if they are valid.
 30734  func (s *PutBucketNotificationConfigurationInput) Validate() error {
 30735  	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
 30736  	if s.Bucket == nil {
 30737  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30738  	}
 30739  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30740  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30741  	}
 30742  	if s.NotificationConfiguration == nil {
 30743  		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
 30744  	}
 30745  	if s.NotificationConfiguration != nil {
 30746  		if err := s.NotificationConfiguration.Validate(); err != nil {
 30747  			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
 30748  		}
 30749  	}
 30750  
 30751  	if invalidParams.Len() > 0 {
 30752  		return invalidParams
 30753  	}
 30754  	return nil
 30755  }
 30756  
 30757  // SetBucket sets the Bucket field's value.
 30758  func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
 30759  	s.Bucket = &v
 30760  	return s
 30761  }
 30762  
 30763  func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
 30764  	if s.Bucket == nil {
 30765  		return v
 30766  	}
 30767  	return *s.Bucket
 30768  }
 30769  
 30770  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30771  func (s *PutBucketNotificationConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationConfigurationInput {
 30772  	s.ExpectedBucketOwner = &v
 30773  	return s
 30774  }
 30775  
 30776  // SetNotificationConfiguration sets the NotificationConfiguration field's value.
 30777  func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
 30778  	s.NotificationConfiguration = v
 30779  	return s
 30780  }
 30781  
 30782  func (s *PutBucketNotificationConfigurationInput) getEndpointARN() (arn.Resource, error) {
 30783  	if s.Bucket == nil {
 30784  		return nil, fmt.Errorf("member Bucket is nil")
 30785  	}
 30786  	return parseEndpointARN(*s.Bucket)
 30787  }
 30788  
 30789  func (s *PutBucketNotificationConfigurationInput) hasEndpointARN() bool {
 30790  	if s.Bucket == nil {
 30791  		return false
 30792  	}
 30793  	return arn.IsARN(*s.Bucket)
 30794  }
 30795  
 30796  // updateArnableField updates the value of the input field that
 30797  // takes an ARN as an input. This method is useful to backfill
 30798  // the parsed resource name from ARN into the input member.
 30799  // It returns a pointer to a modified copy of input and an error.
 30800  // Note that original input is not modified.
 30801  func (s PutBucketNotificationConfigurationInput) updateArnableField(v string) (interface{}, error) {
 30802  	if s.Bucket == nil {
 30803  		return nil, fmt.Errorf("member Bucket is nil")
 30804  	}
 30805  	s.Bucket = aws.String(v)
 30806  	return &s, nil
 30807  }
 30808  
 30809  type PutBucketNotificationConfigurationOutput struct {
 30810  	_ struct{} `type:"structure"`
 30811  }
 30812  
 30813  // String returns the string representation.
 30814  //
 30815  // API parameter values that are decorated as "sensitive" in the API will not
 30816  // be included in the string output. The member name will be present, but the
 30817  // value will be replaced with "sensitive".
 30818  func (s PutBucketNotificationConfigurationOutput) String() string {
 30819  	return awsutil.Prettify(s)
 30820  }
 30821  
 30822  // GoString returns the string representation.
 30823  //
 30824  // API parameter values that are decorated as "sensitive" in the API will not
 30825  // be included in the string output. The member name will be present, but the
 30826  // value will be replaced with "sensitive".
 30827  func (s PutBucketNotificationConfigurationOutput) GoString() string {
 30828  	return s.String()
 30829  }
 30830  
 30831  type PutBucketNotificationInput struct {
 30832  	_ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"`
 30833  
 30834  	// The name of the bucket.
 30835  	//
 30836  	// Bucket is a required field
 30837  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30838  
 30839  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30840  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30841  	// error.
 30842  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30843  
 30844  	// The container for the configuration.
 30845  	//
 30846  	// NotificationConfiguration is a required field
 30847  	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30848  }
 30849  
 30850  // String returns the string representation.
 30851  //
 30852  // API parameter values that are decorated as "sensitive" in the API will not
 30853  // be included in the string output. The member name will be present, but the
 30854  // value will be replaced with "sensitive".
 30855  func (s PutBucketNotificationInput) String() string {
 30856  	return awsutil.Prettify(s)
 30857  }
 30858  
 30859  // GoString returns the string representation.
 30860  //
 30861  // API parameter values that are decorated as "sensitive" in the API will not
 30862  // be included in the string output. The member name will be present, but the
 30863  // value will be replaced with "sensitive".
 30864  func (s PutBucketNotificationInput) GoString() string {
 30865  	return s.String()
 30866  }
 30867  
 30868  // Validate inspects the fields of the type to determine if they are valid.
 30869  func (s *PutBucketNotificationInput) Validate() error {
 30870  	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
 30871  	if s.Bucket == nil {
 30872  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 30873  	}
 30874  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 30875  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 30876  	}
 30877  	if s.NotificationConfiguration == nil {
 30878  		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
 30879  	}
 30880  
 30881  	if invalidParams.Len() > 0 {
 30882  		return invalidParams
 30883  	}
 30884  	return nil
 30885  }
 30886  
 30887  // SetBucket sets the Bucket field's value.
 30888  func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
 30889  	s.Bucket = &v
 30890  	return s
 30891  }
 30892  
 30893  func (s *PutBucketNotificationInput) getBucket() (v string) {
 30894  	if s.Bucket == nil {
 30895  		return v
 30896  	}
 30897  	return *s.Bucket
 30898  }
 30899  
 30900  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 30901  func (s *PutBucketNotificationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationInput {
 30902  	s.ExpectedBucketOwner = &v
 30903  	return s
 30904  }
 30905  
 30906  // SetNotificationConfiguration sets the NotificationConfiguration field's value.
 30907  func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
 30908  	s.NotificationConfiguration = v
 30909  	return s
 30910  }
 30911  
 30912  func (s *PutBucketNotificationInput) getEndpointARN() (arn.Resource, error) {
 30913  	if s.Bucket == nil {
 30914  		return nil, fmt.Errorf("member Bucket is nil")
 30915  	}
 30916  	return parseEndpointARN(*s.Bucket)
 30917  }
 30918  
 30919  func (s *PutBucketNotificationInput) hasEndpointARN() bool {
 30920  	if s.Bucket == nil {
 30921  		return false
 30922  	}
 30923  	return arn.IsARN(*s.Bucket)
 30924  }
 30925  
 30926  // updateArnableField updates the value of the input field that
 30927  // takes an ARN as an input. This method is useful to backfill
 30928  // the parsed resource name from ARN into the input member.
 30929  // It returns a pointer to a modified copy of input and an error.
 30930  // Note that original input is not modified.
 30931  func (s PutBucketNotificationInput) updateArnableField(v string) (interface{}, error) {
 30932  	if s.Bucket == nil {
 30933  		return nil, fmt.Errorf("member Bucket is nil")
 30934  	}
 30935  	s.Bucket = aws.String(v)
 30936  	return &s, nil
 30937  }
 30938  
 30939  type PutBucketNotificationOutput struct {
 30940  	_ struct{} `type:"structure"`
 30941  }
 30942  
 30943  // String returns the string representation.
 30944  //
 30945  // API parameter values that are decorated as "sensitive" in the API will not
 30946  // be included in the string output. The member name will be present, but the
 30947  // value will be replaced with "sensitive".
 30948  func (s PutBucketNotificationOutput) String() string {
 30949  	return awsutil.Prettify(s)
 30950  }
 30951  
 30952  // GoString returns the string representation.
 30953  //
 30954  // API parameter values that are decorated as "sensitive" in the API will not
 30955  // be included in the string output. The member name will be present, but the
 30956  // value will be replaced with "sensitive".
 30957  func (s PutBucketNotificationOutput) GoString() string {
 30958  	return s.String()
 30959  }
 30960  
 30961  type PutBucketOwnershipControlsInput struct {
 30962  	_ struct{} `locationName:"PutBucketOwnershipControlsRequest" type:"structure" payload:"OwnershipControls"`
 30963  
 30964  	// The name of the Amazon S3 bucket whose OwnershipControls you want to set.
 30965  	//
 30966  	// Bucket is a required field
 30967  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 30968  
 30969  	// The account ID of the expected bucket owner. If the bucket is owned by a
 30970  	// different account, the request will fail with an HTTP 403 (Access Denied)
 30971  	// error.
 30972  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 30973  
 30974  	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) that you want
 30975  	// to apply to this Amazon S3 bucket.
 30976  	//
 30977  	// OwnershipControls is a required field
 30978  	OwnershipControls *OwnershipControls `locationName:"OwnershipControls" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 30979  }
 30980  
 30981  // String returns the string representation.
 30982  //
 30983  // API parameter values that are decorated as "sensitive" in the API will not
 30984  // be included in the string output. The member name will be present, but the
 30985  // value will be replaced with "sensitive".
 30986  func (s PutBucketOwnershipControlsInput) String() string {
 30987  	return awsutil.Prettify(s)
 30988  }
 30989  
 30990  // GoString returns the string representation.
 30991  //
 30992  // API parameter values that are decorated as "sensitive" in the API will not
 30993  // be included in the string output. The member name will be present, but the
 30994  // value will be replaced with "sensitive".
 30995  func (s PutBucketOwnershipControlsInput) GoString() string {
 30996  	return s.String()
 30997  }
 30998  
 30999  // Validate inspects the fields of the type to determine if they are valid.
 31000  func (s *PutBucketOwnershipControlsInput) Validate() error {
 31001  	invalidParams := request.ErrInvalidParams{Context: "PutBucketOwnershipControlsInput"}
 31002  	if s.Bucket == nil {
 31003  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31004  	}
 31005  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31006  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31007  	}
 31008  	if s.OwnershipControls == nil {
 31009  		invalidParams.Add(request.NewErrParamRequired("OwnershipControls"))
 31010  	}
 31011  	if s.OwnershipControls != nil {
 31012  		if err := s.OwnershipControls.Validate(); err != nil {
 31013  			invalidParams.AddNested("OwnershipControls", err.(request.ErrInvalidParams))
 31014  		}
 31015  	}
 31016  
 31017  	if invalidParams.Len() > 0 {
 31018  		return invalidParams
 31019  	}
 31020  	return nil
 31021  }
 31022  
 31023  // SetBucket sets the Bucket field's value.
 31024  func (s *PutBucketOwnershipControlsInput) SetBucket(v string) *PutBucketOwnershipControlsInput {
 31025  	s.Bucket = &v
 31026  	return s
 31027  }
 31028  
 31029  func (s *PutBucketOwnershipControlsInput) getBucket() (v string) {
 31030  	if s.Bucket == nil {
 31031  		return v
 31032  	}
 31033  	return *s.Bucket
 31034  }
 31035  
 31036  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31037  func (s *PutBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *PutBucketOwnershipControlsInput {
 31038  	s.ExpectedBucketOwner = &v
 31039  	return s
 31040  }
 31041  
 31042  // SetOwnershipControls sets the OwnershipControls field's value.
 31043  func (s *PutBucketOwnershipControlsInput) SetOwnershipControls(v *OwnershipControls) *PutBucketOwnershipControlsInput {
 31044  	s.OwnershipControls = v
 31045  	return s
 31046  }
 31047  
 31048  func (s *PutBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
 31049  	if s.Bucket == nil {
 31050  		return nil, fmt.Errorf("member Bucket is nil")
 31051  	}
 31052  	return parseEndpointARN(*s.Bucket)
 31053  }
 31054  
 31055  func (s *PutBucketOwnershipControlsInput) hasEndpointARN() bool {
 31056  	if s.Bucket == nil {
 31057  		return false
 31058  	}
 31059  	return arn.IsARN(*s.Bucket)
 31060  }
 31061  
 31062  // updateArnableField updates the value of the input field that
 31063  // takes an ARN as an input. This method is useful to backfill
 31064  // the parsed resource name from ARN into the input member.
 31065  // It returns a pointer to a modified copy of input and an error.
 31066  // Note that original input is not modified.
 31067  func (s PutBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
 31068  	if s.Bucket == nil {
 31069  		return nil, fmt.Errorf("member Bucket is nil")
 31070  	}
 31071  	s.Bucket = aws.String(v)
 31072  	return &s, nil
 31073  }
 31074  
 31075  type PutBucketOwnershipControlsOutput struct {
 31076  	_ struct{} `type:"structure"`
 31077  }
 31078  
 31079  // String returns the string representation.
 31080  //
 31081  // API parameter values that are decorated as "sensitive" in the API will not
 31082  // be included in the string output. The member name will be present, but the
 31083  // value will be replaced with "sensitive".
 31084  func (s PutBucketOwnershipControlsOutput) String() string {
 31085  	return awsutil.Prettify(s)
 31086  }
 31087  
 31088  // GoString returns the string representation.
 31089  //
 31090  // API parameter values that are decorated as "sensitive" in the API will not
 31091  // be included in the string output. The member name will be present, but the
 31092  // value will be replaced with "sensitive".
 31093  func (s PutBucketOwnershipControlsOutput) GoString() string {
 31094  	return s.String()
 31095  }
 31096  
 31097  type PutBucketPolicyInput struct {
 31098  	_ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"`
 31099  
 31100  	// The name of the bucket.
 31101  	//
 31102  	// Bucket is a required field
 31103  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31104  
 31105  	// Set this parameter to true to confirm that you want to remove your permissions
 31106  	// to change this bucket policy in the future.
 31107  	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
 31108  
 31109  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31110  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31111  	// error.
 31112  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31113  
 31114  	// The bucket policy as a JSON document.
 31115  	//
 31116  	// Policy is a required field
 31117  	Policy *string `type:"string" required:"true"`
 31118  }
 31119  
 31120  // String returns the string representation.
 31121  //
 31122  // API parameter values that are decorated as "sensitive" in the API will not
 31123  // be included in the string output. The member name will be present, but the
 31124  // value will be replaced with "sensitive".
 31125  func (s PutBucketPolicyInput) String() string {
 31126  	return awsutil.Prettify(s)
 31127  }
 31128  
 31129  // GoString returns the string representation.
 31130  //
 31131  // API parameter values that are decorated as "sensitive" in the API will not
 31132  // be included in the string output. The member name will be present, but the
 31133  // value will be replaced with "sensitive".
 31134  func (s PutBucketPolicyInput) GoString() string {
 31135  	return s.String()
 31136  }
 31137  
 31138  // Validate inspects the fields of the type to determine if they are valid.
 31139  func (s *PutBucketPolicyInput) Validate() error {
 31140  	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
 31141  	if s.Bucket == nil {
 31142  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31143  	}
 31144  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31145  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31146  	}
 31147  	if s.Policy == nil {
 31148  		invalidParams.Add(request.NewErrParamRequired("Policy"))
 31149  	}
 31150  
 31151  	if invalidParams.Len() > 0 {
 31152  		return invalidParams
 31153  	}
 31154  	return nil
 31155  }
 31156  
 31157  // SetBucket sets the Bucket field's value.
 31158  func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
 31159  	s.Bucket = &v
 31160  	return s
 31161  }
 31162  
 31163  func (s *PutBucketPolicyInput) getBucket() (v string) {
 31164  	if s.Bucket == nil {
 31165  		return v
 31166  	}
 31167  	return *s.Bucket
 31168  }
 31169  
 31170  // SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
 31171  func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
 31172  	s.ConfirmRemoveSelfBucketAccess = &v
 31173  	return s
 31174  }
 31175  
 31176  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31177  func (s *PutBucketPolicyInput) SetExpectedBucketOwner(v string) *PutBucketPolicyInput {
 31178  	s.ExpectedBucketOwner = &v
 31179  	return s
 31180  }
 31181  
 31182  // SetPolicy sets the Policy field's value.
 31183  func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
 31184  	s.Policy = &v
 31185  	return s
 31186  }
 31187  
 31188  func (s *PutBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
 31189  	if s.Bucket == nil {
 31190  		return nil, fmt.Errorf("member Bucket is nil")
 31191  	}
 31192  	return parseEndpointARN(*s.Bucket)
 31193  }
 31194  
 31195  func (s *PutBucketPolicyInput) hasEndpointARN() bool {
 31196  	if s.Bucket == nil {
 31197  		return false
 31198  	}
 31199  	return arn.IsARN(*s.Bucket)
 31200  }
 31201  
 31202  // updateArnableField updates the value of the input field that
 31203  // takes an ARN as an input. This method is useful to backfill
 31204  // the parsed resource name from ARN into the input member.
 31205  // It returns a pointer to a modified copy of input and an error.
 31206  // Note that original input is not modified.
 31207  func (s PutBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
 31208  	if s.Bucket == nil {
 31209  		return nil, fmt.Errorf("member Bucket is nil")
 31210  	}
 31211  	s.Bucket = aws.String(v)
 31212  	return &s, nil
 31213  }
 31214  
 31215  type PutBucketPolicyOutput struct {
 31216  	_ struct{} `type:"structure"`
 31217  }
 31218  
 31219  // String returns the string representation.
 31220  //
 31221  // API parameter values that are decorated as "sensitive" in the API will not
 31222  // be included in the string output. The member name will be present, but the
 31223  // value will be replaced with "sensitive".
 31224  func (s PutBucketPolicyOutput) String() string {
 31225  	return awsutil.Prettify(s)
 31226  }
 31227  
 31228  // GoString returns the string representation.
 31229  //
 31230  // API parameter values that are decorated as "sensitive" in the API will not
 31231  // be included in the string output. The member name will be present, but the
 31232  // value will be replaced with "sensitive".
 31233  func (s PutBucketPolicyOutput) GoString() string {
 31234  	return s.String()
 31235  }
 31236  
 31237  type PutBucketReplicationInput struct {
 31238  	_ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"`
 31239  
 31240  	// The name of the bucket
 31241  	//
 31242  	// Bucket is a required field
 31243  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31244  
 31245  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31246  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31247  	// error.
 31248  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31249  
 31250  	// A container for replication rules. You can add up to 1,000 rules. The maximum
 31251  	// size of a replication configuration is 2 MB.
 31252  	//
 31253  	// ReplicationConfiguration is a required field
 31254  	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31255  
 31256  	// A token to allow Object Lock to be enabled for an existing bucket.
 31257  	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
 31258  }
 31259  
 31260  // String returns the string representation.
 31261  //
 31262  // API parameter values that are decorated as "sensitive" in the API will not
 31263  // be included in the string output. The member name will be present, but the
 31264  // value will be replaced with "sensitive".
 31265  func (s PutBucketReplicationInput) String() string {
 31266  	return awsutil.Prettify(s)
 31267  }
 31268  
 31269  // GoString returns the string representation.
 31270  //
 31271  // API parameter values that are decorated as "sensitive" in the API will not
 31272  // be included in the string output. The member name will be present, but the
 31273  // value will be replaced with "sensitive".
 31274  func (s PutBucketReplicationInput) GoString() string {
 31275  	return s.String()
 31276  }
 31277  
 31278  // Validate inspects the fields of the type to determine if they are valid.
 31279  func (s *PutBucketReplicationInput) Validate() error {
 31280  	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
 31281  	if s.Bucket == nil {
 31282  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31283  	}
 31284  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31285  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31286  	}
 31287  	if s.ReplicationConfiguration == nil {
 31288  		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
 31289  	}
 31290  	if s.ReplicationConfiguration != nil {
 31291  		if err := s.ReplicationConfiguration.Validate(); err != nil {
 31292  			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
 31293  		}
 31294  	}
 31295  
 31296  	if invalidParams.Len() > 0 {
 31297  		return invalidParams
 31298  	}
 31299  	return nil
 31300  }
 31301  
 31302  // SetBucket sets the Bucket field's value.
 31303  func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
 31304  	s.Bucket = &v
 31305  	return s
 31306  }
 31307  
 31308  func (s *PutBucketReplicationInput) getBucket() (v string) {
 31309  	if s.Bucket == nil {
 31310  		return v
 31311  	}
 31312  	return *s.Bucket
 31313  }
 31314  
 31315  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31316  func (s *PutBucketReplicationInput) SetExpectedBucketOwner(v string) *PutBucketReplicationInput {
 31317  	s.ExpectedBucketOwner = &v
 31318  	return s
 31319  }
 31320  
 31321  // SetReplicationConfiguration sets the ReplicationConfiguration field's value.
 31322  func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
 31323  	s.ReplicationConfiguration = v
 31324  	return s
 31325  }
 31326  
 31327  // SetToken sets the Token field's value.
 31328  func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
 31329  	s.Token = &v
 31330  	return s
 31331  }
 31332  
 31333  func (s *PutBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
 31334  	if s.Bucket == nil {
 31335  		return nil, fmt.Errorf("member Bucket is nil")
 31336  	}
 31337  	return parseEndpointARN(*s.Bucket)
 31338  }
 31339  
 31340  func (s *PutBucketReplicationInput) hasEndpointARN() bool {
 31341  	if s.Bucket == nil {
 31342  		return false
 31343  	}
 31344  	return arn.IsARN(*s.Bucket)
 31345  }
 31346  
 31347  // updateArnableField updates the value of the input field that
 31348  // takes an ARN as an input. This method is useful to backfill
 31349  // the parsed resource name from ARN into the input member.
 31350  // It returns a pointer to a modified copy of input and an error.
 31351  // Note that original input is not modified.
 31352  func (s PutBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
 31353  	if s.Bucket == nil {
 31354  		return nil, fmt.Errorf("member Bucket is nil")
 31355  	}
 31356  	s.Bucket = aws.String(v)
 31357  	return &s, nil
 31358  }
 31359  
 31360  type PutBucketReplicationOutput struct {
 31361  	_ struct{} `type:"structure"`
 31362  }
 31363  
 31364  // String returns the string representation.
 31365  //
 31366  // API parameter values that are decorated as "sensitive" in the API will not
 31367  // be included in the string output. The member name will be present, but the
 31368  // value will be replaced with "sensitive".
 31369  func (s PutBucketReplicationOutput) String() string {
 31370  	return awsutil.Prettify(s)
 31371  }
 31372  
 31373  // GoString returns the string representation.
 31374  //
 31375  // API parameter values that are decorated as "sensitive" in the API will not
 31376  // be included in the string output. The member name will be present, but the
 31377  // value will be replaced with "sensitive".
 31378  func (s PutBucketReplicationOutput) GoString() string {
 31379  	return s.String()
 31380  }
 31381  
 31382  type PutBucketRequestPaymentInput struct {
 31383  	_ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"`
 31384  
 31385  	// The bucket name.
 31386  	//
 31387  	// Bucket is a required field
 31388  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31389  
 31390  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31391  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31392  	// error.
 31393  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31394  
 31395  	// Container for Payer.
 31396  	//
 31397  	// RequestPaymentConfiguration is a required field
 31398  	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31399  }
 31400  
 31401  // String returns the string representation.
 31402  //
 31403  // API parameter values that are decorated as "sensitive" in the API will not
 31404  // be included in the string output. The member name will be present, but the
 31405  // value will be replaced with "sensitive".
 31406  func (s PutBucketRequestPaymentInput) String() string {
 31407  	return awsutil.Prettify(s)
 31408  }
 31409  
 31410  // GoString returns the string representation.
 31411  //
 31412  // API parameter values that are decorated as "sensitive" in the API will not
 31413  // be included in the string output. The member name will be present, but the
 31414  // value will be replaced with "sensitive".
 31415  func (s PutBucketRequestPaymentInput) GoString() string {
 31416  	return s.String()
 31417  }
 31418  
 31419  // Validate inspects the fields of the type to determine if they are valid.
 31420  func (s *PutBucketRequestPaymentInput) Validate() error {
 31421  	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
 31422  	if s.Bucket == nil {
 31423  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31424  	}
 31425  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31426  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31427  	}
 31428  	if s.RequestPaymentConfiguration == nil {
 31429  		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
 31430  	}
 31431  	if s.RequestPaymentConfiguration != nil {
 31432  		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
 31433  			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
 31434  		}
 31435  	}
 31436  
 31437  	if invalidParams.Len() > 0 {
 31438  		return invalidParams
 31439  	}
 31440  	return nil
 31441  }
 31442  
 31443  // SetBucket sets the Bucket field's value.
 31444  func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
 31445  	s.Bucket = &v
 31446  	return s
 31447  }
 31448  
 31449  func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
 31450  	if s.Bucket == nil {
 31451  		return v
 31452  	}
 31453  	return *s.Bucket
 31454  }
 31455  
 31456  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31457  func (s *PutBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *PutBucketRequestPaymentInput {
 31458  	s.ExpectedBucketOwner = &v
 31459  	return s
 31460  }
 31461  
 31462  // SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
 31463  func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
 31464  	s.RequestPaymentConfiguration = v
 31465  	return s
 31466  }
 31467  
 31468  func (s *PutBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
 31469  	if s.Bucket == nil {
 31470  		return nil, fmt.Errorf("member Bucket is nil")
 31471  	}
 31472  	return parseEndpointARN(*s.Bucket)
 31473  }
 31474  
 31475  func (s *PutBucketRequestPaymentInput) hasEndpointARN() bool {
 31476  	if s.Bucket == nil {
 31477  		return false
 31478  	}
 31479  	return arn.IsARN(*s.Bucket)
 31480  }
 31481  
 31482  // updateArnableField updates the value of the input field that
 31483  // takes an ARN as an input. This method is useful to backfill
 31484  // the parsed resource name from ARN into the input member.
 31485  // It returns a pointer to a modified copy of input and an error.
 31486  // Note that original input is not modified.
 31487  func (s PutBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
 31488  	if s.Bucket == nil {
 31489  		return nil, fmt.Errorf("member Bucket is nil")
 31490  	}
 31491  	s.Bucket = aws.String(v)
 31492  	return &s, nil
 31493  }
 31494  
 31495  type PutBucketRequestPaymentOutput struct {
 31496  	_ struct{} `type:"structure"`
 31497  }
 31498  
 31499  // String returns the string representation.
 31500  //
 31501  // API parameter values that are decorated as "sensitive" in the API will not
 31502  // be included in the string output. The member name will be present, but the
 31503  // value will be replaced with "sensitive".
 31504  func (s PutBucketRequestPaymentOutput) String() string {
 31505  	return awsutil.Prettify(s)
 31506  }
 31507  
 31508  // GoString returns the string representation.
 31509  //
 31510  // API parameter values that are decorated as "sensitive" in the API will not
 31511  // be included in the string output. The member name will be present, but the
 31512  // value will be replaced with "sensitive".
 31513  func (s PutBucketRequestPaymentOutput) GoString() string {
 31514  	return s.String()
 31515  }
 31516  
 31517  type PutBucketTaggingInput struct {
 31518  	_ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"`
 31519  
 31520  	// The bucket name.
 31521  	//
 31522  	// Bucket is a required field
 31523  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31524  
 31525  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31526  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31527  	// error.
 31528  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31529  
 31530  	// Container for the TagSet and Tag elements.
 31531  	//
 31532  	// Tagging is a required field
 31533  	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31534  }
 31535  
 31536  // String returns the string representation.
 31537  //
 31538  // API parameter values that are decorated as "sensitive" in the API will not
 31539  // be included in the string output. The member name will be present, but the
 31540  // value will be replaced with "sensitive".
 31541  func (s PutBucketTaggingInput) String() string {
 31542  	return awsutil.Prettify(s)
 31543  }
 31544  
 31545  // GoString returns the string representation.
 31546  //
 31547  // API parameter values that are decorated as "sensitive" in the API will not
 31548  // be included in the string output. The member name will be present, but the
 31549  // value will be replaced with "sensitive".
 31550  func (s PutBucketTaggingInput) GoString() string {
 31551  	return s.String()
 31552  }
 31553  
 31554  // Validate inspects the fields of the type to determine if they are valid.
 31555  func (s *PutBucketTaggingInput) Validate() error {
 31556  	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
 31557  	if s.Bucket == nil {
 31558  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31559  	}
 31560  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31561  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31562  	}
 31563  	if s.Tagging == nil {
 31564  		invalidParams.Add(request.NewErrParamRequired("Tagging"))
 31565  	}
 31566  	if s.Tagging != nil {
 31567  		if err := s.Tagging.Validate(); err != nil {
 31568  			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
 31569  		}
 31570  	}
 31571  
 31572  	if invalidParams.Len() > 0 {
 31573  		return invalidParams
 31574  	}
 31575  	return nil
 31576  }
 31577  
 31578  // SetBucket sets the Bucket field's value.
 31579  func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
 31580  	s.Bucket = &v
 31581  	return s
 31582  }
 31583  
 31584  func (s *PutBucketTaggingInput) getBucket() (v string) {
 31585  	if s.Bucket == nil {
 31586  		return v
 31587  	}
 31588  	return *s.Bucket
 31589  }
 31590  
 31591  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31592  func (s *PutBucketTaggingInput) SetExpectedBucketOwner(v string) *PutBucketTaggingInput {
 31593  	s.ExpectedBucketOwner = &v
 31594  	return s
 31595  }
 31596  
 31597  // SetTagging sets the Tagging field's value.
 31598  func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
 31599  	s.Tagging = v
 31600  	return s
 31601  }
 31602  
 31603  func (s *PutBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
 31604  	if s.Bucket == nil {
 31605  		return nil, fmt.Errorf("member Bucket is nil")
 31606  	}
 31607  	return parseEndpointARN(*s.Bucket)
 31608  }
 31609  
 31610  func (s *PutBucketTaggingInput) hasEndpointARN() bool {
 31611  	if s.Bucket == nil {
 31612  		return false
 31613  	}
 31614  	return arn.IsARN(*s.Bucket)
 31615  }
 31616  
 31617  // updateArnableField updates the value of the input field that
 31618  // takes an ARN as an input. This method is useful to backfill
 31619  // the parsed resource name from ARN into the input member.
 31620  // It returns a pointer to a modified copy of input and an error.
 31621  // Note that original input is not modified.
 31622  func (s PutBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
 31623  	if s.Bucket == nil {
 31624  		return nil, fmt.Errorf("member Bucket is nil")
 31625  	}
 31626  	s.Bucket = aws.String(v)
 31627  	return &s, nil
 31628  }
 31629  
 31630  type PutBucketTaggingOutput struct {
 31631  	_ struct{} `type:"structure"`
 31632  }
 31633  
 31634  // String returns the string representation.
 31635  //
 31636  // API parameter values that are decorated as "sensitive" in the API will not
 31637  // be included in the string output. The member name will be present, but the
 31638  // value will be replaced with "sensitive".
 31639  func (s PutBucketTaggingOutput) String() string {
 31640  	return awsutil.Prettify(s)
 31641  }
 31642  
 31643  // GoString returns the string representation.
 31644  //
 31645  // API parameter values that are decorated as "sensitive" in the API will not
 31646  // be included in the string output. The member name will be present, but the
 31647  // value will be replaced with "sensitive".
 31648  func (s PutBucketTaggingOutput) GoString() string {
 31649  	return s.String()
 31650  }
 31651  
 31652  type PutBucketVersioningInput struct {
 31653  	_ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"`
 31654  
 31655  	// The bucket name.
 31656  	//
 31657  	// Bucket is a required field
 31658  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31659  
 31660  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31661  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31662  	// error.
 31663  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31664  
 31665  	// The concatenation of the authentication device's serial number, a space,
 31666  	// and the value that is displayed on your authentication device.
 31667  	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
 31668  
 31669  	// Container for setting the versioning state.
 31670  	//
 31671  	// VersioningConfiguration is a required field
 31672  	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31673  }
 31674  
 31675  // String returns the string representation.
 31676  //
 31677  // API parameter values that are decorated as "sensitive" in the API will not
 31678  // be included in the string output. The member name will be present, but the
 31679  // value will be replaced with "sensitive".
 31680  func (s PutBucketVersioningInput) String() string {
 31681  	return awsutil.Prettify(s)
 31682  }
 31683  
 31684  // GoString returns the string representation.
 31685  //
 31686  // API parameter values that are decorated as "sensitive" in the API will not
 31687  // be included in the string output. The member name will be present, but the
 31688  // value will be replaced with "sensitive".
 31689  func (s PutBucketVersioningInput) GoString() string {
 31690  	return s.String()
 31691  }
 31692  
 31693  // Validate inspects the fields of the type to determine if they are valid.
 31694  func (s *PutBucketVersioningInput) Validate() error {
 31695  	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
 31696  	if s.Bucket == nil {
 31697  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31698  	}
 31699  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31700  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31701  	}
 31702  	if s.VersioningConfiguration == nil {
 31703  		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
 31704  	}
 31705  
 31706  	if invalidParams.Len() > 0 {
 31707  		return invalidParams
 31708  	}
 31709  	return nil
 31710  }
 31711  
 31712  // SetBucket sets the Bucket field's value.
 31713  func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
 31714  	s.Bucket = &v
 31715  	return s
 31716  }
 31717  
 31718  func (s *PutBucketVersioningInput) getBucket() (v string) {
 31719  	if s.Bucket == nil {
 31720  		return v
 31721  	}
 31722  	return *s.Bucket
 31723  }
 31724  
 31725  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31726  func (s *PutBucketVersioningInput) SetExpectedBucketOwner(v string) *PutBucketVersioningInput {
 31727  	s.ExpectedBucketOwner = &v
 31728  	return s
 31729  }
 31730  
 31731  // SetMFA sets the MFA field's value.
 31732  func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
 31733  	s.MFA = &v
 31734  	return s
 31735  }
 31736  
 31737  // SetVersioningConfiguration sets the VersioningConfiguration field's value.
 31738  func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
 31739  	s.VersioningConfiguration = v
 31740  	return s
 31741  }
 31742  
 31743  func (s *PutBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
 31744  	if s.Bucket == nil {
 31745  		return nil, fmt.Errorf("member Bucket is nil")
 31746  	}
 31747  	return parseEndpointARN(*s.Bucket)
 31748  }
 31749  
 31750  func (s *PutBucketVersioningInput) hasEndpointARN() bool {
 31751  	if s.Bucket == nil {
 31752  		return false
 31753  	}
 31754  	return arn.IsARN(*s.Bucket)
 31755  }
 31756  
 31757  // updateArnableField updates the value of the input field that
 31758  // takes an ARN as an input. This method is useful to backfill
 31759  // the parsed resource name from ARN into the input member.
 31760  // It returns a pointer to a modified copy of input and an error.
 31761  // Note that original input is not modified.
 31762  func (s PutBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
 31763  	if s.Bucket == nil {
 31764  		return nil, fmt.Errorf("member Bucket is nil")
 31765  	}
 31766  	s.Bucket = aws.String(v)
 31767  	return &s, nil
 31768  }
 31769  
 31770  type PutBucketVersioningOutput struct {
 31771  	_ struct{} `type:"structure"`
 31772  }
 31773  
 31774  // String returns the string representation.
 31775  //
 31776  // API parameter values that are decorated as "sensitive" in the API will not
 31777  // be included in the string output. The member name will be present, but the
 31778  // value will be replaced with "sensitive".
 31779  func (s PutBucketVersioningOutput) String() string {
 31780  	return awsutil.Prettify(s)
 31781  }
 31782  
 31783  // GoString returns the string representation.
 31784  //
 31785  // API parameter values that are decorated as "sensitive" in the API will not
 31786  // be included in the string output. The member name will be present, but the
 31787  // value will be replaced with "sensitive".
 31788  func (s PutBucketVersioningOutput) GoString() string {
 31789  	return s.String()
 31790  }
 31791  
 31792  type PutBucketWebsiteInput struct {
 31793  	_ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"`
 31794  
 31795  	// The bucket name.
 31796  	//
 31797  	// Bucket is a required field
 31798  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31799  
 31800  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31801  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31802  	// error.
 31803  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31804  
 31805  	// Container for the request.
 31806  	//
 31807  	// WebsiteConfiguration is a required field
 31808  	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31809  }
 31810  
 31811  // String returns the string representation.
 31812  //
 31813  // API parameter values that are decorated as "sensitive" in the API will not
 31814  // be included in the string output. The member name will be present, but the
 31815  // value will be replaced with "sensitive".
 31816  func (s PutBucketWebsiteInput) String() string {
 31817  	return awsutil.Prettify(s)
 31818  }
 31819  
 31820  // GoString returns the string representation.
 31821  //
 31822  // API parameter values that are decorated as "sensitive" in the API will not
 31823  // be included in the string output. The member name will be present, but the
 31824  // value will be replaced with "sensitive".
 31825  func (s PutBucketWebsiteInput) GoString() string {
 31826  	return s.String()
 31827  }
 31828  
 31829  // Validate inspects the fields of the type to determine if they are valid.
 31830  func (s *PutBucketWebsiteInput) Validate() error {
 31831  	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
 31832  	if s.Bucket == nil {
 31833  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 31834  	}
 31835  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 31836  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 31837  	}
 31838  	if s.WebsiteConfiguration == nil {
 31839  		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
 31840  	}
 31841  	if s.WebsiteConfiguration != nil {
 31842  		if err := s.WebsiteConfiguration.Validate(); err != nil {
 31843  			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
 31844  		}
 31845  	}
 31846  
 31847  	if invalidParams.Len() > 0 {
 31848  		return invalidParams
 31849  	}
 31850  	return nil
 31851  }
 31852  
 31853  // SetBucket sets the Bucket field's value.
 31854  func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
 31855  	s.Bucket = &v
 31856  	return s
 31857  }
 31858  
 31859  func (s *PutBucketWebsiteInput) getBucket() (v string) {
 31860  	if s.Bucket == nil {
 31861  		return v
 31862  	}
 31863  	return *s.Bucket
 31864  }
 31865  
 31866  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 31867  func (s *PutBucketWebsiteInput) SetExpectedBucketOwner(v string) *PutBucketWebsiteInput {
 31868  	s.ExpectedBucketOwner = &v
 31869  	return s
 31870  }
 31871  
 31872  // SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
 31873  func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
 31874  	s.WebsiteConfiguration = v
 31875  	return s
 31876  }
 31877  
 31878  func (s *PutBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
 31879  	if s.Bucket == nil {
 31880  		return nil, fmt.Errorf("member Bucket is nil")
 31881  	}
 31882  	return parseEndpointARN(*s.Bucket)
 31883  }
 31884  
 31885  func (s *PutBucketWebsiteInput) hasEndpointARN() bool {
 31886  	if s.Bucket == nil {
 31887  		return false
 31888  	}
 31889  	return arn.IsARN(*s.Bucket)
 31890  }
 31891  
 31892  // updateArnableField updates the value of the input field that
 31893  // takes an ARN as an input. This method is useful to backfill
 31894  // the parsed resource name from ARN into the input member.
 31895  // It returns a pointer to a modified copy of input and an error.
 31896  // Note that original input is not modified.
 31897  func (s PutBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
 31898  	if s.Bucket == nil {
 31899  		return nil, fmt.Errorf("member Bucket is nil")
 31900  	}
 31901  	s.Bucket = aws.String(v)
 31902  	return &s, nil
 31903  }
 31904  
 31905  type PutBucketWebsiteOutput struct {
 31906  	_ struct{} `type:"structure"`
 31907  }
 31908  
 31909  // String returns the string representation.
 31910  //
 31911  // API parameter values that are decorated as "sensitive" in the API will not
 31912  // be included in the string output. The member name will be present, but the
 31913  // value will be replaced with "sensitive".
 31914  func (s PutBucketWebsiteOutput) String() string {
 31915  	return awsutil.Prettify(s)
 31916  }
 31917  
 31918  // GoString returns the string representation.
 31919  //
 31920  // API parameter values that are decorated as "sensitive" in the API will not
 31921  // be included in the string output. The member name will be present, but the
 31922  // value will be replaced with "sensitive".
 31923  func (s PutBucketWebsiteOutput) GoString() string {
 31924  	return s.String()
 31925  }
 31926  
 31927  type PutObjectAclInput struct {
 31928  	_ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"`
 31929  
 31930  	// The canned ACL to apply to the object. For more information, see Canned ACL
 31931  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
 31932  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
 31933  
 31934  	// Contains the elements that set the ACL permissions for an object per grantee.
 31935  	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 31936  
 31937  	// The bucket name that contains the object to which you want to attach the
 31938  	// ACL.
 31939  	//
 31940  	// When using this action with an access point, you must direct requests to
 31941  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 31942  	// When using this action with an access point through the Amazon Web Services
 31943  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 31944  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 31945  	// in the Amazon S3 User Guide.
 31946  	//
 31947  	// Bucket is a required field
 31948  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 31949  
 31950  	// The account ID of the expected bucket owner. If the bucket is owned by a
 31951  	// different account, the request will fail with an HTTP 403 (Access Denied)
 31952  	// error.
 31953  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 31954  
 31955  	// Allows grantee the read, write, read ACP, and write ACP permissions on the
 31956  	// bucket.
 31957  	//
 31958  	// This action is not supported by Amazon S3 on Outposts.
 31959  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 31960  
 31961  	// Allows grantee to list the objects in the bucket.
 31962  	//
 31963  	// This action is not supported by Amazon S3 on Outposts.
 31964  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 31965  
 31966  	// Allows grantee to read the bucket ACL.
 31967  	//
 31968  	// This action is not supported by Amazon S3 on Outposts.
 31969  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 31970  
 31971  	// Allows grantee to create new objects in the bucket.
 31972  	//
 31973  	// For the bucket and object owners of existing objects, also allows deletions
 31974  	// and overwrites of those objects.
 31975  	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
 31976  
 31977  	// Allows grantee to write the ACL for the applicable bucket.
 31978  	//
 31979  	// This action is not supported by Amazon S3 on Outposts.
 31980  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 31981  
 31982  	// Key for which the PUT action was initiated.
 31983  	//
 31984  	// When using this action with an access point, you must direct requests to
 31985  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 31986  	// When using this action with an access point through the Amazon Web Services
 31987  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 31988  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 31989  	// in the Amazon S3 User Guide.
 31990  	//
 31991  	// When using this action with Amazon S3 on Outposts, you must direct requests
 31992  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 31993  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 31994  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 31995  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 31996  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 31997  	// in the Amazon S3 User Guide.
 31998  	//
 31999  	// Key is a required field
 32000  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 32001  
 32002  	// Confirms that the requester knows that they will be charged for the request.
 32003  	// Bucket owners need not specify this parameter in their requests. For information
 32004  	// about downloading objects from requester pays buckets, see Downloading Objects
 32005  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 32006  	// in the Amazon S3 User Guide.
 32007  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 32008  
 32009  	// VersionId used to reference a specific version of the object.
 32010  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 32011  }
 32012  
 32013  // String returns the string representation.
 32014  //
 32015  // API parameter values that are decorated as "sensitive" in the API will not
 32016  // be included in the string output. The member name will be present, but the
 32017  // value will be replaced with "sensitive".
 32018  func (s PutObjectAclInput) String() string {
 32019  	return awsutil.Prettify(s)
 32020  }
 32021  
 32022  // GoString returns the string representation.
 32023  //
 32024  // API parameter values that are decorated as "sensitive" in the API will not
 32025  // be included in the string output. The member name will be present, but the
 32026  // value will be replaced with "sensitive".
 32027  func (s PutObjectAclInput) GoString() string {
 32028  	return s.String()
 32029  }
 32030  
 32031  // Validate inspects the fields of the type to determine if they are valid.
 32032  func (s *PutObjectAclInput) Validate() error {
 32033  	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
 32034  	if s.Bucket == nil {
 32035  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 32036  	}
 32037  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 32038  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 32039  	}
 32040  	if s.Key == nil {
 32041  		invalidParams.Add(request.NewErrParamRequired("Key"))
 32042  	}
 32043  	if s.Key != nil && len(*s.Key) < 1 {
 32044  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 32045  	}
 32046  	if s.AccessControlPolicy != nil {
 32047  		if err := s.AccessControlPolicy.Validate(); err != nil {
 32048  			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
 32049  		}
 32050  	}
 32051  
 32052  	if invalidParams.Len() > 0 {
 32053  		return invalidParams
 32054  	}
 32055  	return nil
 32056  }
 32057  
 32058  // SetACL sets the ACL field's value.
 32059  func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
 32060  	s.ACL = &v
 32061  	return s
 32062  }
 32063  
 32064  // SetAccessControlPolicy sets the AccessControlPolicy field's value.
 32065  func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
 32066  	s.AccessControlPolicy = v
 32067  	return s
 32068  }
 32069  
 32070  // SetBucket sets the Bucket field's value.
 32071  func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
 32072  	s.Bucket = &v
 32073  	return s
 32074  }
 32075  
 32076  func (s *PutObjectAclInput) getBucket() (v string) {
 32077  	if s.Bucket == nil {
 32078  		return v
 32079  	}
 32080  	return *s.Bucket
 32081  }
 32082  
 32083  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 32084  func (s *PutObjectAclInput) SetExpectedBucketOwner(v string) *PutObjectAclInput {
 32085  	s.ExpectedBucketOwner = &v
 32086  	return s
 32087  }
 32088  
 32089  // SetGrantFullControl sets the GrantFullControl field's value.
 32090  func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
 32091  	s.GrantFullControl = &v
 32092  	return s
 32093  }
 32094  
 32095  // SetGrantRead sets the GrantRead field's value.
 32096  func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
 32097  	s.GrantRead = &v
 32098  	return s
 32099  }
 32100  
 32101  // SetGrantReadACP sets the GrantReadACP field's value.
 32102  func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
 32103  	s.GrantReadACP = &v
 32104  	return s
 32105  }
 32106  
 32107  // SetGrantWrite sets the GrantWrite field's value.
 32108  func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
 32109  	s.GrantWrite = &v
 32110  	return s
 32111  }
 32112  
 32113  // SetGrantWriteACP sets the GrantWriteACP field's value.
 32114  func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
 32115  	s.GrantWriteACP = &v
 32116  	return s
 32117  }
 32118  
 32119  // SetKey sets the Key field's value.
 32120  func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
 32121  	s.Key = &v
 32122  	return s
 32123  }
 32124  
 32125  // SetRequestPayer sets the RequestPayer field's value.
 32126  func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
 32127  	s.RequestPayer = &v
 32128  	return s
 32129  }
 32130  
 32131  // SetVersionId sets the VersionId field's value.
 32132  func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
 32133  	s.VersionId = &v
 32134  	return s
 32135  }
 32136  
 32137  func (s *PutObjectAclInput) getEndpointARN() (arn.Resource, error) {
 32138  	if s.Bucket == nil {
 32139  		return nil, fmt.Errorf("member Bucket is nil")
 32140  	}
 32141  	return parseEndpointARN(*s.Bucket)
 32142  }
 32143  
 32144  func (s *PutObjectAclInput) hasEndpointARN() bool {
 32145  	if s.Bucket == nil {
 32146  		return false
 32147  	}
 32148  	return arn.IsARN(*s.Bucket)
 32149  }
 32150  
 32151  // updateArnableField updates the value of the input field that
 32152  // takes an ARN as an input. This method is useful to backfill
 32153  // the parsed resource name from ARN into the input member.
 32154  // It returns a pointer to a modified copy of input and an error.
 32155  // Note that original input is not modified.
 32156  func (s PutObjectAclInput) updateArnableField(v string) (interface{}, error) {
 32157  	if s.Bucket == nil {
 32158  		return nil, fmt.Errorf("member Bucket is nil")
 32159  	}
 32160  	s.Bucket = aws.String(v)
 32161  	return &s, nil
 32162  }
 32163  
 32164  type PutObjectAclOutput struct {
 32165  	_ struct{} `type:"structure"`
 32166  
 32167  	// If present, indicates that the requester was successfully charged for the
 32168  	// request.
 32169  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 32170  }
 32171  
 32172  // String returns the string representation.
 32173  //
 32174  // API parameter values that are decorated as "sensitive" in the API will not
 32175  // be included in the string output. The member name will be present, but the
 32176  // value will be replaced with "sensitive".
 32177  func (s PutObjectAclOutput) String() string {
 32178  	return awsutil.Prettify(s)
 32179  }
 32180  
 32181  // GoString returns the string representation.
 32182  //
 32183  // API parameter values that are decorated as "sensitive" in the API will not
 32184  // be included in the string output. The member name will be present, but the
 32185  // value will be replaced with "sensitive".
 32186  func (s PutObjectAclOutput) GoString() string {
 32187  	return s.String()
 32188  }
 32189  
 32190  // SetRequestCharged sets the RequestCharged field's value.
 32191  func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
 32192  	s.RequestCharged = &v
 32193  	return s
 32194  }
 32195  
 32196  type PutObjectInput struct {
 32197  	_ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"`
 32198  
 32199  	// The canned ACL to apply to the object. For more information, see Canned ACL
 32200  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
 32201  	//
 32202  	// This action is not supported by Amazon S3 on Outposts.
 32203  	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
 32204  
 32205  	// Object data.
 32206  	Body io.ReadSeeker `type:"blob"`
 32207  
 32208  	// The bucket name to which the PUT action was initiated.
 32209  	//
 32210  	// When using this action with an access point, you must direct requests to
 32211  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 32212  	// When using this action with an access point through the Amazon Web Services
 32213  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 32214  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 32215  	// in the Amazon S3 User Guide.
 32216  	//
 32217  	// When using this action with Amazon S3 on Outposts, you must direct requests
 32218  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 32219  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 32220  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 32221  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 32222  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 32223  	// in the Amazon S3 User Guide.
 32224  	//
 32225  	// Bucket is a required field
 32226  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 32227  
 32228  	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
 32229  	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
 32230  	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
 32231  	// SSE-KMS.
 32232  	//
 32233  	// Specifying this header with a PUT action doesn’t affect bucket-level settings
 32234  	// for S3 Bucket Key.
 32235  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 32236  
 32237  	// Can be used to specify caching behavior along the request/reply chain. For
 32238  	// more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
 32239  	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
 32240  	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
 32241  
 32242  	// Specifies presentational information for the object. For more information,
 32243  	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1).
 32244  	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
 32245  
 32246  	// Specifies what content encodings have been applied to the object and thus
 32247  	// what decoding mechanisms must be applied to obtain the media-type referenced
 32248  	// by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
 32249  	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
 32250  	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
 32251  
 32252  	// The language the content is in.
 32253  	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
 32254  
 32255  	// Size of the body in bytes. This parameter is useful when the size of the
 32256  	// body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
 32257  	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
 32258  	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
 32259  
 32260  	// The base64-encoded 128-bit MD5 digest of the message (without the headers)
 32261  	// according to RFC 1864. This header can be used as a message integrity check
 32262  	// to verify that the data is the same data that was originally sent. Although
 32263  	// it is optional, we recommend using the Content-MD5 mechanism as an end-to-end
 32264  	// integrity check. For more information about REST request authentication,
 32265  	// see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
 32266  	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
 32267  
 32268  	// A standard MIME type describing the format of the contents. For more information,
 32269  	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
 32270  	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
 32271  
 32272  	// The account ID of the expected bucket owner. If the bucket is owned by a
 32273  	// different account, the request will fail with an HTTP 403 (Access Denied)
 32274  	// error.
 32275  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 32276  
 32277  	// The date and time at which the object is no longer cacheable. For more information,
 32278  	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
 32279  	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
 32280  
 32281  	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
 32282  	//
 32283  	// This action is not supported by Amazon S3 on Outposts.
 32284  	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
 32285  
 32286  	// Allows grantee to read the object data and its metadata.
 32287  	//
 32288  	// This action is not supported by Amazon S3 on Outposts.
 32289  	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
 32290  
 32291  	// Allows grantee to read the object ACL.
 32292  	//
 32293  	// This action is not supported by Amazon S3 on Outposts.
 32294  	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
 32295  
 32296  	// Allows grantee to write the ACL for the applicable object.
 32297  	//
 32298  	// This action is not supported by Amazon S3 on Outposts.
 32299  	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
 32300  
 32301  	// Object key for which the PUT action was initiated.
 32302  	//
 32303  	// Key is a required field
 32304  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 32305  
 32306  	// A map of metadata to store with the object in S3.
 32307  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 32308  
 32309  	// Specifies whether a legal hold will be applied to this object. For more information
 32310  	// about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
 32311  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 32312  
 32313  	// The Object Lock mode that you want to apply to this object.
 32314  	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 32315  
 32316  	// The date and time when you want this object's Object Lock to expire. Must
 32317  	// be formatted as a timestamp parameter.
 32318  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 32319  
 32320  	// Confirms that the requester knows that they will be charged for the request.
 32321  	// Bucket owners need not specify this parameter in their requests. For information
 32322  	// about downloading objects from requester pays buckets, see Downloading Objects
 32323  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 32324  	// in the Amazon S3 User Guide.
 32325  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 32326  
 32327  	// Specifies the algorithm to use to when encrypting the object (for example,
 32328  	// AES256).
 32329  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 32330  
 32331  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 32332  	// data. This value is used to store the object and then it is discarded; Amazon
 32333  	// S3 does not store the encryption key. The key must be appropriate for use
 32334  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 32335  	// header.
 32336  	//
 32337  	// SSECustomerKey is a sensitive parameter and its value will be
 32338  	// replaced with "sensitive" in string returned by PutObjectInput's
 32339  	// String and GoString methods.
 32340  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 32341  
 32342  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 32343  	// Amazon S3 uses this header for a message integrity check to ensure that the
 32344  	// encryption key was transmitted without error.
 32345  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 32346  
 32347  	// Specifies the Amazon Web Services KMS Encryption Context to use for object
 32348  	// encryption. The value of this header is a base64-encoded UTF-8 string holding
 32349  	// JSON with the encryption context key-value pairs.
 32350  	//
 32351  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 32352  	// replaced with "sensitive" in string returned by PutObjectInput's
 32353  	// String and GoString methods.
 32354  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 32355  
 32356  	// If x-amz-server-side-encryption is present and has the value of aws:kms,
 32357  	// this header specifies the ID of the Amazon Web Services Key Management Service
 32358  	// (Amazon Web Services KMS) symmetrical customer managed key that was used
 32359  	// for the object. If you specify x-amz-server-side-encryption:aws:kms, but
 32360  	// do not providex-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses
 32361  	// the Amazon Web Services managed key to protect the data. If the KMS key does
 32362  	// not exist in the same account issuing the command, you must use the full
 32363  	// ARN and not just the ID.
 32364  	//
 32365  	// SSEKMSKeyId is a sensitive parameter and its value will be
 32366  	// replaced with "sensitive" in string returned by PutObjectInput's
 32367  	// String and GoString methods.
 32368  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 32369  
 32370  	// The server-side encryption algorithm used when storing this object in Amazon
 32371  	// S3 (for example, AES256, aws:kms).
 32372  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 32373  
 32374  	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
 32375  	// objects. The STANDARD storage class provides high durability and high availability.
 32376  	// Depending on performance needs, you can specify a different Storage Class.
 32377  	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
 32378  	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
 32379  	// in the Amazon S3 User Guide.
 32380  	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
 32381  
 32382  	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
 32383  	// (For example, "Key1=Value1")
 32384  	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
 32385  
 32386  	// If the bucket is configured as a website, redirects requests for this object
 32387  	// to another object in the same bucket or to an external URL. Amazon S3 stores
 32388  	// the value of this header in the object metadata. For information about object
 32389  	// metadata, see Object Key and Metadata (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html).
 32390  	//
 32391  	// In the following example, the request header sets the redirect to an object
 32392  	// (anotherPage.html) in the same bucket:
 32393  	//
 32394  	// x-amz-website-redirect-location: /anotherPage.html
 32395  	//
 32396  	// In the following example, the request header sets the object redirect to
 32397  	// another website:
 32398  	//
 32399  	// x-amz-website-redirect-location: http://www.example.com/
 32400  	//
 32401  	// For more information about website hosting in Amazon S3, see Hosting Websites
 32402  	// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
 32403  	// and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
 32404  	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
 32405  }
 32406  
 32407  // String returns the string representation.
 32408  //
 32409  // API parameter values that are decorated as "sensitive" in the API will not
 32410  // be included in the string output. The member name will be present, but the
 32411  // value will be replaced with "sensitive".
 32412  func (s PutObjectInput) String() string {
 32413  	return awsutil.Prettify(s)
 32414  }
 32415  
 32416  // GoString returns the string representation.
 32417  //
 32418  // API parameter values that are decorated as "sensitive" in the API will not
 32419  // be included in the string output. The member name will be present, but the
 32420  // value will be replaced with "sensitive".
 32421  func (s PutObjectInput) GoString() string {
 32422  	return s.String()
 32423  }
 32424  
 32425  // Validate inspects the fields of the type to determine if they are valid.
 32426  func (s *PutObjectInput) Validate() error {
 32427  	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
 32428  	if s.Bucket == nil {
 32429  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 32430  	}
 32431  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 32432  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 32433  	}
 32434  	if s.Key == nil {
 32435  		invalidParams.Add(request.NewErrParamRequired("Key"))
 32436  	}
 32437  	if s.Key != nil && len(*s.Key) < 1 {
 32438  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 32439  	}
 32440  
 32441  	if invalidParams.Len() > 0 {
 32442  		return invalidParams
 32443  	}
 32444  	return nil
 32445  }
 32446  
 32447  // SetACL sets the ACL field's value.
 32448  func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
 32449  	s.ACL = &v
 32450  	return s
 32451  }
 32452  
 32453  // SetBody sets the Body field's value.
 32454  func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
 32455  	s.Body = v
 32456  	return s
 32457  }
 32458  
 32459  // SetBucket sets the Bucket field's value.
 32460  func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
 32461  	s.Bucket = &v
 32462  	return s
 32463  }
 32464  
 32465  func (s *PutObjectInput) getBucket() (v string) {
 32466  	if s.Bucket == nil {
 32467  		return v
 32468  	}
 32469  	return *s.Bucket
 32470  }
 32471  
 32472  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 32473  func (s *PutObjectInput) SetBucketKeyEnabled(v bool) *PutObjectInput {
 32474  	s.BucketKeyEnabled = &v
 32475  	return s
 32476  }
 32477  
 32478  // SetCacheControl sets the CacheControl field's value.
 32479  func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
 32480  	s.CacheControl = &v
 32481  	return s
 32482  }
 32483  
 32484  // SetContentDisposition sets the ContentDisposition field's value.
 32485  func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
 32486  	s.ContentDisposition = &v
 32487  	return s
 32488  }
 32489  
 32490  // SetContentEncoding sets the ContentEncoding field's value.
 32491  func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
 32492  	s.ContentEncoding = &v
 32493  	return s
 32494  }
 32495  
 32496  // SetContentLanguage sets the ContentLanguage field's value.
 32497  func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
 32498  	s.ContentLanguage = &v
 32499  	return s
 32500  }
 32501  
 32502  // SetContentLength sets the ContentLength field's value.
 32503  func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
 32504  	s.ContentLength = &v
 32505  	return s
 32506  }
 32507  
 32508  // SetContentMD5 sets the ContentMD5 field's value.
 32509  func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
 32510  	s.ContentMD5 = &v
 32511  	return s
 32512  }
 32513  
 32514  // SetContentType sets the ContentType field's value.
 32515  func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
 32516  	s.ContentType = &v
 32517  	return s
 32518  }
 32519  
 32520  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 32521  func (s *PutObjectInput) SetExpectedBucketOwner(v string) *PutObjectInput {
 32522  	s.ExpectedBucketOwner = &v
 32523  	return s
 32524  }
 32525  
 32526  // SetExpires sets the Expires field's value.
 32527  func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
 32528  	s.Expires = &v
 32529  	return s
 32530  }
 32531  
 32532  // SetGrantFullControl sets the GrantFullControl field's value.
 32533  func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
 32534  	s.GrantFullControl = &v
 32535  	return s
 32536  }
 32537  
 32538  // SetGrantRead sets the GrantRead field's value.
 32539  func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
 32540  	s.GrantRead = &v
 32541  	return s
 32542  }
 32543  
 32544  // SetGrantReadACP sets the GrantReadACP field's value.
 32545  func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
 32546  	s.GrantReadACP = &v
 32547  	return s
 32548  }
 32549  
 32550  // SetGrantWriteACP sets the GrantWriteACP field's value.
 32551  func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
 32552  	s.GrantWriteACP = &v
 32553  	return s
 32554  }
 32555  
 32556  // SetKey sets the Key field's value.
 32557  func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
 32558  	s.Key = &v
 32559  	return s
 32560  }
 32561  
 32562  // SetMetadata sets the Metadata field's value.
 32563  func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
 32564  	s.Metadata = v
 32565  	return s
 32566  }
 32567  
 32568  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 32569  func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
 32570  	s.ObjectLockLegalHoldStatus = &v
 32571  	return s
 32572  }
 32573  
 32574  // SetObjectLockMode sets the ObjectLockMode field's value.
 32575  func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
 32576  	s.ObjectLockMode = &v
 32577  	return s
 32578  }
 32579  
 32580  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 32581  func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
 32582  	s.ObjectLockRetainUntilDate = &v
 32583  	return s
 32584  }
 32585  
 32586  // SetRequestPayer sets the RequestPayer field's value.
 32587  func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
 32588  	s.RequestPayer = &v
 32589  	return s
 32590  }
 32591  
 32592  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 32593  func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
 32594  	s.SSECustomerAlgorithm = &v
 32595  	return s
 32596  }
 32597  
 32598  // SetSSECustomerKey sets the SSECustomerKey field's value.
 32599  func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
 32600  	s.SSECustomerKey = &v
 32601  	return s
 32602  }
 32603  
 32604  func (s *PutObjectInput) getSSECustomerKey() (v string) {
 32605  	if s.SSECustomerKey == nil {
 32606  		return v
 32607  	}
 32608  	return *s.SSECustomerKey
 32609  }
 32610  
 32611  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 32612  func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
 32613  	s.SSECustomerKeyMD5 = &v
 32614  	return s
 32615  }
 32616  
 32617  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 32618  func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput {
 32619  	s.SSEKMSEncryptionContext = &v
 32620  	return s
 32621  }
 32622  
 32623  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 32624  func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
 32625  	s.SSEKMSKeyId = &v
 32626  	return s
 32627  }
 32628  
 32629  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 32630  func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
 32631  	s.ServerSideEncryption = &v
 32632  	return s
 32633  }
 32634  
 32635  // SetStorageClass sets the StorageClass field's value.
 32636  func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
 32637  	s.StorageClass = &v
 32638  	return s
 32639  }
 32640  
 32641  // SetTagging sets the Tagging field's value.
 32642  func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
 32643  	s.Tagging = &v
 32644  	return s
 32645  }
 32646  
 32647  // SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
 32648  func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
 32649  	s.WebsiteRedirectLocation = &v
 32650  	return s
 32651  }
 32652  
 32653  func (s *PutObjectInput) getEndpointARN() (arn.Resource, error) {
 32654  	if s.Bucket == nil {
 32655  		return nil, fmt.Errorf("member Bucket is nil")
 32656  	}
 32657  	return parseEndpointARN(*s.Bucket)
 32658  }
 32659  
 32660  func (s *PutObjectInput) hasEndpointARN() bool {
 32661  	if s.Bucket == nil {
 32662  		return false
 32663  	}
 32664  	return arn.IsARN(*s.Bucket)
 32665  }
 32666  
 32667  // updateArnableField updates the value of the input field that
 32668  // takes an ARN as an input. This method is useful to backfill
 32669  // the parsed resource name from ARN into the input member.
 32670  // It returns a pointer to a modified copy of input and an error.
 32671  // Note that original input is not modified.
 32672  func (s PutObjectInput) updateArnableField(v string) (interface{}, error) {
 32673  	if s.Bucket == nil {
 32674  		return nil, fmt.Errorf("member Bucket is nil")
 32675  	}
 32676  	s.Bucket = aws.String(v)
 32677  	return &s, nil
 32678  }
 32679  
 32680  type PutObjectLegalHoldInput struct {
 32681  	_ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"`
 32682  
 32683  	// The bucket name containing the object that you want to place a Legal Hold
 32684  	// on.
 32685  	//
 32686  	// When using this action with an access point, you must direct requests to
 32687  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 32688  	// When using this action with an access point through the Amazon Web Services
 32689  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 32690  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 32691  	// in the Amazon S3 User Guide.
 32692  	//
 32693  	// Bucket is a required field
 32694  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 32695  
 32696  	// The account ID of the expected bucket owner. If the bucket is owned by a
 32697  	// different account, the request will fail with an HTTP 403 (Access Denied)
 32698  	// error.
 32699  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 32700  
 32701  	// The key name for the object that you want to place a Legal Hold on.
 32702  	//
 32703  	// Key is a required field
 32704  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 32705  
 32706  	// Container element for the Legal Hold configuration you want to apply to the
 32707  	// specified object.
 32708  	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 32709  
 32710  	// Confirms that the requester knows that they will be charged for the request.
 32711  	// Bucket owners need not specify this parameter in their requests. For information
 32712  	// about downloading objects from requester pays buckets, see Downloading Objects
 32713  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 32714  	// in the Amazon S3 User Guide.
 32715  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 32716  
 32717  	// The version ID of the object that you want to place a Legal Hold on.
 32718  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 32719  }
 32720  
 32721  // String returns the string representation.
 32722  //
 32723  // API parameter values that are decorated as "sensitive" in the API will not
 32724  // be included in the string output. The member name will be present, but the
 32725  // value will be replaced with "sensitive".
 32726  func (s PutObjectLegalHoldInput) String() string {
 32727  	return awsutil.Prettify(s)
 32728  }
 32729  
 32730  // GoString returns the string representation.
 32731  //
 32732  // API parameter values that are decorated as "sensitive" in the API will not
 32733  // be included in the string output. The member name will be present, but the
 32734  // value will be replaced with "sensitive".
 32735  func (s PutObjectLegalHoldInput) GoString() string {
 32736  	return s.String()
 32737  }
 32738  
 32739  // Validate inspects the fields of the type to determine if they are valid.
 32740  func (s *PutObjectLegalHoldInput) Validate() error {
 32741  	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
 32742  	if s.Bucket == nil {
 32743  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 32744  	}
 32745  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 32746  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 32747  	}
 32748  	if s.Key == nil {
 32749  		invalidParams.Add(request.NewErrParamRequired("Key"))
 32750  	}
 32751  	if s.Key != nil && len(*s.Key) < 1 {
 32752  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 32753  	}
 32754  
 32755  	if invalidParams.Len() > 0 {
 32756  		return invalidParams
 32757  	}
 32758  	return nil
 32759  }
 32760  
 32761  // SetBucket sets the Bucket field's value.
 32762  func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
 32763  	s.Bucket = &v
 32764  	return s
 32765  }
 32766  
 32767  func (s *PutObjectLegalHoldInput) getBucket() (v string) {
 32768  	if s.Bucket == nil {
 32769  		return v
 32770  	}
 32771  	return *s.Bucket
 32772  }
 32773  
 32774  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 32775  func (s *PutObjectLegalHoldInput) SetExpectedBucketOwner(v string) *PutObjectLegalHoldInput {
 32776  	s.ExpectedBucketOwner = &v
 32777  	return s
 32778  }
 32779  
 32780  // SetKey sets the Key field's value.
 32781  func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
 32782  	s.Key = &v
 32783  	return s
 32784  }
 32785  
 32786  // SetLegalHold sets the LegalHold field's value.
 32787  func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
 32788  	s.LegalHold = v
 32789  	return s
 32790  }
 32791  
 32792  // SetRequestPayer sets the RequestPayer field's value.
 32793  func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
 32794  	s.RequestPayer = &v
 32795  	return s
 32796  }
 32797  
 32798  // SetVersionId sets the VersionId field's value.
 32799  func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
 32800  	s.VersionId = &v
 32801  	return s
 32802  }
 32803  
 32804  func (s *PutObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
 32805  	if s.Bucket == nil {
 32806  		return nil, fmt.Errorf("member Bucket is nil")
 32807  	}
 32808  	return parseEndpointARN(*s.Bucket)
 32809  }
 32810  
 32811  func (s *PutObjectLegalHoldInput) hasEndpointARN() bool {
 32812  	if s.Bucket == nil {
 32813  		return false
 32814  	}
 32815  	return arn.IsARN(*s.Bucket)
 32816  }
 32817  
 32818  // updateArnableField updates the value of the input field that
 32819  // takes an ARN as an input. This method is useful to backfill
 32820  // the parsed resource name from ARN into the input member.
 32821  // It returns a pointer to a modified copy of input and an error.
 32822  // Note that original input is not modified.
 32823  func (s PutObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
 32824  	if s.Bucket == nil {
 32825  		return nil, fmt.Errorf("member Bucket is nil")
 32826  	}
 32827  	s.Bucket = aws.String(v)
 32828  	return &s, nil
 32829  }
 32830  
 32831  type PutObjectLegalHoldOutput struct {
 32832  	_ struct{} `type:"structure"`
 32833  
 32834  	// If present, indicates that the requester was successfully charged for the
 32835  	// request.
 32836  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 32837  }
 32838  
 32839  // String returns the string representation.
 32840  //
 32841  // API parameter values that are decorated as "sensitive" in the API will not
 32842  // be included in the string output. The member name will be present, but the
 32843  // value will be replaced with "sensitive".
 32844  func (s PutObjectLegalHoldOutput) String() string {
 32845  	return awsutil.Prettify(s)
 32846  }
 32847  
 32848  // GoString returns the string representation.
 32849  //
 32850  // API parameter values that are decorated as "sensitive" in the API will not
 32851  // be included in the string output. The member name will be present, but the
 32852  // value will be replaced with "sensitive".
 32853  func (s PutObjectLegalHoldOutput) GoString() string {
 32854  	return s.String()
 32855  }
 32856  
 32857  // SetRequestCharged sets the RequestCharged field's value.
 32858  func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
 32859  	s.RequestCharged = &v
 32860  	return s
 32861  }
 32862  
 32863  type PutObjectLockConfigurationInput struct {
 32864  	_ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"`
 32865  
 32866  	// The bucket whose Object Lock configuration you want to create or replace.
 32867  	//
 32868  	// Bucket is a required field
 32869  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 32870  
 32871  	// The account ID of the expected bucket owner. If the bucket is owned by a
 32872  	// different account, the request will fail with an HTTP 403 (Access Denied)
 32873  	// error.
 32874  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 32875  
 32876  	// The Object Lock configuration that you want to apply to the specified bucket.
 32877  	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 32878  
 32879  	// Confirms that the requester knows that they will be charged for the request.
 32880  	// Bucket owners need not specify this parameter in their requests. For information
 32881  	// about downloading objects from requester pays buckets, see Downloading Objects
 32882  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 32883  	// in the Amazon S3 User Guide.
 32884  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 32885  
 32886  	// A token to allow Object Lock to be enabled for an existing bucket.
 32887  	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
 32888  }
 32889  
 32890  // String returns the string representation.
 32891  //
 32892  // API parameter values that are decorated as "sensitive" in the API will not
 32893  // be included in the string output. The member name will be present, but the
 32894  // value will be replaced with "sensitive".
 32895  func (s PutObjectLockConfigurationInput) String() string {
 32896  	return awsutil.Prettify(s)
 32897  }
 32898  
 32899  // GoString returns the string representation.
 32900  //
 32901  // API parameter values that are decorated as "sensitive" in the API will not
 32902  // be included in the string output. The member name will be present, but the
 32903  // value will be replaced with "sensitive".
 32904  func (s PutObjectLockConfigurationInput) GoString() string {
 32905  	return s.String()
 32906  }
 32907  
 32908  // Validate inspects the fields of the type to determine if they are valid.
 32909  func (s *PutObjectLockConfigurationInput) Validate() error {
 32910  	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
 32911  	if s.Bucket == nil {
 32912  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 32913  	}
 32914  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 32915  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 32916  	}
 32917  
 32918  	if invalidParams.Len() > 0 {
 32919  		return invalidParams
 32920  	}
 32921  	return nil
 32922  }
 32923  
 32924  // SetBucket sets the Bucket field's value.
 32925  func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
 32926  	s.Bucket = &v
 32927  	return s
 32928  }
 32929  
 32930  func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
 32931  	if s.Bucket == nil {
 32932  		return v
 32933  	}
 32934  	return *s.Bucket
 32935  }
 32936  
 32937  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 32938  func (s *PutObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *PutObjectLockConfigurationInput {
 32939  	s.ExpectedBucketOwner = &v
 32940  	return s
 32941  }
 32942  
 32943  // SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
 32944  func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
 32945  	s.ObjectLockConfiguration = v
 32946  	return s
 32947  }
 32948  
 32949  // SetRequestPayer sets the RequestPayer field's value.
 32950  func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
 32951  	s.RequestPayer = &v
 32952  	return s
 32953  }
 32954  
 32955  // SetToken sets the Token field's value.
 32956  func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
 32957  	s.Token = &v
 32958  	return s
 32959  }
 32960  
 32961  func (s *PutObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
 32962  	if s.Bucket == nil {
 32963  		return nil, fmt.Errorf("member Bucket is nil")
 32964  	}
 32965  	return parseEndpointARN(*s.Bucket)
 32966  }
 32967  
 32968  func (s *PutObjectLockConfigurationInput) hasEndpointARN() bool {
 32969  	if s.Bucket == nil {
 32970  		return false
 32971  	}
 32972  	return arn.IsARN(*s.Bucket)
 32973  }
 32974  
 32975  // updateArnableField updates the value of the input field that
 32976  // takes an ARN as an input. This method is useful to backfill
 32977  // the parsed resource name from ARN into the input member.
 32978  // It returns a pointer to a modified copy of input and an error.
 32979  // Note that original input is not modified.
 32980  func (s PutObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
 32981  	if s.Bucket == nil {
 32982  		return nil, fmt.Errorf("member Bucket is nil")
 32983  	}
 32984  	s.Bucket = aws.String(v)
 32985  	return &s, nil
 32986  }
 32987  
 32988  type PutObjectLockConfigurationOutput struct {
 32989  	_ struct{} `type:"structure"`
 32990  
 32991  	// If present, indicates that the requester was successfully charged for the
 32992  	// request.
 32993  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 32994  }
 32995  
 32996  // String returns the string representation.
 32997  //
 32998  // API parameter values that are decorated as "sensitive" in the API will not
 32999  // be included in the string output. The member name will be present, but the
 33000  // value will be replaced with "sensitive".
 33001  func (s PutObjectLockConfigurationOutput) String() string {
 33002  	return awsutil.Prettify(s)
 33003  }
 33004  
 33005  // GoString returns the string representation.
 33006  //
 33007  // API parameter values that are decorated as "sensitive" in the API will not
 33008  // be included in the string output. The member name will be present, but the
 33009  // value will be replaced with "sensitive".
 33010  func (s PutObjectLockConfigurationOutput) GoString() string {
 33011  	return s.String()
 33012  }
 33013  
 33014  // SetRequestCharged sets the RequestCharged field's value.
 33015  func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
 33016  	s.RequestCharged = &v
 33017  	return s
 33018  }
 33019  
 33020  type PutObjectOutput struct {
 33021  	_ struct{} `type:"structure"`
 33022  
 33023  	// Indicates whether the uploaded object uses an S3 Bucket Key for server-side
 33024  	// encryption with Amazon Web Services KMS (SSE-KMS).
 33025  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 33026  
 33027  	// Entity tag for the uploaded object.
 33028  	ETag *string `location:"header" locationName:"ETag" type:"string"`
 33029  
 33030  	// If the expiration is configured for the object (see PutBucketLifecycleConfiguration
 33031  	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)),
 33032  	// the response includes this header. It includes the expiry-date and rule-id
 33033  	// key-value pairs that provide information about object expiration. The value
 33034  	// of the rule-id is URL encoded.
 33035  	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
 33036  
 33037  	// If present, indicates that the requester was successfully charged for the
 33038  	// request.
 33039  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 33040  
 33041  	// If server-side encryption with a customer-provided encryption key was requested,
 33042  	// the response will include this header confirming the encryption algorithm
 33043  	// used.
 33044  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 33045  
 33046  	// If server-side encryption with a customer-provided encryption key was requested,
 33047  	// the response will include this header to provide round-trip message integrity
 33048  	// verification of the customer-provided encryption key.
 33049  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 33050  
 33051  	// If present, specifies the Amazon Web Services KMS Encryption Context to use
 33052  	// for object encryption. The value of this header is a base64-encoded UTF-8
 33053  	// string holding JSON with the encryption context key-value pairs.
 33054  	//
 33055  	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
 33056  	// replaced with "sensitive" in string returned by PutObjectOutput's
 33057  	// String and GoString methods.
 33058  	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
 33059  
 33060  	// If x-amz-server-side-encryption is present and has the value of aws:kms,
 33061  	// this header specifies the ID of the Amazon Web Services Key Management Service
 33062  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 33063  	// the object.
 33064  	//
 33065  	// SSEKMSKeyId is a sensitive parameter and its value will be
 33066  	// replaced with "sensitive" in string returned by PutObjectOutput's
 33067  	// String and GoString methods.
 33068  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 33069  
 33070  	// If you specified server-side encryption either with an Amazon Web Services
 33071  	// KMS key or Amazon S3-managed encryption key in your PUT request, the response
 33072  	// includes this header. It confirms the encryption algorithm that Amazon S3
 33073  	// used to encrypt the object.
 33074  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 33075  
 33076  	// Version of the object.
 33077  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 33078  }
 33079  
 33080  // String returns the string representation.
 33081  //
 33082  // API parameter values that are decorated as "sensitive" in the API will not
 33083  // be included in the string output. The member name will be present, but the
 33084  // value will be replaced with "sensitive".
 33085  func (s PutObjectOutput) String() string {
 33086  	return awsutil.Prettify(s)
 33087  }
 33088  
 33089  // GoString returns the string representation.
 33090  //
 33091  // API parameter values that are decorated as "sensitive" in the API will not
 33092  // be included in the string output. The member name will be present, but the
 33093  // value will be replaced with "sensitive".
 33094  func (s PutObjectOutput) GoString() string {
 33095  	return s.String()
 33096  }
 33097  
 33098  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 33099  func (s *PutObjectOutput) SetBucketKeyEnabled(v bool) *PutObjectOutput {
 33100  	s.BucketKeyEnabled = &v
 33101  	return s
 33102  }
 33103  
 33104  // SetETag sets the ETag field's value.
 33105  func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
 33106  	s.ETag = &v
 33107  	return s
 33108  }
 33109  
 33110  // SetExpiration sets the Expiration field's value.
 33111  func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
 33112  	s.Expiration = &v
 33113  	return s
 33114  }
 33115  
 33116  // SetRequestCharged sets the RequestCharged field's value.
 33117  func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
 33118  	s.RequestCharged = &v
 33119  	return s
 33120  }
 33121  
 33122  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 33123  func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
 33124  	s.SSECustomerAlgorithm = &v
 33125  	return s
 33126  }
 33127  
 33128  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 33129  func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
 33130  	s.SSECustomerKeyMD5 = &v
 33131  	return s
 33132  }
 33133  
 33134  // SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
 33135  func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput {
 33136  	s.SSEKMSEncryptionContext = &v
 33137  	return s
 33138  }
 33139  
 33140  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 33141  func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
 33142  	s.SSEKMSKeyId = &v
 33143  	return s
 33144  }
 33145  
 33146  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 33147  func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
 33148  	s.ServerSideEncryption = &v
 33149  	return s
 33150  }
 33151  
 33152  // SetVersionId sets the VersionId field's value.
 33153  func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
 33154  	s.VersionId = &v
 33155  	return s
 33156  }
 33157  
 33158  type PutObjectRetentionInput struct {
 33159  	_ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"`
 33160  
 33161  	// The bucket name that contains the object you want to apply this Object Retention
 33162  	// configuration to.
 33163  	//
 33164  	// When using this action with an access point, you must direct requests to
 33165  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 33166  	// When using this action with an access point through the Amazon Web Services
 33167  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 33168  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 33169  	// in the Amazon S3 User Guide.
 33170  	//
 33171  	// Bucket is a required field
 33172  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 33173  
 33174  	// Indicates whether this action should bypass Governance-mode restrictions.
 33175  	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
 33176  
 33177  	// The account ID of the expected bucket owner. If the bucket is owned by a
 33178  	// different account, the request will fail with an HTTP 403 (Access Denied)
 33179  	// error.
 33180  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 33181  
 33182  	// The key name for the object that you want to apply this Object Retention
 33183  	// configuration to.
 33184  	//
 33185  	// Key is a required field
 33186  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 33187  
 33188  	// Confirms that the requester knows that they will be charged for the request.
 33189  	// Bucket owners need not specify this parameter in their requests. For information
 33190  	// about downloading objects from requester pays buckets, see Downloading Objects
 33191  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 33192  	// in the Amazon S3 User Guide.
 33193  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 33194  
 33195  	// The container element for the Object Retention configuration.
 33196  	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 33197  
 33198  	// The version ID for the object that you want to apply this Object Retention
 33199  	// configuration to.
 33200  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 33201  }
 33202  
 33203  // String returns the string representation.
 33204  //
 33205  // API parameter values that are decorated as "sensitive" in the API will not
 33206  // be included in the string output. The member name will be present, but the
 33207  // value will be replaced with "sensitive".
 33208  func (s PutObjectRetentionInput) String() string {
 33209  	return awsutil.Prettify(s)
 33210  }
 33211  
 33212  // GoString returns the string representation.
 33213  //
 33214  // API parameter values that are decorated as "sensitive" in the API will not
 33215  // be included in the string output. The member name will be present, but the
 33216  // value will be replaced with "sensitive".
 33217  func (s PutObjectRetentionInput) GoString() string {
 33218  	return s.String()
 33219  }
 33220  
 33221  // Validate inspects the fields of the type to determine if they are valid.
 33222  func (s *PutObjectRetentionInput) Validate() error {
 33223  	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
 33224  	if s.Bucket == nil {
 33225  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 33226  	}
 33227  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 33228  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 33229  	}
 33230  	if s.Key == nil {
 33231  		invalidParams.Add(request.NewErrParamRequired("Key"))
 33232  	}
 33233  	if s.Key != nil && len(*s.Key) < 1 {
 33234  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 33235  	}
 33236  
 33237  	if invalidParams.Len() > 0 {
 33238  		return invalidParams
 33239  	}
 33240  	return nil
 33241  }
 33242  
 33243  // SetBucket sets the Bucket field's value.
 33244  func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
 33245  	s.Bucket = &v
 33246  	return s
 33247  }
 33248  
 33249  func (s *PutObjectRetentionInput) getBucket() (v string) {
 33250  	if s.Bucket == nil {
 33251  		return v
 33252  	}
 33253  	return *s.Bucket
 33254  }
 33255  
 33256  // SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
 33257  func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
 33258  	s.BypassGovernanceRetention = &v
 33259  	return s
 33260  }
 33261  
 33262  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 33263  func (s *PutObjectRetentionInput) SetExpectedBucketOwner(v string) *PutObjectRetentionInput {
 33264  	s.ExpectedBucketOwner = &v
 33265  	return s
 33266  }
 33267  
 33268  // SetKey sets the Key field's value.
 33269  func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
 33270  	s.Key = &v
 33271  	return s
 33272  }
 33273  
 33274  // SetRequestPayer sets the RequestPayer field's value.
 33275  func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
 33276  	s.RequestPayer = &v
 33277  	return s
 33278  }
 33279  
 33280  // SetRetention sets the Retention field's value.
 33281  func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
 33282  	s.Retention = v
 33283  	return s
 33284  }
 33285  
 33286  // SetVersionId sets the VersionId field's value.
 33287  func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
 33288  	s.VersionId = &v
 33289  	return s
 33290  }
 33291  
 33292  func (s *PutObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
 33293  	if s.Bucket == nil {
 33294  		return nil, fmt.Errorf("member Bucket is nil")
 33295  	}
 33296  	return parseEndpointARN(*s.Bucket)
 33297  }
 33298  
 33299  func (s *PutObjectRetentionInput) hasEndpointARN() bool {
 33300  	if s.Bucket == nil {
 33301  		return false
 33302  	}
 33303  	return arn.IsARN(*s.Bucket)
 33304  }
 33305  
 33306  // updateArnableField updates the value of the input field that
 33307  // takes an ARN as an input. This method is useful to backfill
 33308  // the parsed resource name from ARN into the input member.
 33309  // It returns a pointer to a modified copy of input and an error.
 33310  // Note that original input is not modified.
 33311  func (s PutObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
 33312  	if s.Bucket == nil {
 33313  		return nil, fmt.Errorf("member Bucket is nil")
 33314  	}
 33315  	s.Bucket = aws.String(v)
 33316  	return &s, nil
 33317  }
 33318  
 33319  type PutObjectRetentionOutput struct {
 33320  	_ struct{} `type:"structure"`
 33321  
 33322  	// If present, indicates that the requester was successfully charged for the
 33323  	// request.
 33324  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 33325  }
 33326  
 33327  // String returns the string representation.
 33328  //
 33329  // API parameter values that are decorated as "sensitive" in the API will not
 33330  // be included in the string output. The member name will be present, but the
 33331  // value will be replaced with "sensitive".
 33332  func (s PutObjectRetentionOutput) String() string {
 33333  	return awsutil.Prettify(s)
 33334  }
 33335  
 33336  // GoString returns the string representation.
 33337  //
 33338  // API parameter values that are decorated as "sensitive" in the API will not
 33339  // be included in the string output. The member name will be present, but the
 33340  // value will be replaced with "sensitive".
 33341  func (s PutObjectRetentionOutput) GoString() string {
 33342  	return s.String()
 33343  }
 33344  
 33345  // SetRequestCharged sets the RequestCharged field's value.
 33346  func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
 33347  	s.RequestCharged = &v
 33348  	return s
 33349  }
 33350  
 33351  type PutObjectTaggingInput struct {
 33352  	_ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"`
 33353  
 33354  	// The bucket name containing the object.
 33355  	//
 33356  	// When using this action with an access point, you must direct requests to
 33357  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 33358  	// When using this action with an access point through the Amazon Web Services
 33359  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 33360  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 33361  	// in the Amazon S3 User Guide.
 33362  	//
 33363  	// When using this action with Amazon S3 on Outposts, you must direct requests
 33364  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 33365  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 33366  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 33367  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 33368  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 33369  	// in the Amazon S3 User Guide.
 33370  	//
 33371  	// Bucket is a required field
 33372  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 33373  
 33374  	// The account ID of the expected bucket owner. If the bucket is owned by a
 33375  	// different account, the request will fail with an HTTP 403 (Access Denied)
 33376  	// error.
 33377  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 33378  
 33379  	// Name of the object key.
 33380  	//
 33381  	// Key is a required field
 33382  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 33383  
 33384  	// Confirms that the requester knows that they will be charged for the request.
 33385  	// Bucket owners need not specify this parameter in their requests. For information
 33386  	// about downloading objects from requester pays buckets, see Downloading Objects
 33387  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 33388  	// in the Amazon S3 User Guide.
 33389  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 33390  
 33391  	// Container for the TagSet and Tag elements
 33392  	//
 33393  	// Tagging is a required field
 33394  	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 33395  
 33396  	// The versionId of the object that the tag-set will be added to.
 33397  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 33398  }
 33399  
 33400  // String returns the string representation.
 33401  //
 33402  // API parameter values that are decorated as "sensitive" in the API will not
 33403  // be included in the string output. The member name will be present, but the
 33404  // value will be replaced with "sensitive".
 33405  func (s PutObjectTaggingInput) String() string {
 33406  	return awsutil.Prettify(s)
 33407  }
 33408  
 33409  // GoString returns the string representation.
 33410  //
 33411  // API parameter values that are decorated as "sensitive" in the API will not
 33412  // be included in the string output. The member name will be present, but the
 33413  // value will be replaced with "sensitive".
 33414  func (s PutObjectTaggingInput) GoString() string {
 33415  	return s.String()
 33416  }
 33417  
 33418  // Validate inspects the fields of the type to determine if they are valid.
 33419  func (s *PutObjectTaggingInput) Validate() error {
 33420  	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
 33421  	if s.Bucket == nil {
 33422  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 33423  	}
 33424  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 33425  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 33426  	}
 33427  	if s.Key == nil {
 33428  		invalidParams.Add(request.NewErrParamRequired("Key"))
 33429  	}
 33430  	if s.Key != nil && len(*s.Key) < 1 {
 33431  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 33432  	}
 33433  	if s.Tagging == nil {
 33434  		invalidParams.Add(request.NewErrParamRequired("Tagging"))
 33435  	}
 33436  	if s.Tagging != nil {
 33437  		if err := s.Tagging.Validate(); err != nil {
 33438  			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
 33439  		}
 33440  	}
 33441  
 33442  	if invalidParams.Len() > 0 {
 33443  		return invalidParams
 33444  	}
 33445  	return nil
 33446  }
 33447  
 33448  // SetBucket sets the Bucket field's value.
 33449  func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
 33450  	s.Bucket = &v
 33451  	return s
 33452  }
 33453  
 33454  func (s *PutObjectTaggingInput) getBucket() (v string) {
 33455  	if s.Bucket == nil {
 33456  		return v
 33457  	}
 33458  	return *s.Bucket
 33459  }
 33460  
 33461  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 33462  func (s *PutObjectTaggingInput) SetExpectedBucketOwner(v string) *PutObjectTaggingInput {
 33463  	s.ExpectedBucketOwner = &v
 33464  	return s
 33465  }
 33466  
 33467  // SetKey sets the Key field's value.
 33468  func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
 33469  	s.Key = &v
 33470  	return s
 33471  }
 33472  
 33473  // SetRequestPayer sets the RequestPayer field's value.
 33474  func (s *PutObjectTaggingInput) SetRequestPayer(v string) *PutObjectTaggingInput {
 33475  	s.RequestPayer = &v
 33476  	return s
 33477  }
 33478  
 33479  // SetTagging sets the Tagging field's value.
 33480  func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
 33481  	s.Tagging = v
 33482  	return s
 33483  }
 33484  
 33485  // SetVersionId sets the VersionId field's value.
 33486  func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
 33487  	s.VersionId = &v
 33488  	return s
 33489  }
 33490  
 33491  func (s *PutObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
 33492  	if s.Bucket == nil {
 33493  		return nil, fmt.Errorf("member Bucket is nil")
 33494  	}
 33495  	return parseEndpointARN(*s.Bucket)
 33496  }
 33497  
 33498  func (s *PutObjectTaggingInput) hasEndpointARN() bool {
 33499  	if s.Bucket == nil {
 33500  		return false
 33501  	}
 33502  	return arn.IsARN(*s.Bucket)
 33503  }
 33504  
 33505  // updateArnableField updates the value of the input field that
 33506  // takes an ARN as an input. This method is useful to backfill
 33507  // the parsed resource name from ARN into the input member.
 33508  // It returns a pointer to a modified copy of input and an error.
 33509  // Note that original input is not modified.
 33510  func (s PutObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
 33511  	if s.Bucket == nil {
 33512  		return nil, fmt.Errorf("member Bucket is nil")
 33513  	}
 33514  	s.Bucket = aws.String(v)
 33515  	return &s, nil
 33516  }
 33517  
 33518  type PutObjectTaggingOutput struct {
 33519  	_ struct{} `type:"structure"`
 33520  
 33521  	// The versionId of the object the tag-set was added to.
 33522  	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
 33523  }
 33524  
 33525  // String returns the string representation.
 33526  //
 33527  // API parameter values that are decorated as "sensitive" in the API will not
 33528  // be included in the string output. The member name will be present, but the
 33529  // value will be replaced with "sensitive".
 33530  func (s PutObjectTaggingOutput) String() string {
 33531  	return awsutil.Prettify(s)
 33532  }
 33533  
 33534  // GoString returns the string representation.
 33535  //
 33536  // API parameter values that are decorated as "sensitive" in the API will not
 33537  // be included in the string output. The member name will be present, but the
 33538  // value will be replaced with "sensitive".
 33539  func (s PutObjectTaggingOutput) GoString() string {
 33540  	return s.String()
 33541  }
 33542  
 33543  // SetVersionId sets the VersionId field's value.
 33544  func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
 33545  	s.VersionId = &v
 33546  	return s
 33547  }
 33548  
 33549  type PutPublicAccessBlockInput struct {
 33550  	_ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"`
 33551  
 33552  	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
 33553  	// want to set.
 33554  	//
 33555  	// Bucket is a required field
 33556  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 33557  
 33558  	// The account ID of the expected bucket owner. If the bucket is owned by a
 33559  	// different account, the request will fail with an HTTP 403 (Access Denied)
 33560  	// error.
 33561  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 33562  
 33563  	// The PublicAccessBlock configuration that you want to apply to this Amazon
 33564  	// S3 bucket. You can enable the configuration options in any combination. For
 33565  	// more information about when Amazon S3 considers a bucket or object public,
 33566  	// see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status)
 33567  	// in the Amazon S3 User Guide.
 33568  	//
 33569  	// PublicAccessBlockConfiguration is a required field
 33570  	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 33571  }
 33572  
 33573  // String returns the string representation.
 33574  //
 33575  // API parameter values that are decorated as "sensitive" in the API will not
 33576  // be included in the string output. The member name will be present, but the
 33577  // value will be replaced with "sensitive".
 33578  func (s PutPublicAccessBlockInput) String() string {
 33579  	return awsutil.Prettify(s)
 33580  }
 33581  
 33582  // GoString returns the string representation.
 33583  //
 33584  // API parameter values that are decorated as "sensitive" in the API will not
 33585  // be included in the string output. The member name will be present, but the
 33586  // value will be replaced with "sensitive".
 33587  func (s PutPublicAccessBlockInput) GoString() string {
 33588  	return s.String()
 33589  }
 33590  
 33591  // Validate inspects the fields of the type to determine if they are valid.
 33592  func (s *PutPublicAccessBlockInput) Validate() error {
 33593  	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
 33594  	if s.Bucket == nil {
 33595  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 33596  	}
 33597  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 33598  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 33599  	}
 33600  	if s.PublicAccessBlockConfiguration == nil {
 33601  		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
 33602  	}
 33603  
 33604  	if invalidParams.Len() > 0 {
 33605  		return invalidParams
 33606  	}
 33607  	return nil
 33608  }
 33609  
 33610  // SetBucket sets the Bucket field's value.
 33611  func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
 33612  	s.Bucket = &v
 33613  	return s
 33614  }
 33615  
 33616  func (s *PutPublicAccessBlockInput) getBucket() (v string) {
 33617  	if s.Bucket == nil {
 33618  		return v
 33619  	}
 33620  	return *s.Bucket
 33621  }
 33622  
 33623  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 33624  func (s *PutPublicAccessBlockInput) SetExpectedBucketOwner(v string) *PutPublicAccessBlockInput {
 33625  	s.ExpectedBucketOwner = &v
 33626  	return s
 33627  }
 33628  
 33629  // SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
 33630  func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
 33631  	s.PublicAccessBlockConfiguration = v
 33632  	return s
 33633  }
 33634  
 33635  func (s *PutPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
 33636  	if s.Bucket == nil {
 33637  		return nil, fmt.Errorf("member Bucket is nil")
 33638  	}
 33639  	return parseEndpointARN(*s.Bucket)
 33640  }
 33641  
 33642  func (s *PutPublicAccessBlockInput) hasEndpointARN() bool {
 33643  	if s.Bucket == nil {
 33644  		return false
 33645  	}
 33646  	return arn.IsARN(*s.Bucket)
 33647  }
 33648  
 33649  // updateArnableField updates the value of the input field that
 33650  // takes an ARN as an input. This method is useful to backfill
 33651  // the parsed resource name from ARN into the input member.
 33652  // It returns a pointer to a modified copy of input and an error.
 33653  // Note that original input is not modified.
 33654  func (s PutPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
 33655  	if s.Bucket == nil {
 33656  		return nil, fmt.Errorf("member Bucket is nil")
 33657  	}
 33658  	s.Bucket = aws.String(v)
 33659  	return &s, nil
 33660  }
 33661  
 33662  type PutPublicAccessBlockOutput struct {
 33663  	_ struct{} `type:"structure"`
 33664  }
 33665  
 33666  // String returns the string representation.
 33667  //
 33668  // API parameter values that are decorated as "sensitive" in the API will not
 33669  // be included in the string output. The member name will be present, but the
 33670  // value will be replaced with "sensitive".
 33671  func (s PutPublicAccessBlockOutput) String() string {
 33672  	return awsutil.Prettify(s)
 33673  }
 33674  
 33675  // GoString returns the string representation.
 33676  //
 33677  // API parameter values that are decorated as "sensitive" in the API will not
 33678  // be included in the string output. The member name will be present, but the
 33679  // value will be replaced with "sensitive".
 33680  func (s PutPublicAccessBlockOutput) GoString() string {
 33681  	return s.String()
 33682  }
 33683  
 33684  // Specifies the configuration for publishing messages to an Amazon Simple Queue
 33685  // Service (Amazon SQS) queue when Amazon S3 detects specified events.
 33686  type QueueConfiguration struct {
 33687  	_ struct{} `type:"structure"`
 33688  
 33689  	// A collection of bucket events for which to send notifications
 33690  	//
 33691  	// Events is a required field
 33692  	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
 33693  
 33694  	// Specifies object key name filtering rules. For information about key name
 33695  	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 33696  	// in the Amazon S3 User Guide.
 33697  	Filter *NotificationConfigurationFilter `type:"structure"`
 33698  
 33699  	// An optional unique identifier for configurations in a notification configuration.
 33700  	// If you don't provide one, Amazon S3 will assign an ID.
 33701  	Id *string `type:"string"`
 33702  
 33703  	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
 33704  	// publishes a message when it detects events of the specified type.
 33705  	//
 33706  	// QueueArn is a required field
 33707  	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
 33708  }
 33709  
 33710  // String returns the string representation.
 33711  //
 33712  // API parameter values that are decorated as "sensitive" in the API will not
 33713  // be included in the string output. The member name will be present, but the
 33714  // value will be replaced with "sensitive".
 33715  func (s QueueConfiguration) String() string {
 33716  	return awsutil.Prettify(s)
 33717  }
 33718  
 33719  // GoString returns the string representation.
 33720  //
 33721  // API parameter values that are decorated as "sensitive" in the API will not
 33722  // be included in the string output. The member name will be present, but the
 33723  // value will be replaced with "sensitive".
 33724  func (s QueueConfiguration) GoString() string {
 33725  	return s.String()
 33726  }
 33727  
 33728  // Validate inspects the fields of the type to determine if they are valid.
 33729  func (s *QueueConfiguration) Validate() error {
 33730  	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
 33731  	if s.Events == nil {
 33732  		invalidParams.Add(request.NewErrParamRequired("Events"))
 33733  	}
 33734  	if s.QueueArn == nil {
 33735  		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
 33736  	}
 33737  
 33738  	if invalidParams.Len() > 0 {
 33739  		return invalidParams
 33740  	}
 33741  	return nil
 33742  }
 33743  
 33744  // SetEvents sets the Events field's value.
 33745  func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
 33746  	s.Events = v
 33747  	return s
 33748  }
 33749  
 33750  // SetFilter sets the Filter field's value.
 33751  func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
 33752  	s.Filter = v
 33753  	return s
 33754  }
 33755  
 33756  // SetId sets the Id field's value.
 33757  func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
 33758  	s.Id = &v
 33759  	return s
 33760  }
 33761  
 33762  // SetQueueArn sets the QueueArn field's value.
 33763  func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
 33764  	s.QueueArn = &v
 33765  	return s
 33766  }
 33767  
 33768  // This data type is deprecated. Use QueueConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_QueueConfiguration.html)
 33769  // for the same purposes. This data type specifies the configuration for publishing
 33770  // messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon
 33771  // S3 detects specified events.
 33772  type QueueConfigurationDeprecated struct {
 33773  	_ struct{} `type:"structure"`
 33774  
 33775  	// The bucket event for which to send notifications.
 33776  	//
 33777  	// Deprecated: Event has been deprecated
 33778  	Event *string `deprecated:"true" type:"string" enum:"Event"`
 33779  
 33780  	// A collection of bucket events for which to send notifications.
 33781  	Events []*string `locationName:"Event" type:"list" flattened:"true"`
 33782  
 33783  	// An optional unique identifier for configurations in a notification configuration.
 33784  	// If you don't provide one, Amazon S3 will assign an ID.
 33785  	Id *string `type:"string"`
 33786  
 33787  	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
 33788  	// publishes a message when it detects events of the specified type.
 33789  	Queue *string `type:"string"`
 33790  }
 33791  
 33792  // String returns the string representation.
 33793  //
 33794  // API parameter values that are decorated as "sensitive" in the API will not
 33795  // be included in the string output. The member name will be present, but the
 33796  // value will be replaced with "sensitive".
 33797  func (s QueueConfigurationDeprecated) String() string {
 33798  	return awsutil.Prettify(s)
 33799  }
 33800  
 33801  // GoString returns the string representation.
 33802  //
 33803  // API parameter values that are decorated as "sensitive" in the API will not
 33804  // be included in the string output. The member name will be present, but the
 33805  // value will be replaced with "sensitive".
 33806  func (s QueueConfigurationDeprecated) GoString() string {
 33807  	return s.String()
 33808  }
 33809  
 33810  // SetEvent sets the Event field's value.
 33811  func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
 33812  	s.Event = &v
 33813  	return s
 33814  }
 33815  
 33816  // SetEvents sets the Events field's value.
 33817  func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
 33818  	s.Events = v
 33819  	return s
 33820  }
 33821  
 33822  // SetId sets the Id field's value.
 33823  func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
 33824  	s.Id = &v
 33825  	return s
 33826  }
 33827  
 33828  // SetQueue sets the Queue field's value.
 33829  func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
 33830  	s.Queue = &v
 33831  	return s
 33832  }
 33833  
 33834  // The container for the records event.
 33835  type RecordsEvent struct {
 33836  	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
 33837  
 33838  	// The byte array of partial, one or more result records.
 33839  	// Payload is automatically base64 encoded/decoded by the SDK.
 33840  	Payload []byte `type:"blob"`
 33841  }
 33842  
 33843  // String returns the string representation.
 33844  //
 33845  // API parameter values that are decorated as "sensitive" in the API will not
 33846  // be included in the string output. The member name will be present, but the
 33847  // value will be replaced with "sensitive".
 33848  func (s RecordsEvent) String() string {
 33849  	return awsutil.Prettify(s)
 33850  }
 33851  
 33852  // GoString returns the string representation.
 33853  //
 33854  // API parameter values that are decorated as "sensitive" in the API will not
 33855  // be included in the string output. The member name will be present, but the
 33856  // value will be replaced with "sensitive".
 33857  func (s RecordsEvent) GoString() string {
 33858  	return s.String()
 33859  }
 33860  
 33861  // SetPayload sets the Payload field's value.
 33862  func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
 33863  	s.Payload = v
 33864  	return s
 33865  }
 33866  
 33867  // The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
 33868  func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
 33869  
 33870  // UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
 33871  // This method is only used internally within the SDK's EventStream handling.
 33872  func (s *RecordsEvent) UnmarshalEvent(
 33873  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 33874  	msg eventstream.Message,
 33875  ) error {
 33876  	s.Payload = make([]byte, len(msg.Payload))
 33877  	copy(s.Payload, msg.Payload)
 33878  	return nil
 33879  }
 33880  
 33881  // MarshalEvent marshals the type into an stream event value. This method
 33882  // should only used internally within the SDK's EventStream handling.
 33883  func (s *RecordsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
 33884  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
 33885  	msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
 33886  	msg.Payload = s.Payload
 33887  	return msg, err
 33888  }
 33889  
 33890  // Specifies how requests are redirected. In the event of an error, you can
 33891  // specify a different error code to return.
 33892  type Redirect struct {
 33893  	_ struct{} `type:"structure"`
 33894  
 33895  	// The host name to use in the redirect request.
 33896  	HostName *string `type:"string"`
 33897  
 33898  	// The HTTP redirect code to use on the response. Not required if one of the
 33899  	// siblings is present.
 33900  	HttpRedirectCode *string `type:"string"`
 33901  
 33902  	// Protocol to use when redirecting requests. The default is the protocol that
 33903  	// is used in the original request.
 33904  	Protocol *string `type:"string" enum:"Protocol"`
 33905  
 33906  	// The object key prefix to use in the redirect request. For example, to redirect
 33907  	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
 33908  	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
 33909  	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
 33910  	// if one of the siblings is present. Can be present only if ReplaceKeyWith
 33911  	// is not provided.
 33912  	//
 33913  	// Replacement must be made for object keys containing special characters (such
 33914  	// as carriage returns) when using XML requests. For more information, see XML
 33915  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 33916  	ReplaceKeyPrefixWith *string `type:"string"`
 33917  
 33918  	// The specific object key to use in the redirect request. For example, redirect
 33919  	// request to error.html. Not required if one of the siblings is present. Can
 33920  	// be present only if ReplaceKeyPrefixWith is not provided.
 33921  	//
 33922  	// Replacement must be made for object keys containing special characters (such
 33923  	// as carriage returns) when using XML requests. For more information, see XML
 33924  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 33925  	ReplaceKeyWith *string `type:"string"`
 33926  }
 33927  
 33928  // String returns the string representation.
 33929  //
 33930  // API parameter values that are decorated as "sensitive" in the API will not
 33931  // be included in the string output. The member name will be present, but the
 33932  // value will be replaced with "sensitive".
 33933  func (s Redirect) String() string {
 33934  	return awsutil.Prettify(s)
 33935  }
 33936  
 33937  // GoString returns the string representation.
 33938  //
 33939  // API parameter values that are decorated as "sensitive" in the API will not
 33940  // be included in the string output. The member name will be present, but the
 33941  // value will be replaced with "sensitive".
 33942  func (s Redirect) GoString() string {
 33943  	return s.String()
 33944  }
 33945  
 33946  // SetHostName sets the HostName field's value.
 33947  func (s *Redirect) SetHostName(v string) *Redirect {
 33948  	s.HostName = &v
 33949  	return s
 33950  }
 33951  
 33952  // SetHttpRedirectCode sets the HttpRedirectCode field's value.
 33953  func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
 33954  	s.HttpRedirectCode = &v
 33955  	return s
 33956  }
 33957  
 33958  // SetProtocol sets the Protocol field's value.
 33959  func (s *Redirect) SetProtocol(v string) *Redirect {
 33960  	s.Protocol = &v
 33961  	return s
 33962  }
 33963  
 33964  // SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
 33965  func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
 33966  	s.ReplaceKeyPrefixWith = &v
 33967  	return s
 33968  }
 33969  
 33970  // SetReplaceKeyWith sets the ReplaceKeyWith field's value.
 33971  func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
 33972  	s.ReplaceKeyWith = &v
 33973  	return s
 33974  }
 33975  
 33976  // Specifies the redirect behavior of all requests to a website endpoint of
 33977  // an Amazon S3 bucket.
 33978  type RedirectAllRequestsTo struct {
 33979  	_ struct{} `type:"structure"`
 33980  
 33981  	// Name of the host where requests are redirected.
 33982  	//
 33983  	// HostName is a required field
 33984  	HostName *string `type:"string" required:"true"`
 33985  
 33986  	// Protocol to use when redirecting requests. The default is the protocol that
 33987  	// is used in the original request.
 33988  	Protocol *string `type:"string" enum:"Protocol"`
 33989  }
 33990  
 33991  // String returns the string representation.
 33992  //
 33993  // API parameter values that are decorated as "sensitive" in the API will not
 33994  // be included in the string output. The member name will be present, but the
 33995  // value will be replaced with "sensitive".
 33996  func (s RedirectAllRequestsTo) String() string {
 33997  	return awsutil.Prettify(s)
 33998  }
 33999  
 34000  // GoString returns the string representation.
 34001  //
 34002  // API parameter values that are decorated as "sensitive" in the API will not
 34003  // be included in the string output. The member name will be present, but the
 34004  // value will be replaced with "sensitive".
 34005  func (s RedirectAllRequestsTo) GoString() string {
 34006  	return s.String()
 34007  }
 34008  
 34009  // Validate inspects the fields of the type to determine if they are valid.
 34010  func (s *RedirectAllRequestsTo) Validate() error {
 34011  	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
 34012  	if s.HostName == nil {
 34013  		invalidParams.Add(request.NewErrParamRequired("HostName"))
 34014  	}
 34015  
 34016  	if invalidParams.Len() > 0 {
 34017  		return invalidParams
 34018  	}
 34019  	return nil
 34020  }
 34021  
 34022  // SetHostName sets the HostName field's value.
 34023  func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
 34024  	s.HostName = &v
 34025  	return s
 34026  }
 34027  
 34028  // SetProtocol sets the Protocol field's value.
 34029  func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
 34030  	s.Protocol = &v
 34031  	return s
 34032  }
 34033  
 34034  // A filter that you can specify for selection for modifications on replicas.
 34035  // Amazon S3 doesn't replicate replica modifications by default. In the latest
 34036  // version of replication configuration (when Filter is specified), you can
 34037  // specify this element and set the status to Enabled to replicate modifications
 34038  // on replicas.
 34039  //
 34040  // If you don't specify the Filter element, Amazon S3 assumes that the replication
 34041  // configuration is the earlier version, V1. In the earlier version, this element
 34042  // is not allowed.
 34043  type ReplicaModifications struct {
 34044  	_ struct{} `type:"structure"`
 34045  
 34046  	// Specifies whether Amazon S3 replicates modifications on replicas.
 34047  	//
 34048  	// Status is a required field
 34049  	Status *string `type:"string" required:"true" enum:"ReplicaModificationsStatus"`
 34050  }
 34051  
 34052  // String returns the string representation.
 34053  //
 34054  // API parameter values that are decorated as "sensitive" in the API will not
 34055  // be included in the string output. The member name will be present, but the
 34056  // value will be replaced with "sensitive".
 34057  func (s ReplicaModifications) String() string {
 34058  	return awsutil.Prettify(s)
 34059  }
 34060  
 34061  // GoString returns the string representation.
 34062  //
 34063  // API parameter values that are decorated as "sensitive" in the API will not
 34064  // be included in the string output. The member name will be present, but the
 34065  // value will be replaced with "sensitive".
 34066  func (s ReplicaModifications) GoString() string {
 34067  	return s.String()
 34068  }
 34069  
 34070  // Validate inspects the fields of the type to determine if they are valid.
 34071  func (s *ReplicaModifications) Validate() error {
 34072  	invalidParams := request.ErrInvalidParams{Context: "ReplicaModifications"}
 34073  	if s.Status == nil {
 34074  		invalidParams.Add(request.NewErrParamRequired("Status"))
 34075  	}
 34076  
 34077  	if invalidParams.Len() > 0 {
 34078  		return invalidParams
 34079  	}
 34080  	return nil
 34081  }
 34082  
 34083  // SetStatus sets the Status field's value.
 34084  func (s *ReplicaModifications) SetStatus(v string) *ReplicaModifications {
 34085  	s.Status = &v
 34086  	return s
 34087  }
 34088  
 34089  // A container for replication rules. You can add up to 1,000 rules. The maximum
 34090  // size of a replication configuration is 2 MB.
 34091  type ReplicationConfiguration struct {
 34092  	_ struct{} `type:"structure"`
 34093  
 34094  	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
 34095  	// role that Amazon S3 assumes when replicating objects. For more information,
 34096  	// see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html)
 34097  	// in the Amazon S3 User Guide.
 34098  	//
 34099  	// Role is a required field
 34100  	Role *string `type:"string" required:"true"`
 34101  
 34102  	// A container for one or more replication rules. A replication configuration
 34103  	// must have at least one rule and can contain a maximum of 1,000 rules.
 34104  	//
 34105  	// Rules is a required field
 34106  	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
 34107  }
 34108  
 34109  // String returns the string representation.
 34110  //
 34111  // API parameter values that are decorated as "sensitive" in the API will not
 34112  // be included in the string output. The member name will be present, but the
 34113  // value will be replaced with "sensitive".
 34114  func (s ReplicationConfiguration) String() string {
 34115  	return awsutil.Prettify(s)
 34116  }
 34117  
 34118  // GoString returns the string representation.
 34119  //
 34120  // API parameter values that are decorated as "sensitive" in the API will not
 34121  // be included in the string output. The member name will be present, but the
 34122  // value will be replaced with "sensitive".
 34123  func (s ReplicationConfiguration) GoString() string {
 34124  	return s.String()
 34125  }
 34126  
 34127  // Validate inspects the fields of the type to determine if they are valid.
 34128  func (s *ReplicationConfiguration) Validate() error {
 34129  	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
 34130  	if s.Role == nil {
 34131  		invalidParams.Add(request.NewErrParamRequired("Role"))
 34132  	}
 34133  	if s.Rules == nil {
 34134  		invalidParams.Add(request.NewErrParamRequired("Rules"))
 34135  	}
 34136  	if s.Rules != nil {
 34137  		for i, v := range s.Rules {
 34138  			if v == nil {
 34139  				continue
 34140  			}
 34141  			if err := v.Validate(); err != nil {
 34142  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 34143  			}
 34144  		}
 34145  	}
 34146  
 34147  	if invalidParams.Len() > 0 {
 34148  		return invalidParams
 34149  	}
 34150  	return nil
 34151  }
 34152  
 34153  // SetRole sets the Role field's value.
 34154  func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
 34155  	s.Role = &v
 34156  	return s
 34157  }
 34158  
 34159  // SetRules sets the Rules field's value.
 34160  func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
 34161  	s.Rules = v
 34162  	return s
 34163  }
 34164  
 34165  // Specifies which Amazon S3 objects to replicate and where to store the replicas.
 34166  type ReplicationRule struct {
 34167  	_ struct{} `type:"structure"`
 34168  
 34169  	// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
 34170  	// in your replication configuration, you must also include a DeleteMarkerReplication
 34171  	// element. If your Filter includes a Tag element, the DeleteMarkerReplication
 34172  	// Status must be set to Disabled, because Amazon S3 does not support replicating
 34173  	// delete markers for tag-based rules. For an example configuration, see Basic
 34174  	// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
 34175  	//
 34176  	// For more information about delete marker replication, see Basic Rule Configuration
 34177  	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
 34178  	//
 34179  	// If you are using an earlier version of the replication configuration, Amazon
 34180  	// S3 handles replication of delete markers differently. For more information,
 34181  	// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
 34182  	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
 34183  
 34184  	// A container for information about the replication destination and its configurations
 34185  	// including enabling the S3 Replication Time Control (S3 RTC).
 34186  	//
 34187  	// Destination is a required field
 34188  	Destination *Destination `type:"structure" required:"true"`
 34189  
 34190  	// Optional configuration to replicate existing source bucket objects. For more
 34191  	// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
 34192  	// in the Amazon S3 User Guide.
 34193  	ExistingObjectReplication *ExistingObjectReplication `type:"structure"`
 34194  
 34195  	// A filter that identifies the subset of objects to which the replication rule
 34196  	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
 34197  	Filter *ReplicationRuleFilter `type:"structure"`
 34198  
 34199  	// A unique identifier for the rule. The maximum value is 255 characters.
 34200  	ID *string `type:"string"`
 34201  
 34202  	// An object key name prefix that identifies the object or objects to which
 34203  	// the rule applies. The maximum prefix length is 1,024 characters. To include
 34204  	// all objects in a bucket, specify an empty string.
 34205  	//
 34206  	// Replacement must be made for object keys containing special characters (such
 34207  	// as carriage returns) when using XML requests. For more information, see XML
 34208  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 34209  	//
 34210  	// Deprecated: Prefix has been deprecated
 34211  	Prefix *string `deprecated:"true" type:"string"`
 34212  
 34213  	// The priority indicates which rule has precedence whenever two or more replication
 34214  	// rules conflict. Amazon S3 will attempt to replicate objects according to
 34215  	// all replication rules. However, if there are two or more rules with the same
 34216  	// destination bucket, then objects will be replicated according to the rule
 34217  	// with the highest priority. The higher the number, the higher the priority.
 34218  	//
 34219  	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
 34220  	// in the Amazon S3 User Guide.
 34221  	Priority *int64 `type:"integer"`
 34222  
 34223  	// A container that describes additional filters for identifying the source
 34224  	// objects that you want to replicate. You can choose to enable or disable the
 34225  	// replication of these objects. Currently, Amazon S3 supports only the filter
 34226  	// that you can specify for objects created with server-side encryption using
 34227  	// a customer managed key stored in Amazon Web Services Key Management Service
 34228  	// (SSE-KMS).
 34229  	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
 34230  
 34231  	// Specifies whether the rule is enabled.
 34232  	//
 34233  	// Status is a required field
 34234  	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
 34235  }
 34236  
 34237  // String returns the string representation.
 34238  //
 34239  // API parameter values that are decorated as "sensitive" in the API will not
 34240  // be included in the string output. The member name will be present, but the
 34241  // value will be replaced with "sensitive".
 34242  func (s ReplicationRule) String() string {
 34243  	return awsutil.Prettify(s)
 34244  }
 34245  
 34246  // GoString returns the string representation.
 34247  //
 34248  // API parameter values that are decorated as "sensitive" in the API will not
 34249  // be included in the string output. The member name will be present, but the
 34250  // value will be replaced with "sensitive".
 34251  func (s ReplicationRule) GoString() string {
 34252  	return s.String()
 34253  }
 34254  
 34255  // Validate inspects the fields of the type to determine if they are valid.
 34256  func (s *ReplicationRule) Validate() error {
 34257  	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
 34258  	if s.Destination == nil {
 34259  		invalidParams.Add(request.NewErrParamRequired("Destination"))
 34260  	}
 34261  	if s.Status == nil {
 34262  		invalidParams.Add(request.NewErrParamRequired("Status"))
 34263  	}
 34264  	if s.Destination != nil {
 34265  		if err := s.Destination.Validate(); err != nil {
 34266  			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
 34267  		}
 34268  	}
 34269  	if s.ExistingObjectReplication != nil {
 34270  		if err := s.ExistingObjectReplication.Validate(); err != nil {
 34271  			invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams))
 34272  		}
 34273  	}
 34274  	if s.Filter != nil {
 34275  		if err := s.Filter.Validate(); err != nil {
 34276  			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
 34277  		}
 34278  	}
 34279  	if s.SourceSelectionCriteria != nil {
 34280  		if err := s.SourceSelectionCriteria.Validate(); err != nil {
 34281  			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
 34282  		}
 34283  	}
 34284  
 34285  	if invalidParams.Len() > 0 {
 34286  		return invalidParams
 34287  	}
 34288  	return nil
 34289  }
 34290  
 34291  // SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
 34292  func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
 34293  	s.DeleteMarkerReplication = v
 34294  	return s
 34295  }
 34296  
 34297  // SetDestination sets the Destination field's value.
 34298  func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
 34299  	s.Destination = v
 34300  	return s
 34301  }
 34302  
 34303  // SetExistingObjectReplication sets the ExistingObjectReplication field's value.
 34304  func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule {
 34305  	s.ExistingObjectReplication = v
 34306  	return s
 34307  }
 34308  
 34309  // SetFilter sets the Filter field's value.
 34310  func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
 34311  	s.Filter = v
 34312  	return s
 34313  }
 34314  
 34315  // SetID sets the ID field's value.
 34316  func (s *ReplicationRule) SetID(v string) *ReplicationRule {
 34317  	s.ID = &v
 34318  	return s
 34319  }
 34320  
 34321  // SetPrefix sets the Prefix field's value.
 34322  func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
 34323  	s.Prefix = &v
 34324  	return s
 34325  }
 34326  
 34327  // SetPriority sets the Priority field's value.
 34328  func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
 34329  	s.Priority = &v
 34330  	return s
 34331  }
 34332  
 34333  // SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
 34334  func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
 34335  	s.SourceSelectionCriteria = v
 34336  	return s
 34337  }
 34338  
 34339  // SetStatus sets the Status field's value.
 34340  func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
 34341  	s.Status = &v
 34342  	return s
 34343  }
 34344  
 34345  // A container for specifying rule filters. The filters determine the subset
 34346  // of objects to which the rule applies. This element is required only if you
 34347  // specify more than one filter.
 34348  //
 34349  // For example:
 34350  //
 34351  //    * If you specify both a Prefix and a Tag filter, wrap these filters in
 34352  //    an And tag.
 34353  //
 34354  //    * If you specify a filter based on multiple tags, wrap the Tag elements
 34355  //    in an And tag.
 34356  type ReplicationRuleAndOperator struct {
 34357  	_ struct{} `type:"structure"`
 34358  
 34359  	// An object key name prefix that identifies the subset of objects to which
 34360  	// the rule applies.
 34361  	Prefix *string `type:"string"`
 34362  
 34363  	// An array of tags containing key and value pairs.
 34364  	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
 34365  }
 34366  
 34367  // String returns the string representation.
 34368  //
 34369  // API parameter values that are decorated as "sensitive" in the API will not
 34370  // be included in the string output. The member name will be present, but the
 34371  // value will be replaced with "sensitive".
 34372  func (s ReplicationRuleAndOperator) String() string {
 34373  	return awsutil.Prettify(s)
 34374  }
 34375  
 34376  // GoString returns the string representation.
 34377  //
 34378  // API parameter values that are decorated as "sensitive" in the API will not
 34379  // be included in the string output. The member name will be present, but the
 34380  // value will be replaced with "sensitive".
 34381  func (s ReplicationRuleAndOperator) GoString() string {
 34382  	return s.String()
 34383  }
 34384  
 34385  // Validate inspects the fields of the type to determine if they are valid.
 34386  func (s *ReplicationRuleAndOperator) Validate() error {
 34387  	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
 34388  	if s.Tags != nil {
 34389  		for i, v := range s.Tags {
 34390  			if v == nil {
 34391  				continue
 34392  			}
 34393  			if err := v.Validate(); err != nil {
 34394  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 34395  			}
 34396  		}
 34397  	}
 34398  
 34399  	if invalidParams.Len() > 0 {
 34400  		return invalidParams
 34401  	}
 34402  	return nil
 34403  }
 34404  
 34405  // SetPrefix sets the Prefix field's value.
 34406  func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
 34407  	s.Prefix = &v
 34408  	return s
 34409  }
 34410  
 34411  // SetTags sets the Tags field's value.
 34412  func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
 34413  	s.Tags = v
 34414  	return s
 34415  }
 34416  
 34417  // A filter that identifies the subset of objects to which the replication rule
 34418  // applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
 34419  type ReplicationRuleFilter struct {
 34420  	_ struct{} `type:"structure"`
 34421  
 34422  	// A container for specifying rule filters. The filters determine the subset
 34423  	// of objects to which the rule applies. This element is required only if you
 34424  	// specify more than one filter. For example:
 34425  	//
 34426  	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
 34427  	//    an And tag.
 34428  	//
 34429  	//    * If you specify a filter based on multiple tags, wrap the Tag elements
 34430  	//    in an And tag.
 34431  	And *ReplicationRuleAndOperator `type:"structure"`
 34432  
 34433  	// An object key name prefix that identifies the subset of objects to which
 34434  	// the rule applies.
 34435  	//
 34436  	// Replacement must be made for object keys containing special characters (such
 34437  	// as carriage returns) when using XML requests. For more information, see XML
 34438  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 34439  	Prefix *string `type:"string"`
 34440  
 34441  	// A container for specifying a tag key and value.
 34442  	//
 34443  	// The rule applies only to objects that have the tag in their tag set.
 34444  	Tag *Tag `type:"structure"`
 34445  }
 34446  
 34447  // String returns the string representation.
 34448  //
 34449  // API parameter values that are decorated as "sensitive" in the API will not
 34450  // be included in the string output. The member name will be present, but the
 34451  // value will be replaced with "sensitive".
 34452  func (s ReplicationRuleFilter) String() string {
 34453  	return awsutil.Prettify(s)
 34454  }
 34455  
 34456  // GoString returns the string representation.
 34457  //
 34458  // API parameter values that are decorated as "sensitive" in the API will not
 34459  // be included in the string output. The member name will be present, but the
 34460  // value will be replaced with "sensitive".
 34461  func (s ReplicationRuleFilter) GoString() string {
 34462  	return s.String()
 34463  }
 34464  
 34465  // Validate inspects the fields of the type to determine if they are valid.
 34466  func (s *ReplicationRuleFilter) Validate() error {
 34467  	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
 34468  	if s.And != nil {
 34469  		if err := s.And.Validate(); err != nil {
 34470  			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
 34471  		}
 34472  	}
 34473  	if s.Tag != nil {
 34474  		if err := s.Tag.Validate(); err != nil {
 34475  			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
 34476  		}
 34477  	}
 34478  
 34479  	if invalidParams.Len() > 0 {
 34480  		return invalidParams
 34481  	}
 34482  	return nil
 34483  }
 34484  
 34485  // SetAnd sets the And field's value.
 34486  func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
 34487  	s.And = v
 34488  	return s
 34489  }
 34490  
 34491  // SetPrefix sets the Prefix field's value.
 34492  func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
 34493  	s.Prefix = &v
 34494  	return s
 34495  }
 34496  
 34497  // SetTag sets the Tag field's value.
 34498  func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
 34499  	s.Tag = v
 34500  	return s
 34501  }
 34502  
 34503  // A container specifying S3 Replication Time Control (S3 RTC) related information,
 34504  // including whether S3 RTC is enabled and the time when all objects and operations
 34505  // on objects must be replicated. Must be specified together with a Metrics
 34506  // block.
 34507  type ReplicationTime struct {
 34508  	_ struct{} `type:"structure"`
 34509  
 34510  	// Specifies whether the replication time is enabled.
 34511  	//
 34512  	// Status is a required field
 34513  	Status *string `type:"string" required:"true" enum:"ReplicationTimeStatus"`
 34514  
 34515  	// A container specifying the time by which replication should be complete for
 34516  	// all objects and operations on objects.
 34517  	//
 34518  	// Time is a required field
 34519  	Time *ReplicationTimeValue `type:"structure" required:"true"`
 34520  }
 34521  
 34522  // String returns the string representation.
 34523  //
 34524  // API parameter values that are decorated as "sensitive" in the API will not
 34525  // be included in the string output. The member name will be present, but the
 34526  // value will be replaced with "sensitive".
 34527  func (s ReplicationTime) String() string {
 34528  	return awsutil.Prettify(s)
 34529  }
 34530  
 34531  // GoString returns the string representation.
 34532  //
 34533  // API parameter values that are decorated as "sensitive" in the API will not
 34534  // be included in the string output. The member name will be present, but the
 34535  // value will be replaced with "sensitive".
 34536  func (s ReplicationTime) GoString() string {
 34537  	return s.String()
 34538  }
 34539  
 34540  // Validate inspects the fields of the type to determine if they are valid.
 34541  func (s *ReplicationTime) Validate() error {
 34542  	invalidParams := request.ErrInvalidParams{Context: "ReplicationTime"}
 34543  	if s.Status == nil {
 34544  		invalidParams.Add(request.NewErrParamRequired("Status"))
 34545  	}
 34546  	if s.Time == nil {
 34547  		invalidParams.Add(request.NewErrParamRequired("Time"))
 34548  	}
 34549  
 34550  	if invalidParams.Len() > 0 {
 34551  		return invalidParams
 34552  	}
 34553  	return nil
 34554  }
 34555  
 34556  // SetStatus sets the Status field's value.
 34557  func (s *ReplicationTime) SetStatus(v string) *ReplicationTime {
 34558  	s.Status = &v
 34559  	return s
 34560  }
 34561  
 34562  // SetTime sets the Time field's value.
 34563  func (s *ReplicationTime) SetTime(v *ReplicationTimeValue) *ReplicationTime {
 34564  	s.Time = v
 34565  	return s
 34566  }
 34567  
 34568  // A container specifying the time value for S3 Replication Time Control (S3
 34569  // RTC) and replication metrics EventThreshold.
 34570  type ReplicationTimeValue struct {
 34571  	_ struct{} `type:"structure"`
 34572  
 34573  	// Contains an integer specifying time in minutes.
 34574  	//
 34575  	// Valid value: 15
 34576  	Minutes *int64 `type:"integer"`
 34577  }
 34578  
 34579  // String returns the string representation.
 34580  //
 34581  // API parameter values that are decorated as "sensitive" in the API will not
 34582  // be included in the string output. The member name will be present, but the
 34583  // value will be replaced with "sensitive".
 34584  func (s ReplicationTimeValue) String() string {
 34585  	return awsutil.Prettify(s)
 34586  }
 34587  
 34588  // GoString returns the string representation.
 34589  //
 34590  // API parameter values that are decorated as "sensitive" in the API will not
 34591  // be included in the string output. The member name will be present, but the
 34592  // value will be replaced with "sensitive".
 34593  func (s ReplicationTimeValue) GoString() string {
 34594  	return s.String()
 34595  }
 34596  
 34597  // SetMinutes sets the Minutes field's value.
 34598  func (s *ReplicationTimeValue) SetMinutes(v int64) *ReplicationTimeValue {
 34599  	s.Minutes = &v
 34600  	return s
 34601  }
 34602  
 34603  // Container for Payer.
 34604  type RequestPaymentConfiguration struct {
 34605  	_ struct{} `type:"structure"`
 34606  
 34607  	// Specifies who pays for the download and request fees.
 34608  	//
 34609  	// Payer is a required field
 34610  	Payer *string `type:"string" required:"true" enum:"Payer"`
 34611  }
 34612  
 34613  // String returns the string representation.
 34614  //
 34615  // API parameter values that are decorated as "sensitive" in the API will not
 34616  // be included in the string output. The member name will be present, but the
 34617  // value will be replaced with "sensitive".
 34618  func (s RequestPaymentConfiguration) String() string {
 34619  	return awsutil.Prettify(s)
 34620  }
 34621  
 34622  // GoString returns the string representation.
 34623  //
 34624  // API parameter values that are decorated as "sensitive" in the API will not
 34625  // be included in the string output. The member name will be present, but the
 34626  // value will be replaced with "sensitive".
 34627  func (s RequestPaymentConfiguration) GoString() string {
 34628  	return s.String()
 34629  }
 34630  
 34631  // Validate inspects the fields of the type to determine if they are valid.
 34632  func (s *RequestPaymentConfiguration) Validate() error {
 34633  	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
 34634  	if s.Payer == nil {
 34635  		invalidParams.Add(request.NewErrParamRequired("Payer"))
 34636  	}
 34637  
 34638  	if invalidParams.Len() > 0 {
 34639  		return invalidParams
 34640  	}
 34641  	return nil
 34642  }
 34643  
 34644  // SetPayer sets the Payer field's value.
 34645  func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
 34646  	s.Payer = &v
 34647  	return s
 34648  }
 34649  
 34650  // Container for specifying if periodic QueryProgress messages should be sent.
 34651  type RequestProgress struct {
 34652  	_ struct{} `type:"structure"`
 34653  
 34654  	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
 34655  	// TRUE, FALSE. Default value: FALSE.
 34656  	Enabled *bool `type:"boolean"`
 34657  }
 34658  
 34659  // String returns the string representation.
 34660  //
 34661  // API parameter values that are decorated as "sensitive" in the API will not
 34662  // be included in the string output. The member name will be present, but the
 34663  // value will be replaced with "sensitive".
 34664  func (s RequestProgress) String() string {
 34665  	return awsutil.Prettify(s)
 34666  }
 34667  
 34668  // GoString returns the string representation.
 34669  //
 34670  // API parameter values that are decorated as "sensitive" in the API will not
 34671  // be included in the string output. The member name will be present, but the
 34672  // value will be replaced with "sensitive".
 34673  func (s RequestProgress) GoString() string {
 34674  	return s.String()
 34675  }
 34676  
 34677  // SetEnabled sets the Enabled field's value.
 34678  func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
 34679  	s.Enabled = &v
 34680  	return s
 34681  }
 34682  
 34683  type RestoreObjectInput struct {
 34684  	_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
 34685  
 34686  	// The bucket name containing the object to restore.
 34687  	//
 34688  	// When using this action with an access point, you must direct requests to
 34689  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 34690  	// When using this action with an access point through the Amazon Web Services
 34691  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 34692  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 34693  	// in the Amazon S3 User Guide.
 34694  	//
 34695  	// When using this action with Amazon S3 on Outposts, you must direct requests
 34696  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 34697  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 34698  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 34699  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 34700  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 34701  	// in the Amazon S3 User Guide.
 34702  	//
 34703  	// Bucket is a required field
 34704  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 34705  
 34706  	// The account ID of the expected bucket owner. If the bucket is owned by a
 34707  	// different account, the request will fail with an HTTP 403 (Access Denied)
 34708  	// error.
 34709  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 34710  
 34711  	// Object key for which the action was initiated.
 34712  	//
 34713  	// Key is a required field
 34714  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 34715  
 34716  	// Confirms that the requester knows that they will be charged for the request.
 34717  	// Bucket owners need not specify this parameter in their requests. For information
 34718  	// about downloading objects from requester pays buckets, see Downloading Objects
 34719  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 34720  	// in the Amazon S3 User Guide.
 34721  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 34722  
 34723  	// Container for restore job parameters.
 34724  	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 34725  
 34726  	// VersionId used to reference a specific version of the object.
 34727  	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
 34728  }
 34729  
 34730  // String returns the string representation.
 34731  //
 34732  // API parameter values that are decorated as "sensitive" in the API will not
 34733  // be included in the string output. The member name will be present, but the
 34734  // value will be replaced with "sensitive".
 34735  func (s RestoreObjectInput) String() string {
 34736  	return awsutil.Prettify(s)
 34737  }
 34738  
 34739  // GoString returns the string representation.
 34740  //
 34741  // API parameter values that are decorated as "sensitive" in the API will not
 34742  // be included in the string output. The member name will be present, but the
 34743  // value will be replaced with "sensitive".
 34744  func (s RestoreObjectInput) GoString() string {
 34745  	return s.String()
 34746  }
 34747  
 34748  // Validate inspects the fields of the type to determine if they are valid.
 34749  func (s *RestoreObjectInput) Validate() error {
 34750  	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
 34751  	if s.Bucket == nil {
 34752  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 34753  	}
 34754  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 34755  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 34756  	}
 34757  	if s.Key == nil {
 34758  		invalidParams.Add(request.NewErrParamRequired("Key"))
 34759  	}
 34760  	if s.Key != nil && len(*s.Key) < 1 {
 34761  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 34762  	}
 34763  	if s.RestoreRequest != nil {
 34764  		if err := s.RestoreRequest.Validate(); err != nil {
 34765  			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
 34766  		}
 34767  	}
 34768  
 34769  	if invalidParams.Len() > 0 {
 34770  		return invalidParams
 34771  	}
 34772  	return nil
 34773  }
 34774  
 34775  // SetBucket sets the Bucket field's value.
 34776  func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
 34777  	s.Bucket = &v
 34778  	return s
 34779  }
 34780  
 34781  func (s *RestoreObjectInput) getBucket() (v string) {
 34782  	if s.Bucket == nil {
 34783  		return v
 34784  	}
 34785  	return *s.Bucket
 34786  }
 34787  
 34788  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 34789  func (s *RestoreObjectInput) SetExpectedBucketOwner(v string) *RestoreObjectInput {
 34790  	s.ExpectedBucketOwner = &v
 34791  	return s
 34792  }
 34793  
 34794  // SetKey sets the Key field's value.
 34795  func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
 34796  	s.Key = &v
 34797  	return s
 34798  }
 34799  
 34800  // SetRequestPayer sets the RequestPayer field's value.
 34801  func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
 34802  	s.RequestPayer = &v
 34803  	return s
 34804  }
 34805  
 34806  // SetRestoreRequest sets the RestoreRequest field's value.
 34807  func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
 34808  	s.RestoreRequest = v
 34809  	return s
 34810  }
 34811  
 34812  // SetVersionId sets the VersionId field's value.
 34813  func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
 34814  	s.VersionId = &v
 34815  	return s
 34816  }
 34817  
 34818  func (s *RestoreObjectInput) getEndpointARN() (arn.Resource, error) {
 34819  	if s.Bucket == nil {
 34820  		return nil, fmt.Errorf("member Bucket is nil")
 34821  	}
 34822  	return parseEndpointARN(*s.Bucket)
 34823  }
 34824  
 34825  func (s *RestoreObjectInput) hasEndpointARN() bool {
 34826  	if s.Bucket == nil {
 34827  		return false
 34828  	}
 34829  	return arn.IsARN(*s.Bucket)
 34830  }
 34831  
 34832  // updateArnableField updates the value of the input field that
 34833  // takes an ARN as an input. This method is useful to backfill
 34834  // the parsed resource name from ARN into the input member.
 34835  // It returns a pointer to a modified copy of input and an error.
 34836  // Note that original input is not modified.
 34837  func (s RestoreObjectInput) updateArnableField(v string) (interface{}, error) {
 34838  	if s.Bucket == nil {
 34839  		return nil, fmt.Errorf("member Bucket is nil")
 34840  	}
 34841  	s.Bucket = aws.String(v)
 34842  	return &s, nil
 34843  }
 34844  
 34845  type RestoreObjectOutput struct {
 34846  	_ struct{} `type:"structure"`
 34847  
 34848  	// If present, indicates that the requester was successfully charged for the
 34849  	// request.
 34850  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 34851  
 34852  	// Indicates the path in the provided S3 output location where Select results
 34853  	// will be restored to.
 34854  	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
 34855  }
 34856  
 34857  // String returns the string representation.
 34858  //
 34859  // API parameter values that are decorated as "sensitive" in the API will not
 34860  // be included in the string output. The member name will be present, but the
 34861  // value will be replaced with "sensitive".
 34862  func (s RestoreObjectOutput) String() string {
 34863  	return awsutil.Prettify(s)
 34864  }
 34865  
 34866  // GoString returns the string representation.
 34867  //
 34868  // API parameter values that are decorated as "sensitive" in the API will not
 34869  // be included in the string output. The member name will be present, but the
 34870  // value will be replaced with "sensitive".
 34871  func (s RestoreObjectOutput) GoString() string {
 34872  	return s.String()
 34873  }
 34874  
 34875  // SetRequestCharged sets the RequestCharged field's value.
 34876  func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
 34877  	s.RequestCharged = &v
 34878  	return s
 34879  }
 34880  
 34881  // SetRestoreOutputPath sets the RestoreOutputPath field's value.
 34882  func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
 34883  	s.RestoreOutputPath = &v
 34884  	return s
 34885  }
 34886  
 34887  // Container for restore job parameters.
 34888  type RestoreRequest struct {
 34889  	_ struct{} `type:"structure"`
 34890  
 34891  	// Lifetime of the active copy in days. Do not use with restores that specify
 34892  	// OutputLocation.
 34893  	//
 34894  	// The Days element is required for regular restores, and must not be provided
 34895  	// for select requests.
 34896  	Days *int64 `type:"integer"`
 34897  
 34898  	// The optional description for the job.
 34899  	Description *string `type:"string"`
 34900  
 34901  	// S3 Glacier related parameters pertaining to this job. Do not use with restores
 34902  	// that specify OutputLocation.
 34903  	GlacierJobParameters *GlacierJobParameters `type:"structure"`
 34904  
 34905  	// Describes the location where the restore job's output is stored.
 34906  	OutputLocation *OutputLocation `type:"structure"`
 34907  
 34908  	// Describes the parameters for Select job types.
 34909  	SelectParameters *SelectParameters `type:"structure"`
 34910  
 34911  	// Retrieval tier at which the restore will be processed.
 34912  	Tier *string `type:"string" enum:"Tier"`
 34913  
 34914  	// Type of restore request.
 34915  	Type *string `type:"string" enum:"RestoreRequestType"`
 34916  }
 34917  
 34918  // String returns the string representation.
 34919  //
 34920  // API parameter values that are decorated as "sensitive" in the API will not
 34921  // be included in the string output. The member name will be present, but the
 34922  // value will be replaced with "sensitive".
 34923  func (s RestoreRequest) String() string {
 34924  	return awsutil.Prettify(s)
 34925  }
 34926  
 34927  // GoString returns the string representation.
 34928  //
 34929  // API parameter values that are decorated as "sensitive" in the API will not
 34930  // be included in the string output. The member name will be present, but the
 34931  // value will be replaced with "sensitive".
 34932  func (s RestoreRequest) GoString() string {
 34933  	return s.String()
 34934  }
 34935  
 34936  // Validate inspects the fields of the type to determine if they are valid.
 34937  func (s *RestoreRequest) Validate() error {
 34938  	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
 34939  	if s.GlacierJobParameters != nil {
 34940  		if err := s.GlacierJobParameters.Validate(); err != nil {
 34941  			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
 34942  		}
 34943  	}
 34944  	if s.OutputLocation != nil {
 34945  		if err := s.OutputLocation.Validate(); err != nil {
 34946  			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
 34947  		}
 34948  	}
 34949  	if s.SelectParameters != nil {
 34950  		if err := s.SelectParameters.Validate(); err != nil {
 34951  			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
 34952  		}
 34953  	}
 34954  
 34955  	if invalidParams.Len() > 0 {
 34956  		return invalidParams
 34957  	}
 34958  	return nil
 34959  }
 34960  
 34961  // SetDays sets the Days field's value.
 34962  func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
 34963  	s.Days = &v
 34964  	return s
 34965  }
 34966  
 34967  // SetDescription sets the Description field's value.
 34968  func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
 34969  	s.Description = &v
 34970  	return s
 34971  }
 34972  
 34973  // SetGlacierJobParameters sets the GlacierJobParameters field's value.
 34974  func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
 34975  	s.GlacierJobParameters = v
 34976  	return s
 34977  }
 34978  
 34979  // SetOutputLocation sets the OutputLocation field's value.
 34980  func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
 34981  	s.OutputLocation = v
 34982  	return s
 34983  }
 34984  
 34985  // SetSelectParameters sets the SelectParameters field's value.
 34986  func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
 34987  	s.SelectParameters = v
 34988  	return s
 34989  }
 34990  
 34991  // SetTier sets the Tier field's value.
 34992  func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
 34993  	s.Tier = &v
 34994  	return s
 34995  }
 34996  
 34997  // SetType sets the Type field's value.
 34998  func (s *RestoreRequest) SetType(v string) *RestoreRequest {
 34999  	s.Type = &v
 35000  	return s
 35001  }
 35002  
 35003  // Specifies the redirect behavior and when a redirect is applied. For more
 35004  // information about routing rules, see Configuring advanced conditional redirects
 35005  // (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects)
 35006  // in the Amazon S3 User Guide.
 35007  type RoutingRule struct {
 35008  	_ struct{} `type:"structure"`
 35009  
 35010  	// A container for describing a condition that must be met for the specified
 35011  	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
 35012  	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
 35013  	// redirect request to another host where you might process the error.
 35014  	Condition *Condition `type:"structure"`
 35015  
 35016  	// Container for redirect information. You can redirect requests to another
 35017  	// host, to another page, or with another protocol. In the event of an error,
 35018  	// you can specify a different error code to return.
 35019  	//
 35020  	// Redirect is a required field
 35021  	Redirect *Redirect `type:"structure" required:"true"`
 35022  }
 35023  
 35024  // String returns the string representation.
 35025  //
 35026  // API parameter values that are decorated as "sensitive" in the API will not
 35027  // be included in the string output. The member name will be present, but the
 35028  // value will be replaced with "sensitive".
 35029  func (s RoutingRule) String() string {
 35030  	return awsutil.Prettify(s)
 35031  }
 35032  
 35033  // GoString returns the string representation.
 35034  //
 35035  // API parameter values that are decorated as "sensitive" in the API will not
 35036  // be included in the string output. The member name will be present, but the
 35037  // value will be replaced with "sensitive".
 35038  func (s RoutingRule) GoString() string {
 35039  	return s.String()
 35040  }
 35041  
 35042  // Validate inspects the fields of the type to determine if they are valid.
 35043  func (s *RoutingRule) Validate() error {
 35044  	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
 35045  	if s.Redirect == nil {
 35046  		invalidParams.Add(request.NewErrParamRequired("Redirect"))
 35047  	}
 35048  
 35049  	if invalidParams.Len() > 0 {
 35050  		return invalidParams
 35051  	}
 35052  	return nil
 35053  }
 35054  
 35055  // SetCondition sets the Condition field's value.
 35056  func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
 35057  	s.Condition = v
 35058  	return s
 35059  }
 35060  
 35061  // SetRedirect sets the Redirect field's value.
 35062  func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
 35063  	s.Redirect = v
 35064  	return s
 35065  }
 35066  
 35067  // Specifies lifecycle rules for an Amazon S3 bucket. For more information,
 35068  // see Put Bucket Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)
 35069  // in the Amazon S3 API Reference. For examples, see Put Bucket Lifecycle Configuration
 35070  // Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples).
 35071  type Rule struct {
 35072  	_ struct{} `type:"structure"`
 35073  
 35074  	// Specifies the days since the initiation of an incomplete multipart upload
 35075  	// that Amazon S3 will wait before permanently removing all parts of the upload.
 35076  	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
 35077  	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
 35078  	// in the Amazon S3 User Guide.
 35079  	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
 35080  
 35081  	// Specifies the expiration for the lifecycle of the object.
 35082  	Expiration *LifecycleExpiration `type:"structure"`
 35083  
 35084  	// Unique identifier for the rule. The value can't be longer than 255 characters.
 35085  	ID *string `type:"string"`
 35086  
 35087  	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
 35088  	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
 35089  	// configuration action on a bucket that has versioning enabled (or suspended)
 35090  	// to request that Amazon S3 delete noncurrent object versions at a specific
 35091  	// period in the object's lifetime.
 35092  	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
 35093  
 35094  	// Container for the transition rule that describes when noncurrent objects
 35095  	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
 35096  	// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
 35097  	// is suspended), you can set this action to request that Amazon S3 transition
 35098  	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
 35099  	// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
 35100  	// lifetime.
 35101  	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
 35102  
 35103  	// Object key prefix that identifies one or more objects to which this rule
 35104  	// applies.
 35105  	//
 35106  	// Replacement must be made for object keys containing special characters (such
 35107  	// as carriage returns) when using XML requests. For more information, see XML
 35108  	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
 35109  	//
 35110  	// Prefix is a required field
 35111  	Prefix *string `type:"string" required:"true"`
 35112  
 35113  	// If Enabled, the rule is currently being applied. If Disabled, the rule is
 35114  	// not currently being applied.
 35115  	//
 35116  	// Status is a required field
 35117  	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
 35118  
 35119  	// Specifies when an object transitions to a specified storage class. For more
 35120  	// information about Amazon S3 lifecycle configuration rules, see Transitioning
 35121  	// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
 35122  	// in the Amazon S3 User Guide.
 35123  	Transition *Transition `type:"structure"`
 35124  }
 35125  
 35126  // String returns the string representation.
 35127  //
 35128  // API parameter values that are decorated as "sensitive" in the API will not
 35129  // be included in the string output. The member name will be present, but the
 35130  // value will be replaced with "sensitive".
 35131  func (s Rule) String() string {
 35132  	return awsutil.Prettify(s)
 35133  }
 35134  
 35135  // GoString returns the string representation.
 35136  //
 35137  // API parameter values that are decorated as "sensitive" in the API will not
 35138  // be included in the string output. The member name will be present, but the
 35139  // value will be replaced with "sensitive".
 35140  func (s Rule) GoString() string {
 35141  	return s.String()
 35142  }
 35143  
 35144  // Validate inspects the fields of the type to determine if they are valid.
 35145  func (s *Rule) Validate() error {
 35146  	invalidParams := request.ErrInvalidParams{Context: "Rule"}
 35147  	if s.Prefix == nil {
 35148  		invalidParams.Add(request.NewErrParamRequired("Prefix"))
 35149  	}
 35150  	if s.Status == nil {
 35151  		invalidParams.Add(request.NewErrParamRequired("Status"))
 35152  	}
 35153  
 35154  	if invalidParams.Len() > 0 {
 35155  		return invalidParams
 35156  	}
 35157  	return nil
 35158  }
 35159  
 35160  // SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
 35161  func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
 35162  	s.AbortIncompleteMultipartUpload = v
 35163  	return s
 35164  }
 35165  
 35166  // SetExpiration sets the Expiration field's value.
 35167  func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
 35168  	s.Expiration = v
 35169  	return s
 35170  }
 35171  
 35172  // SetID sets the ID field's value.
 35173  func (s *Rule) SetID(v string) *Rule {
 35174  	s.ID = &v
 35175  	return s
 35176  }
 35177  
 35178  // SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
 35179  func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
 35180  	s.NoncurrentVersionExpiration = v
 35181  	return s
 35182  }
 35183  
 35184  // SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
 35185  func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
 35186  	s.NoncurrentVersionTransition = v
 35187  	return s
 35188  }
 35189  
 35190  // SetPrefix sets the Prefix field's value.
 35191  func (s *Rule) SetPrefix(v string) *Rule {
 35192  	s.Prefix = &v
 35193  	return s
 35194  }
 35195  
 35196  // SetStatus sets the Status field's value.
 35197  func (s *Rule) SetStatus(v string) *Rule {
 35198  	s.Status = &v
 35199  	return s
 35200  }
 35201  
 35202  // SetTransition sets the Transition field's value.
 35203  func (s *Rule) SetTransition(v *Transition) *Rule {
 35204  	s.Transition = v
 35205  	return s
 35206  }
 35207  
 35208  // Specifies the use of SSE-KMS to encrypt delivered inventory reports.
 35209  type SSEKMS struct {
 35210  	_ struct{} `locationName:"SSE-KMS" type:"structure"`
 35211  
 35212  	// Specifies the ID of the Amazon Web Services Key Management Service (Amazon
 35213  	// Web Services KMS) symmetric customer managed key to use for encrypting inventory
 35214  	// reports.
 35215  	//
 35216  	// KeyId is a sensitive parameter and its value will be
 35217  	// replaced with "sensitive" in string returned by SSEKMS's
 35218  	// String and GoString methods.
 35219  	//
 35220  	// KeyId is a required field
 35221  	KeyId *string `type:"string" required:"true" sensitive:"true"`
 35222  }
 35223  
 35224  // String returns the string representation.
 35225  //
 35226  // API parameter values that are decorated as "sensitive" in the API will not
 35227  // be included in the string output. The member name will be present, but the
 35228  // value will be replaced with "sensitive".
 35229  func (s SSEKMS) String() string {
 35230  	return awsutil.Prettify(s)
 35231  }
 35232  
 35233  // GoString returns the string representation.
 35234  //
 35235  // API parameter values that are decorated as "sensitive" in the API will not
 35236  // be included in the string output. The member name will be present, but the
 35237  // value will be replaced with "sensitive".
 35238  func (s SSEKMS) GoString() string {
 35239  	return s.String()
 35240  }
 35241  
 35242  // Validate inspects the fields of the type to determine if they are valid.
 35243  func (s *SSEKMS) Validate() error {
 35244  	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
 35245  	if s.KeyId == nil {
 35246  		invalidParams.Add(request.NewErrParamRequired("KeyId"))
 35247  	}
 35248  
 35249  	if invalidParams.Len() > 0 {
 35250  		return invalidParams
 35251  	}
 35252  	return nil
 35253  }
 35254  
 35255  // SetKeyId sets the KeyId field's value.
 35256  func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
 35257  	s.KeyId = &v
 35258  	return s
 35259  }
 35260  
 35261  // Specifies the use of SSE-S3 to encrypt delivered inventory reports.
 35262  type SSES3 struct {
 35263  	_ struct{} `locationName:"SSE-S3" type:"structure"`
 35264  }
 35265  
 35266  // String returns the string representation.
 35267  //
 35268  // API parameter values that are decorated as "sensitive" in the API will not
 35269  // be included in the string output. The member name will be present, but the
 35270  // value will be replaced with "sensitive".
 35271  func (s SSES3) String() string {
 35272  	return awsutil.Prettify(s)
 35273  }
 35274  
 35275  // GoString returns the string representation.
 35276  //
 35277  // API parameter values that are decorated as "sensitive" in the API will not
 35278  // be included in the string output. The member name will be present, but the
 35279  // value will be replaced with "sensitive".
 35280  func (s SSES3) GoString() string {
 35281  	return s.String()
 35282  }
 35283  
 35284  // Specifies the byte range of the object to get the records from. A record
 35285  // is processed when its first byte is contained by the range. This parameter
 35286  // is optional, but when specified, it must not be empty. See RFC 2616, Section
 35287  // 14.35.1 about how to specify the start and end of the range.
 35288  type ScanRange struct {
 35289  	_ struct{} `type:"structure"`
 35290  
 35291  	// Specifies the end of the byte range. This parameter is optional. Valid values:
 35292  	// non-negative integers. The default value is one less than the size of the
 35293  	// object being queried. If only the End parameter is supplied, it is interpreted
 35294  	// to mean scan the last N bytes of the file. For example, <scanrange><end>50</end></scanrange>
 35295  	// means scan the last 50 bytes.
 35296  	End *int64 `type:"long"`
 35297  
 35298  	// Specifies the start of the byte range. This parameter is optional. Valid
 35299  	// values: non-negative integers. The default value is 0. If only start is supplied,
 35300  	// it means scan from that point to the end of the file.For example; <scanrange><start>50</start></scanrange>
 35301  	// means scan from byte 50 until the end of the file.
 35302  	Start *int64 `type:"long"`
 35303  }
 35304  
 35305  // String returns the string representation.
 35306  //
 35307  // API parameter values that are decorated as "sensitive" in the API will not
 35308  // be included in the string output. The member name will be present, but the
 35309  // value will be replaced with "sensitive".
 35310  func (s ScanRange) String() string {
 35311  	return awsutil.Prettify(s)
 35312  }
 35313  
 35314  // GoString returns the string representation.
 35315  //
 35316  // API parameter values that are decorated as "sensitive" in the API will not
 35317  // be included in the string output. The member name will be present, but the
 35318  // value will be replaced with "sensitive".
 35319  func (s ScanRange) GoString() string {
 35320  	return s.String()
 35321  }
 35322  
 35323  // SetEnd sets the End field's value.
 35324  func (s *ScanRange) SetEnd(v int64) *ScanRange {
 35325  	s.End = &v
 35326  	return s
 35327  }
 35328  
 35329  // SetStart sets the Start field's value.
 35330  func (s *ScanRange) SetStart(v int64) *ScanRange {
 35331  	s.Start = &v
 35332  	return s
 35333  }
 35334  
 35335  // SelectObjectContentEventStreamEvent groups together all EventStream
 35336  // events writes for SelectObjectContentEventStream.
 35337  //
 35338  // These events are:
 35339  //
 35340  //     * ContinuationEvent
 35341  //     * EndEvent
 35342  //     * ProgressEvent
 35343  //     * RecordsEvent
 35344  //     * StatsEvent
 35345  type SelectObjectContentEventStreamEvent interface {
 35346  	eventSelectObjectContentEventStream()
 35347  	eventstreamapi.Marshaler
 35348  	eventstreamapi.Unmarshaler
 35349  }
 35350  
 35351  // SelectObjectContentEventStreamReader provides the interface for reading to the stream. The
 35352  // default implementation for this interface will be SelectObjectContentEventStreamData.
 35353  //
 35354  // The reader's Close method must allow multiple concurrent calls.
 35355  //
 35356  // These events are:
 35357  //
 35358  //     * ContinuationEvent
 35359  //     * EndEvent
 35360  //     * ProgressEvent
 35361  //     * RecordsEvent
 35362  //     * StatsEvent
 35363  //     * SelectObjectContentEventStreamUnknownEvent
 35364  type SelectObjectContentEventStreamReader interface {
 35365  	// Returns a channel of events as they are read from the event stream.
 35366  	Events() <-chan SelectObjectContentEventStreamEvent
 35367  
 35368  	// Close will stop the reader reading events from the stream.
 35369  	Close() error
 35370  
 35371  	// Returns any error that has occurred while reading from the event stream.
 35372  	Err() error
 35373  }
 35374  
 35375  type readSelectObjectContentEventStream struct {
 35376  	eventReader *eventstreamapi.EventReader
 35377  	stream      chan SelectObjectContentEventStreamEvent
 35378  	err         *eventstreamapi.OnceError
 35379  
 35380  	done      chan struct{}
 35381  	closeOnce sync.Once
 35382  }
 35383  
 35384  func newReadSelectObjectContentEventStream(eventReader *eventstreamapi.EventReader) *readSelectObjectContentEventStream {
 35385  	r := &readSelectObjectContentEventStream{
 35386  		eventReader: eventReader,
 35387  		stream:      make(chan SelectObjectContentEventStreamEvent),
 35388  		done:        make(chan struct{}),
 35389  		err:         eventstreamapi.NewOnceError(),
 35390  	}
 35391  	go r.readEventStream()
 35392  
 35393  	return r
 35394  }
 35395  
 35396  // Close will close the underlying event stream reader.
 35397  func (r *readSelectObjectContentEventStream) Close() error {
 35398  	r.closeOnce.Do(r.safeClose)
 35399  	return r.Err()
 35400  }
 35401  
 35402  func (r *readSelectObjectContentEventStream) ErrorSet() <-chan struct{} {
 35403  	return r.err.ErrorSet()
 35404  }
 35405  
 35406  func (r *readSelectObjectContentEventStream) Closed() <-chan struct{} {
 35407  	return r.done
 35408  }
 35409  
 35410  func (r *readSelectObjectContentEventStream) safeClose() {
 35411  	close(r.done)
 35412  }
 35413  
 35414  func (r *readSelectObjectContentEventStream) Err() error {
 35415  	return r.err.Err()
 35416  }
 35417  
 35418  func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
 35419  	return r.stream
 35420  }
 35421  
 35422  func (r *readSelectObjectContentEventStream) readEventStream() {
 35423  	defer r.Close()
 35424  	defer close(r.stream)
 35425  
 35426  	for {
 35427  		event, err := r.eventReader.ReadEvent()
 35428  		if err != nil {
 35429  			if err == io.EOF {
 35430  				return
 35431  			}
 35432  			select {
 35433  			case <-r.done:
 35434  				// If closed already ignore the error
 35435  				return
 35436  			default:
 35437  			}
 35438  			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
 35439  				continue
 35440  			}
 35441  			r.err.SetError(err)
 35442  			return
 35443  		}
 35444  
 35445  		select {
 35446  		case r.stream <- event.(SelectObjectContentEventStreamEvent):
 35447  		case <-r.done:
 35448  			return
 35449  		}
 35450  	}
 35451  }
 35452  
 35453  type unmarshalerForSelectObjectContentEventStreamEvent struct {
 35454  	metadata protocol.ResponseMetadata
 35455  }
 35456  
 35457  func (u unmarshalerForSelectObjectContentEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
 35458  	switch eventType {
 35459  	case "Cont":
 35460  		return &ContinuationEvent{}, nil
 35461  	case "End":
 35462  		return &EndEvent{}, nil
 35463  	case "Progress":
 35464  		return &ProgressEvent{}, nil
 35465  	case "Records":
 35466  		return &RecordsEvent{}, nil
 35467  	case "Stats":
 35468  		return &StatsEvent{}, nil
 35469  	default:
 35470  		return &SelectObjectContentEventStreamUnknownEvent{Type: eventType}, nil
 35471  	}
 35472  }
 35473  
 35474  // SelectObjectContentEventStreamUnknownEvent provides a failsafe event for the
 35475  // SelectObjectContentEventStream group of events when an unknown event is received.
 35476  type SelectObjectContentEventStreamUnknownEvent struct {
 35477  	Type    string
 35478  	Message eventstream.Message
 35479  }
 35480  
 35481  // The SelectObjectContentEventStreamUnknownEvent is and event in the SelectObjectContentEventStream
 35482  // group of events.
 35483  func (s *SelectObjectContentEventStreamUnknownEvent) eventSelectObjectContentEventStream() {}
 35484  
 35485  // MarshalEvent marshals the type into an stream event value. This method
 35486  // should only used internally within the SDK's EventStream handling.
 35487  func (e *SelectObjectContentEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
 35488  	msg eventstream.Message, err error,
 35489  ) {
 35490  	return e.Message.Clone(), nil
 35491  }
 35492  
 35493  // UnmarshalEvent unmarshals the EventStream Message into the SelectObjectContentEventStreamData value.
 35494  // This method is only used internally within the SDK's EventStream handling.
 35495  func (e *SelectObjectContentEventStreamUnknownEvent) UnmarshalEvent(
 35496  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 35497  	msg eventstream.Message,
 35498  ) error {
 35499  	e.Message = msg.Clone()
 35500  	return nil
 35501  }
 35502  
 35503  // Request to filter the contents of an Amazon S3 object based on a simple Structured
 35504  // Query Language (SQL) statement. In the request, along with the SQL expression,
 35505  // you must specify a data serialization format (JSON or CSV) of the object.
 35506  // Amazon S3 uses this to parse object data into records. It returns only records
 35507  // that match the specified SQL expression. You must also specify the data serialization
 35508  // format for the response. For more information, see S3Select API Documentation
 35509  // (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
 35510  type SelectObjectContentInput struct {
 35511  	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
 35512  
 35513  	// The S3 bucket.
 35514  	//
 35515  	// Bucket is a required field
 35516  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 35517  
 35518  	// The account ID of the expected bucket owner. If the bucket is owned by a
 35519  	// different account, the request will fail with an HTTP 403 (Access Denied)
 35520  	// error.
 35521  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 35522  
 35523  	// The expression that is used to query the object.
 35524  	//
 35525  	// Expression is a required field
 35526  	Expression *string `type:"string" required:"true"`
 35527  
 35528  	// The type of the provided expression (for example, SQL).
 35529  	//
 35530  	// ExpressionType is a required field
 35531  	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
 35532  
 35533  	// Describes the format of the data in the object that is being queried.
 35534  	//
 35535  	// InputSerialization is a required field
 35536  	InputSerialization *InputSerialization `type:"structure" required:"true"`
 35537  
 35538  	// The object key.
 35539  	//
 35540  	// Key is a required field
 35541  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 35542  
 35543  	// Describes the format of the data that you want Amazon S3 to return in response.
 35544  	//
 35545  	// OutputSerialization is a required field
 35546  	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
 35547  
 35548  	// Specifies if periodic request progress information should be enabled.
 35549  	RequestProgress *RequestProgress `type:"structure"`
 35550  
 35551  	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
 35552  	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
 35553  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 35554  
 35555  	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
 35556  	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
 35557  	//
 35558  	// SSECustomerKey is a sensitive parameter and its value will be
 35559  	// replaced with "sensitive" in string returned by SelectObjectContentInput's
 35560  	// String and GoString methods.
 35561  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 35562  
 35563  	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
 35564  	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
 35565  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 35566  
 35567  	// Specifies the byte range of the object to get the records from. A record
 35568  	// is processed when its first byte is contained by the range. This parameter
 35569  	// is optional, but when specified, it must not be empty. See RFC 2616, Section
 35570  	// 14.35.1 about how to specify the start and end of the range.
 35571  	//
 35572  	// ScanRangemay be used in the following ways:
 35573  	//
 35574  	//    * <scanrange><start>50</start><end>100</end></scanrange> - process only
 35575  	//    the records starting between the bytes 50 and 100 (inclusive, counting
 35576  	//    from zero)
 35577  	//
 35578  	//    * <scanrange><start>50</start></scanrange> - process only the records
 35579  	//    starting after the byte 50
 35580  	//
 35581  	//    * <scanrange><end>50</end></scanrange> - process only the records within
 35582  	//    the last 50 bytes of the file.
 35583  	ScanRange *ScanRange `type:"structure"`
 35584  }
 35585  
 35586  // String returns the string representation.
 35587  //
 35588  // API parameter values that are decorated as "sensitive" in the API will not
 35589  // be included in the string output. The member name will be present, but the
 35590  // value will be replaced with "sensitive".
 35591  func (s SelectObjectContentInput) String() string {
 35592  	return awsutil.Prettify(s)
 35593  }
 35594  
 35595  // GoString returns the string representation.
 35596  //
 35597  // API parameter values that are decorated as "sensitive" in the API will not
 35598  // be included in the string output. The member name will be present, but the
 35599  // value will be replaced with "sensitive".
 35600  func (s SelectObjectContentInput) GoString() string {
 35601  	return s.String()
 35602  }
 35603  
 35604  // Validate inspects the fields of the type to determine if they are valid.
 35605  func (s *SelectObjectContentInput) Validate() error {
 35606  	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
 35607  	if s.Bucket == nil {
 35608  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 35609  	}
 35610  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 35611  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 35612  	}
 35613  	if s.Expression == nil {
 35614  		invalidParams.Add(request.NewErrParamRequired("Expression"))
 35615  	}
 35616  	if s.ExpressionType == nil {
 35617  		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
 35618  	}
 35619  	if s.InputSerialization == nil {
 35620  		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
 35621  	}
 35622  	if s.Key == nil {
 35623  		invalidParams.Add(request.NewErrParamRequired("Key"))
 35624  	}
 35625  	if s.Key != nil && len(*s.Key) < 1 {
 35626  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 35627  	}
 35628  	if s.OutputSerialization == nil {
 35629  		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
 35630  	}
 35631  
 35632  	if invalidParams.Len() > 0 {
 35633  		return invalidParams
 35634  	}
 35635  	return nil
 35636  }
 35637  
 35638  // SetBucket sets the Bucket field's value.
 35639  func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
 35640  	s.Bucket = &v
 35641  	return s
 35642  }
 35643  
 35644  func (s *SelectObjectContentInput) getBucket() (v string) {
 35645  	if s.Bucket == nil {
 35646  		return v
 35647  	}
 35648  	return *s.Bucket
 35649  }
 35650  
 35651  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 35652  func (s *SelectObjectContentInput) SetExpectedBucketOwner(v string) *SelectObjectContentInput {
 35653  	s.ExpectedBucketOwner = &v
 35654  	return s
 35655  }
 35656  
 35657  // SetExpression sets the Expression field's value.
 35658  func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
 35659  	s.Expression = &v
 35660  	return s
 35661  }
 35662  
 35663  // SetExpressionType sets the ExpressionType field's value.
 35664  func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
 35665  	s.ExpressionType = &v
 35666  	return s
 35667  }
 35668  
 35669  // SetInputSerialization sets the InputSerialization field's value.
 35670  func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
 35671  	s.InputSerialization = v
 35672  	return s
 35673  }
 35674  
 35675  // SetKey sets the Key field's value.
 35676  func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
 35677  	s.Key = &v
 35678  	return s
 35679  }
 35680  
 35681  // SetOutputSerialization sets the OutputSerialization field's value.
 35682  func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
 35683  	s.OutputSerialization = v
 35684  	return s
 35685  }
 35686  
 35687  // SetRequestProgress sets the RequestProgress field's value.
 35688  func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
 35689  	s.RequestProgress = v
 35690  	return s
 35691  }
 35692  
 35693  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 35694  func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
 35695  	s.SSECustomerAlgorithm = &v
 35696  	return s
 35697  }
 35698  
 35699  // SetSSECustomerKey sets the SSECustomerKey field's value.
 35700  func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
 35701  	s.SSECustomerKey = &v
 35702  	return s
 35703  }
 35704  
 35705  func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
 35706  	if s.SSECustomerKey == nil {
 35707  		return v
 35708  	}
 35709  	return *s.SSECustomerKey
 35710  }
 35711  
 35712  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 35713  func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
 35714  	s.SSECustomerKeyMD5 = &v
 35715  	return s
 35716  }
 35717  
 35718  // SetScanRange sets the ScanRange field's value.
 35719  func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput {
 35720  	s.ScanRange = v
 35721  	return s
 35722  }
 35723  
 35724  func (s *SelectObjectContentInput) getEndpointARN() (arn.Resource, error) {
 35725  	if s.Bucket == nil {
 35726  		return nil, fmt.Errorf("member Bucket is nil")
 35727  	}
 35728  	return parseEndpointARN(*s.Bucket)
 35729  }
 35730  
 35731  func (s *SelectObjectContentInput) hasEndpointARN() bool {
 35732  	if s.Bucket == nil {
 35733  		return false
 35734  	}
 35735  	return arn.IsARN(*s.Bucket)
 35736  }
 35737  
 35738  // updateArnableField updates the value of the input field that
 35739  // takes an ARN as an input. This method is useful to backfill
 35740  // the parsed resource name from ARN into the input member.
 35741  // It returns a pointer to a modified copy of input and an error.
 35742  // Note that original input is not modified.
 35743  func (s SelectObjectContentInput) updateArnableField(v string) (interface{}, error) {
 35744  	if s.Bucket == nil {
 35745  		return nil, fmt.Errorf("member Bucket is nil")
 35746  	}
 35747  	s.Bucket = aws.String(v)
 35748  	return &s, nil
 35749  }
 35750  
 35751  type SelectObjectContentOutput struct {
 35752  	_ struct{} `type:"structure" payload:"Payload"`
 35753  
 35754  	EventStream *SelectObjectContentEventStream
 35755  }
 35756  
 35757  // String returns the string representation.
 35758  //
 35759  // API parameter values that are decorated as "sensitive" in the API will not
 35760  // be included in the string output. The member name will be present, but the
 35761  // value will be replaced with "sensitive".
 35762  func (s SelectObjectContentOutput) String() string {
 35763  	return awsutil.Prettify(s)
 35764  }
 35765  
 35766  // GoString returns the string representation.
 35767  //
 35768  // API parameter values that are decorated as "sensitive" in the API will not
 35769  // be included in the string output. The member name will be present, but the
 35770  // value will be replaced with "sensitive".
 35771  func (s SelectObjectContentOutput) GoString() string {
 35772  	return s.String()
 35773  }
 35774  
 35775  func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
 35776  	s.EventStream = v
 35777  	return s
 35778  }
 35779  func (s *SelectObjectContentOutput) GetEventStream() *SelectObjectContentEventStream {
 35780  	return s.EventStream
 35781  }
 35782  
 35783  // GetStream returns the type to interact with the event stream.
 35784  func (s *SelectObjectContentOutput) GetStream() *SelectObjectContentEventStream {
 35785  	return s.EventStream
 35786  }
 35787  
 35788  // Describes the parameters for Select job types.
 35789  type SelectParameters struct {
 35790  	_ struct{} `type:"structure"`
 35791  
 35792  	// The expression that is used to query the object.
 35793  	//
 35794  	// Expression is a required field
 35795  	Expression *string `type:"string" required:"true"`
 35796  
 35797  	// The type of the provided expression (for example, SQL).
 35798  	//
 35799  	// ExpressionType is a required field
 35800  	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
 35801  
 35802  	// Describes the serialization format of the object.
 35803  	//
 35804  	// InputSerialization is a required field
 35805  	InputSerialization *InputSerialization `type:"structure" required:"true"`
 35806  
 35807  	// Describes how the results of the Select job are serialized.
 35808  	//
 35809  	// OutputSerialization is a required field
 35810  	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
 35811  }
 35812  
 35813  // String returns the string representation.
 35814  //
 35815  // API parameter values that are decorated as "sensitive" in the API will not
 35816  // be included in the string output. The member name will be present, but the
 35817  // value will be replaced with "sensitive".
 35818  func (s SelectParameters) String() string {
 35819  	return awsutil.Prettify(s)
 35820  }
 35821  
 35822  // GoString returns the string representation.
 35823  //
 35824  // API parameter values that are decorated as "sensitive" in the API will not
 35825  // be included in the string output. The member name will be present, but the
 35826  // value will be replaced with "sensitive".
 35827  func (s SelectParameters) GoString() string {
 35828  	return s.String()
 35829  }
 35830  
 35831  // Validate inspects the fields of the type to determine if they are valid.
 35832  func (s *SelectParameters) Validate() error {
 35833  	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
 35834  	if s.Expression == nil {
 35835  		invalidParams.Add(request.NewErrParamRequired("Expression"))
 35836  	}
 35837  	if s.ExpressionType == nil {
 35838  		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
 35839  	}
 35840  	if s.InputSerialization == nil {
 35841  		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
 35842  	}
 35843  	if s.OutputSerialization == nil {
 35844  		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
 35845  	}
 35846  
 35847  	if invalidParams.Len() > 0 {
 35848  		return invalidParams
 35849  	}
 35850  	return nil
 35851  }
 35852  
 35853  // SetExpression sets the Expression field's value.
 35854  func (s *SelectParameters) SetExpression(v string) *SelectParameters {
 35855  	s.Expression = &v
 35856  	return s
 35857  }
 35858  
 35859  // SetExpressionType sets the ExpressionType field's value.
 35860  func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
 35861  	s.ExpressionType = &v
 35862  	return s
 35863  }
 35864  
 35865  // SetInputSerialization sets the InputSerialization field's value.
 35866  func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
 35867  	s.InputSerialization = v
 35868  	return s
 35869  }
 35870  
 35871  // SetOutputSerialization sets the OutputSerialization field's value.
 35872  func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
 35873  	s.OutputSerialization = v
 35874  	return s
 35875  }
 35876  
 35877  // Describes the default server-side encryption to apply to new objects in the
 35878  // bucket. If a PUT Object request doesn't specify any server-side encryption,
 35879  // this default encryption will be applied. For more information, see PUT Bucket
 35880  // encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)
 35881  // in the Amazon S3 API Reference.
 35882  type ServerSideEncryptionByDefault struct {
 35883  	_ struct{} `type:"structure"`
 35884  
 35885  	// Amazon Web Services Key Management Service (KMS) customer Amazon Web Services
 35886  	// KMS key ID to use for the default encryption. This parameter is allowed if
 35887  	// and only if SSEAlgorithm is set to aws:kms.
 35888  	//
 35889  	// You can specify the key ID or the Amazon Resource Name (ARN) of the KMS key.
 35890  	// However, if you are using encryption with cross-account operations, you must
 35891  	// use a fully qualified KMS key ARN. For more information, see Using encryption
 35892  	// for cross-account operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).
 35893  	//
 35894  	// For example:
 35895  	//
 35896  	//    * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
 35897  	//
 35898  	//    * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
 35899  	//
 35900  	// Amazon S3 only supports symmetric KMS keys and not asymmetric KMS keys. For
 35901  	// more information, see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
 35902  	// in the Amazon Web Services Key Management Service Developer Guide.
 35903  	//
 35904  	// KMSMasterKeyID is a sensitive parameter and its value will be
 35905  	// replaced with "sensitive" in string returned by ServerSideEncryptionByDefault's
 35906  	// String and GoString methods.
 35907  	KMSMasterKeyID *string `type:"string" sensitive:"true"`
 35908  
 35909  	// Server-side encryption algorithm to use for the default encryption.
 35910  	//
 35911  	// SSEAlgorithm is a required field
 35912  	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
 35913  }
 35914  
 35915  // String returns the string representation.
 35916  //
 35917  // API parameter values that are decorated as "sensitive" in the API will not
 35918  // be included in the string output. The member name will be present, but the
 35919  // value will be replaced with "sensitive".
 35920  func (s ServerSideEncryptionByDefault) String() string {
 35921  	return awsutil.Prettify(s)
 35922  }
 35923  
 35924  // GoString returns the string representation.
 35925  //
 35926  // API parameter values that are decorated as "sensitive" in the API will not
 35927  // be included in the string output. The member name will be present, but the
 35928  // value will be replaced with "sensitive".
 35929  func (s ServerSideEncryptionByDefault) GoString() string {
 35930  	return s.String()
 35931  }
 35932  
 35933  // Validate inspects the fields of the type to determine if they are valid.
 35934  func (s *ServerSideEncryptionByDefault) Validate() error {
 35935  	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
 35936  	if s.SSEAlgorithm == nil {
 35937  		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
 35938  	}
 35939  
 35940  	if invalidParams.Len() > 0 {
 35941  		return invalidParams
 35942  	}
 35943  	return nil
 35944  }
 35945  
 35946  // SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
 35947  func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
 35948  	s.KMSMasterKeyID = &v
 35949  	return s
 35950  }
 35951  
 35952  // SetSSEAlgorithm sets the SSEAlgorithm field's value.
 35953  func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
 35954  	s.SSEAlgorithm = &v
 35955  	return s
 35956  }
 35957  
 35958  // Specifies the default server-side-encryption configuration.
 35959  type ServerSideEncryptionConfiguration struct {
 35960  	_ struct{} `type:"structure"`
 35961  
 35962  	// Container for information about a particular server-side encryption configuration
 35963  	// rule.
 35964  	//
 35965  	// Rules is a required field
 35966  	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
 35967  }
 35968  
 35969  // String returns the string representation.
 35970  //
 35971  // API parameter values that are decorated as "sensitive" in the API will not
 35972  // be included in the string output. The member name will be present, but the
 35973  // value will be replaced with "sensitive".
 35974  func (s ServerSideEncryptionConfiguration) String() string {
 35975  	return awsutil.Prettify(s)
 35976  }
 35977  
 35978  // GoString returns the string representation.
 35979  //
 35980  // API parameter values that are decorated as "sensitive" in the API will not
 35981  // be included in the string output. The member name will be present, but the
 35982  // value will be replaced with "sensitive".
 35983  func (s ServerSideEncryptionConfiguration) GoString() string {
 35984  	return s.String()
 35985  }
 35986  
 35987  // Validate inspects the fields of the type to determine if they are valid.
 35988  func (s *ServerSideEncryptionConfiguration) Validate() error {
 35989  	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
 35990  	if s.Rules == nil {
 35991  		invalidParams.Add(request.NewErrParamRequired("Rules"))
 35992  	}
 35993  	if s.Rules != nil {
 35994  		for i, v := range s.Rules {
 35995  			if v == nil {
 35996  				continue
 35997  			}
 35998  			if err := v.Validate(); err != nil {
 35999  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
 36000  			}
 36001  		}
 36002  	}
 36003  
 36004  	if invalidParams.Len() > 0 {
 36005  		return invalidParams
 36006  	}
 36007  	return nil
 36008  }
 36009  
 36010  // SetRules sets the Rules field's value.
 36011  func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
 36012  	s.Rules = v
 36013  	return s
 36014  }
 36015  
 36016  // Specifies the default server-side encryption configuration.
 36017  type ServerSideEncryptionRule struct {
 36018  	_ struct{} `type:"structure"`
 36019  
 36020  	// Specifies the default server-side encryption to apply to new objects in the
 36021  	// bucket. If a PUT Object request doesn't specify any server-side encryption,
 36022  	// this default encryption will be applied.
 36023  	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
 36024  
 36025  	// Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
 36026  	// encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
 36027  	// are not affected. Setting the BucketKeyEnabled element to true causes Amazon
 36028  	// S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.
 36029  	//
 36030  	// For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
 36031  	// in the Amazon S3 User Guide.
 36032  	BucketKeyEnabled *bool `type:"boolean"`
 36033  }
 36034  
 36035  // String returns the string representation.
 36036  //
 36037  // API parameter values that are decorated as "sensitive" in the API will not
 36038  // be included in the string output. The member name will be present, but the
 36039  // value will be replaced with "sensitive".
 36040  func (s ServerSideEncryptionRule) String() string {
 36041  	return awsutil.Prettify(s)
 36042  }
 36043  
 36044  // GoString returns the string representation.
 36045  //
 36046  // API parameter values that are decorated as "sensitive" in the API will not
 36047  // be included in the string output. The member name will be present, but the
 36048  // value will be replaced with "sensitive".
 36049  func (s ServerSideEncryptionRule) GoString() string {
 36050  	return s.String()
 36051  }
 36052  
 36053  // Validate inspects the fields of the type to determine if they are valid.
 36054  func (s *ServerSideEncryptionRule) Validate() error {
 36055  	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
 36056  	if s.ApplyServerSideEncryptionByDefault != nil {
 36057  		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
 36058  			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
 36059  		}
 36060  	}
 36061  
 36062  	if invalidParams.Len() > 0 {
 36063  		return invalidParams
 36064  	}
 36065  	return nil
 36066  }
 36067  
 36068  // SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
 36069  func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
 36070  	s.ApplyServerSideEncryptionByDefault = v
 36071  	return s
 36072  }
 36073  
 36074  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 36075  func (s *ServerSideEncryptionRule) SetBucketKeyEnabled(v bool) *ServerSideEncryptionRule {
 36076  	s.BucketKeyEnabled = &v
 36077  	return s
 36078  }
 36079  
 36080  // A container that describes additional filters for identifying the source
 36081  // objects that you want to replicate. You can choose to enable or disable the
 36082  // replication of these objects. Currently, Amazon S3 supports only the filter
 36083  // that you can specify for objects created with server-side encryption using
 36084  // a customer managed key stored in Amazon Web Services Key Management Service
 36085  // (SSE-KMS).
 36086  type SourceSelectionCriteria struct {
 36087  	_ struct{} `type:"structure"`
 36088  
 36089  	// A filter that you can specify for selections for modifications on replicas.
 36090  	// Amazon S3 doesn't replicate replica modifications by default. In the latest
 36091  	// version of replication configuration (when Filter is specified), you can
 36092  	// specify this element and set the status to Enabled to replicate modifications
 36093  	// on replicas.
 36094  	//
 36095  	// If you don't specify the Filter element, Amazon S3 assumes that the replication
 36096  	// configuration is the earlier version, V1. In the earlier version, this element
 36097  	// is not allowed
 36098  	ReplicaModifications *ReplicaModifications `type:"structure"`
 36099  
 36100  	// A container for filter information for the selection of Amazon S3 objects
 36101  	// encrypted with Amazon Web Services KMS. If you include SourceSelectionCriteria
 36102  	// in the replication configuration, this element is required.
 36103  	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
 36104  }
 36105  
 36106  // String returns the string representation.
 36107  //
 36108  // API parameter values that are decorated as "sensitive" in the API will not
 36109  // be included in the string output. The member name will be present, but the
 36110  // value will be replaced with "sensitive".
 36111  func (s SourceSelectionCriteria) String() string {
 36112  	return awsutil.Prettify(s)
 36113  }
 36114  
 36115  // GoString returns the string representation.
 36116  //
 36117  // API parameter values that are decorated as "sensitive" in the API will not
 36118  // be included in the string output. The member name will be present, but the
 36119  // value will be replaced with "sensitive".
 36120  func (s SourceSelectionCriteria) GoString() string {
 36121  	return s.String()
 36122  }
 36123  
 36124  // Validate inspects the fields of the type to determine if they are valid.
 36125  func (s *SourceSelectionCriteria) Validate() error {
 36126  	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
 36127  	if s.ReplicaModifications != nil {
 36128  		if err := s.ReplicaModifications.Validate(); err != nil {
 36129  			invalidParams.AddNested("ReplicaModifications", err.(request.ErrInvalidParams))
 36130  		}
 36131  	}
 36132  	if s.SseKmsEncryptedObjects != nil {
 36133  		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
 36134  			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
 36135  		}
 36136  	}
 36137  
 36138  	if invalidParams.Len() > 0 {
 36139  		return invalidParams
 36140  	}
 36141  	return nil
 36142  }
 36143  
 36144  // SetReplicaModifications sets the ReplicaModifications field's value.
 36145  func (s *SourceSelectionCriteria) SetReplicaModifications(v *ReplicaModifications) *SourceSelectionCriteria {
 36146  	s.ReplicaModifications = v
 36147  	return s
 36148  }
 36149  
 36150  // SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
 36151  func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
 36152  	s.SseKmsEncryptedObjects = v
 36153  	return s
 36154  }
 36155  
 36156  // A container for filter information for the selection of S3 objects encrypted
 36157  // with Amazon Web Services KMS.
 36158  type SseKmsEncryptedObjects struct {
 36159  	_ struct{} `type:"structure"`
 36160  
 36161  	// Specifies whether Amazon S3 replicates objects created with server-side encryption
 36162  	// using an Amazon Web Services KMS key stored in Amazon Web Services Key Management
 36163  	// Service.
 36164  	//
 36165  	// Status is a required field
 36166  	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
 36167  }
 36168  
 36169  // String returns the string representation.
 36170  //
 36171  // API parameter values that are decorated as "sensitive" in the API will not
 36172  // be included in the string output. The member name will be present, but the
 36173  // value will be replaced with "sensitive".
 36174  func (s SseKmsEncryptedObjects) String() string {
 36175  	return awsutil.Prettify(s)
 36176  }
 36177  
 36178  // GoString returns the string representation.
 36179  //
 36180  // API parameter values that are decorated as "sensitive" in the API will not
 36181  // be included in the string output. The member name will be present, but the
 36182  // value will be replaced with "sensitive".
 36183  func (s SseKmsEncryptedObjects) GoString() string {
 36184  	return s.String()
 36185  }
 36186  
 36187  // Validate inspects the fields of the type to determine if they are valid.
 36188  func (s *SseKmsEncryptedObjects) Validate() error {
 36189  	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
 36190  	if s.Status == nil {
 36191  		invalidParams.Add(request.NewErrParamRequired("Status"))
 36192  	}
 36193  
 36194  	if invalidParams.Len() > 0 {
 36195  		return invalidParams
 36196  	}
 36197  	return nil
 36198  }
 36199  
 36200  // SetStatus sets the Status field's value.
 36201  func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
 36202  	s.Status = &v
 36203  	return s
 36204  }
 36205  
 36206  // Container for the stats details.
 36207  type Stats struct {
 36208  	_ struct{} `type:"structure"`
 36209  
 36210  	// The total number of uncompressed object bytes processed.
 36211  	BytesProcessed *int64 `type:"long"`
 36212  
 36213  	// The total number of bytes of records payload data returned.
 36214  	BytesReturned *int64 `type:"long"`
 36215  
 36216  	// The total number of object bytes scanned.
 36217  	BytesScanned *int64 `type:"long"`
 36218  }
 36219  
 36220  // String returns the string representation.
 36221  //
 36222  // API parameter values that are decorated as "sensitive" in the API will not
 36223  // be included in the string output. The member name will be present, but the
 36224  // value will be replaced with "sensitive".
 36225  func (s Stats) String() string {
 36226  	return awsutil.Prettify(s)
 36227  }
 36228  
 36229  // GoString returns the string representation.
 36230  //
 36231  // API parameter values that are decorated as "sensitive" in the API will not
 36232  // be included in the string output. The member name will be present, but the
 36233  // value will be replaced with "sensitive".
 36234  func (s Stats) GoString() string {
 36235  	return s.String()
 36236  }
 36237  
 36238  // SetBytesProcessed sets the BytesProcessed field's value.
 36239  func (s *Stats) SetBytesProcessed(v int64) *Stats {
 36240  	s.BytesProcessed = &v
 36241  	return s
 36242  }
 36243  
 36244  // SetBytesReturned sets the BytesReturned field's value.
 36245  func (s *Stats) SetBytesReturned(v int64) *Stats {
 36246  	s.BytesReturned = &v
 36247  	return s
 36248  }
 36249  
 36250  // SetBytesScanned sets the BytesScanned field's value.
 36251  func (s *Stats) SetBytesScanned(v int64) *Stats {
 36252  	s.BytesScanned = &v
 36253  	return s
 36254  }
 36255  
 36256  // Container for the Stats Event.
 36257  type StatsEvent struct {
 36258  	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
 36259  
 36260  	// The Stats event details.
 36261  	Details *Stats `locationName:"Details" type:"structure"`
 36262  }
 36263  
 36264  // String returns the string representation.
 36265  //
 36266  // API parameter values that are decorated as "sensitive" in the API will not
 36267  // be included in the string output. The member name will be present, but the
 36268  // value will be replaced with "sensitive".
 36269  func (s StatsEvent) String() string {
 36270  	return awsutil.Prettify(s)
 36271  }
 36272  
 36273  // GoString returns the string representation.
 36274  //
 36275  // API parameter values that are decorated as "sensitive" in the API will not
 36276  // be included in the string output. The member name will be present, but the
 36277  // value will be replaced with "sensitive".
 36278  func (s StatsEvent) GoString() string {
 36279  	return s.String()
 36280  }
 36281  
 36282  // SetDetails sets the Details field's value.
 36283  func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
 36284  	s.Details = v
 36285  	return s
 36286  }
 36287  
 36288  // The StatsEvent is and event in the SelectObjectContentEventStream group of events.
 36289  func (s *StatsEvent) eventSelectObjectContentEventStream() {}
 36290  
 36291  // UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
 36292  // This method is only used internally within the SDK's EventStream handling.
 36293  func (s *StatsEvent) UnmarshalEvent(
 36294  	payloadUnmarshaler protocol.PayloadUnmarshaler,
 36295  	msg eventstream.Message,
 36296  ) error {
 36297  	if err := payloadUnmarshaler.UnmarshalPayload(
 36298  		bytes.NewReader(msg.Payload), s,
 36299  	); err != nil {
 36300  		return err
 36301  	}
 36302  	return nil
 36303  }
 36304  
 36305  // MarshalEvent marshals the type into an stream event value. This method
 36306  // should only used internally within the SDK's EventStream handling.
 36307  func (s *StatsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
 36308  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
 36309  	var buf bytes.Buffer
 36310  	if err = pm.MarshalPayload(&buf, s); err != nil {
 36311  		return eventstream.Message{}, err
 36312  	}
 36313  	msg.Payload = buf.Bytes()
 36314  	return msg, err
 36315  }
 36316  
 36317  // Specifies data related to access patterns to be collected and made available
 36318  // to analyze the tradeoffs between different storage classes for an Amazon
 36319  // S3 bucket.
 36320  type StorageClassAnalysis struct {
 36321  	_ struct{} `type:"structure"`
 36322  
 36323  	// Specifies how data related to the storage class analysis for an Amazon S3
 36324  	// bucket should be exported.
 36325  	DataExport *StorageClassAnalysisDataExport `type:"structure"`
 36326  }
 36327  
 36328  // String returns the string representation.
 36329  //
 36330  // API parameter values that are decorated as "sensitive" in the API will not
 36331  // be included in the string output. The member name will be present, but the
 36332  // value will be replaced with "sensitive".
 36333  func (s StorageClassAnalysis) String() string {
 36334  	return awsutil.Prettify(s)
 36335  }
 36336  
 36337  // GoString returns the string representation.
 36338  //
 36339  // API parameter values that are decorated as "sensitive" in the API will not
 36340  // be included in the string output. The member name will be present, but the
 36341  // value will be replaced with "sensitive".
 36342  func (s StorageClassAnalysis) GoString() string {
 36343  	return s.String()
 36344  }
 36345  
 36346  // Validate inspects the fields of the type to determine if they are valid.
 36347  func (s *StorageClassAnalysis) Validate() error {
 36348  	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
 36349  	if s.DataExport != nil {
 36350  		if err := s.DataExport.Validate(); err != nil {
 36351  			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
 36352  		}
 36353  	}
 36354  
 36355  	if invalidParams.Len() > 0 {
 36356  		return invalidParams
 36357  	}
 36358  	return nil
 36359  }
 36360  
 36361  // SetDataExport sets the DataExport field's value.
 36362  func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
 36363  	s.DataExport = v
 36364  	return s
 36365  }
 36366  
 36367  // Container for data related to the storage class analysis for an Amazon S3
 36368  // bucket for export.
 36369  type StorageClassAnalysisDataExport struct {
 36370  	_ struct{} `type:"structure"`
 36371  
 36372  	// The place to store the data for an analysis.
 36373  	//
 36374  	// Destination is a required field
 36375  	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
 36376  
 36377  	// The version of the output schema to use when exporting data. Must be V_1.
 36378  	//
 36379  	// OutputSchemaVersion is a required field
 36380  	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
 36381  }
 36382  
 36383  // String returns the string representation.
 36384  //
 36385  // API parameter values that are decorated as "sensitive" in the API will not
 36386  // be included in the string output. The member name will be present, but the
 36387  // value will be replaced with "sensitive".
 36388  func (s StorageClassAnalysisDataExport) String() string {
 36389  	return awsutil.Prettify(s)
 36390  }
 36391  
 36392  // GoString returns the string representation.
 36393  //
 36394  // API parameter values that are decorated as "sensitive" in the API will not
 36395  // be included in the string output. The member name will be present, but the
 36396  // value will be replaced with "sensitive".
 36397  func (s StorageClassAnalysisDataExport) GoString() string {
 36398  	return s.String()
 36399  }
 36400  
 36401  // Validate inspects the fields of the type to determine if they are valid.
 36402  func (s *StorageClassAnalysisDataExport) Validate() error {
 36403  	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
 36404  	if s.Destination == nil {
 36405  		invalidParams.Add(request.NewErrParamRequired("Destination"))
 36406  	}
 36407  	if s.OutputSchemaVersion == nil {
 36408  		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
 36409  	}
 36410  	if s.Destination != nil {
 36411  		if err := s.Destination.Validate(); err != nil {
 36412  			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
 36413  		}
 36414  	}
 36415  
 36416  	if invalidParams.Len() > 0 {
 36417  		return invalidParams
 36418  	}
 36419  	return nil
 36420  }
 36421  
 36422  // SetDestination sets the Destination field's value.
 36423  func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
 36424  	s.Destination = v
 36425  	return s
 36426  }
 36427  
 36428  // SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
 36429  func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
 36430  	s.OutputSchemaVersion = &v
 36431  	return s
 36432  }
 36433  
 36434  // A container of a key value name pair.
 36435  type Tag struct {
 36436  	_ struct{} `type:"structure"`
 36437  
 36438  	// Name of the object key.
 36439  	//
 36440  	// Key is a required field
 36441  	Key *string `min:"1" type:"string" required:"true"`
 36442  
 36443  	// Value of the tag.
 36444  	//
 36445  	// Value is a required field
 36446  	Value *string `type:"string" required:"true"`
 36447  }
 36448  
 36449  // String returns the string representation.
 36450  //
 36451  // API parameter values that are decorated as "sensitive" in the API will not
 36452  // be included in the string output. The member name will be present, but the
 36453  // value will be replaced with "sensitive".
 36454  func (s Tag) String() string {
 36455  	return awsutil.Prettify(s)
 36456  }
 36457  
 36458  // GoString returns the string representation.
 36459  //
 36460  // API parameter values that are decorated as "sensitive" in the API will not
 36461  // be included in the string output. The member name will be present, but the
 36462  // value will be replaced with "sensitive".
 36463  func (s Tag) GoString() string {
 36464  	return s.String()
 36465  }
 36466  
 36467  // Validate inspects the fields of the type to determine if they are valid.
 36468  func (s *Tag) Validate() error {
 36469  	invalidParams := request.ErrInvalidParams{Context: "Tag"}
 36470  	if s.Key == nil {
 36471  		invalidParams.Add(request.NewErrParamRequired("Key"))
 36472  	}
 36473  	if s.Key != nil && len(*s.Key) < 1 {
 36474  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 36475  	}
 36476  	if s.Value == nil {
 36477  		invalidParams.Add(request.NewErrParamRequired("Value"))
 36478  	}
 36479  
 36480  	if invalidParams.Len() > 0 {
 36481  		return invalidParams
 36482  	}
 36483  	return nil
 36484  }
 36485  
 36486  // SetKey sets the Key field's value.
 36487  func (s *Tag) SetKey(v string) *Tag {
 36488  	s.Key = &v
 36489  	return s
 36490  }
 36491  
 36492  // SetValue sets the Value field's value.
 36493  func (s *Tag) SetValue(v string) *Tag {
 36494  	s.Value = &v
 36495  	return s
 36496  }
 36497  
 36498  // Container for TagSet elements.
 36499  type Tagging struct {
 36500  	_ struct{} `type:"structure"`
 36501  
 36502  	// A collection for a set of tags
 36503  	//
 36504  	// TagSet is a required field
 36505  	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
 36506  }
 36507  
 36508  // String returns the string representation.
 36509  //
 36510  // API parameter values that are decorated as "sensitive" in the API will not
 36511  // be included in the string output. The member name will be present, but the
 36512  // value will be replaced with "sensitive".
 36513  func (s Tagging) String() string {
 36514  	return awsutil.Prettify(s)
 36515  }
 36516  
 36517  // GoString returns the string representation.
 36518  //
 36519  // API parameter values that are decorated as "sensitive" in the API will not
 36520  // be included in the string output. The member name will be present, but the
 36521  // value will be replaced with "sensitive".
 36522  func (s Tagging) GoString() string {
 36523  	return s.String()
 36524  }
 36525  
 36526  // Validate inspects the fields of the type to determine if they are valid.
 36527  func (s *Tagging) Validate() error {
 36528  	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
 36529  	if s.TagSet == nil {
 36530  		invalidParams.Add(request.NewErrParamRequired("TagSet"))
 36531  	}
 36532  	if s.TagSet != nil {
 36533  		for i, v := range s.TagSet {
 36534  			if v == nil {
 36535  				continue
 36536  			}
 36537  			if err := v.Validate(); err != nil {
 36538  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
 36539  			}
 36540  		}
 36541  	}
 36542  
 36543  	if invalidParams.Len() > 0 {
 36544  		return invalidParams
 36545  	}
 36546  	return nil
 36547  }
 36548  
 36549  // SetTagSet sets the TagSet field's value.
 36550  func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
 36551  	s.TagSet = v
 36552  	return s
 36553  }
 36554  
 36555  // Container for granting information.
 36556  type TargetGrant struct {
 36557  	_ struct{} `type:"structure"`
 36558  
 36559  	// Container for the person being granted permissions.
 36560  	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
 36561  
 36562  	// Logging permissions assigned to the grantee for the bucket.
 36563  	Permission *string `type:"string" enum:"BucketLogsPermission"`
 36564  }
 36565  
 36566  // String returns the string representation.
 36567  //
 36568  // API parameter values that are decorated as "sensitive" in the API will not
 36569  // be included in the string output. The member name will be present, but the
 36570  // value will be replaced with "sensitive".
 36571  func (s TargetGrant) String() string {
 36572  	return awsutil.Prettify(s)
 36573  }
 36574  
 36575  // GoString returns the string representation.
 36576  //
 36577  // API parameter values that are decorated as "sensitive" in the API will not
 36578  // be included in the string output. The member name will be present, but the
 36579  // value will be replaced with "sensitive".
 36580  func (s TargetGrant) GoString() string {
 36581  	return s.String()
 36582  }
 36583  
 36584  // Validate inspects the fields of the type to determine if they are valid.
 36585  func (s *TargetGrant) Validate() error {
 36586  	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
 36587  	if s.Grantee != nil {
 36588  		if err := s.Grantee.Validate(); err != nil {
 36589  			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
 36590  		}
 36591  	}
 36592  
 36593  	if invalidParams.Len() > 0 {
 36594  		return invalidParams
 36595  	}
 36596  	return nil
 36597  }
 36598  
 36599  // SetGrantee sets the Grantee field's value.
 36600  func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
 36601  	s.Grantee = v
 36602  	return s
 36603  }
 36604  
 36605  // SetPermission sets the Permission field's value.
 36606  func (s *TargetGrant) SetPermission(v string) *TargetGrant {
 36607  	s.Permission = &v
 36608  	return s
 36609  }
 36610  
 36611  // The S3 Intelligent-Tiering storage class is designed to optimize storage
 36612  // costs by automatically moving data to the most cost-effective storage access
 36613  // tier, without additional operational overhead.
 36614  type Tiering struct {
 36615  	_ struct{} `type:"structure"`
 36616  
 36617  	// S3 Intelligent-Tiering access tier. See Storage class for automatically optimizing
 36618  	// frequently and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access)
 36619  	// for a list of access tiers in the S3 Intelligent-Tiering storage class.
 36620  	//
 36621  	// AccessTier is a required field
 36622  	AccessTier *string `type:"string" required:"true" enum:"IntelligentTieringAccessTier"`
 36623  
 36624  	// The number of consecutive days of no access after which an object will be
 36625  	// eligible to be transitioned to the corresponding tier. The minimum number
 36626  	// of days specified for Archive Access tier must be at least 90 days and Deep
 36627  	// Archive Access tier must be at least 180 days. The maximum can be up to 2
 36628  	// years (730 days).
 36629  	//
 36630  	// Days is a required field
 36631  	Days *int64 `type:"integer" required:"true"`
 36632  }
 36633  
 36634  // String returns the string representation.
 36635  //
 36636  // API parameter values that are decorated as "sensitive" in the API will not
 36637  // be included in the string output. The member name will be present, but the
 36638  // value will be replaced with "sensitive".
 36639  func (s Tiering) String() string {
 36640  	return awsutil.Prettify(s)
 36641  }
 36642  
 36643  // GoString returns the string representation.
 36644  //
 36645  // API parameter values that are decorated as "sensitive" in the API will not
 36646  // be included in the string output. The member name will be present, but the
 36647  // value will be replaced with "sensitive".
 36648  func (s Tiering) GoString() string {
 36649  	return s.String()
 36650  }
 36651  
 36652  // Validate inspects the fields of the type to determine if they are valid.
 36653  func (s *Tiering) Validate() error {
 36654  	invalidParams := request.ErrInvalidParams{Context: "Tiering"}
 36655  	if s.AccessTier == nil {
 36656  		invalidParams.Add(request.NewErrParamRequired("AccessTier"))
 36657  	}
 36658  	if s.Days == nil {
 36659  		invalidParams.Add(request.NewErrParamRequired("Days"))
 36660  	}
 36661  
 36662  	if invalidParams.Len() > 0 {
 36663  		return invalidParams
 36664  	}
 36665  	return nil
 36666  }
 36667  
 36668  // SetAccessTier sets the AccessTier field's value.
 36669  func (s *Tiering) SetAccessTier(v string) *Tiering {
 36670  	s.AccessTier = &v
 36671  	return s
 36672  }
 36673  
 36674  // SetDays sets the Days field's value.
 36675  func (s *Tiering) SetDays(v int64) *Tiering {
 36676  	s.Days = &v
 36677  	return s
 36678  }
 36679  
 36680  // A container for specifying the configuration for publication of messages
 36681  // to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
 36682  // detects specified events.
 36683  type TopicConfiguration struct {
 36684  	_ struct{} `type:"structure"`
 36685  
 36686  	// The Amazon S3 bucket event about which to send notifications. For more information,
 36687  	// see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 36688  	// in the Amazon S3 User Guide.
 36689  	//
 36690  	// Events is a required field
 36691  	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
 36692  
 36693  	// Specifies object key name filtering rules. For information about key name
 36694  	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
 36695  	// in the Amazon S3 User Guide.
 36696  	Filter *NotificationConfigurationFilter `type:"structure"`
 36697  
 36698  	// An optional unique identifier for configurations in a notification configuration.
 36699  	// If you don't provide one, Amazon S3 will assign an ID.
 36700  	Id *string `type:"string"`
 36701  
 36702  	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
 36703  	// publishes a message when it detects events of the specified type.
 36704  	//
 36705  	// TopicArn is a required field
 36706  	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
 36707  }
 36708  
 36709  // String returns the string representation.
 36710  //
 36711  // API parameter values that are decorated as "sensitive" in the API will not
 36712  // be included in the string output. The member name will be present, but the
 36713  // value will be replaced with "sensitive".
 36714  func (s TopicConfiguration) String() string {
 36715  	return awsutil.Prettify(s)
 36716  }
 36717  
 36718  // GoString returns the string representation.
 36719  //
 36720  // API parameter values that are decorated as "sensitive" in the API will not
 36721  // be included in the string output. The member name will be present, but the
 36722  // value will be replaced with "sensitive".
 36723  func (s TopicConfiguration) GoString() string {
 36724  	return s.String()
 36725  }
 36726  
 36727  // Validate inspects the fields of the type to determine if they are valid.
 36728  func (s *TopicConfiguration) Validate() error {
 36729  	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
 36730  	if s.Events == nil {
 36731  		invalidParams.Add(request.NewErrParamRequired("Events"))
 36732  	}
 36733  	if s.TopicArn == nil {
 36734  		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
 36735  	}
 36736  
 36737  	if invalidParams.Len() > 0 {
 36738  		return invalidParams
 36739  	}
 36740  	return nil
 36741  }
 36742  
 36743  // SetEvents sets the Events field's value.
 36744  func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
 36745  	s.Events = v
 36746  	return s
 36747  }
 36748  
 36749  // SetFilter sets the Filter field's value.
 36750  func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
 36751  	s.Filter = v
 36752  	return s
 36753  }
 36754  
 36755  // SetId sets the Id field's value.
 36756  func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
 36757  	s.Id = &v
 36758  	return s
 36759  }
 36760  
 36761  // SetTopicArn sets the TopicArn field's value.
 36762  func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
 36763  	s.TopicArn = &v
 36764  	return s
 36765  }
 36766  
 36767  // A container for specifying the configuration for publication of messages
 36768  // to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
 36769  // detects specified events. This data type is deprecated. Use TopicConfiguration
 36770  // (https://docs.aws.amazon.com/AmazonS3/latest/API/API_TopicConfiguration.html)
 36771  // instead.
 36772  type TopicConfigurationDeprecated struct {
 36773  	_ struct{} `type:"structure"`
 36774  
 36775  	// Bucket event for which to send notifications.
 36776  	//
 36777  	// Deprecated: Event has been deprecated
 36778  	Event *string `deprecated:"true" type:"string" enum:"Event"`
 36779  
 36780  	// A collection of events related to objects
 36781  	Events []*string `locationName:"Event" type:"list" flattened:"true"`
 36782  
 36783  	// An optional unique identifier for configurations in a notification configuration.
 36784  	// If you don't provide one, Amazon S3 will assign an ID.
 36785  	Id *string `type:"string"`
 36786  
 36787  	// Amazon SNS topic to which Amazon S3 will publish a message to report the
 36788  	// specified events for the bucket.
 36789  	Topic *string `type:"string"`
 36790  }
 36791  
 36792  // String returns the string representation.
 36793  //
 36794  // API parameter values that are decorated as "sensitive" in the API will not
 36795  // be included in the string output. The member name will be present, but the
 36796  // value will be replaced with "sensitive".
 36797  func (s TopicConfigurationDeprecated) String() string {
 36798  	return awsutil.Prettify(s)
 36799  }
 36800  
 36801  // GoString returns the string representation.
 36802  //
 36803  // API parameter values that are decorated as "sensitive" in the API will not
 36804  // be included in the string output. The member name will be present, but the
 36805  // value will be replaced with "sensitive".
 36806  func (s TopicConfigurationDeprecated) GoString() string {
 36807  	return s.String()
 36808  }
 36809  
 36810  // SetEvent sets the Event field's value.
 36811  func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
 36812  	s.Event = &v
 36813  	return s
 36814  }
 36815  
 36816  // SetEvents sets the Events field's value.
 36817  func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
 36818  	s.Events = v
 36819  	return s
 36820  }
 36821  
 36822  // SetId sets the Id field's value.
 36823  func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
 36824  	s.Id = &v
 36825  	return s
 36826  }
 36827  
 36828  // SetTopic sets the Topic field's value.
 36829  func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
 36830  	s.Topic = &v
 36831  	return s
 36832  }
 36833  
 36834  // Specifies when an object transitions to a specified storage class. For more
 36835  // information about Amazon S3 lifecycle configuration rules, see Transitioning
 36836  // Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
 36837  // in the Amazon S3 User Guide.
 36838  type Transition struct {
 36839  	_ struct{} `type:"structure"`
 36840  
 36841  	// Indicates when objects are transitioned to the specified storage class. The
 36842  	// date value must be in ISO 8601 format. The time is always midnight UTC.
 36843  	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
 36844  
 36845  	// Indicates the number of days after creation when objects are transitioned
 36846  	// to the specified storage class. The value must be a positive integer.
 36847  	Days *int64 `type:"integer"`
 36848  
 36849  	// The storage class to which you want the object to transition.
 36850  	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
 36851  }
 36852  
 36853  // String returns the string representation.
 36854  //
 36855  // API parameter values that are decorated as "sensitive" in the API will not
 36856  // be included in the string output. The member name will be present, but the
 36857  // value will be replaced with "sensitive".
 36858  func (s Transition) String() string {
 36859  	return awsutil.Prettify(s)
 36860  }
 36861  
 36862  // GoString returns the string representation.
 36863  //
 36864  // API parameter values that are decorated as "sensitive" in the API will not
 36865  // be included in the string output. The member name will be present, but the
 36866  // value will be replaced with "sensitive".
 36867  func (s Transition) GoString() string {
 36868  	return s.String()
 36869  }
 36870  
 36871  // SetDate sets the Date field's value.
 36872  func (s *Transition) SetDate(v time.Time) *Transition {
 36873  	s.Date = &v
 36874  	return s
 36875  }
 36876  
 36877  // SetDays sets the Days field's value.
 36878  func (s *Transition) SetDays(v int64) *Transition {
 36879  	s.Days = &v
 36880  	return s
 36881  }
 36882  
 36883  // SetStorageClass sets the StorageClass field's value.
 36884  func (s *Transition) SetStorageClass(v string) *Transition {
 36885  	s.StorageClass = &v
 36886  	return s
 36887  }
 36888  
 36889  type UploadPartCopyInput struct {
 36890  	_ struct{} `locationName:"UploadPartCopyRequest" type:"structure"`
 36891  
 36892  	// The bucket name.
 36893  	//
 36894  	// When using this action with an access point, you must direct requests to
 36895  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 36896  	// When using this action with an access point through the Amazon Web Services
 36897  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 36898  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 36899  	// in the Amazon S3 User Guide.
 36900  	//
 36901  	// When using this action with Amazon S3 on Outposts, you must direct requests
 36902  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 36903  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 36904  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 36905  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 36906  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 36907  	// in the Amazon S3 User Guide.
 36908  	//
 36909  	// Bucket is a required field
 36910  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 36911  
 36912  	// Specifies the source object for the copy operation. You specify the value
 36913  	// in one of two formats, depending on whether you want to access the source
 36914  	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
 36915  	//
 36916  	//    * For objects not accessed through an access point, specify the name of
 36917  	//    the source bucket and key of the source object, separated by a slash (/).
 36918  	//    For example, to copy the object reports/january.pdf from the bucket awsexamplebucket,
 36919  	//    use awsexamplebucket/reports/january.pdf. The value must be URL encoded.
 36920  	//
 36921  	//    * For objects accessed through access points, specify the Amazon Resource
 36922  	//    Name (ARN) of the object as accessed through the access point, in the
 36923  	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
 36924  	//    For example, to copy the object reports/january.pdf through access point
 36925  	//    my-access-point owned by account 123456789012 in Region us-west-2, use
 36926  	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
 36927  	//    The value must be URL encoded. Amazon S3 supports copy operations using
 36928  	//    access points only when the source and destination buckets are in the
 36929  	//    same Amazon Web Services Region. Alternatively, for objects accessed through
 36930  	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
 36931  	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
 36932  	//    For example, to copy the object reports/january.pdf through outpost my-outpost
 36933  	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
 36934  	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
 36935  	//    The value must be URL encoded.
 36936  	//
 36937  	// To copy a specific version of an object, append ?versionId=<version-id> to
 36938  	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
 36939  	// If you don't specify a version ID, Amazon S3 copies the latest version of
 36940  	// the source object.
 36941  	//
 36942  	// CopySource is a required field
 36943  	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
 36944  
 36945  	// Copies the object if its entity tag (ETag) matches the specified tag.
 36946  	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
 36947  
 36948  	// Copies the object if it has been modified since the specified time.
 36949  	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
 36950  
 36951  	// Copies the object if its entity tag (ETag) is different than the specified
 36952  	// ETag.
 36953  	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
 36954  
 36955  	// Copies the object if it hasn't been modified since the specified time.
 36956  	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
 36957  
 36958  	// The range of bytes to copy from the source object. The range value must use
 36959  	// the form bytes=first-last, where the first and last are the zero-based byte
 36960  	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
 36961  	// first 10 bytes of the source. You can copy a range only if the source object
 36962  	// is greater than 5 MB.
 36963  	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
 36964  
 36965  	// Specifies the algorithm to use when decrypting the source object (for example,
 36966  	// AES256).
 36967  	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
 36968  
 36969  	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
 36970  	// the source object. The encryption key provided in this header must be one
 36971  	// that was used when the source object was created.
 36972  	//
 36973  	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
 36974  	// replaced with "sensitive" in string returned by UploadPartCopyInput's
 36975  	// String and GoString methods.
 36976  	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 36977  
 36978  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 36979  	// Amazon S3 uses this header for a message integrity check to ensure that the
 36980  	// encryption key was transmitted without error.
 36981  	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
 36982  
 36983  	// The account ID of the expected destination bucket owner. If the destination
 36984  	// bucket is owned by a different account, the request will fail with an HTTP
 36985  	// 403 (Access Denied) error.
 36986  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 36987  
 36988  	// The account ID of the expected source bucket owner. If the source bucket
 36989  	// is owned by a different account, the request will fail with an HTTP 403 (Access
 36990  	// Denied) error.
 36991  	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
 36992  
 36993  	// Object key for which the multipart upload was initiated.
 36994  	//
 36995  	// Key is a required field
 36996  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 36997  
 36998  	// Part number of part being copied. This is a positive integer between 1 and
 36999  	// 10,000.
 37000  	//
 37001  	// PartNumber is a required field
 37002  	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
 37003  
 37004  	// Confirms that the requester knows that they will be charged for the request.
 37005  	// Bucket owners need not specify this parameter in their requests. For information
 37006  	// about downloading objects from requester pays buckets, see Downloading Objects
 37007  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 37008  	// in the Amazon S3 User Guide.
 37009  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 37010  
 37011  	// Specifies the algorithm to use to when encrypting the object (for example,
 37012  	// AES256).
 37013  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 37014  
 37015  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 37016  	// data. This value is used to store the object and then it is discarded; Amazon
 37017  	// S3 does not store the encryption key. The key must be appropriate for use
 37018  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 37019  	// header. This must be the same encryption key specified in the initiate multipart
 37020  	// upload request.
 37021  	//
 37022  	// SSECustomerKey is a sensitive parameter and its value will be
 37023  	// replaced with "sensitive" in string returned by UploadPartCopyInput's
 37024  	// String and GoString methods.
 37025  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 37026  
 37027  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 37028  	// Amazon S3 uses this header for a message integrity check to ensure that the
 37029  	// encryption key was transmitted without error.
 37030  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 37031  
 37032  	// Upload ID identifying the multipart upload whose part is being copied.
 37033  	//
 37034  	// UploadId is a required field
 37035  	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
 37036  }
 37037  
 37038  // String returns the string representation.
 37039  //
 37040  // API parameter values that are decorated as "sensitive" in the API will not
 37041  // be included in the string output. The member name will be present, but the
 37042  // value will be replaced with "sensitive".
 37043  func (s UploadPartCopyInput) String() string {
 37044  	return awsutil.Prettify(s)
 37045  }
 37046  
 37047  // GoString returns the string representation.
 37048  //
 37049  // API parameter values that are decorated as "sensitive" in the API will not
 37050  // be included in the string output. The member name will be present, but the
 37051  // value will be replaced with "sensitive".
 37052  func (s UploadPartCopyInput) GoString() string {
 37053  	return s.String()
 37054  }
 37055  
 37056  // Validate inspects the fields of the type to determine if they are valid.
 37057  func (s *UploadPartCopyInput) Validate() error {
 37058  	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
 37059  	if s.Bucket == nil {
 37060  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 37061  	}
 37062  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 37063  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 37064  	}
 37065  	if s.CopySource == nil {
 37066  		invalidParams.Add(request.NewErrParamRequired("CopySource"))
 37067  	}
 37068  	if s.Key == nil {
 37069  		invalidParams.Add(request.NewErrParamRequired("Key"))
 37070  	}
 37071  	if s.Key != nil && len(*s.Key) < 1 {
 37072  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 37073  	}
 37074  	if s.PartNumber == nil {
 37075  		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
 37076  	}
 37077  	if s.UploadId == nil {
 37078  		invalidParams.Add(request.NewErrParamRequired("UploadId"))
 37079  	}
 37080  
 37081  	if invalidParams.Len() > 0 {
 37082  		return invalidParams
 37083  	}
 37084  	return nil
 37085  }
 37086  
 37087  // SetBucket sets the Bucket field's value.
 37088  func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
 37089  	s.Bucket = &v
 37090  	return s
 37091  }
 37092  
 37093  func (s *UploadPartCopyInput) getBucket() (v string) {
 37094  	if s.Bucket == nil {
 37095  		return v
 37096  	}
 37097  	return *s.Bucket
 37098  }
 37099  
 37100  // SetCopySource sets the CopySource field's value.
 37101  func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
 37102  	s.CopySource = &v
 37103  	return s
 37104  }
 37105  
 37106  // SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
 37107  func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
 37108  	s.CopySourceIfMatch = &v
 37109  	return s
 37110  }
 37111  
 37112  // SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
 37113  func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
 37114  	s.CopySourceIfModifiedSince = &v
 37115  	return s
 37116  }
 37117  
 37118  // SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
 37119  func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
 37120  	s.CopySourceIfNoneMatch = &v
 37121  	return s
 37122  }
 37123  
 37124  // SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
 37125  func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
 37126  	s.CopySourceIfUnmodifiedSince = &v
 37127  	return s
 37128  }
 37129  
 37130  // SetCopySourceRange sets the CopySourceRange field's value.
 37131  func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
 37132  	s.CopySourceRange = &v
 37133  	return s
 37134  }
 37135  
 37136  // SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
 37137  func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
 37138  	s.CopySourceSSECustomerAlgorithm = &v
 37139  	return s
 37140  }
 37141  
 37142  // SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
 37143  func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
 37144  	s.CopySourceSSECustomerKey = &v
 37145  	return s
 37146  }
 37147  
 37148  func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
 37149  	if s.CopySourceSSECustomerKey == nil {
 37150  		return v
 37151  	}
 37152  	return *s.CopySourceSSECustomerKey
 37153  }
 37154  
 37155  // SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
 37156  func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
 37157  	s.CopySourceSSECustomerKeyMD5 = &v
 37158  	return s
 37159  }
 37160  
 37161  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 37162  func (s *UploadPartCopyInput) SetExpectedBucketOwner(v string) *UploadPartCopyInput {
 37163  	s.ExpectedBucketOwner = &v
 37164  	return s
 37165  }
 37166  
 37167  // SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
 37168  func (s *UploadPartCopyInput) SetExpectedSourceBucketOwner(v string) *UploadPartCopyInput {
 37169  	s.ExpectedSourceBucketOwner = &v
 37170  	return s
 37171  }
 37172  
 37173  // SetKey sets the Key field's value.
 37174  func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
 37175  	s.Key = &v
 37176  	return s
 37177  }
 37178  
 37179  // SetPartNumber sets the PartNumber field's value.
 37180  func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
 37181  	s.PartNumber = &v
 37182  	return s
 37183  }
 37184  
 37185  // SetRequestPayer sets the RequestPayer field's value.
 37186  func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
 37187  	s.RequestPayer = &v
 37188  	return s
 37189  }
 37190  
 37191  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 37192  func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
 37193  	s.SSECustomerAlgorithm = &v
 37194  	return s
 37195  }
 37196  
 37197  // SetSSECustomerKey sets the SSECustomerKey field's value.
 37198  func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
 37199  	s.SSECustomerKey = &v
 37200  	return s
 37201  }
 37202  
 37203  func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
 37204  	if s.SSECustomerKey == nil {
 37205  		return v
 37206  	}
 37207  	return *s.SSECustomerKey
 37208  }
 37209  
 37210  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 37211  func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
 37212  	s.SSECustomerKeyMD5 = &v
 37213  	return s
 37214  }
 37215  
 37216  // SetUploadId sets the UploadId field's value.
 37217  func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
 37218  	s.UploadId = &v
 37219  	return s
 37220  }
 37221  
 37222  func (s *UploadPartCopyInput) getEndpointARN() (arn.Resource, error) {
 37223  	if s.Bucket == nil {
 37224  		return nil, fmt.Errorf("member Bucket is nil")
 37225  	}
 37226  	return parseEndpointARN(*s.Bucket)
 37227  }
 37228  
 37229  func (s *UploadPartCopyInput) hasEndpointARN() bool {
 37230  	if s.Bucket == nil {
 37231  		return false
 37232  	}
 37233  	return arn.IsARN(*s.Bucket)
 37234  }
 37235  
 37236  // updateArnableField updates the value of the input field that
 37237  // takes an ARN as an input. This method is useful to backfill
 37238  // the parsed resource name from ARN into the input member.
 37239  // It returns a pointer to a modified copy of input and an error.
 37240  // Note that original input is not modified.
 37241  func (s UploadPartCopyInput) updateArnableField(v string) (interface{}, error) {
 37242  	if s.Bucket == nil {
 37243  		return nil, fmt.Errorf("member Bucket is nil")
 37244  	}
 37245  	s.Bucket = aws.String(v)
 37246  	return &s, nil
 37247  }
 37248  
 37249  type UploadPartCopyOutput struct {
 37250  	_ struct{} `type:"structure" payload:"CopyPartResult"`
 37251  
 37252  	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
 37253  	// encryption with Amazon Web Services KMS (SSE-KMS).
 37254  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 37255  
 37256  	// Container for all response elements.
 37257  	CopyPartResult *CopyPartResult `type:"structure"`
 37258  
 37259  	// The version of the source object that was copied, if you have enabled versioning
 37260  	// on the source bucket.
 37261  	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
 37262  
 37263  	// If present, indicates that the requester was successfully charged for the
 37264  	// request.
 37265  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 37266  
 37267  	// If server-side encryption with a customer-provided encryption key was requested,
 37268  	// the response will include this header confirming the encryption algorithm
 37269  	// used.
 37270  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 37271  
 37272  	// If server-side encryption with a customer-provided encryption key was requested,
 37273  	// the response will include this header to provide round-trip message integrity
 37274  	// verification of the customer-provided encryption key.
 37275  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 37276  
 37277  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 37278  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 37279  	// the object.
 37280  	//
 37281  	// SSEKMSKeyId is a sensitive parameter and its value will be
 37282  	// replaced with "sensitive" in string returned by UploadPartCopyOutput's
 37283  	// String and GoString methods.
 37284  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 37285  
 37286  	// The server-side encryption algorithm used when storing this object in Amazon
 37287  	// S3 (for example, AES256, aws:kms).
 37288  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 37289  }
 37290  
 37291  // String returns the string representation.
 37292  //
 37293  // API parameter values that are decorated as "sensitive" in the API will not
 37294  // be included in the string output. The member name will be present, but the
 37295  // value will be replaced with "sensitive".
 37296  func (s UploadPartCopyOutput) String() string {
 37297  	return awsutil.Prettify(s)
 37298  }
 37299  
 37300  // GoString returns the string representation.
 37301  //
 37302  // API parameter values that are decorated as "sensitive" in the API will not
 37303  // be included in the string output. The member name will be present, but the
 37304  // value will be replaced with "sensitive".
 37305  func (s UploadPartCopyOutput) GoString() string {
 37306  	return s.String()
 37307  }
 37308  
 37309  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 37310  func (s *UploadPartCopyOutput) SetBucketKeyEnabled(v bool) *UploadPartCopyOutput {
 37311  	s.BucketKeyEnabled = &v
 37312  	return s
 37313  }
 37314  
 37315  // SetCopyPartResult sets the CopyPartResult field's value.
 37316  func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
 37317  	s.CopyPartResult = v
 37318  	return s
 37319  }
 37320  
 37321  // SetCopySourceVersionId sets the CopySourceVersionId field's value.
 37322  func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
 37323  	s.CopySourceVersionId = &v
 37324  	return s
 37325  }
 37326  
 37327  // SetRequestCharged sets the RequestCharged field's value.
 37328  func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
 37329  	s.RequestCharged = &v
 37330  	return s
 37331  }
 37332  
 37333  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 37334  func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
 37335  	s.SSECustomerAlgorithm = &v
 37336  	return s
 37337  }
 37338  
 37339  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 37340  func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
 37341  	s.SSECustomerKeyMD5 = &v
 37342  	return s
 37343  }
 37344  
 37345  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 37346  func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
 37347  	s.SSEKMSKeyId = &v
 37348  	return s
 37349  }
 37350  
 37351  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 37352  func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
 37353  	s.ServerSideEncryption = &v
 37354  	return s
 37355  }
 37356  
 37357  type UploadPartInput struct {
 37358  	_ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"`
 37359  
 37360  	// Object data.
 37361  	Body io.ReadSeeker `type:"blob"`
 37362  
 37363  	// The name of the bucket to which the multipart upload was initiated.
 37364  	//
 37365  	// When using this action with an access point, you must direct requests to
 37366  	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
 37367  	// When using this action with an access point through the Amazon Web Services
 37368  	// SDKs, you provide the access point ARN in place of the bucket name. For more
 37369  	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
 37370  	// in the Amazon S3 User Guide.
 37371  	//
 37372  	// When using this action with Amazon S3 on Outposts, you must direct requests
 37373  	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
 37374  	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
 37375  	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
 37376  	// you provide the Outposts bucket ARN in place of the bucket name. For more
 37377  	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
 37378  	// in the Amazon S3 User Guide.
 37379  	//
 37380  	// Bucket is a required field
 37381  	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
 37382  
 37383  	// Size of the body in bytes. This parameter is useful when the size of the
 37384  	// body cannot be determined automatically.
 37385  	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
 37386  
 37387  	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
 37388  	// auto-populated when using the command from the CLI. This parameter is required
 37389  	// if object lock parameters are specified.
 37390  	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
 37391  
 37392  	// The account ID of the expected bucket owner. If the bucket is owned by a
 37393  	// different account, the request will fail with an HTTP 403 (Access Denied)
 37394  	// error.
 37395  	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
 37396  
 37397  	// Object key for which the multipart upload was initiated.
 37398  	//
 37399  	// Key is a required field
 37400  	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
 37401  
 37402  	// Part number of part being uploaded. This is a positive integer between 1
 37403  	// and 10,000.
 37404  	//
 37405  	// PartNumber is a required field
 37406  	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
 37407  
 37408  	// Confirms that the requester knows that they will be charged for the request.
 37409  	// Bucket owners need not specify this parameter in their requests. For information
 37410  	// about downloading objects from requester pays buckets, see Downloading Objects
 37411  	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 37412  	// in the Amazon S3 User Guide.
 37413  	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
 37414  
 37415  	// Specifies the algorithm to use to when encrypting the object (for example,
 37416  	// AES256).
 37417  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 37418  
 37419  	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
 37420  	// data. This value is used to store the object and then it is discarded; Amazon
 37421  	// S3 does not store the encryption key. The key must be appropriate for use
 37422  	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
 37423  	// header. This must be the same encryption key specified in the initiate multipart
 37424  	// upload request.
 37425  	//
 37426  	// SSECustomerKey is a sensitive parameter and its value will be
 37427  	// replaced with "sensitive" in string returned by UploadPartInput's
 37428  	// String and GoString methods.
 37429  	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
 37430  
 37431  	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
 37432  	// Amazon S3 uses this header for a message integrity check to ensure that the
 37433  	// encryption key was transmitted without error.
 37434  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 37435  
 37436  	// Upload ID identifying the multipart upload whose part is being uploaded.
 37437  	//
 37438  	// UploadId is a required field
 37439  	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
 37440  }
 37441  
 37442  // String returns the string representation.
 37443  //
 37444  // API parameter values that are decorated as "sensitive" in the API will not
 37445  // be included in the string output. The member name will be present, but the
 37446  // value will be replaced with "sensitive".
 37447  func (s UploadPartInput) String() string {
 37448  	return awsutil.Prettify(s)
 37449  }
 37450  
 37451  // GoString returns the string representation.
 37452  //
 37453  // API parameter values that are decorated as "sensitive" in the API will not
 37454  // be included in the string output. The member name will be present, but the
 37455  // value will be replaced with "sensitive".
 37456  func (s UploadPartInput) GoString() string {
 37457  	return s.String()
 37458  }
 37459  
 37460  // Validate inspects the fields of the type to determine if they are valid.
 37461  func (s *UploadPartInput) Validate() error {
 37462  	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
 37463  	if s.Bucket == nil {
 37464  		invalidParams.Add(request.NewErrParamRequired("Bucket"))
 37465  	}
 37466  	if s.Bucket != nil && len(*s.Bucket) < 1 {
 37467  		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
 37468  	}
 37469  	if s.Key == nil {
 37470  		invalidParams.Add(request.NewErrParamRequired("Key"))
 37471  	}
 37472  	if s.Key != nil && len(*s.Key) < 1 {
 37473  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 37474  	}
 37475  	if s.PartNumber == nil {
 37476  		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
 37477  	}
 37478  	if s.UploadId == nil {
 37479  		invalidParams.Add(request.NewErrParamRequired("UploadId"))
 37480  	}
 37481  
 37482  	if invalidParams.Len() > 0 {
 37483  		return invalidParams
 37484  	}
 37485  	return nil
 37486  }
 37487  
 37488  // SetBody sets the Body field's value.
 37489  func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
 37490  	s.Body = v
 37491  	return s
 37492  }
 37493  
 37494  // SetBucket sets the Bucket field's value.
 37495  func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
 37496  	s.Bucket = &v
 37497  	return s
 37498  }
 37499  
 37500  func (s *UploadPartInput) getBucket() (v string) {
 37501  	if s.Bucket == nil {
 37502  		return v
 37503  	}
 37504  	return *s.Bucket
 37505  }
 37506  
 37507  // SetContentLength sets the ContentLength field's value.
 37508  func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
 37509  	s.ContentLength = &v
 37510  	return s
 37511  }
 37512  
 37513  // SetContentMD5 sets the ContentMD5 field's value.
 37514  func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
 37515  	s.ContentMD5 = &v
 37516  	return s
 37517  }
 37518  
 37519  // SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
 37520  func (s *UploadPartInput) SetExpectedBucketOwner(v string) *UploadPartInput {
 37521  	s.ExpectedBucketOwner = &v
 37522  	return s
 37523  }
 37524  
 37525  // SetKey sets the Key field's value.
 37526  func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
 37527  	s.Key = &v
 37528  	return s
 37529  }
 37530  
 37531  // SetPartNumber sets the PartNumber field's value.
 37532  func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
 37533  	s.PartNumber = &v
 37534  	return s
 37535  }
 37536  
 37537  // SetRequestPayer sets the RequestPayer field's value.
 37538  func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
 37539  	s.RequestPayer = &v
 37540  	return s
 37541  }
 37542  
 37543  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 37544  func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
 37545  	s.SSECustomerAlgorithm = &v
 37546  	return s
 37547  }
 37548  
 37549  // SetSSECustomerKey sets the SSECustomerKey field's value.
 37550  func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
 37551  	s.SSECustomerKey = &v
 37552  	return s
 37553  }
 37554  
 37555  func (s *UploadPartInput) getSSECustomerKey() (v string) {
 37556  	if s.SSECustomerKey == nil {
 37557  		return v
 37558  	}
 37559  	return *s.SSECustomerKey
 37560  }
 37561  
 37562  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 37563  func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
 37564  	s.SSECustomerKeyMD5 = &v
 37565  	return s
 37566  }
 37567  
 37568  // SetUploadId sets the UploadId field's value.
 37569  func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
 37570  	s.UploadId = &v
 37571  	return s
 37572  }
 37573  
 37574  func (s *UploadPartInput) getEndpointARN() (arn.Resource, error) {
 37575  	if s.Bucket == nil {
 37576  		return nil, fmt.Errorf("member Bucket is nil")
 37577  	}
 37578  	return parseEndpointARN(*s.Bucket)
 37579  }
 37580  
 37581  func (s *UploadPartInput) hasEndpointARN() bool {
 37582  	if s.Bucket == nil {
 37583  		return false
 37584  	}
 37585  	return arn.IsARN(*s.Bucket)
 37586  }
 37587  
 37588  // updateArnableField updates the value of the input field that
 37589  // takes an ARN as an input. This method is useful to backfill
 37590  // the parsed resource name from ARN into the input member.
 37591  // It returns a pointer to a modified copy of input and an error.
 37592  // Note that original input is not modified.
 37593  func (s UploadPartInput) updateArnableField(v string) (interface{}, error) {
 37594  	if s.Bucket == nil {
 37595  		return nil, fmt.Errorf("member Bucket is nil")
 37596  	}
 37597  	s.Bucket = aws.String(v)
 37598  	return &s, nil
 37599  }
 37600  
 37601  type UploadPartOutput struct {
 37602  	_ struct{} `type:"structure"`
 37603  
 37604  	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
 37605  	// encryption with Amazon Web Services KMS (SSE-KMS).
 37606  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 37607  
 37608  	// Entity tag for the uploaded object.
 37609  	ETag *string `location:"header" locationName:"ETag" type:"string"`
 37610  
 37611  	// If present, indicates that the requester was successfully charged for the
 37612  	// request.
 37613  	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
 37614  
 37615  	// If server-side encryption with a customer-provided encryption key was requested,
 37616  	// the response will include this header confirming the encryption algorithm
 37617  	// used.
 37618  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
 37619  
 37620  	// If server-side encryption with a customer-provided encryption key was requested,
 37621  	// the response will include this header to provide round-trip message integrity
 37622  	// verification of the customer-provided encryption key.
 37623  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 37624  
 37625  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 37626  	// (Amazon Web Services KMS) symmetric customer managed key was used for the
 37627  	// object.
 37628  	//
 37629  	// SSEKMSKeyId is a sensitive parameter and its value will be
 37630  	// replaced with "sensitive" in string returned by UploadPartOutput's
 37631  	// String and GoString methods.
 37632  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 37633  
 37634  	// The server-side encryption algorithm used when storing this object in Amazon
 37635  	// S3 (for example, AES256, aws:kms).
 37636  	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 37637  }
 37638  
 37639  // String returns the string representation.
 37640  //
 37641  // API parameter values that are decorated as "sensitive" in the API will not
 37642  // be included in the string output. The member name will be present, but the
 37643  // value will be replaced with "sensitive".
 37644  func (s UploadPartOutput) String() string {
 37645  	return awsutil.Prettify(s)
 37646  }
 37647  
 37648  // GoString returns the string representation.
 37649  //
 37650  // API parameter values that are decorated as "sensitive" in the API will not
 37651  // be included in the string output. The member name will be present, but the
 37652  // value will be replaced with "sensitive".
 37653  func (s UploadPartOutput) GoString() string {
 37654  	return s.String()
 37655  }
 37656  
 37657  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 37658  func (s *UploadPartOutput) SetBucketKeyEnabled(v bool) *UploadPartOutput {
 37659  	s.BucketKeyEnabled = &v
 37660  	return s
 37661  }
 37662  
 37663  // SetETag sets the ETag field's value.
 37664  func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
 37665  	s.ETag = &v
 37666  	return s
 37667  }
 37668  
 37669  // SetRequestCharged sets the RequestCharged field's value.
 37670  func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
 37671  	s.RequestCharged = &v
 37672  	return s
 37673  }
 37674  
 37675  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 37676  func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
 37677  	s.SSECustomerAlgorithm = &v
 37678  	return s
 37679  }
 37680  
 37681  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 37682  func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
 37683  	s.SSECustomerKeyMD5 = &v
 37684  	return s
 37685  }
 37686  
 37687  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 37688  func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
 37689  	s.SSEKMSKeyId = &v
 37690  	return s
 37691  }
 37692  
 37693  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 37694  func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
 37695  	s.ServerSideEncryption = &v
 37696  	return s
 37697  }
 37698  
 37699  // Describes the versioning state of an Amazon S3 bucket. For more information,
 37700  // see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html)
 37701  // in the Amazon S3 API Reference.
 37702  type VersioningConfiguration struct {
 37703  	_ struct{} `type:"structure"`
 37704  
 37705  	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
 37706  	// This element is only returned if the bucket has been configured with MFA
 37707  	// delete. If the bucket has never been so configured, this element is not returned.
 37708  	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
 37709  
 37710  	// The versioning state of the bucket.
 37711  	Status *string `type:"string" enum:"BucketVersioningStatus"`
 37712  }
 37713  
 37714  // String returns the string representation.
 37715  //
 37716  // API parameter values that are decorated as "sensitive" in the API will not
 37717  // be included in the string output. The member name will be present, but the
 37718  // value will be replaced with "sensitive".
 37719  func (s VersioningConfiguration) String() string {
 37720  	return awsutil.Prettify(s)
 37721  }
 37722  
 37723  // GoString returns the string representation.
 37724  //
 37725  // API parameter values that are decorated as "sensitive" in the API will not
 37726  // be included in the string output. The member name will be present, but the
 37727  // value will be replaced with "sensitive".
 37728  func (s VersioningConfiguration) GoString() string {
 37729  	return s.String()
 37730  }
 37731  
 37732  // SetMFADelete sets the MFADelete field's value.
 37733  func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
 37734  	s.MFADelete = &v
 37735  	return s
 37736  }
 37737  
 37738  // SetStatus sets the Status field's value.
 37739  func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
 37740  	s.Status = &v
 37741  	return s
 37742  }
 37743  
 37744  // Specifies website configuration parameters for an Amazon S3 bucket.
 37745  type WebsiteConfiguration struct {
 37746  	_ struct{} `type:"structure"`
 37747  
 37748  	// The name of the error document for the website.
 37749  	ErrorDocument *ErrorDocument `type:"structure"`
 37750  
 37751  	// The name of the index document for the website.
 37752  	IndexDocument *IndexDocument `type:"structure"`
 37753  
 37754  	// The redirect behavior for every request to this bucket's website endpoint.
 37755  	//
 37756  	// If you specify this property, you can't specify any other property.
 37757  	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
 37758  
 37759  	// Rules that define when a redirect is applied and the redirect behavior.
 37760  	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
 37761  }
 37762  
 37763  // String returns the string representation.
 37764  //
 37765  // API parameter values that are decorated as "sensitive" in the API will not
 37766  // be included in the string output. The member name will be present, but the
 37767  // value will be replaced with "sensitive".
 37768  func (s WebsiteConfiguration) String() string {
 37769  	return awsutil.Prettify(s)
 37770  }
 37771  
 37772  // GoString returns the string representation.
 37773  //
 37774  // API parameter values that are decorated as "sensitive" in the API will not
 37775  // be included in the string output. The member name will be present, but the
 37776  // value will be replaced with "sensitive".
 37777  func (s WebsiteConfiguration) GoString() string {
 37778  	return s.String()
 37779  }
 37780  
 37781  // Validate inspects the fields of the type to determine if they are valid.
 37782  func (s *WebsiteConfiguration) Validate() error {
 37783  	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
 37784  	if s.ErrorDocument != nil {
 37785  		if err := s.ErrorDocument.Validate(); err != nil {
 37786  			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
 37787  		}
 37788  	}
 37789  	if s.IndexDocument != nil {
 37790  		if err := s.IndexDocument.Validate(); err != nil {
 37791  			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
 37792  		}
 37793  	}
 37794  	if s.RedirectAllRequestsTo != nil {
 37795  		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
 37796  			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
 37797  		}
 37798  	}
 37799  	if s.RoutingRules != nil {
 37800  		for i, v := range s.RoutingRules {
 37801  			if v == nil {
 37802  				continue
 37803  			}
 37804  			if err := v.Validate(); err != nil {
 37805  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
 37806  			}
 37807  		}
 37808  	}
 37809  
 37810  	if invalidParams.Len() > 0 {
 37811  		return invalidParams
 37812  	}
 37813  	return nil
 37814  }
 37815  
 37816  // SetErrorDocument sets the ErrorDocument field's value.
 37817  func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
 37818  	s.ErrorDocument = v
 37819  	return s
 37820  }
 37821  
 37822  // SetIndexDocument sets the IndexDocument field's value.
 37823  func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
 37824  	s.IndexDocument = v
 37825  	return s
 37826  }
 37827  
 37828  // SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
 37829  func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
 37830  	s.RedirectAllRequestsTo = v
 37831  	return s
 37832  }
 37833  
 37834  // SetRoutingRules sets the RoutingRules field's value.
 37835  func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
 37836  	s.RoutingRules = v
 37837  	return s
 37838  }
 37839  
 37840  type WriteGetObjectResponseInput struct {
 37841  	_ struct{} `locationName:"WriteGetObjectResponseRequest" type:"structure" payload:"Body"`
 37842  
 37843  	// Indicates that a range of bytes was specified.
 37844  	AcceptRanges *string `location:"header" locationName:"x-amz-fwd-header-accept-ranges" type:"string"`
 37845  
 37846  	// The object data.
 37847  	//
 37848  	// To use an non-seekable io.Reader for this request wrap the io.Reader with
 37849  	// "aws.ReadSeekCloser". The SDK will not retry request errors for non-seekable
 37850  	// readers. This will allow the SDK to send the reader's payload as chunked
 37851  	// transfer encoding.
 37852  	Body io.ReadSeeker `type:"blob"`
 37853  
 37854  	// Indicates whether the object stored in Amazon S3 uses an S3 bucket key for
 37855  	// server-side encryption with Amazon Web Services KMS (SSE-KMS).
 37856  	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
 37857  
 37858  	// Specifies caching behavior along the request/reply chain.
 37859  	CacheControl *string `location:"header" locationName:"x-amz-fwd-header-Cache-Control" type:"string"`
 37860  
 37861  	// Specifies presentational information for the object.
 37862  	ContentDisposition *string `location:"header" locationName:"x-amz-fwd-header-Content-Disposition" type:"string"`
 37863  
 37864  	// Specifies what content encodings have been applied to the object and thus
 37865  	// what decoding mechanisms must be applied to obtain the media-type referenced
 37866  	// by the Content-Type header field.
 37867  	ContentEncoding *string `location:"header" locationName:"x-amz-fwd-header-Content-Encoding" type:"string"`
 37868  
 37869  	// The language the content is in.
 37870  	ContentLanguage *string `location:"header" locationName:"x-amz-fwd-header-Content-Language" type:"string"`
 37871  
 37872  	// The size of the content body in bytes.
 37873  	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
 37874  
 37875  	// The portion of the object returned in the response.
 37876  	ContentRange *string `location:"header" locationName:"x-amz-fwd-header-Content-Range" type:"string"`
 37877  
 37878  	// A standard MIME type describing the format of the object data.
 37879  	ContentType *string `location:"header" locationName:"x-amz-fwd-header-Content-Type" type:"string"`
 37880  
 37881  	// Specifies whether an object stored in Amazon S3 is (true) or is not (false)
 37882  	// a delete marker.
 37883  	DeleteMarker *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-delete-marker" type:"boolean"`
 37884  
 37885  	// An opaque identifier assigned by a web server to a specific version of a
 37886  	// resource found at a URL.
 37887  	ETag *string `location:"header" locationName:"x-amz-fwd-header-ETag" type:"string"`
 37888  
 37889  	// A string that uniquely identifies an error condition. Returned in the <Code>
 37890  	// tag of the error XML response for a corresponding GetObject call. Cannot
 37891  	// be used with a successful StatusCode header or when the transformed object
 37892  	// is provided in the body. All error codes from S3 are sentence-cased. Regex
 37893  	// value is "^[A-Z][a-zA-Z]+$".
 37894  	ErrorCode *string `location:"header" locationName:"x-amz-fwd-error-code" type:"string"`
 37895  
 37896  	// Contains a generic description of the error condition. Returned in the <Message>
 37897  	// tag of the error XML response for a corresponding GetObject call. Cannot
 37898  	// be used with a successful StatusCode header or when the transformed object
 37899  	// is provided in body.
 37900  	ErrorMessage *string `location:"header" locationName:"x-amz-fwd-error-message" type:"string"`
 37901  
 37902  	// If object stored in Amazon S3 expiration is configured (see PUT Bucket lifecycle)
 37903  	// it includes expiry-date and rule-id key-value pairs providing object expiration
 37904  	// information. The value of the rule-id is URL encoded.
 37905  	Expiration *string `location:"header" locationName:"x-amz-fwd-header-x-amz-expiration" type:"string"`
 37906  
 37907  	// The date and time at which the object is no longer cacheable.
 37908  	Expires *time.Time `location:"header" locationName:"x-amz-fwd-header-Expires" type:"timestamp"`
 37909  
 37910  	// The date and time that the object was last modified.
 37911  	LastModified *time.Time `location:"header" locationName:"x-amz-fwd-header-Last-Modified" type:"timestamp"`
 37912  
 37913  	// A map of metadata to store with the object in S3.
 37914  	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
 37915  
 37916  	// Set to the number of metadata entries not returned in x-amz-meta headers.
 37917  	// This can happen if you create metadata using an API like SOAP that supports
 37918  	// more flexible metadata than the REST API. For example, using SOAP, you can
 37919  	// create metadata whose values are not legal HTTP headers.
 37920  	MissingMeta *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-missing-meta" type:"integer"`
 37921  
 37922  	// Indicates whether an object stored in Amazon S3 has an active legal hold.
 37923  	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
 37924  
 37925  	// Indicates whether an object stored in Amazon S3 has Object Lock enabled.
 37926  	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html).
 37927  	ObjectLockMode *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
 37928  
 37929  	// The date and time when Object Lock is configured to expire.
 37930  	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
 37931  
 37932  	// The count of parts this object has.
 37933  	PartsCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-mp-parts-count" type:"integer"`
 37934  
 37935  	// Indicates if request involves bucket that is either a source or destination
 37936  	// in a Replication rule. For more information about S3 Replication, see Replication
 37937  	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html).
 37938  	ReplicationStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
 37939  
 37940  	// If present, indicates that the requester was successfully charged for the
 37941  	// request.
 37942  	RequestCharged *string `location:"header" locationName:"x-amz-fwd-header-x-amz-request-charged" type:"string" enum:"RequestCharged"`
 37943  
 37944  	// Route prefix to the HTTP URL generated.
 37945  	//
 37946  	// RequestRoute is a required field
 37947  	RequestRoute *string `location:"header" locationName:"x-amz-request-route" type:"string" required:"true"`
 37948  
 37949  	// A single use encrypted token that maps WriteGetObjectResponse to the end
 37950  	// user GetObject request.
 37951  	//
 37952  	// RequestToken is a required field
 37953  	RequestToken *string `location:"header" locationName:"x-amz-request-token" type:"string" required:"true"`
 37954  
 37955  	// Provides information about object restoration operation and expiration time
 37956  	// of the restored object copy.
 37957  	Restore *string `location:"header" locationName:"x-amz-fwd-header-x-amz-restore" type:"string"`
 37958  
 37959  	// Encryption algorithm used if server-side encryption with a customer-provided
 37960  	// encryption key was specified for object stored in Amazon S3.
 37961  	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm" type:"string"`
 37962  
 37963  	// 128-bit MD5 digest of customer-provided encryption key used in Amazon S3
 37964  	// to encrypt data stored in S3. For more information, see Protecting data using
 37965  	// server-side encryption with customer-provided encryption keys (SSE-C) (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html).
 37966  	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5" type:"string"`
 37967  
 37968  	// If present, specifies the ID of the Amazon Web Services Key Management Service
 37969  	// (Amazon Web Services KMS) symmetric customer managed key that was used for
 37970  	// stored in Amazon S3 object.
 37971  	//
 37972  	// SSEKMSKeyId is a sensitive parameter and its value will be
 37973  	// replaced with "sensitive" in string returned by WriteGetObjectResponseInput's
 37974  	// String and GoString methods.
 37975  	SSEKMSKeyId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
 37976  
 37977  	// The server-side encryption algorithm used when storing requested object in
 37978  	// Amazon S3 (for example, AES256, aws:kms).
 37979  	ServerSideEncryption *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
 37980  
 37981  	// The integer status code for an HTTP response of a corresponding GetObject
 37982  	// request.
 37983  	//
 37984  	// Status Codes
 37985  	//
 37986  	//    * 200 - OK
 37987  	//
 37988  	//    * 206 - Partial Content
 37989  	//
 37990  	//    * 304 - Not Modified
 37991  	//
 37992  	//    * 400 - Bad Request
 37993  	//
 37994  	//    * 401 - Unauthorized
 37995  	//
 37996  	//    * 403 - Forbidden
 37997  	//
 37998  	//    * 404 - Not Found
 37999  	//
 38000  	//    * 405 - Method Not Allowed
 38001  	//
 38002  	//    * 409 - Conflict
 38003  	//
 38004  	//    * 411 - Length Required
 38005  	//
 38006  	//    * 412 - Precondition Failed
 38007  	//
 38008  	//    * 416 - Range Not Satisfiable
 38009  	//
 38010  	//    * 500 - Internal Server Error
 38011  	//
 38012  	//    * 503 - Service Unavailable
 38013  	StatusCode *int64 `location:"header" locationName:"x-amz-fwd-status" type:"integer"`
 38014  
 38015  	// The class of storage used to store object in Amazon S3.
 38016  	StorageClass *string `location:"header" locationName:"x-amz-fwd-header-x-amz-storage-class" type:"string" enum:"StorageClass"`
 38017  
 38018  	// The number of tags, if any, on the object.
 38019  	TagCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-tagging-count" type:"integer"`
 38020  
 38021  	// An ID used to reference a specific version of the object.
 38022  	VersionId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-version-id" type:"string"`
 38023  }
 38024  
 38025  // String returns the string representation.
 38026  //
 38027  // API parameter values that are decorated as "sensitive" in the API will not
 38028  // be included in the string output. The member name will be present, but the
 38029  // value will be replaced with "sensitive".
 38030  func (s WriteGetObjectResponseInput) String() string {
 38031  	return awsutil.Prettify(s)
 38032  }
 38033  
 38034  // GoString returns the string representation.
 38035  //
 38036  // API parameter values that are decorated as "sensitive" in the API will not
 38037  // be included in the string output. The member name will be present, but the
 38038  // value will be replaced with "sensitive".
 38039  func (s WriteGetObjectResponseInput) GoString() string {
 38040  	return s.String()
 38041  }
 38042  
 38043  // Validate inspects the fields of the type to determine if they are valid.
 38044  func (s *WriteGetObjectResponseInput) Validate() error {
 38045  	invalidParams := request.ErrInvalidParams{Context: "WriteGetObjectResponseInput"}
 38046  	if s.RequestRoute == nil {
 38047  		invalidParams.Add(request.NewErrParamRequired("RequestRoute"))
 38048  	}
 38049  	if s.RequestRoute != nil && len(*s.RequestRoute) < 1 {
 38050  		invalidParams.Add(request.NewErrParamMinLen("RequestRoute", 1))
 38051  	}
 38052  	if s.RequestToken == nil {
 38053  		invalidParams.Add(request.NewErrParamRequired("RequestToken"))
 38054  	}
 38055  
 38056  	if invalidParams.Len() > 0 {
 38057  		return invalidParams
 38058  	}
 38059  	return nil
 38060  }
 38061  
 38062  // SetAcceptRanges sets the AcceptRanges field's value.
 38063  func (s *WriteGetObjectResponseInput) SetAcceptRanges(v string) *WriteGetObjectResponseInput {
 38064  	s.AcceptRanges = &v
 38065  	return s
 38066  }
 38067  
 38068  // SetBody sets the Body field's value.
 38069  func (s *WriteGetObjectResponseInput) SetBody(v io.ReadSeeker) *WriteGetObjectResponseInput {
 38070  	s.Body = v
 38071  	return s
 38072  }
 38073  
 38074  // SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
 38075  func (s *WriteGetObjectResponseInput) SetBucketKeyEnabled(v bool) *WriteGetObjectResponseInput {
 38076  	s.BucketKeyEnabled = &v
 38077  	return s
 38078  }
 38079  
 38080  // SetCacheControl sets the CacheControl field's value.
 38081  func (s *WriteGetObjectResponseInput) SetCacheControl(v string) *WriteGetObjectResponseInput {
 38082  	s.CacheControl = &v
 38083  	return s
 38084  }
 38085  
 38086  // SetContentDisposition sets the ContentDisposition field's value.
 38087  func (s *WriteGetObjectResponseInput) SetContentDisposition(v string) *WriteGetObjectResponseInput {
 38088  	s.ContentDisposition = &v
 38089  	return s
 38090  }
 38091  
 38092  // SetContentEncoding sets the ContentEncoding field's value.
 38093  func (s *WriteGetObjectResponseInput) SetContentEncoding(v string) *WriteGetObjectResponseInput {
 38094  	s.ContentEncoding = &v
 38095  	return s
 38096  }
 38097  
 38098  // SetContentLanguage sets the ContentLanguage field's value.
 38099  func (s *WriteGetObjectResponseInput) SetContentLanguage(v string) *WriteGetObjectResponseInput {
 38100  	s.ContentLanguage = &v
 38101  	return s
 38102  }
 38103  
 38104  // SetContentLength sets the ContentLength field's value.
 38105  func (s *WriteGetObjectResponseInput) SetContentLength(v int64) *WriteGetObjectResponseInput {
 38106  	s.ContentLength = &v
 38107  	return s
 38108  }
 38109  
 38110  // SetContentRange sets the ContentRange field's value.
 38111  func (s *WriteGetObjectResponseInput) SetContentRange(v string) *WriteGetObjectResponseInput {
 38112  	s.ContentRange = &v
 38113  	return s
 38114  }
 38115  
 38116  // SetContentType sets the ContentType field's value.
 38117  func (s *WriteGetObjectResponseInput) SetContentType(v string) *WriteGetObjectResponseInput {
 38118  	s.ContentType = &v
 38119  	return s
 38120  }
 38121  
 38122  // SetDeleteMarker sets the DeleteMarker field's value.
 38123  func (s *WriteGetObjectResponseInput) SetDeleteMarker(v bool) *WriteGetObjectResponseInput {
 38124  	s.DeleteMarker = &v
 38125  	return s
 38126  }
 38127  
 38128  // SetETag sets the ETag field's value.
 38129  func (s *WriteGetObjectResponseInput) SetETag(v string) *WriteGetObjectResponseInput {
 38130  	s.ETag = &v
 38131  	return s
 38132  }
 38133  
 38134  // SetErrorCode sets the ErrorCode field's value.
 38135  func (s *WriteGetObjectResponseInput) SetErrorCode(v string) *WriteGetObjectResponseInput {
 38136  	s.ErrorCode = &v
 38137  	return s
 38138  }
 38139  
 38140  // SetErrorMessage sets the ErrorMessage field's value.
 38141  func (s *WriteGetObjectResponseInput) SetErrorMessage(v string) *WriteGetObjectResponseInput {
 38142  	s.ErrorMessage = &v
 38143  	return s
 38144  }
 38145  
 38146  // SetExpiration sets the Expiration field's value.
 38147  func (s *WriteGetObjectResponseInput) SetExpiration(v string) *WriteGetObjectResponseInput {
 38148  	s.Expiration = &v
 38149  	return s
 38150  }
 38151  
 38152  // SetExpires sets the Expires field's value.
 38153  func (s *WriteGetObjectResponseInput) SetExpires(v time.Time) *WriteGetObjectResponseInput {
 38154  	s.Expires = &v
 38155  	return s
 38156  }
 38157  
 38158  // SetLastModified sets the LastModified field's value.
 38159  func (s *WriteGetObjectResponseInput) SetLastModified(v time.Time) *WriteGetObjectResponseInput {
 38160  	s.LastModified = &v
 38161  	return s
 38162  }
 38163  
 38164  // SetMetadata sets the Metadata field's value.
 38165  func (s *WriteGetObjectResponseInput) SetMetadata(v map[string]*string) *WriteGetObjectResponseInput {
 38166  	s.Metadata = v
 38167  	return s
 38168  }
 38169  
 38170  // SetMissingMeta sets the MissingMeta field's value.
 38171  func (s *WriteGetObjectResponseInput) SetMissingMeta(v int64) *WriteGetObjectResponseInput {
 38172  	s.MissingMeta = &v
 38173  	return s
 38174  }
 38175  
 38176  // SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
 38177  func (s *WriteGetObjectResponseInput) SetObjectLockLegalHoldStatus(v string) *WriteGetObjectResponseInput {
 38178  	s.ObjectLockLegalHoldStatus = &v
 38179  	return s
 38180  }
 38181  
 38182  // SetObjectLockMode sets the ObjectLockMode field's value.
 38183  func (s *WriteGetObjectResponseInput) SetObjectLockMode(v string) *WriteGetObjectResponseInput {
 38184  	s.ObjectLockMode = &v
 38185  	return s
 38186  }
 38187  
 38188  // SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
 38189  func (s *WriteGetObjectResponseInput) SetObjectLockRetainUntilDate(v time.Time) *WriteGetObjectResponseInput {
 38190  	s.ObjectLockRetainUntilDate = &v
 38191  	return s
 38192  }
 38193  
 38194  // SetPartsCount sets the PartsCount field's value.
 38195  func (s *WriteGetObjectResponseInput) SetPartsCount(v int64) *WriteGetObjectResponseInput {
 38196  	s.PartsCount = &v
 38197  	return s
 38198  }
 38199  
 38200  // SetReplicationStatus sets the ReplicationStatus field's value.
 38201  func (s *WriteGetObjectResponseInput) SetReplicationStatus(v string) *WriteGetObjectResponseInput {
 38202  	s.ReplicationStatus = &v
 38203  	return s
 38204  }
 38205  
 38206  // SetRequestCharged sets the RequestCharged field's value.
 38207  func (s *WriteGetObjectResponseInput) SetRequestCharged(v string) *WriteGetObjectResponseInput {
 38208  	s.RequestCharged = &v
 38209  	return s
 38210  }
 38211  
 38212  // SetRequestRoute sets the RequestRoute field's value.
 38213  func (s *WriteGetObjectResponseInput) SetRequestRoute(v string) *WriteGetObjectResponseInput {
 38214  	s.RequestRoute = &v
 38215  	return s
 38216  }
 38217  
 38218  // SetRequestToken sets the RequestToken field's value.
 38219  func (s *WriteGetObjectResponseInput) SetRequestToken(v string) *WriteGetObjectResponseInput {
 38220  	s.RequestToken = &v
 38221  	return s
 38222  }
 38223  
 38224  // SetRestore sets the Restore field's value.
 38225  func (s *WriteGetObjectResponseInput) SetRestore(v string) *WriteGetObjectResponseInput {
 38226  	s.Restore = &v
 38227  	return s
 38228  }
 38229  
 38230  // SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
 38231  func (s *WriteGetObjectResponseInput) SetSSECustomerAlgorithm(v string) *WriteGetObjectResponseInput {
 38232  	s.SSECustomerAlgorithm = &v
 38233  	return s
 38234  }
 38235  
 38236  // SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
 38237  func (s *WriteGetObjectResponseInput) SetSSECustomerKeyMD5(v string) *WriteGetObjectResponseInput {
 38238  	s.SSECustomerKeyMD5 = &v
 38239  	return s
 38240  }
 38241  
 38242  // SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
 38243  func (s *WriteGetObjectResponseInput) SetSSEKMSKeyId(v string) *WriteGetObjectResponseInput {
 38244  	s.SSEKMSKeyId = &v
 38245  	return s
 38246  }
 38247  
 38248  // SetServerSideEncryption sets the ServerSideEncryption field's value.
 38249  func (s *WriteGetObjectResponseInput) SetServerSideEncryption(v string) *WriteGetObjectResponseInput {
 38250  	s.ServerSideEncryption = &v
 38251  	return s
 38252  }
 38253  
 38254  // SetStatusCode sets the StatusCode field's value.
 38255  func (s *WriteGetObjectResponseInput) SetStatusCode(v int64) *WriteGetObjectResponseInput {
 38256  	s.StatusCode = &v
 38257  	return s
 38258  }
 38259  
 38260  // SetStorageClass sets the StorageClass field's value.
 38261  func (s *WriteGetObjectResponseInput) SetStorageClass(v string) *WriteGetObjectResponseInput {
 38262  	s.StorageClass = &v
 38263  	return s
 38264  }
 38265  
 38266  // SetTagCount sets the TagCount field's value.
 38267  func (s *WriteGetObjectResponseInput) SetTagCount(v int64) *WriteGetObjectResponseInput {
 38268  	s.TagCount = &v
 38269  	return s
 38270  }
 38271  
 38272  // SetVersionId sets the VersionId field's value.
 38273  func (s *WriteGetObjectResponseInput) SetVersionId(v string) *WriteGetObjectResponseInput {
 38274  	s.VersionId = &v
 38275  	return s
 38276  }
 38277  
 38278  func (s *WriteGetObjectResponseInput) hostLabels() map[string]string {
 38279  	return map[string]string{
 38280  		"RequestRoute": aws.StringValue(s.RequestRoute),
 38281  	}
 38282  }
 38283  
 38284  type WriteGetObjectResponseOutput struct {
 38285  	_ struct{} `type:"structure"`
 38286  }
 38287  
 38288  // String returns the string representation.
 38289  //
 38290  // API parameter values that are decorated as "sensitive" in the API will not
 38291  // be included in the string output. The member name will be present, but the
 38292  // value will be replaced with "sensitive".
 38293  func (s WriteGetObjectResponseOutput) String() string {
 38294  	return awsutil.Prettify(s)
 38295  }
 38296  
 38297  // GoString returns the string representation.
 38298  //
 38299  // API parameter values that are decorated as "sensitive" in the API will not
 38300  // be included in the string output. The member name will be present, but the
 38301  // value will be replaced with "sensitive".
 38302  func (s WriteGetObjectResponseOutput) GoString() string {
 38303  	return s.String()
 38304  }
 38305  
 38306  const (
 38307  	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
 38308  	AnalyticsS3ExportFileFormatCsv = "CSV"
 38309  )
 38310  
 38311  // AnalyticsS3ExportFileFormat_Values returns all elements of the AnalyticsS3ExportFileFormat enum
 38312  func AnalyticsS3ExportFileFormat_Values() []string {
 38313  	return []string{
 38314  		AnalyticsS3ExportFileFormatCsv,
 38315  	}
 38316  }
 38317  
 38318  const (
 38319  	// ArchiveStatusArchiveAccess is a ArchiveStatus enum value
 38320  	ArchiveStatusArchiveAccess = "ARCHIVE_ACCESS"
 38321  
 38322  	// ArchiveStatusDeepArchiveAccess is a ArchiveStatus enum value
 38323  	ArchiveStatusDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
 38324  )
 38325  
 38326  // ArchiveStatus_Values returns all elements of the ArchiveStatus enum
 38327  func ArchiveStatus_Values() []string {
 38328  	return []string{
 38329  		ArchiveStatusArchiveAccess,
 38330  		ArchiveStatusDeepArchiveAccess,
 38331  	}
 38332  }
 38333  
 38334  const (
 38335  	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
 38336  	BucketAccelerateStatusEnabled = "Enabled"
 38337  
 38338  	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
 38339  	BucketAccelerateStatusSuspended = "Suspended"
 38340  )
 38341  
 38342  // BucketAccelerateStatus_Values returns all elements of the BucketAccelerateStatus enum
 38343  func BucketAccelerateStatus_Values() []string {
 38344  	return []string{
 38345  		BucketAccelerateStatusEnabled,
 38346  		BucketAccelerateStatusSuspended,
 38347  	}
 38348  }
 38349  
 38350  const (
 38351  	// BucketCannedACLPrivate is a BucketCannedACL enum value
 38352  	BucketCannedACLPrivate = "private"
 38353  
 38354  	// BucketCannedACLPublicRead is a BucketCannedACL enum value
 38355  	BucketCannedACLPublicRead = "public-read"
 38356  
 38357  	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
 38358  	BucketCannedACLPublicReadWrite = "public-read-write"
 38359  
 38360  	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
 38361  	BucketCannedACLAuthenticatedRead = "authenticated-read"
 38362  )
 38363  
 38364  // BucketCannedACL_Values returns all elements of the BucketCannedACL enum
 38365  func BucketCannedACL_Values() []string {
 38366  	return []string{
 38367  		BucketCannedACLPrivate,
 38368  		BucketCannedACLPublicRead,
 38369  		BucketCannedACLPublicReadWrite,
 38370  		BucketCannedACLAuthenticatedRead,
 38371  	}
 38372  }
 38373  
 38374  const (
 38375  	// BucketLocationConstraintAfSouth1 is a BucketLocationConstraint enum value
 38376  	BucketLocationConstraintAfSouth1 = "af-south-1"
 38377  
 38378  	// BucketLocationConstraintApEast1 is a BucketLocationConstraint enum value
 38379  	BucketLocationConstraintApEast1 = "ap-east-1"
 38380  
 38381  	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
 38382  	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
 38383  
 38384  	// BucketLocationConstraintApNortheast2 is a BucketLocationConstraint enum value
 38385  	BucketLocationConstraintApNortheast2 = "ap-northeast-2"
 38386  
 38387  	// BucketLocationConstraintApNortheast3 is a BucketLocationConstraint enum value
 38388  	BucketLocationConstraintApNortheast3 = "ap-northeast-3"
 38389  
 38390  	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
 38391  	BucketLocationConstraintApSouth1 = "ap-south-1"
 38392  
 38393  	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
 38394  	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
 38395  
 38396  	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
 38397  	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
 38398  
 38399  	// BucketLocationConstraintCaCentral1 is a BucketLocationConstraint enum value
 38400  	BucketLocationConstraintCaCentral1 = "ca-central-1"
 38401  
 38402  	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
 38403  	BucketLocationConstraintCnNorth1 = "cn-north-1"
 38404  
 38405  	// BucketLocationConstraintCnNorthwest1 is a BucketLocationConstraint enum value
 38406  	BucketLocationConstraintCnNorthwest1 = "cn-northwest-1"
 38407  
 38408  	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
 38409  	BucketLocationConstraintEu = "EU"
 38410  
 38411  	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
 38412  	BucketLocationConstraintEuCentral1 = "eu-central-1"
 38413  
 38414  	// BucketLocationConstraintEuNorth1 is a BucketLocationConstraint enum value
 38415  	BucketLocationConstraintEuNorth1 = "eu-north-1"
 38416  
 38417  	// BucketLocationConstraintEuSouth1 is a BucketLocationConstraint enum value
 38418  	BucketLocationConstraintEuSouth1 = "eu-south-1"
 38419  
 38420  	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
 38421  	BucketLocationConstraintEuWest1 = "eu-west-1"
 38422  
 38423  	// BucketLocationConstraintEuWest2 is a BucketLocationConstraint enum value
 38424  	BucketLocationConstraintEuWest2 = "eu-west-2"
 38425  
 38426  	// BucketLocationConstraintEuWest3 is a BucketLocationConstraint enum value
 38427  	BucketLocationConstraintEuWest3 = "eu-west-3"
 38428  
 38429  	// BucketLocationConstraintMeSouth1 is a BucketLocationConstraint enum value
 38430  	BucketLocationConstraintMeSouth1 = "me-south-1"
 38431  
 38432  	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
 38433  	BucketLocationConstraintSaEast1 = "sa-east-1"
 38434  
 38435  	// BucketLocationConstraintUsEast2 is a BucketLocationConstraint enum value
 38436  	BucketLocationConstraintUsEast2 = "us-east-2"
 38437  
 38438  	// BucketLocationConstraintUsGovEast1 is a BucketLocationConstraint enum value
 38439  	BucketLocationConstraintUsGovEast1 = "us-gov-east-1"
 38440  
 38441  	// BucketLocationConstraintUsGovWest1 is a BucketLocationConstraint enum value
 38442  	BucketLocationConstraintUsGovWest1 = "us-gov-west-1"
 38443  
 38444  	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
 38445  	BucketLocationConstraintUsWest1 = "us-west-1"
 38446  
 38447  	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
 38448  	BucketLocationConstraintUsWest2 = "us-west-2"
 38449  )
 38450  
 38451  // BucketLocationConstraint_Values returns all elements of the BucketLocationConstraint enum
 38452  func BucketLocationConstraint_Values() []string {
 38453  	return []string{
 38454  		BucketLocationConstraintAfSouth1,
 38455  		BucketLocationConstraintApEast1,
 38456  		BucketLocationConstraintApNortheast1,
 38457  		BucketLocationConstraintApNortheast2,
 38458  		BucketLocationConstraintApNortheast3,
 38459  		BucketLocationConstraintApSouth1,
 38460  		BucketLocationConstraintApSoutheast1,
 38461  		BucketLocationConstraintApSoutheast2,
 38462  		BucketLocationConstraintCaCentral1,
 38463  		BucketLocationConstraintCnNorth1,
 38464  		BucketLocationConstraintCnNorthwest1,
 38465  		BucketLocationConstraintEu,
 38466  		BucketLocationConstraintEuCentral1,
 38467  		BucketLocationConstraintEuNorth1,
 38468  		BucketLocationConstraintEuSouth1,
 38469  		BucketLocationConstraintEuWest1,
 38470  		BucketLocationConstraintEuWest2,
 38471  		BucketLocationConstraintEuWest3,
 38472  		BucketLocationConstraintMeSouth1,
 38473  		BucketLocationConstraintSaEast1,
 38474  		BucketLocationConstraintUsEast2,
 38475  		BucketLocationConstraintUsGovEast1,
 38476  		BucketLocationConstraintUsGovWest1,
 38477  		BucketLocationConstraintUsWest1,
 38478  		BucketLocationConstraintUsWest2,
 38479  	}
 38480  }
 38481  
 38482  const (
 38483  	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
 38484  	BucketLogsPermissionFullControl = "FULL_CONTROL"
 38485  
 38486  	// BucketLogsPermissionRead is a BucketLogsPermission enum value
 38487  	BucketLogsPermissionRead = "READ"
 38488  
 38489  	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
 38490  	BucketLogsPermissionWrite = "WRITE"
 38491  )
 38492  
 38493  // BucketLogsPermission_Values returns all elements of the BucketLogsPermission enum
 38494  func BucketLogsPermission_Values() []string {
 38495  	return []string{
 38496  		BucketLogsPermissionFullControl,
 38497  		BucketLogsPermissionRead,
 38498  		BucketLogsPermissionWrite,
 38499  	}
 38500  }
 38501  
 38502  const (
 38503  	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
 38504  	BucketVersioningStatusEnabled = "Enabled"
 38505  
 38506  	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
 38507  	BucketVersioningStatusSuspended = "Suspended"
 38508  )
 38509  
 38510  // BucketVersioningStatus_Values returns all elements of the BucketVersioningStatus enum
 38511  func BucketVersioningStatus_Values() []string {
 38512  	return []string{
 38513  		BucketVersioningStatusEnabled,
 38514  		BucketVersioningStatusSuspended,
 38515  	}
 38516  }
 38517  
 38518  const (
 38519  	// CompressionTypeNone is a CompressionType enum value
 38520  	CompressionTypeNone = "NONE"
 38521  
 38522  	// CompressionTypeGzip is a CompressionType enum value
 38523  	CompressionTypeGzip = "GZIP"
 38524  
 38525  	// CompressionTypeBzip2 is a CompressionType enum value
 38526  	CompressionTypeBzip2 = "BZIP2"
 38527  )
 38528  
 38529  // CompressionType_Values returns all elements of the CompressionType enum
 38530  func CompressionType_Values() []string {
 38531  	return []string{
 38532  		CompressionTypeNone,
 38533  		CompressionTypeGzip,
 38534  		CompressionTypeBzip2,
 38535  	}
 38536  }
 38537  
 38538  const (
 38539  	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
 38540  	DeleteMarkerReplicationStatusEnabled = "Enabled"
 38541  
 38542  	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
 38543  	DeleteMarkerReplicationStatusDisabled = "Disabled"
 38544  )
 38545  
 38546  // DeleteMarkerReplicationStatus_Values returns all elements of the DeleteMarkerReplicationStatus enum
 38547  func DeleteMarkerReplicationStatus_Values() []string {
 38548  	return []string{
 38549  		DeleteMarkerReplicationStatusEnabled,
 38550  		DeleteMarkerReplicationStatusDisabled,
 38551  	}
 38552  }
 38553  
 38554  // Requests Amazon S3 to encode the object keys in the response and specifies
 38555  // the encoding method to use. An object key may contain any Unicode character;
 38556  // however, XML 1.0 parser cannot parse some characters, such as characters
 38557  // with an ASCII value from 0 to 10. For characters that are not supported in
 38558  // XML 1.0, you can add this parameter to request that Amazon S3 encode the
 38559  // keys in the response.
 38560  const (
 38561  	// EncodingTypeUrl is a EncodingType enum value
 38562  	EncodingTypeUrl = "url"
 38563  )
 38564  
 38565  // EncodingType_Values returns all elements of the EncodingType enum
 38566  func EncodingType_Values() []string {
 38567  	return []string{
 38568  		EncodingTypeUrl,
 38569  	}
 38570  }
 38571  
 38572  // The bucket event for which to send notifications.
 38573  const (
 38574  	// EventS3ReducedRedundancyLostObject is a Event enum value
 38575  	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
 38576  
 38577  	// EventS3ObjectCreated is a Event enum value
 38578  	EventS3ObjectCreated = "s3:ObjectCreated:*"
 38579  
 38580  	// EventS3ObjectCreatedPut is a Event enum value
 38581  	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
 38582  
 38583  	// EventS3ObjectCreatedPost is a Event enum value
 38584  	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
 38585  
 38586  	// EventS3ObjectCreatedCopy is a Event enum value
 38587  	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
 38588  
 38589  	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
 38590  	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
 38591  
 38592  	// EventS3ObjectRemoved is a Event enum value
 38593  	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
 38594  
 38595  	// EventS3ObjectRemovedDelete is a Event enum value
 38596  	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
 38597  
 38598  	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
 38599  	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
 38600  
 38601  	// EventS3ObjectRestore is a Event enum value
 38602  	EventS3ObjectRestore = "s3:ObjectRestore:*"
 38603  
 38604  	// EventS3ObjectRestorePost is a Event enum value
 38605  	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
 38606  
 38607  	// EventS3ObjectRestoreCompleted is a Event enum value
 38608  	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
 38609  
 38610  	// EventS3Replication is a Event enum value
 38611  	EventS3Replication = "s3:Replication:*"
 38612  
 38613  	// EventS3ReplicationOperationFailedReplication is a Event enum value
 38614  	EventS3ReplicationOperationFailedReplication = "s3:Replication:OperationFailedReplication"
 38615  
 38616  	// EventS3ReplicationOperationNotTracked is a Event enum value
 38617  	EventS3ReplicationOperationNotTracked = "s3:Replication:OperationNotTracked"
 38618  
 38619  	// EventS3ReplicationOperationMissedThreshold is a Event enum value
 38620  	EventS3ReplicationOperationMissedThreshold = "s3:Replication:OperationMissedThreshold"
 38621  
 38622  	// EventS3ReplicationOperationReplicatedAfterThreshold is a Event enum value
 38623  	EventS3ReplicationOperationReplicatedAfterThreshold = "s3:Replication:OperationReplicatedAfterThreshold"
 38624  )
 38625  
 38626  // Event_Values returns all elements of the Event enum
 38627  func Event_Values() []string {
 38628  	return []string{
 38629  		EventS3ReducedRedundancyLostObject,
 38630  		EventS3ObjectCreated,
 38631  		EventS3ObjectCreatedPut,
 38632  		EventS3ObjectCreatedPost,
 38633  		EventS3ObjectCreatedCopy,
 38634  		EventS3ObjectCreatedCompleteMultipartUpload,
 38635  		EventS3ObjectRemoved,
 38636  		EventS3ObjectRemovedDelete,
 38637  		EventS3ObjectRemovedDeleteMarkerCreated,
 38638  		EventS3ObjectRestore,
 38639  		EventS3ObjectRestorePost,
 38640  		EventS3ObjectRestoreCompleted,
 38641  		EventS3Replication,
 38642  		EventS3ReplicationOperationFailedReplication,
 38643  		EventS3ReplicationOperationNotTracked,
 38644  		EventS3ReplicationOperationMissedThreshold,
 38645  		EventS3ReplicationOperationReplicatedAfterThreshold,
 38646  	}
 38647  }
 38648  
 38649  const (
 38650  	// ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value
 38651  	ExistingObjectReplicationStatusEnabled = "Enabled"
 38652  
 38653  	// ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value
 38654  	ExistingObjectReplicationStatusDisabled = "Disabled"
 38655  )
 38656  
 38657  // ExistingObjectReplicationStatus_Values returns all elements of the ExistingObjectReplicationStatus enum
 38658  func ExistingObjectReplicationStatus_Values() []string {
 38659  	return []string{
 38660  		ExistingObjectReplicationStatusEnabled,
 38661  		ExistingObjectReplicationStatusDisabled,
 38662  	}
 38663  }
 38664  
 38665  const (
 38666  	// ExpirationStatusEnabled is a ExpirationStatus enum value
 38667  	ExpirationStatusEnabled = "Enabled"
 38668  
 38669  	// ExpirationStatusDisabled is a ExpirationStatus enum value
 38670  	ExpirationStatusDisabled = "Disabled"
 38671  )
 38672  
 38673  // ExpirationStatus_Values returns all elements of the ExpirationStatus enum
 38674  func ExpirationStatus_Values() []string {
 38675  	return []string{
 38676  		ExpirationStatusEnabled,
 38677  		ExpirationStatusDisabled,
 38678  	}
 38679  }
 38680  
 38681  const (
 38682  	// ExpressionTypeSql is a ExpressionType enum value
 38683  	ExpressionTypeSql = "SQL"
 38684  )
 38685  
 38686  // ExpressionType_Values returns all elements of the ExpressionType enum
 38687  func ExpressionType_Values() []string {
 38688  	return []string{
 38689  		ExpressionTypeSql,
 38690  	}
 38691  }
 38692  
 38693  const (
 38694  	// FileHeaderInfoUse is a FileHeaderInfo enum value
 38695  	FileHeaderInfoUse = "USE"
 38696  
 38697  	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
 38698  	FileHeaderInfoIgnore = "IGNORE"
 38699  
 38700  	// FileHeaderInfoNone is a FileHeaderInfo enum value
 38701  	FileHeaderInfoNone = "NONE"
 38702  )
 38703  
 38704  // FileHeaderInfo_Values returns all elements of the FileHeaderInfo enum
 38705  func FileHeaderInfo_Values() []string {
 38706  	return []string{
 38707  		FileHeaderInfoUse,
 38708  		FileHeaderInfoIgnore,
 38709  		FileHeaderInfoNone,
 38710  	}
 38711  }
 38712  
 38713  const (
 38714  	// FilterRuleNamePrefix is a FilterRuleName enum value
 38715  	FilterRuleNamePrefix = "prefix"
 38716  
 38717  	// FilterRuleNameSuffix is a FilterRuleName enum value
 38718  	FilterRuleNameSuffix = "suffix"
 38719  )
 38720  
 38721  // FilterRuleName_Values returns all elements of the FilterRuleName enum
 38722  func FilterRuleName_Values() []string {
 38723  	return []string{
 38724  		FilterRuleNamePrefix,
 38725  		FilterRuleNameSuffix,
 38726  	}
 38727  }
 38728  
 38729  const (
 38730  	// IntelligentTieringAccessTierArchiveAccess is a IntelligentTieringAccessTier enum value
 38731  	IntelligentTieringAccessTierArchiveAccess = "ARCHIVE_ACCESS"
 38732  
 38733  	// IntelligentTieringAccessTierDeepArchiveAccess is a IntelligentTieringAccessTier enum value
 38734  	IntelligentTieringAccessTierDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
 38735  )
 38736  
 38737  // IntelligentTieringAccessTier_Values returns all elements of the IntelligentTieringAccessTier enum
 38738  func IntelligentTieringAccessTier_Values() []string {
 38739  	return []string{
 38740  		IntelligentTieringAccessTierArchiveAccess,
 38741  		IntelligentTieringAccessTierDeepArchiveAccess,
 38742  	}
 38743  }
 38744  
 38745  const (
 38746  	// IntelligentTieringStatusEnabled is a IntelligentTieringStatus enum value
 38747  	IntelligentTieringStatusEnabled = "Enabled"
 38748  
 38749  	// IntelligentTieringStatusDisabled is a IntelligentTieringStatus enum value
 38750  	IntelligentTieringStatusDisabled = "Disabled"
 38751  )
 38752  
 38753  // IntelligentTieringStatus_Values returns all elements of the IntelligentTieringStatus enum
 38754  func IntelligentTieringStatus_Values() []string {
 38755  	return []string{
 38756  		IntelligentTieringStatusEnabled,
 38757  		IntelligentTieringStatusDisabled,
 38758  	}
 38759  }
 38760  
 38761  const (
 38762  	// InventoryFormatCsv is a InventoryFormat enum value
 38763  	InventoryFormatCsv = "CSV"
 38764  
 38765  	// InventoryFormatOrc is a InventoryFormat enum value
 38766  	InventoryFormatOrc = "ORC"
 38767  
 38768  	// InventoryFormatParquet is a InventoryFormat enum value
 38769  	InventoryFormatParquet = "Parquet"
 38770  )
 38771  
 38772  // InventoryFormat_Values returns all elements of the InventoryFormat enum
 38773  func InventoryFormat_Values() []string {
 38774  	return []string{
 38775  		InventoryFormatCsv,
 38776  		InventoryFormatOrc,
 38777  		InventoryFormatParquet,
 38778  	}
 38779  }
 38780  
 38781  const (
 38782  	// InventoryFrequencyDaily is a InventoryFrequency enum value
 38783  	InventoryFrequencyDaily = "Daily"
 38784  
 38785  	// InventoryFrequencyWeekly is a InventoryFrequency enum value
 38786  	InventoryFrequencyWeekly = "Weekly"
 38787  )
 38788  
 38789  // InventoryFrequency_Values returns all elements of the InventoryFrequency enum
 38790  func InventoryFrequency_Values() []string {
 38791  	return []string{
 38792  		InventoryFrequencyDaily,
 38793  		InventoryFrequencyWeekly,
 38794  	}
 38795  }
 38796  
 38797  const (
 38798  	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
 38799  	InventoryIncludedObjectVersionsAll = "All"
 38800  
 38801  	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
 38802  	InventoryIncludedObjectVersionsCurrent = "Current"
 38803  )
 38804  
 38805  // InventoryIncludedObjectVersions_Values returns all elements of the InventoryIncludedObjectVersions enum
 38806  func InventoryIncludedObjectVersions_Values() []string {
 38807  	return []string{
 38808  		InventoryIncludedObjectVersionsAll,
 38809  		InventoryIncludedObjectVersionsCurrent,
 38810  	}
 38811  }
 38812  
 38813  const (
 38814  	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
 38815  	InventoryOptionalFieldSize = "Size"
 38816  
 38817  	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
 38818  	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
 38819  
 38820  	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
 38821  	InventoryOptionalFieldStorageClass = "StorageClass"
 38822  
 38823  	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
 38824  	InventoryOptionalFieldEtag = "ETag"
 38825  
 38826  	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
 38827  	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
 38828  
 38829  	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
 38830  	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
 38831  
 38832  	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
 38833  	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
 38834  
 38835  	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
 38836  	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
 38837  
 38838  	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
 38839  	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
 38840  
 38841  	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
 38842  	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
 38843  
 38844  	// InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value
 38845  	InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier"
 38846  
 38847  	// InventoryOptionalFieldBucketKeyStatus is a InventoryOptionalField enum value
 38848  	InventoryOptionalFieldBucketKeyStatus = "BucketKeyStatus"
 38849  )
 38850  
 38851  // InventoryOptionalField_Values returns all elements of the InventoryOptionalField enum
 38852  func InventoryOptionalField_Values() []string {
 38853  	return []string{
 38854  		InventoryOptionalFieldSize,
 38855  		InventoryOptionalFieldLastModifiedDate,
 38856  		InventoryOptionalFieldStorageClass,
 38857  		InventoryOptionalFieldEtag,
 38858  		InventoryOptionalFieldIsMultipartUploaded,
 38859  		InventoryOptionalFieldReplicationStatus,
 38860  		InventoryOptionalFieldEncryptionStatus,
 38861  		InventoryOptionalFieldObjectLockRetainUntilDate,
 38862  		InventoryOptionalFieldObjectLockMode,
 38863  		InventoryOptionalFieldObjectLockLegalHoldStatus,
 38864  		InventoryOptionalFieldIntelligentTieringAccessTier,
 38865  		InventoryOptionalFieldBucketKeyStatus,
 38866  	}
 38867  }
 38868  
 38869  const (
 38870  	// JSONTypeDocument is a JSONType enum value
 38871  	JSONTypeDocument = "DOCUMENT"
 38872  
 38873  	// JSONTypeLines is a JSONType enum value
 38874  	JSONTypeLines = "LINES"
 38875  )
 38876  
 38877  // JSONType_Values returns all elements of the JSONType enum
 38878  func JSONType_Values() []string {
 38879  	return []string{
 38880  		JSONTypeDocument,
 38881  		JSONTypeLines,
 38882  	}
 38883  }
 38884  
 38885  const (
 38886  	// MFADeleteEnabled is a MFADelete enum value
 38887  	MFADeleteEnabled = "Enabled"
 38888  
 38889  	// MFADeleteDisabled is a MFADelete enum value
 38890  	MFADeleteDisabled = "Disabled"
 38891  )
 38892  
 38893  // MFADelete_Values returns all elements of the MFADelete enum
 38894  func MFADelete_Values() []string {
 38895  	return []string{
 38896  		MFADeleteEnabled,
 38897  		MFADeleteDisabled,
 38898  	}
 38899  }
 38900  
 38901  const (
 38902  	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
 38903  	MFADeleteStatusEnabled = "Enabled"
 38904  
 38905  	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
 38906  	MFADeleteStatusDisabled = "Disabled"
 38907  )
 38908  
 38909  // MFADeleteStatus_Values returns all elements of the MFADeleteStatus enum
 38910  func MFADeleteStatus_Values() []string {
 38911  	return []string{
 38912  		MFADeleteStatusEnabled,
 38913  		MFADeleteStatusDisabled,
 38914  	}
 38915  }
 38916  
 38917  const (
 38918  	// MetadataDirectiveCopy is a MetadataDirective enum value
 38919  	MetadataDirectiveCopy = "COPY"
 38920  
 38921  	// MetadataDirectiveReplace is a MetadataDirective enum value
 38922  	MetadataDirectiveReplace = "REPLACE"
 38923  )
 38924  
 38925  // MetadataDirective_Values returns all elements of the MetadataDirective enum
 38926  func MetadataDirective_Values() []string {
 38927  	return []string{
 38928  		MetadataDirectiveCopy,
 38929  		MetadataDirectiveReplace,
 38930  	}
 38931  }
 38932  
 38933  const (
 38934  	// MetricsStatusEnabled is a MetricsStatus enum value
 38935  	MetricsStatusEnabled = "Enabled"
 38936  
 38937  	// MetricsStatusDisabled is a MetricsStatus enum value
 38938  	MetricsStatusDisabled = "Disabled"
 38939  )
 38940  
 38941  // MetricsStatus_Values returns all elements of the MetricsStatus enum
 38942  func MetricsStatus_Values() []string {
 38943  	return []string{
 38944  		MetricsStatusEnabled,
 38945  		MetricsStatusDisabled,
 38946  	}
 38947  }
 38948  
 38949  const (
 38950  	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
 38951  	ObjectCannedACLPrivate = "private"
 38952  
 38953  	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
 38954  	ObjectCannedACLPublicRead = "public-read"
 38955  
 38956  	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
 38957  	ObjectCannedACLPublicReadWrite = "public-read-write"
 38958  
 38959  	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
 38960  	ObjectCannedACLAuthenticatedRead = "authenticated-read"
 38961  
 38962  	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
 38963  	ObjectCannedACLAwsExecRead = "aws-exec-read"
 38964  
 38965  	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
 38966  	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
 38967  
 38968  	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
 38969  	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
 38970  )
 38971  
 38972  // ObjectCannedACL_Values returns all elements of the ObjectCannedACL enum
 38973  func ObjectCannedACL_Values() []string {
 38974  	return []string{
 38975  		ObjectCannedACLPrivate,
 38976  		ObjectCannedACLPublicRead,
 38977  		ObjectCannedACLPublicReadWrite,
 38978  		ObjectCannedACLAuthenticatedRead,
 38979  		ObjectCannedACLAwsExecRead,
 38980  		ObjectCannedACLBucketOwnerRead,
 38981  		ObjectCannedACLBucketOwnerFullControl,
 38982  	}
 38983  }
 38984  
 38985  const (
 38986  	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
 38987  	ObjectLockEnabledEnabled = "Enabled"
 38988  )
 38989  
 38990  // ObjectLockEnabled_Values returns all elements of the ObjectLockEnabled enum
 38991  func ObjectLockEnabled_Values() []string {
 38992  	return []string{
 38993  		ObjectLockEnabledEnabled,
 38994  	}
 38995  }
 38996  
 38997  const (
 38998  	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
 38999  	ObjectLockLegalHoldStatusOn = "ON"
 39000  
 39001  	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
 39002  	ObjectLockLegalHoldStatusOff = "OFF"
 39003  )
 39004  
 39005  // ObjectLockLegalHoldStatus_Values returns all elements of the ObjectLockLegalHoldStatus enum
 39006  func ObjectLockLegalHoldStatus_Values() []string {
 39007  	return []string{
 39008  		ObjectLockLegalHoldStatusOn,
 39009  		ObjectLockLegalHoldStatusOff,
 39010  	}
 39011  }
 39012  
 39013  const (
 39014  	// ObjectLockModeGovernance is a ObjectLockMode enum value
 39015  	ObjectLockModeGovernance = "GOVERNANCE"
 39016  
 39017  	// ObjectLockModeCompliance is a ObjectLockMode enum value
 39018  	ObjectLockModeCompliance = "COMPLIANCE"
 39019  )
 39020  
 39021  // ObjectLockMode_Values returns all elements of the ObjectLockMode enum
 39022  func ObjectLockMode_Values() []string {
 39023  	return []string{
 39024  		ObjectLockModeGovernance,
 39025  		ObjectLockModeCompliance,
 39026  	}
 39027  }
 39028  
 39029  const (
 39030  	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
 39031  	ObjectLockRetentionModeGovernance = "GOVERNANCE"
 39032  
 39033  	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
 39034  	ObjectLockRetentionModeCompliance = "COMPLIANCE"
 39035  )
 39036  
 39037  // ObjectLockRetentionMode_Values returns all elements of the ObjectLockRetentionMode enum
 39038  func ObjectLockRetentionMode_Values() []string {
 39039  	return []string{
 39040  		ObjectLockRetentionModeGovernance,
 39041  		ObjectLockRetentionModeCompliance,
 39042  	}
 39043  }
 39044  
 39045  // The container element for object ownership for a bucket's ownership controls.
 39046  //
 39047  // BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
 39048  // the bucket owner if the objects are uploaded with the bucket-owner-full-control
 39049  // canned ACL.
 39050  //
 39051  // ObjectWriter - The uploading account will own the object if the object is
 39052  // uploaded with the bucket-owner-full-control canned ACL.
 39053  const (
 39054  	// ObjectOwnershipBucketOwnerPreferred is a ObjectOwnership enum value
 39055  	ObjectOwnershipBucketOwnerPreferred = "BucketOwnerPreferred"
 39056  
 39057  	// ObjectOwnershipObjectWriter is a ObjectOwnership enum value
 39058  	ObjectOwnershipObjectWriter = "ObjectWriter"
 39059  )
 39060  
 39061  // ObjectOwnership_Values returns all elements of the ObjectOwnership enum
 39062  func ObjectOwnership_Values() []string {
 39063  	return []string{
 39064  		ObjectOwnershipBucketOwnerPreferred,
 39065  		ObjectOwnershipObjectWriter,
 39066  	}
 39067  }
 39068  
 39069  const (
 39070  	// ObjectStorageClassStandard is a ObjectStorageClass enum value
 39071  	ObjectStorageClassStandard = "STANDARD"
 39072  
 39073  	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
 39074  	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
 39075  
 39076  	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
 39077  	ObjectStorageClassGlacier = "GLACIER"
 39078  
 39079  	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
 39080  	ObjectStorageClassStandardIa = "STANDARD_IA"
 39081  
 39082  	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
 39083  	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
 39084  
 39085  	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
 39086  	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
 39087  
 39088  	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
 39089  	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
 39090  
 39091  	// ObjectStorageClassOutposts is a ObjectStorageClass enum value
 39092  	ObjectStorageClassOutposts = "OUTPOSTS"
 39093  )
 39094  
 39095  // ObjectStorageClass_Values returns all elements of the ObjectStorageClass enum
 39096  func ObjectStorageClass_Values() []string {
 39097  	return []string{
 39098  		ObjectStorageClassStandard,
 39099  		ObjectStorageClassReducedRedundancy,
 39100  		ObjectStorageClassGlacier,
 39101  		ObjectStorageClassStandardIa,
 39102  		ObjectStorageClassOnezoneIa,
 39103  		ObjectStorageClassIntelligentTiering,
 39104  		ObjectStorageClassDeepArchive,
 39105  		ObjectStorageClassOutposts,
 39106  	}
 39107  }
 39108  
 39109  const (
 39110  	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
 39111  	ObjectVersionStorageClassStandard = "STANDARD"
 39112  )
 39113  
 39114  // ObjectVersionStorageClass_Values returns all elements of the ObjectVersionStorageClass enum
 39115  func ObjectVersionStorageClass_Values() []string {
 39116  	return []string{
 39117  		ObjectVersionStorageClassStandard,
 39118  	}
 39119  }
 39120  
 39121  const (
 39122  	// OwnerOverrideDestination is a OwnerOverride enum value
 39123  	OwnerOverrideDestination = "Destination"
 39124  )
 39125  
 39126  // OwnerOverride_Values returns all elements of the OwnerOverride enum
 39127  func OwnerOverride_Values() []string {
 39128  	return []string{
 39129  		OwnerOverrideDestination,
 39130  	}
 39131  }
 39132  
 39133  const (
 39134  	// PayerRequester is a Payer enum value
 39135  	PayerRequester = "Requester"
 39136  
 39137  	// PayerBucketOwner is a Payer enum value
 39138  	PayerBucketOwner = "BucketOwner"
 39139  )
 39140  
 39141  // Payer_Values returns all elements of the Payer enum
 39142  func Payer_Values() []string {
 39143  	return []string{
 39144  		PayerRequester,
 39145  		PayerBucketOwner,
 39146  	}
 39147  }
 39148  
 39149  const (
 39150  	// PermissionFullControl is a Permission enum value
 39151  	PermissionFullControl = "FULL_CONTROL"
 39152  
 39153  	// PermissionWrite is a Permission enum value
 39154  	PermissionWrite = "WRITE"
 39155  
 39156  	// PermissionWriteAcp is a Permission enum value
 39157  	PermissionWriteAcp = "WRITE_ACP"
 39158  
 39159  	// PermissionRead is a Permission enum value
 39160  	PermissionRead = "READ"
 39161  
 39162  	// PermissionReadAcp is a Permission enum value
 39163  	PermissionReadAcp = "READ_ACP"
 39164  )
 39165  
 39166  // Permission_Values returns all elements of the Permission enum
 39167  func Permission_Values() []string {
 39168  	return []string{
 39169  		PermissionFullControl,
 39170  		PermissionWrite,
 39171  		PermissionWriteAcp,
 39172  		PermissionRead,
 39173  		PermissionReadAcp,
 39174  	}
 39175  }
 39176  
 39177  const (
 39178  	// ProtocolHttp is a Protocol enum value
 39179  	ProtocolHttp = "http"
 39180  
 39181  	// ProtocolHttps is a Protocol enum value
 39182  	ProtocolHttps = "https"
 39183  )
 39184  
 39185  // Protocol_Values returns all elements of the Protocol enum
 39186  func Protocol_Values() []string {
 39187  	return []string{
 39188  		ProtocolHttp,
 39189  		ProtocolHttps,
 39190  	}
 39191  }
 39192  
 39193  const (
 39194  	// QuoteFieldsAlways is a QuoteFields enum value
 39195  	QuoteFieldsAlways = "ALWAYS"
 39196  
 39197  	// QuoteFieldsAsneeded is a QuoteFields enum value
 39198  	QuoteFieldsAsneeded = "ASNEEDED"
 39199  )
 39200  
 39201  // QuoteFields_Values returns all elements of the QuoteFields enum
 39202  func QuoteFields_Values() []string {
 39203  	return []string{
 39204  		QuoteFieldsAlways,
 39205  		QuoteFieldsAsneeded,
 39206  	}
 39207  }
 39208  
 39209  const (
 39210  	// ReplicaModificationsStatusEnabled is a ReplicaModificationsStatus enum value
 39211  	ReplicaModificationsStatusEnabled = "Enabled"
 39212  
 39213  	// ReplicaModificationsStatusDisabled is a ReplicaModificationsStatus enum value
 39214  	ReplicaModificationsStatusDisabled = "Disabled"
 39215  )
 39216  
 39217  // ReplicaModificationsStatus_Values returns all elements of the ReplicaModificationsStatus enum
 39218  func ReplicaModificationsStatus_Values() []string {
 39219  	return []string{
 39220  		ReplicaModificationsStatusEnabled,
 39221  		ReplicaModificationsStatusDisabled,
 39222  	}
 39223  }
 39224  
 39225  const (
 39226  	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
 39227  	ReplicationRuleStatusEnabled = "Enabled"
 39228  
 39229  	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
 39230  	ReplicationRuleStatusDisabled = "Disabled"
 39231  )
 39232  
 39233  // ReplicationRuleStatus_Values returns all elements of the ReplicationRuleStatus enum
 39234  func ReplicationRuleStatus_Values() []string {
 39235  	return []string{
 39236  		ReplicationRuleStatusEnabled,
 39237  		ReplicationRuleStatusDisabled,
 39238  	}
 39239  }
 39240  
 39241  const (
 39242  	// ReplicationStatusComplete is a ReplicationStatus enum value
 39243  	ReplicationStatusComplete = "COMPLETE"
 39244  
 39245  	// ReplicationStatusPending is a ReplicationStatus enum value
 39246  	ReplicationStatusPending = "PENDING"
 39247  
 39248  	// ReplicationStatusFailed is a ReplicationStatus enum value
 39249  	ReplicationStatusFailed = "FAILED"
 39250  
 39251  	// ReplicationStatusReplica is a ReplicationStatus enum value
 39252  	ReplicationStatusReplica = "REPLICA"
 39253  )
 39254  
 39255  // ReplicationStatus_Values returns all elements of the ReplicationStatus enum
 39256  func ReplicationStatus_Values() []string {
 39257  	return []string{
 39258  		ReplicationStatusComplete,
 39259  		ReplicationStatusPending,
 39260  		ReplicationStatusFailed,
 39261  		ReplicationStatusReplica,
 39262  	}
 39263  }
 39264  
 39265  const (
 39266  	// ReplicationTimeStatusEnabled is a ReplicationTimeStatus enum value
 39267  	ReplicationTimeStatusEnabled = "Enabled"
 39268  
 39269  	// ReplicationTimeStatusDisabled is a ReplicationTimeStatus enum value
 39270  	ReplicationTimeStatusDisabled = "Disabled"
 39271  )
 39272  
 39273  // ReplicationTimeStatus_Values returns all elements of the ReplicationTimeStatus enum
 39274  func ReplicationTimeStatus_Values() []string {
 39275  	return []string{
 39276  		ReplicationTimeStatusEnabled,
 39277  		ReplicationTimeStatusDisabled,
 39278  	}
 39279  }
 39280  
 39281  // If present, indicates that the requester was successfully charged for the
 39282  // request.
 39283  const (
 39284  	// RequestChargedRequester is a RequestCharged enum value
 39285  	RequestChargedRequester = "requester"
 39286  )
 39287  
 39288  // RequestCharged_Values returns all elements of the RequestCharged enum
 39289  func RequestCharged_Values() []string {
 39290  	return []string{
 39291  		RequestChargedRequester,
 39292  	}
 39293  }
 39294  
 39295  // Confirms that the requester knows that they will be charged for the request.
 39296  // Bucket owners need not specify this parameter in their requests. For information
 39297  // about downloading objects from requester pays buckets, see Downloading Objects
 39298  // in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
 39299  // in the Amazon S3 User Guide.
 39300  const (
 39301  	// RequestPayerRequester is a RequestPayer enum value
 39302  	RequestPayerRequester = "requester"
 39303  )
 39304  
 39305  // RequestPayer_Values returns all elements of the RequestPayer enum
 39306  func RequestPayer_Values() []string {
 39307  	return []string{
 39308  		RequestPayerRequester,
 39309  	}
 39310  }
 39311  
 39312  const (
 39313  	// RestoreRequestTypeSelect is a RestoreRequestType enum value
 39314  	RestoreRequestTypeSelect = "SELECT"
 39315  )
 39316  
 39317  // RestoreRequestType_Values returns all elements of the RestoreRequestType enum
 39318  func RestoreRequestType_Values() []string {
 39319  	return []string{
 39320  		RestoreRequestTypeSelect,
 39321  	}
 39322  }
 39323  
 39324  const (
 39325  	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
 39326  	ServerSideEncryptionAes256 = "AES256"
 39327  
 39328  	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
 39329  	ServerSideEncryptionAwsKms = "aws:kms"
 39330  )
 39331  
 39332  // ServerSideEncryption_Values returns all elements of the ServerSideEncryption enum
 39333  func ServerSideEncryption_Values() []string {
 39334  	return []string{
 39335  		ServerSideEncryptionAes256,
 39336  		ServerSideEncryptionAwsKms,
 39337  	}
 39338  }
 39339  
 39340  const (
 39341  	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
 39342  	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
 39343  
 39344  	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
 39345  	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
 39346  )
 39347  
 39348  // SseKmsEncryptedObjectsStatus_Values returns all elements of the SseKmsEncryptedObjectsStatus enum
 39349  func SseKmsEncryptedObjectsStatus_Values() []string {
 39350  	return []string{
 39351  		SseKmsEncryptedObjectsStatusEnabled,
 39352  		SseKmsEncryptedObjectsStatusDisabled,
 39353  	}
 39354  }
 39355  
 39356  const (
 39357  	// StorageClassStandard is a StorageClass enum value
 39358  	StorageClassStandard = "STANDARD"
 39359  
 39360  	// StorageClassReducedRedundancy is a StorageClass enum value
 39361  	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
 39362  
 39363  	// StorageClassStandardIa is a StorageClass enum value
 39364  	StorageClassStandardIa = "STANDARD_IA"
 39365  
 39366  	// StorageClassOnezoneIa is a StorageClass enum value
 39367  	StorageClassOnezoneIa = "ONEZONE_IA"
 39368  
 39369  	// StorageClassIntelligentTiering is a StorageClass enum value
 39370  	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
 39371  
 39372  	// StorageClassGlacier is a StorageClass enum value
 39373  	StorageClassGlacier = "GLACIER"
 39374  
 39375  	// StorageClassDeepArchive is a StorageClass enum value
 39376  	StorageClassDeepArchive = "DEEP_ARCHIVE"
 39377  
 39378  	// StorageClassOutposts is a StorageClass enum value
 39379  	StorageClassOutposts = "OUTPOSTS"
 39380  )
 39381  
 39382  // StorageClass_Values returns all elements of the StorageClass enum
 39383  func StorageClass_Values() []string {
 39384  	return []string{
 39385  		StorageClassStandard,
 39386  		StorageClassReducedRedundancy,
 39387  		StorageClassStandardIa,
 39388  		StorageClassOnezoneIa,
 39389  		StorageClassIntelligentTiering,
 39390  		StorageClassGlacier,
 39391  		StorageClassDeepArchive,
 39392  		StorageClassOutposts,
 39393  	}
 39394  }
 39395  
 39396  const (
 39397  	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
 39398  	StorageClassAnalysisSchemaVersionV1 = "V_1"
 39399  )
 39400  
 39401  // StorageClassAnalysisSchemaVersion_Values returns all elements of the StorageClassAnalysisSchemaVersion enum
 39402  func StorageClassAnalysisSchemaVersion_Values() []string {
 39403  	return []string{
 39404  		StorageClassAnalysisSchemaVersionV1,
 39405  	}
 39406  }
 39407  
 39408  const (
 39409  	// TaggingDirectiveCopy is a TaggingDirective enum value
 39410  	TaggingDirectiveCopy = "COPY"
 39411  
 39412  	// TaggingDirectiveReplace is a TaggingDirective enum value
 39413  	TaggingDirectiveReplace = "REPLACE"
 39414  )
 39415  
 39416  // TaggingDirective_Values returns all elements of the TaggingDirective enum
 39417  func TaggingDirective_Values() []string {
 39418  	return []string{
 39419  		TaggingDirectiveCopy,
 39420  		TaggingDirectiveReplace,
 39421  	}
 39422  }
 39423  
 39424  const (
 39425  	// TierStandard is a Tier enum value
 39426  	TierStandard = "Standard"
 39427  
 39428  	// TierBulk is a Tier enum value
 39429  	TierBulk = "Bulk"
 39430  
 39431  	// TierExpedited is a Tier enum value
 39432  	TierExpedited = "Expedited"
 39433  )
 39434  
 39435  // Tier_Values returns all elements of the Tier enum
 39436  func Tier_Values() []string {
 39437  	return []string{
 39438  		TierStandard,
 39439  		TierBulk,
 39440  		TierExpedited,
 39441  	}
 39442  }
 39443  
 39444  const (
 39445  	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
 39446  	TransitionStorageClassGlacier = "GLACIER"
 39447  
 39448  	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
 39449  	TransitionStorageClassStandardIa = "STANDARD_IA"
 39450  
 39451  	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
 39452  	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
 39453  
 39454  	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
 39455  	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
 39456  
 39457  	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
 39458  	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
 39459  )
 39460  
 39461  // TransitionStorageClass_Values returns all elements of the TransitionStorageClass enum
 39462  func TransitionStorageClass_Values() []string {
 39463  	return []string{
 39464  		TransitionStorageClassGlacier,
 39465  		TransitionStorageClassStandardIa,
 39466  		TransitionStorageClassOnezoneIa,
 39467  		TransitionStorageClassIntelligentTiering,
 39468  		TransitionStorageClassDeepArchive,
 39469  	}
 39470  }
 39471  
 39472  const (
 39473  	// TypeCanonicalUser is a Type enum value
 39474  	TypeCanonicalUser = "CanonicalUser"
 39475  
 39476  	// TypeAmazonCustomerByEmail is a Type enum value
 39477  	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
 39478  
 39479  	// TypeGroup is a Type enum value
 39480  	TypeGroup = "Group"
 39481  )
 39482  
 39483  // Type_Values returns all elements of the Type enum
 39484  func Type_Values() []string {
 39485  	return []string{
 39486  		TypeCanonicalUser,
 39487  		TypeAmazonCustomerByEmail,
 39488  		TypeGroup,
 39489  	}
 39490  }