s3

package
v1.1.55 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2023 License: Unlicense Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Connection added in v1.1.4

type Connection struct {
	// contains filtered or unexported fields
}

Connection wraps functionality necessary to communicate with AWS S3

func NewConnection added in v1.1.4

func NewConnection(cfg aws.Config, logger *utils.Logger) *Connection

NewConnection creates a new S3 connection from an AWS session and a logger

func (*Connection) DownloadToStream added in v1.1.4

func (conn *Connection) DownloadToStream(ctx context.Context, bucket string, key string) (io.Writer, error)

DownloadToStream retrieves a file from S3 and downloads it to a stream so we can work with it

func (*Connection) UploadFromStream added in v1.1.4

func (conn *Connection) UploadFromStream(ctx context.Context, bucket string, key string, body io.Reader) error

UploadFromStream writes data in a stream to a file in S3

type IConnection added in v1.1.4

type IConnection interface {
	DownloadToStream(ctx context.Context, bucket string, key string) (io.Writer, error)
	UploadFromStream(ctx context.Context, bucket string, key string, body io.Reader) error
}

IConnection describes the functionality encapsulated in an S3 connection

type S3API

type S3API interface {

	// This action aborts a multipart upload. After a multipart upload is aborted, no
	// additional parts can be uploaded using that upload ID. The storage consumed by
	// any previously uploaded parts will be freed. However, if any part uploads are
	// currently in progress, those part uploads might or might not succeed. As a
	// result, it might be necessary to abort a given multipart upload multiple times
	// in order to completely free all storage consumed by all parts. To verify that
	// all parts have been removed, so you don't get charged for the part storage, you
	// should call the ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html) action and
	// ensure that the parts list is empty. For information about permissions required
	// to use the multipart upload, see Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). The
	// following operations are related to AbortMultipartUpload:
	//
	// *
	// CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	AbortMultipartUpload(ctx context.Context, params *s3.AbortMultipartUploadInput,
		optFns ...func(*s3.Options)) (*s3.AbortMultipartUploadOutput, error)

	// Completes a multipart upload by assembling previously uploaded parts. You first
	// initiate the multipart upload and then upload all parts using the UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) operation.
	// After successfully uploading all relevant parts of an upload, you call this
	// action to complete the upload. Upon receiving this request, Amazon S3
	// concatenates all the parts in ascending order by part number to create a new
	// object. In the Complete Multipart Upload request, you must provide the parts
	// list. You must ensure that the parts list is complete. This action concatenates
	// the parts that you provide in the list. For each part in the list, you must
	// provide the part number and the ETag value, returned after that part was
	// uploaded. Processing of a Complete Multipart Upload request could take several
	// minutes to complete. After Amazon S3 begins processing the request, it sends an
	// HTTP response header that specifies a 200 OK response. While processing is in
	// progress, Amazon S3 periodically sends white space characters to keep the
	// connection from timing out. Because a request could fail after the initial 200
	// OK response has been sent, it is important that you check the response body to
	// determine whether the request succeeded. Note that if CompleteMultipartUpload
	// fails, applications should be prepared to retry the failed requests. For more
	// information, see Amazon S3 Error Best Practices
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html). You
	// cannot use Content-Type: application/x-www-form-urlencoded with Complete
	// Multipart Upload requests. Also, if you do not provide a Content-Type header,
	// CompleteMultipartUpload returns a 200 OK response. For more information about
	// multipart uploads, see Uploading Objects Using Multipart Upload
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). For
	// information about permissions required to use the multipart upload API, see
	// Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
	// CompleteMultipartUpload has the following special errors:
	//
	// * Error code:
	// EntityTooSmall
	//
	// * Description: Your proposed upload is smaller than the minimum
	// allowed object size. Each part must be at least 5 MB in size, except the last
	// part.
	//
	// * 400 Bad Request
	//
	// * Error code: InvalidPart
	//
	// * Description: One or more
	// of the specified parts could not be found. The part might not have been
	// uploaded, or the specified entity tag might not have matched the part's entity
	// tag.
	//
	// * 400 Bad Request
	//
	// * Error code: InvalidPartOrder
	//
	// * Description: The list
	// of parts was not in ascending order. The parts list must be specified in order
	// by part number.
	//
	// * 400 Bad Request
	//
	// * Error code: NoSuchUpload
	//
	// * Description:
	// The specified multipart upload does not exist. The upload ID might be invalid,
	// or the multipart upload might have been aborted or completed.
	//
	// * 404 Not
	// Found
	//
	// The following operations are related to CompleteMultipartUpload:
	//
	// *
	// CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	CompleteMultipartUpload(ctx context.Context, params *s3.CompleteMultipartUploadInput,
		optFns ...func(*s3.Options)) (*s3.CompleteMultipartUploadOutput, error)

	// Creates a copy of an object that is already stored in Amazon S3. You can store
	// individual objects of up to 5 TB in Amazon S3. You create a copy of your object
	// up to 5 GB in size in a single atomic action using this API. However, to copy an
	// object greater than 5 GB, you must use the multipart upload Upload Part - Copy
	// (UploadPartCopy) API. For more information, see Copy Object Using the REST
	// Multipart Upload API
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
	// All copy requests must be authenticated. Additionally, you must have read access
	// to the source object and write access to the destination bucket. For more
	// information, see REST Authentication
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html). Both
	// the Region that you want to copy the object from and the Region that you want to
	// copy the object to must be enabled for your account. A copy request might return
	// an error when Amazon S3 receives the copy request or while Amazon S3 is copying
	// the files. If the error occurs before the copy action starts, you receive a
	// standard Amazon S3 error. If the error occurs during the copy operation, the
	// error response is embedded in the 200 OK response. This means that a 200 OK
	// response can contain either a success or an error. Design your application to
	// parse the contents of the response and handle it appropriately. If the copy is
	// successful, you receive a response with information about the copied object. If
	// the request is an HTTP 1.1 request, the response is chunk encoded. If it were
	// not, it would not contain the content-length, and you would need to read the
	// entire body. The copy request charge is based on the storage class and Region
	// that you specify for the destination object. For pricing information, see Amazon
	// S3 pricing (http://aws.amazon.com/s3/pricing/). Amazon S3 transfer acceleration
	// does not support cross-Region copies. If you request a cross-Region copy using a
	// transfer acceleration endpoint, you get a 400 Bad Request error. For more
	// information, see Transfer Acceleration
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
	// Metadata When copying an object, you can preserve all metadata (default) or
	// specify new metadata. However, the ACL is not preserved and is set to private
	// for the user making the request. To override the default ACL setting, specify a
	// new ACL when generating a copy request. For more information, see Using ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). To
	// specify whether you want the object metadata copied from the source object or
	// replaced with metadata provided in the request, you can optionally add the
	// x-amz-metadata-directive header. When you grant permissions, you can use the
	// s3:x-amz-metadata-directive condition key to enforce certain metadata behavior
	// when objects are uploaded. For more information, see Specifying Conditions in a
	// Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html) in
	// the Amazon S3 User Guide. For a complete list of Amazon S3-specific condition
	// keys, see Actions, Resources, and Condition Keys for Amazon S3
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
	// x-amz-copy-source-if Headers To only copy an object under certain conditions,
	// such as whether the Etag matches or whether the object was modified before or
	// after a specified date, use the following request parameters:
	//
	// *
	// x-amz-copy-source-if-match
	//
	// * x-amz-copy-source-if-none-match
	//
	// *
	// x-amz-copy-source-if-unmodified-since
	//
	// * x-amz-copy-source-if-modified-since
	//
	// If
	// both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
	// headers are present in the request and evaluate as follows, Amazon S3 returns
	// 200 OK and copies the data:
	//
	// * x-amz-copy-source-if-match condition evaluates to
	// true
	//
	// * x-amz-copy-source-if-unmodified-since condition evaluates to false
	//
	// If
	// both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
	// headers are present in the request and evaluate as follows, Amazon S3 returns
	// the 412 Precondition Failed response code:
	//
	// * x-amz-copy-source-if-none-match
	// condition evaluates to false
	//
	// * x-amz-copy-source-if-modified-since condition
	// evaluates to true
	//
	// All headers with the x-amz- prefix, including
	// x-amz-copy-source, must be signed. Server-side encryption When you perform a
	// CopyObject operation, you can optionally use the appropriate encryption-related
	// headers to encrypt the object using server-side encryption with Amazon Web
	// Services managed encryption keys (SSE-S3 or SSE-KMS) or a customer-provided
	// encryption key. With server-side encryption, Amazon S3 encrypts your data as it
	// writes it to disks in its data centers and decrypts the data when you access it.
	// For more information about server-side encryption, see Using Server-Side
	// Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html). If
	// a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.
	// For more information, see Amazon S3 Bucket Keys
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the Amazon
	// S3 User Guide. Access Control List (ACL)-Specific Request Headers When copying
	// an object, you can optionally use headers to grant ACL-based permissions. By
	// default, all objects are private. Only the owner has full access control. When
	// adding a new object, you can grant permissions to individual Amazon Web Services
	// accounts or to predefined groups defined by Amazon S3. These permissions are
	// then added to the ACL on the object. For more information, see Access Control
	// List (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html) and Managing
	// ACLs Using the REST API
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html). If
	// the bucket that you're copying objects to uses the bucket owner enforced setting
	// for S3 Object Ownership, ACLs are disabled and no longer affect permissions.
	// Buckets that use this setting only accept PUT requests that don't specify an ACL
	// or PUT requests that specify bucket owner full control ACLs, such as the
	// bucket-owner-full-control canned ACL or an equivalent form of this ACL expressed
	// in the XML format. For more information, see  Controlling ownership of objects
	// and disabling ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. If your bucket uses the bucket owner enforced
	// setting for Object Ownership, all objects written to the bucket by any account
	// will be owned by the bucket owner. Checksums When copying an object, if it has a
	// checksum, that checksum will be copied to the new object by default. When you
	// copy the object over, you may optionally specify a different checksum algorithm
	// to use with the x-amz-checksum-algorithm header. Storage Class Options You can
	// use the CopyObject action to change the storage class of an object that is
	// already stored in Amazon S3 using the StorageClass parameter. For more
	// information, see Storage Classes
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) in
	// the Amazon S3 User Guide. Versioning By default, x-amz-copy-source identifies
	// the current version of an object to copy. If the current version is a delete
	// marker, Amazon S3 behaves as if the object was deleted. To copy a different
	// version, use the versionId subresource. If you enable versioning on the target
	// bucket, Amazon S3 generates a unique version ID for the object being copied.
	// This version ID is different from the version ID of the source object. Amazon S3
	// returns the version ID of the copied object in the x-amz-version-id response
	// header in the response. If you do not enable versioning or suspend it on the
	// target bucket, the version ID that Amazon S3 generates is always null. If the
	// source object's storage class is GLACIER, you must restore a copy of this object
	// before you can use it as a source object for the copy operation. For more
	// information, see RestoreObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html). The
	// following operations are related to CopyObject:
	//
	// * PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// For more
	// information, see Copying Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
	CopyObject(ctx context.Context, params *s3.CopyObjectInput,
		optFns ...func(*s3.Options)) (*s3.CopyObjectOutput, error)

	// Creates a new S3 bucket. To create a bucket, you must register with Amazon S3
	// and have a valid Amazon Web Services Access Key ID to authenticate requests.
	// Anonymous requests are never allowed to create buckets. By creating the bucket,
	// you become the bucket owner. Not every string is an acceptable bucket name. For
	// information about bucket naming restrictions, see Bucket naming rules
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
	// If you want to create an Amazon S3 on Outposts bucket, see Create Bucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html).
	// By default, the bucket is created in the US East (N. Virginia) Region. You can
	// optionally specify a Region in the request body. You might choose a Region to
	// optimize latency, minimize costs, or address regulatory requirements. For
	// example, if you reside in Europe, you will probably find it advantageous to
	// create buckets in the Europe (Ireland) Region. For more information, see
	// Accessing a bucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
	// If you send your create bucket request to the s3.amazonaws.com endpoint, the
	// request goes to the us-east-1 Region. Accordingly, the signature calculations in
	// Signature Version 4 must use us-east-1 as the Region, even if the location
	// constraint in the request specifies another Region where the bucket is to be
	// created. If you create a bucket in a Region other than US East (N. Virginia),
	// your application must be able to handle 307 redirect. For more information, see
	// Virtual hosting of buckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html). Access
	// control lists (ACLs) When creating a bucket using this operation, you can
	// optionally configure the bucket ACL to specify the accounts or groups that
	// should be granted specific permissions on the bucket. If your CreateBucket
	// request sets bucket owner enforced for S3 Object Ownership and specifies a
	// bucket ACL that provides access to an external Amazon Web Services account, your
	// request fails with a 400 error and returns the
	// InvalidBucketAclWithObjectOwnership error code. For more information, see
	// Controlling object ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. There are two ways to grant the appropriate
	// permissions using the request headers.
	//
	// * Specify a canned ACL using the
	// x-amz-acl request header. Amazon S3 supports a set of predefined ACLs, known as
	// canned ACLs. Each canned ACL has a predefined set of grantees and permissions.
	// For more information, see Canned ACL
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
	//
	// *
	// Specify access permissions explicitly using the x-amz-grant-read,
	// x-amz-grant-write, x-amz-grant-read-acp, x-amz-grant-write-acp, and
	// x-amz-grant-full-control headers. These headers map to the set of permissions
	// Amazon S3 supports in an ACL. For more information, see Access control list
	// (ACL) overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html). You
	// specify each grantee as a type=value pair, where the type is one of the
	// following:
	//
	// * id – if the value specified is the canonical user ID of an Amazon
	// Web Services account
	//
	// * uri – if you are granting permissions to a predefined
	// group
	//
	// * emailAddress – if the value specified is the email address of an Amazon
	// Web Services account Using email addresses to specify a grantee is only
	// supported in the following Amazon Web Services Regions:
	//
	// * US East (N.
	// Virginia)
	//
	// * US West (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific
	// (Singapore)
	//
	// * Asia Pacific (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe
	// (Ireland)
	//
	// * South America (São Paulo)
	//
	// For a list of all the Amazon S3
	// supported Regions and endpoints, see Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// For example, the following
	// x-amz-grant-read header grants the Amazon Web Services accounts identified by
	// account IDs permissions to read object data and its metadata: x-amz-grant-read:
	// id="11112222333", id="444455556666"
	//
	// You can use either a canned ACL or specify
	// access permissions explicitly. You cannot do both. Permissions In addition to
	// s3:CreateBucket, the following permissions are required when your CreateBucket
	// includes specific headers:
	//
	// * ACLs - If your CreateBucket request specifies ACL
	// permissions and the ACL is public-read, public-read-write, authenticated-read,
	// or if you specify access permissions explicitly through any other ACL, both
	// s3:CreateBucket and s3:PutBucketAcl permissions are needed. If the ACL the
	// CreateBucket request is private or doesn't specify any ACLs, only
	// s3:CreateBucket permission is needed.
	//
	// * Object Lock - If
	// ObjectLockEnabledForBucket is set to true in your CreateBucket request,
	// s3:PutBucketObjectLockConfiguration and s3:PutBucketVersioning permissions are
	// required.
	//
	// * S3 Object Ownership - If your CreateBucket request includes the the
	// x-amz-object-ownership header, s3:PutBucketOwnershipControls permission is
	// required.
	//
	// The following operations are related to CreateBucket:
	//
	// * PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// DeleteBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
	CreateBucket(ctx context.Context, params *s3.CreateBucketInput,
		optFns ...func(*s3.Options)) (*s3.CreateBucketOutput, error)

	// This action initiates a multipart upload and returns an upload ID. This upload
	// ID is used to associate all of the parts in the specific multipart upload. You
	// specify this upload ID in each of your subsequent upload part requests (see
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)). You also
	// include this upload ID in the final request to either complete or abort the
	// multipart upload request. For more information about multipart uploads, see
	// Multipart Upload Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html). If you have
	// configured a lifecycle rule to abort incomplete multipart uploads, the upload
	// must complete within the number of days specified in the bucket lifecycle
	// configuration. Otherwise, the incomplete multipart upload becomes eligible for
	// an abort action and Amazon S3 aborts the multipart upload. For more information,
	// see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
	// For information about the permissions required to use the multipart upload API,
	// see Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). For
	// request signing, multipart upload is just a series of regular requests. You
	// initiate a multipart upload, send one or more requests to upload parts, and then
	// complete the multipart upload process. You sign each request individually. There
	// is nothing special about signing multipart upload requests. For more information
	// about signing, see Authenticating Requests (Amazon Web Services Signature
	// Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
	// After you initiate a multipart upload and upload one or more parts, to stop
	// being charged for storing the uploaded parts, you must either complete or abort
	// the multipart upload. Amazon S3 frees up the space used to store the parts and
	// stop charging you for storing them only after you either complete or abort a
	// multipart upload. You can optionally request server-side encryption. For
	// server-side encryption, Amazon S3 encrypts your data as it writes it to disks in
	// its data centers and decrypts it when you access it. You can provide your own
	// encryption key, or use Amazon Web Services KMS keys or Amazon S3-managed
	// encryption keys. If you choose to provide your own encryption key, the request
	// headers you provide in UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) and
	// UploadPartCopy
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
	// requests must match the headers you used in the request to initiate the upload
	// by using CreateMultipartUpload. To perform a multipart upload with encryption
	// using an Amazon Web Services KMS key, the requester must have permission to the
	// kms:Decrypt and kms:GenerateDataKey* actions on the key. These permissions are
	// required because Amazon S3 must decrypt and read data from the encrypted file
	// parts before it completes the multipart upload. For more information, see
	// Multipart upload API and permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
	// in the Amazon S3 User Guide. If your Identity and Access Management (IAM) user
	// or role is in the same Amazon Web Services account as the KMS key, then you must
	// have these permissions on the key policy. If your IAM user or role belongs to a
	// different account than the key, then you must have the permissions on both the
	// key policy and your IAM user or role. For more information, see Protecting Data
	// Using Server-Side Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
	// Access Permissions When copying an object, you can optionally specify the
	// accounts or groups that should be granted specific permissions on the new
	// object. There are two ways to grant the permissions using the request
	// headers:
	//
	// * Specify a canned ACL with the x-amz-acl request header. For more
	// information, see Canned ACL
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
	//
	// *
	// Specify access permissions explicitly with the x-amz-grant-read,
	// x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
	// headers. These parameters map to the set of permissions that Amazon S3 supports
	// in an ACL. For more information, see Access Control List (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
	//
	// You can
	// use either a canned ACL or specify access permissions explicitly. You cannot do
	// both. Server-Side- Encryption-Specific Request Headers You can optionally tell
	// Amazon S3 to encrypt data at rest using server-side encryption. Server-side
	// encryption is for data encryption at rest. Amazon S3 encrypts your data as it
	// writes it to disks in its data centers and decrypts it when you access it. The
	// option you use depends on whether you want to use Amazon Web Services managed
	// encryption keys or provide your own encryption key.
	//
	// * Use encryption keys
	// managed by Amazon S3 or customer managed key stored in Amazon Web Services Key
	// Management Service (Amazon Web Services KMS) – If you want Amazon Web Services
	// to manage the keys used to encrypt data, specify the following headers in the
	// request.
	//
	// * x-amz-server-side-encryption
	//
	// *
	// x-amz-server-side-encryption-aws-kms-key-id
	//
	// *
	// x-amz-server-side-encryption-context
	//
	// If you specify
	// x-amz-server-side-encryption:aws:kms, but don't provide
	// x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web
	// Services managed key in Amazon Web Services KMS to protect the data. All GET and
	// PUT requests for an object protected by Amazon Web Services KMS fail if you
	// don't make them with SSL or by using SigV4. For more information about
	// server-side encryption with KMS key (SSE-KMS), see Protecting Data Using
	// Server-Side Encryption with KMS keys
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
	//
	// *
	// Use customer-provided encryption keys – If you want to manage your own
	// encryption keys, provide all the following headers in the request.
	//
	// *
	// x-amz-server-side-encryption-customer-algorithm
	//
	// *
	// x-amz-server-side-encryption-customer-key
	//
	// *
	// x-amz-server-side-encryption-customer-key-MD5
	//
	// For more information about
	// server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using
	// Server-Side Encryption with KMS keys
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
	//
	// Access-Control-List
	// (ACL)-Specific Request Headers You also can use the following access
	// control–related headers with this operation. By default, all objects are
	// private. Only the owner has full access control. When adding a new object, you
	// can grant permissions to individual Amazon Web Services accounts or to
	// predefined groups defined by Amazon S3. These permissions are then added to the
	// access control list (ACL) on the object. For more information, see Using ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). With
	// this operation, you can grant access permissions using one of the following two
	// methods:
	//
	// * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of
	// predefined ACLs, known as canned ACLs. Each canned ACL has a predefined set of
	// grantees and permissions. For more information, see Canned ACL
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
	//
	// *
	// Specify access permissions explicitly — To explicitly grant access permissions
	// to specific Amazon Web Services accounts or groups, use the following headers.
	// Each header maps to specific permissions that Amazon S3 supports in an ACL. For
	// more information, see Access Control List (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). In the
	// header, you specify a list of grantees who get the specific permission. To grant
	// permissions explicitly, use:
	//
	// * x-amz-grant-read
	//
	// * x-amz-grant-write
	//
	// *
	// x-amz-grant-read-acp
	//
	// * x-amz-grant-write-acp
	//
	// * x-amz-grant-full-control
	//
	// You
	// specify each grantee as a type=value pair, where the type is one of the
	// following:
	//
	// * id – if the value specified is the canonical user ID of an Amazon
	// Web Services account
	//
	// * uri – if you are granting permissions to a predefined
	// group
	//
	// * emailAddress – if the value specified is the email address of an Amazon
	// Web Services account Using email addresses to specify a grantee is only
	// supported in the following Amazon Web Services Regions:
	//
	// * US East (N.
	// Virginia)
	//
	// * US West (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific
	// (Singapore)
	//
	// * Asia Pacific (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe
	// (Ireland)
	//
	// * South America (São Paulo)
	//
	// For a list of all the Amazon S3
	// supported Regions and endpoints, see Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// For example, the following
	// x-amz-grant-read header grants the Amazon Web Services accounts identified by
	// account IDs permissions to read object data and its metadata: x-amz-grant-read:
	// id="11112222333", id="444455556666"
	//
	// The following operations are related to
	// CreateMultipartUpload:
	//
	// * UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	CreateMultipartUpload(ctx context.Context, params *s3.CreateMultipartUploadInput,
		optFns ...func(*s3.Options)) (*s3.CreateMultipartUploadOutput, error)

	// Deletes the S3 bucket. All objects (including all object versions and delete
	// markers) in the bucket must be deleted before the bucket itself can be deleted.
	// Related Resources
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	DeleteBucket(ctx context.Context, params *s3.DeleteBucketInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketOutput, error)

	// Deletes an analytics configuration for the bucket (specified by the analytics
	// configuration ID). To use this operation, you must have permissions to perform
	// the s3:PutAnalyticsConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about the Amazon S3 analytics feature, see Amazon S3 Analytics –
	// Storage Class Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
	// The following operations are related to DeleteBucketAnalyticsConfiguration:
	//
	// *
	// GetBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
	//
	// *
	// ListBucketAnalyticsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
	//
	// *
	// PutBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
	DeleteBucketAnalyticsConfiguration(ctx context.Context, params *s3.DeleteBucketAnalyticsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketAnalyticsConfigurationOutput, error)

	// Deletes the cors configuration information set for the bucket. To use this
	// operation, you must have permission to perform the s3:PutBucketCORS action. The
	// bucket owner has this permission by default and can grant this permission to
	// others. For information about cors, see Enabling Cross-Origin Resource Sharing
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon S3
	// User Guide. Related Resources:
	//
	// * PutBucketCors
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
	//
	// *
	// RESTOPTIONSobject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
	DeleteBucketCors(ctx context.Context, params *s3.DeleteBucketCorsInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketCorsOutput, error)

	// This implementation of the DELETE action removes default encryption from the
	// bucket. For information about the Amazon S3 default encryption feature, see
	// Amazon S3 Default Bucket Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
	// Amazon S3 User Guide. To use this operation, you must have permissions to
	// perform the s3:PutEncryptionConfiguration action. The bucket owner has this
	// permission by default. The bucket owner can grant this permission to others. For
	// more information about permissions, 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)
	// and Managing Access Permissions to your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. Related Resources
	//
	// * PutBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
	//
	// *
	// GetBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
	DeleteBucketEncryption(ctx context.Context, params *s3.DeleteBucketEncryptionInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketEncryptionOutput, error)

	// Deletes the S3 Intelligent-Tiering configuration from the specified bucket. The
	// S3 Intelligent-Tiering storage class is designed to optimize storage costs by
	// automatically moving data to the most cost-effective storage access tier,
	// without performance impact or operational overhead. S3 Intelligent-Tiering
	// delivers automatic cost savings in three low latency and high throughput access
	// tiers. To get the lowest storage cost on data that can be accessed in minutes to
	// hours, you can choose to activate additional archiving capabilities. The S3
	// Intelligent-Tiering storage class is the ideal storage class for data with
	// unknown, changing, or unpredictable access patterns, independent of object size
	// or retention period. If the size of an object is less than 128 KB, it is not
	// monitored and not eligible for auto-tiering. Smaller objects can be stored, but
	// they are always charged at the Frequent Access tier rates in the S3
	// Intelligent-Tiering storage class. For more information, see Storage class for
	// automatically optimizing frequently and infrequently accessed objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
	// Operations related to DeleteBucketIntelligentTieringConfiguration include:
	//
	// *
	// GetBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
	//
	// *
	// PutBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
	//
	// *
	// ListBucketIntelligentTieringConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
	DeleteBucketIntelligentTieringConfiguration(ctx context.Context, params *s3.DeleteBucketIntelligentTieringConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketIntelligentTieringConfigurationOutput, error)

	// Deletes an inventory configuration (identified by the inventory ID) from the
	// bucket. To use this operation, you must have permissions to perform the
	// s3:PutInventoryConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
	// Operations related to DeleteBucketInventoryConfiguration include:
	//
	// *
	// GetBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
	//
	// *
	// PutBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
	//
	// *
	// ListBucketInventoryConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
	DeleteBucketInventoryConfiguration(ctx context.Context, params *s3.DeleteBucketInventoryConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketInventoryConfigurationOutput, error)

	// Deletes the lifecycle configuration from the specified bucket. Amazon S3 removes
	// all the lifecycle configuration rules in the lifecycle subresource associated
	// with the bucket. Your objects never expire, and Amazon S3 no longer
	// automatically deletes any objects on the basis of rules contained in the deleted
	// lifecycle configuration. To use this operation, you must have permission to
	// perform the s3:PutLifecycleConfiguration action. By default, the bucket owner
	// has this permission and the bucket owner can grant this permission to others.
	// There is usually some time lag before lifecycle configuration deletion is fully
	// propagated to all the Amazon S3 systems. For more information about the object
	// expiration, see Elements to Describe Lifecycle Actions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
	// Related actions include:
	//
	// * PutBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
	//
	// *
	// GetBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
	DeleteBucketLifecycle(ctx context.Context, params *s3.DeleteBucketLifecycleInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketLifecycleOutput, error)

	// Deletes a metrics configuration for the Amazon CloudWatch request metrics
	// (specified by the metrics configuration ID) from the bucket. Note that this
	// doesn't include the daily storage metrics. To use this operation, you must have
	// permissions to perform the s3:PutMetricsConfiguration action. The bucket owner
	// has this permission by default. The bucket owner can grant this permission to
	// others. For more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about CloudWatch request metrics for Amazon S3, see Monitoring
	// Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
	// The following operations are related to DeleteBucketMetricsConfiguration:
	//
	// *
	// GetBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
	//
	// *
	// PutBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
	//
	// *
	// ListBucketMetricsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
	//
	// *
	// Monitoring Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
	DeleteBucketMetricsConfiguration(ctx context.Context, params *s3.DeleteBucketMetricsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketMetricsConfigurationOutput, error)

	// Removes OwnershipControls for an Amazon S3 bucket. To use this operation, you
	// must have the s3:PutBucketOwnershipControls permission. For more information
	// about Amazon S3 permissions, see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
	// For information about Amazon S3 Object Ownership, see Using Object Ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
	// The following operations are related to DeleteBucketOwnershipControls:
	//
	// *
	// GetBucketOwnershipControls
	//
	// * PutBucketOwnershipControls
	DeleteBucketOwnershipControls(ctx context.Context, params *s3.DeleteBucketOwnershipControlsInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketOwnershipControlsOutput, error)

	// This implementation of the DELETE action uses the policy subresource to delete
	// the policy of a specified bucket. If you are using an identity other than the
	// root user of the Amazon Web Services account that owns the bucket, the calling
	// identity must have the DeleteBucketPolicy permissions on the specified bucket
	// and belong to the bucket owner's account to use this operation. If you don't
	// have DeleteBucketPolicy permissions, Amazon S3 returns a 403 Access Denied
	// error. If you have the correct permissions, but you're not using an identity
	// that belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not
	// Allowed error. As a security precaution, the root user of the Amazon Web
	// Services account that owns a bucket can always use this operation, even if the
	// policy explicitly denies the root user the ability to perform this action. For
	// more information about bucket policies, see Using Bucket Policies and
	// UserPolicies
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). The
	// following operations are related to DeleteBucketPolicy
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	DeleteBucketPolicy(ctx context.Context, params *s3.DeleteBucketPolicyInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketPolicyOutput, error)

	// Deletes the replication configuration from the bucket. To use this operation,
	// you must have permissions to perform the s3:PutReplicationConfiguration action.
	// The bucket owner has these permissions by default and can grant it to others.
	// For more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// It can take a while for the deletion of a replication configuration to fully
	// propagate. For information about replication configuration, see Replication
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) in the Amazon
	// S3 User Guide. The following operations are related to
	// DeleteBucketReplication:
	//
	// * PutBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
	//
	// *
	// GetBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
	DeleteBucketReplication(ctx context.Context, params *s3.DeleteBucketReplicationInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketReplicationOutput, error)

	// Deletes the tags from the bucket. To use this operation, you must have
	// permission to perform the s3:PutBucketTagging action. By default, the bucket
	// owner has this permission and can grant this permission to others. The following
	// operations are related to DeleteBucketTagging:
	//
	// * GetBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
	//
	// *
	// PutBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
	DeleteBucketTagging(ctx context.Context, params *s3.DeleteBucketTaggingInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketTaggingOutput, error)

	// This action removes the website configuration for a bucket. Amazon S3 returns a
	// 200 OK response upon successfully deleting a website configuration on the
	// specified bucket. You will get a 200 OK response if the website configuration
	// you are trying to delete does not exist on the bucket. Amazon S3 returns a 404
	// response if the bucket specified in the request does not exist. This DELETE
	// action requires the S3:DeleteBucketWebsite permission. By default, only the
	// bucket owner can delete the website configuration attached to a bucket. However,
	// bucket owners can grant other users permission to delete the website
	// configuration by writing a bucket policy granting them the
	// S3:DeleteBucketWebsite permission. For more information about hosting websites,
	// see Hosting Websites on Amazon S3
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). The
	// following operations are related to DeleteBucketWebsite:
	//
	// * GetBucketWebsite
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)
	//
	// *
	// PutBucketWebsite
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
	DeleteBucketWebsite(ctx context.Context, params *s3.DeleteBucketWebsiteInput,
		optFns ...func(*s3.Options)) (*s3.DeleteBucketWebsiteOutput, error)

	// Removes the null version (if there is one) of an object and inserts a delete
	// marker, which becomes the latest version of the object. If there isn't a null
	// version, Amazon S3 does not remove any objects but will still respond that the
	// command was successful. To remove a specific version, you must be the bucket
	// owner and you must use the version Id subresource. Using this subresource
	// permanently deletes the version. If the object deleted is a delete marker,
	// Amazon S3 sets the response header, x-amz-delete-marker, to true. If the object
	// you want to delete is in a bucket where the bucket versioning configuration is
	// MFA Delete enabled, you must include the x-amz-mfa request header in the DELETE
	// versionId request. Requests that include x-amz-mfa must use HTTPS. For more
	// information about MFA Delete, see Using MFA Delete
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html). To see
	// sample requests that use versioning, see Sample Request
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
	// You can delete objects by explicitly calling DELETE Object or configure its
	// lifecycle (PutBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html))
	// to enable Amazon S3 to remove them for you. If you want to block users or
	// accounts from removing or deleting objects from your bucket, you must deny them
	// the s3:DeleteObject, s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration
	// actions. The following action is related to DeleteObject:
	//
	// * PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	DeleteObject(ctx context.Context, params *s3.DeleteObjectInput,
		optFns ...func(*s3.Options)) (*s3.DeleteObjectOutput, error)

	// This action enables you to delete multiple objects from a bucket using a single
	// HTTP request. If you know the object keys that you want to delete, then this
	// action provides a suitable alternative to sending individual delete requests,
	// reducing per-request overhead. The request contains a list of up to 1000 keys
	// that you want to delete. In the XML, you provide the object key names, and
	// optionally, version IDs if you want to delete a specific version of the object
	// from a versioning-enabled bucket. For each key, Amazon S3 performs a delete
	// action and returns the result of that delete, success, or failure, in the
	// response. Note that if the object specified in the request is not found, Amazon
	// S3 returns the result as deleted. The action supports two modes for the
	// response: verbose and quiet. By default, the action uses verbose mode in which
	// the response includes the result of deletion of each key in your request. In
	// quiet mode the response includes only keys where the delete action encountered
	// an error. For a successful deletion, the action does not return any information
	// about the delete in the response body. When performing this action on an MFA
	// Delete enabled bucket, that attempts to delete any versioned objects, you must
	// include an MFA token. If you do not provide one, the entire request will fail,
	// even if there are non-versioned objects you are trying to delete. If you provide
	// an invalid token, whether there are versioned keys in the request or not, the
	// entire Multi-Object Delete request will fail. For information about MFA Delete,
	// see  MFA Delete
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
	// Finally, the Content-MD5 header is required for all Multi-Object Delete
	// requests. Amazon S3 uses the header value to ensure that your request body has
	// not been altered in transit. The following operations are related to
	// DeleteObjects:
	//
	// * CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	DeleteObjects(ctx context.Context, params *s3.DeleteObjectsInput,
		optFns ...func(*s3.Options)) (*s3.DeleteObjectsOutput, error)

	// Removes the entire tag set from the specified object. For more information about
	// managing object tags, see  Object Tagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). To use
	// this operation, you must have permission to perform the s3:DeleteObjectTagging
	// action. To delete tags of a specific object version, add the versionId query
	// parameter in the request. You will need permission for the
	// s3:DeleteObjectVersionTagging action. The following operations are related to
	// DeleteBucketMetricsConfiguration:
	//
	// * PutObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
	//
	// *
	// GetObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
	DeleteObjectTagging(ctx context.Context, params *s3.DeleteObjectTaggingInput,
		optFns ...func(*s3.Options)) (*s3.DeleteObjectTaggingOutput, error)

	// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use this
	// operation, you must have the s3:PutBucketPublicAccessBlock permission. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// The following operations are related to DeletePublicAccessBlock:
	//
	// * Using Amazon
	// S3 Block Public Access
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
	//
	// *
	// GetPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
	//
	// *
	// PutPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
	//
	// *
	// GetBucketPolicyStatus
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
	DeletePublicAccessBlock(ctx context.Context, params *s3.DeletePublicAccessBlockInput,
		optFns ...func(*s3.Options)) (*s3.DeletePublicAccessBlockOutput, error)

	// This implementation of the GET action uses the accelerate subresource to return
	// the Transfer Acceleration state of a bucket, which is either Enabled or
	// Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
	// enables you to perform faster data transfers to and from Amazon S3. To use this
	// operation, you must have permission to perform the s3:GetAccelerateConfiguration
	// action. The bucket owner has this permission by default. The bucket owner can
	// grant this permission to others. For more information about permissions, 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)
	// and Managing Access Permissions to your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. You set the Transfer Acceleration state of an
	// existing bucket to Enabled or Suspended by using the
	// PutBucketAccelerateConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
	// operation. A GET accelerate request does not return a state value for a bucket
	// that has no transfer acceleration state. A bucket has no Transfer Acceleration
	// state if a state has never been set on the bucket. For more information about
	// transfer acceleration, see Transfer Acceleration
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html) in
	// the Amazon S3 User Guide. Related Resources
	//
	// * PutBucketAccelerateConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
	GetBucketAccelerateConfiguration(ctx context.Context, params *s3.GetBucketAccelerateConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketAccelerateConfigurationOutput, error)

	// This implementation of the GET action uses the acl subresource to return the
	// access control list (ACL) of a bucket. To use GET to return the ACL of the
	// bucket, you must have READ_ACP access to the bucket. If READ_ACP permission is
	// granted to the anonymous user, you can return the ACL of the bucket without
	// using an authorization header. If your bucket uses the bucket owner enforced
	// setting for S3 Object Ownership, requests to read ACLs are still supported and
	// return the bucket-owner-full-control ACL with the owner being the account that
	// created the bucket. For more information, see  Controlling object ownership and
	// disabling ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. Related Resources
	//
	// * ListObjects
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
	GetBucketAcl(ctx context.Context, params *s3.GetBucketAclInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketAclOutput, error)

	// This implementation of the GET action returns an analytics configuration
	// (identified by the analytics configuration ID) from the bucket. To use this
	// operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
	// action. The bucket owner has this permission by default. The bucket owner can
	// grant this permission to others. For more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. For information about Amazon S3 analytics feature,
	// see Amazon S3 Analytics – Storage Class Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
	// in the Amazon S3 User Guide. Related Resources
	//
	// *
	// DeleteBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
	//
	// *
	// ListBucketAnalyticsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
	//
	// *
	// PutBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
	GetBucketAnalyticsConfiguration(ctx context.Context, params *s3.GetBucketAnalyticsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketAnalyticsConfigurationOutput, error)

	// Returns the Cross-Origin Resource Sharing (CORS) configuration information set
	// for the bucket. To use this operation, you must have permission to perform the
	// s3:GetBucketCORS action. By default, the bucket owner has this permission and
	// can grant it to others. For more information about CORS, see  Enabling
	// Cross-Origin Resource Sharing
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). The following
	// operations are related to GetBucketCors:
	//
	// * PutBucketCors
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
	//
	// *
	// DeleteBucketCors
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
	GetBucketCors(ctx context.Context, params *s3.GetBucketCorsInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketCorsOutput, error)

	// Returns the default encryption configuration for an Amazon S3 bucket. If the
	// bucket does not have a default encryption configuration, GetBucketEncryption
	// returns ServerSideEncryptionConfigurationNotFoundError. For information about
	// the Amazon S3 default encryption feature, see Amazon S3 Default Bucket
	// Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). To use
	// this operation, you must have permission to perform the
	// s3:GetEncryptionConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// The following operations are related to GetBucketEncryption:
	//
	// *
	// PutBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
	//
	// *
	// DeleteBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
	GetBucketEncryption(ctx context.Context, params *s3.GetBucketEncryptionInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketEncryptionOutput, error)

	// Gets the S3 Intelligent-Tiering configuration from the specified bucket. The S3
	// Intelligent-Tiering storage class is designed to optimize storage costs by
	// automatically moving data to the most cost-effective storage access tier,
	// without performance impact or operational overhead. S3 Intelligent-Tiering
	// delivers automatic cost savings in three low latency and high throughput access
	// tiers. To get the lowest storage cost on data that can be accessed in minutes to
	// hours, you can choose to activate additional archiving capabilities. The S3
	// Intelligent-Tiering storage class is the ideal storage class for data with
	// unknown, changing, or unpredictable access patterns, independent of object size
	// or retention period. If the size of an object is less than 128 KB, it is not
	// monitored and not eligible for auto-tiering. Smaller objects can be stored, but
	// they are always charged at the Frequent Access tier rates in the S3
	// Intelligent-Tiering storage class. For more information, see Storage class for
	// automatically optimizing frequently and infrequently accessed objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
	// Operations related to GetBucketIntelligentTieringConfiguration include:
	//
	// *
	// DeleteBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
	//
	// *
	// PutBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
	//
	// *
	// ListBucketIntelligentTieringConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
	GetBucketIntelligentTieringConfiguration(ctx context.Context, params *s3.GetBucketIntelligentTieringConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketIntelligentTieringConfigurationOutput, error)

	// Returns an inventory configuration (identified by the inventory configuration
	// ID) from the bucket. To use this operation, you must have permissions to perform
	// the s3:GetInventoryConfiguration action. The bucket owner has this permission by
	// default and can grant this permission to others. For more information about
	// permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html). The
	// following operations are related to GetBucketInventoryConfiguration:
	//
	// *
	// DeleteBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
	//
	// *
	// ListBucketInventoryConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
	//
	// *
	// PutBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
	GetBucketInventoryConfiguration(ctx context.Context, params *s3.GetBucketInventoryConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketInventoryConfigurationOutput, error)

	// Bucket lifecycle configuration now supports specifying a lifecycle rule using an
	// object key name prefix, one or more object tags, or a combination of both.
	// Accordingly, this section describes the latest API. The response describes the
	// new filter element that you can use to specify a filter to select a subset of
	// objects to which the rule applies. If you are using a previous version of the
	// lifecycle configuration, it still works. For the earlier action, see
	// GetBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html).
	// Returns the lifecycle configuration information set on the bucket. For
	// information about lifecycle configuration, see Object Lifecycle Management
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). To
	// use this operation, you must have permission to perform the
	// s3:GetLifecycleConfiguration action. The bucket owner has this permission, by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// GetBucketLifecycleConfiguration has the following special error:
	//
	// * Error code:
	// NoSuchLifecycleConfiguration
	//
	// * Description: The lifecycle configuration does
	// not exist.
	//
	// * HTTP Status Code: 404 Not Found
	//
	// * SOAP Fault Code Prefix:
	// Client
	//
	// The following operations are related to
	// GetBucketLifecycleConfiguration:
	//
	// * GetBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)
	//
	// *
	// PutBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
	//
	// *
	// DeleteBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
	GetBucketLifecycleConfiguration(ctx context.Context, params *s3.GetBucketLifecycleConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketLifecycleConfigurationOutput, error)

	// Returns the Region the bucket resides in. You set the bucket's Region using the
	// LocationConstraint request parameter in a CreateBucket request. For more
	// information, see CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html). To use
	// this implementation of the operation, you must be the bucket owner. To use this
	// API against an access point, provide the alias of the access point in place of
	// the bucket name. The following operations are related to GetBucketLocation:
	//
	// *
	// GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	GetBucketLocation(ctx context.Context, params *s3.GetBucketLocationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketLocationOutput, error)

	// Returns the logging status of a bucket and the permissions users have to view
	// and modify that status. To use GET, you must be the bucket owner. The following
	// operations are related to GetBucketLogging:
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// PutBucketLogging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)
	GetBucketLogging(ctx context.Context, params *s3.GetBucketLoggingInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketLoggingOutput, error)

	// Gets a metrics configuration (specified by the metrics configuration ID) from
	// the bucket. Note that this doesn't include the daily storage metrics. To use
	// this operation, you must have permissions to perform the
	// s3:GetMetricsConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about CloudWatch request metrics for Amazon S3, see Monitoring
	// Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
	// The following operations are related to GetBucketMetricsConfiguration:
	//
	// *
	// PutBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
	//
	// *
	// DeleteBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
	//
	// *
	// ListBucketMetricsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
	//
	// *
	// Monitoring Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
	GetBucketMetricsConfiguration(ctx context.Context, params *s3.GetBucketMetricsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketMetricsConfigurationOutput, error)

	// Returns the notification configuration of a bucket. If notifications are not
	// enabled on the bucket, the action returns an empty NotificationConfiguration
	// element. By default, you must be the bucket owner to read the notification
	// configuration of a bucket. However, the bucket owner can use a bucket policy to
	// grant permission to other users to read this configuration with the
	// s3:GetBucketNotification permission. For more information about setting and
	// reading the notification configuration on a bucket, see Setting Up Notification
	// of Bucket Events
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). For
	// more information about bucket policies, see Using Bucket Policies
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). The
	// following action is related to GetBucketNotification:
	//
	// * PutBucketNotification
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html)
	GetBucketNotificationConfiguration(ctx context.Context, params *s3.GetBucketNotificationConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketNotificationConfigurationOutput, error)

	// Retrieves OwnershipControls for an Amazon S3 bucket. To use this operation, you
	// must have the s3:GetBucketOwnershipControls permission. For more information
	// about Amazon S3 permissions, see Specifying permissions in a policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html).
	// For information about Amazon S3 Object Ownership, see Using Object Ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html).
	// The following operations are related to GetBucketOwnershipControls:
	//
	// *
	// PutBucketOwnershipControls
	//
	// * DeleteBucketOwnershipControls
	GetBucketOwnershipControls(ctx context.Context, params *s3.GetBucketOwnershipControlsInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketOwnershipControlsOutput, error)

	// Returns the policy of a specified bucket. If you are using an identity other
	// than the root user of the Amazon Web Services account that owns the bucket, the
	// calling identity must have the GetBucketPolicy permissions on the specified
	// bucket and belong to the bucket owner's account in order to use this operation.
	// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
	// Denied error. If you have the correct permissions, but you're not using an
	// identity that belongs to the bucket owner's account, Amazon S3 returns a 405
	// Method Not Allowed error. As a security precaution, the root user of the Amazon
	// Web Services account that owns a bucket can always use this operation, even if
	// the policy explicitly denies the root user the ability to perform this action.
	// For more information about bucket policies, see Using Bucket Policies and User
	// Policies
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). The
	// following action is related to GetBucketPolicy:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	GetBucketPolicy(ctx context.Context, params *s3.GetBucketPolicyInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketPolicyOutput, error)

	// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
	// bucket is public. In order to use this operation, you must have the
	// s3:GetBucketPolicyStatus permission. For more information about Amazon S3
	// permissions, see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
	// For more information about when Amazon S3 considers a bucket 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).
	// The following operations are related to GetBucketPolicyStatus:
	//
	// * Using Amazon
	// S3 Block Public Access
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
	//
	// *
	// GetPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
	//
	// *
	// PutPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
	//
	// *
	// DeletePublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
	GetBucketPolicyStatus(ctx context.Context, params *s3.GetBucketPolicyStatusInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketPolicyStatusOutput, error)

	// Returns the replication configuration of a bucket. It can take a while to
	// propagate the put or delete a replication configuration to all Amazon S3
	// systems. Therefore, a get request soon after put or delete can return a wrong
	// result. For information about replication configuration, see Replication
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) in the Amazon
	// S3 User Guide. This action requires permissions for the
	// s3:GetReplicationConfiguration action. For more information about permissions,
	// see Using Bucket Policies and User Policies
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html). If
	// you include the Filter element in a replication configuration, you must also
	// include the DeleteMarkerReplication and Priority elements. The response also
	// returns those elements. For information about GetBucketReplication errors, see
	// List of replication-related error codes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
	// The following operations are related to GetBucketReplication:
	//
	// *
	// PutBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
	//
	// *
	// DeleteBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
	GetBucketReplication(ctx context.Context, params *s3.GetBucketReplicationInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketReplicationOutput, error)

	// Returns the request payment configuration of a bucket. To use this version of
	// the operation, you must be the bucket owner. For more information, see Requester
	// Pays Buckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html). The
	// following operations are related to GetBucketRequestPayment:
	//
	// * ListObjects
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
	GetBucketRequestPayment(ctx context.Context, params *s3.GetBucketRequestPaymentInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketRequestPaymentOutput, error)

	// Returns the tag set associated with the bucket. To use this operation, you must
	// have permission to perform the s3:GetBucketTagging action. By default, the
	// bucket owner has this permission and can grant this permission to others.
	// GetBucketTagging has the following special error:
	//
	// * Error code: NoSuchTagSet
	//
	// *
	// Description: There is no tag set associated with the bucket.
	//
	// The following
	// operations are related to GetBucketTagging:
	//
	// * PutBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
	//
	// *
	// DeleteBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
	GetBucketTagging(ctx context.Context, params *s3.GetBucketTaggingInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketTaggingOutput, error)

	// Returns the versioning state of a bucket. To retrieve the versioning state of a
	// bucket, you must be the bucket owner. This implementation also returns the MFA
	// Delete status of the versioning state. If the MFA Delete status is enabled, the
	// bucket owner must use an authentication device to change the versioning state of
	// the bucket. The following operations are related to GetBucketVersioning:
	//
	// *
	// GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	GetBucketVersioning(ctx context.Context, params *s3.GetBucketVersioningInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketVersioningOutput, error)

	// Returns the website configuration for a bucket. To host website on Amazon S3,
	// you can configure a bucket as website by adding a website configuration. For
	// more information about hosting websites, see Hosting Websites on Amazon S3
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). This GET
	// action requires the S3:GetBucketWebsite permission. By default, only the bucket
	// owner can read the bucket website configuration. However, bucket owners can
	// allow other users to read the website configuration by writing a bucket policy
	// granting them the S3:GetBucketWebsite permission. The following operations are
	// related to DeleteBucketWebsite:
	//
	// * DeleteBucketWebsite
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html)
	//
	// *
	// PutBucketWebsite
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
	GetBucketWebsite(ctx context.Context, params *s3.GetBucketWebsiteInput,
		optFns ...func(*s3.Options)) (*s3.GetBucketWebsiteOutput, error)

	// Retrieves objects from Amazon S3. To use GET, you must have READ access to the
	// object. If you grant READ access to the anonymous user, you can return the
	// object without using an authorization header. An Amazon S3 bucket has no
	// directory hierarchy such as you would find in a typical computer file system.
	// You can, however, create a logical hierarchy by using object key names that
	// imply a folder structure. For example, instead of naming an object sample.jpg,
	// you can name it photos/2006/February/sample.jpg. To get an object from such a
	// logical hierarchy, specify the full key name for the object in the GET
	// operation. For a virtual hosted-style request example, if you have the object
	// photos/2006/February/sample.jpg, specify the resource as
	// /photos/2006/February/sample.jpg. For a path-style request example, if you have
	// the object photos/2006/February/sample.jpg in the bucket named examplebucket,
	// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For more
	// information about request types, see HTTP Host Header Bucket Specification
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
	// For more information about returning the ACL of an object, see GetObjectAcl
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html). If the
	// object you are retrieving is stored in the S3 Glacier or S3 Glacier Deep Archive
	// storage class, or S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep
	// Archive tiers, before you can retrieve the object you must first restore a copy
	// using RestoreObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
	// Otherwise, this action returns an InvalidObjectStateError error. For information
	// about restoring archived objects, see Restoring Archived Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
	// Encryption request headers, like x-amz-server-side-encryption, should not be
	// sent for GET requests if your object uses server-side encryption with KMS keys
	// (SSE-KMS) or server-side encryption with Amazon S3–managed encryption keys
	// (SSE-S3). If your object does use these types of keys, you’ll get an HTTP 400
	// BadRequest error. If you encrypt an object by using server-side encryption with
	// customer-provided encryption keys (SSE-C) when you store the object in Amazon
	// S3, then when you GET the object, you must use the following headers:
	//
	// *
	// x-amz-server-side-encryption-customer-algorithm
	//
	// *
	// x-amz-server-side-encryption-customer-key
	//
	// *
	// x-amz-server-side-encryption-customer-key-MD5
	//
	// For more information about SSE-C,
	// see Server-Side Encryption (Using Customer-Provided Encryption Keys)
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
	// Assuming you have the relevant permission to read object tags, the response also
	// returns the x-amz-tagging-count header that provides the count of number of tags
	// associated with the object. You can use GetObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) to
	// retrieve the tag set associated with an object. Permissions You need the
	// relevant read object (or version) permission for this operation. For more
	// information, see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). If
	// the object you request does not exist, the error Amazon S3 returns depends on
	// whether you also have the s3:ListBucket permission.
	//
	// * If you have the
	// s3:ListBucket permission on the bucket, Amazon S3 will return an HTTP status
	// code 404 ("no such key") error.
	//
	// * If you don’t have the s3:ListBucket
	// permission, Amazon S3 will return an HTTP status code 403 ("access denied")
	// error.
	//
	// Versioning By default, the GET action returns the current version of an
	// object. To return a different version, use the versionId subresource.
	//
	// * If you
	// supply a versionId, you need the s3:GetObjectVersion permission to access a
	// specific version of an object. If you request a specific version, you do not
	// need to have the s3:GetObject permission.
	//
	// * If the current version of the
	// object is a delete marker, Amazon S3 behaves as if the object was deleted and
	// includes x-amz-delete-marker: true in the response.
	//
	// For more information about
	// versioning, see PutBucketVersioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html).
	// Overriding Response Header Values There are times when you want to override
	// certain response header values in a GET response. For example, you might
	// override the Content-Disposition response header value in your GET request. You
	// can override values for a set of response headers using the following query
	// parameters. These response header values are sent only on a successful request,
	// that is, when status code 200 OK is returned. The set of headers you can
	// override using these parameters is a subset of the headers that Amazon S3
	// accepts when you create an object. The response headers that you can override
	// for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
	// Content-Disposition, and Content-Encoding. To override these header values in
	// the GET response, you use the following request parameters. You must sign the
	// request, either using an Authorization header or a presigned URL, when using
	// these parameters. They cannot be used with an unsigned (anonymous) request.
	//
	// *
	// response-content-type
	//
	// * response-content-language
	//
	// * response-expires
	//
	// *
	// response-cache-control
	//
	// * response-content-disposition
	//
	// *
	// response-content-encoding
	//
	// Additional Considerations about Request Headers If
	// both of the If-Match and If-Unmodified-Since headers are present in the request
	// as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
	// condition evaluates to false; then, S3 returns 200 OK and the data requested. If
	// both of the If-None-Match and If-Modified-Since headers are present in the
	// request as follows: If-None-Match condition evaluates to false, and;
	// If-Modified-Since condition evaluates to true; then, S3 returns 304 Not Modified
	// response code. For more information about conditional requests, see RFC 7232
	// (https://tools.ietf.org/html/rfc7232). The following operations are related to
	// GetObject:
	//
	// * ListBuckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
	//
	// *
	// GetObjectAcl
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
	GetObject(ctx context.Context, params *s3.GetObjectInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectOutput, error)

	// Returns the access control list (ACL) of an object. To use this operation, you
	// must have s3:GetObjectAcl permissions or READ_ACP access to the object. For more
	// information, see Mapping of ACL permissions and access policy permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#acl-access-policy-permission-mapping)
	// in the Amazon S3 User Guide This action is not supported by Amazon S3 on
	// Outposts. Versioning By default, GET returns ACL information about the current
	// version of an object. To return ACL information about a different version, use
	// the versionId subresource. If your bucket uses the bucket owner enforced setting
	// for S3 Object Ownership, requests to read ACLs are still supported and return
	// the bucket-owner-full-control ACL with the owner being the account that created
	// the bucket. For more information, see  Controlling object ownership and
	// disabling ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. The following operations are related to
	// GetObjectAcl:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	//
	// *
	// PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	GetObjectAcl(ctx context.Context, params *s3.GetObjectAclInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectAclOutput, error)

	// Retrieves all the metadata from an object without returning the object itself.
	// This action is useful if you're interested only in an object's metadata. To use
	// GetObjectAttributes, you must have READ access to the object.
	// GetObjectAttributes combines the functionality of GetObjectAcl,
	// GetObjectLegalHold, GetObjectLockConfiguration, GetObjectRetention,
	// GetObjectTagging, HeadObject, and ListParts. All of the data returned with each
	// of those individual calls can be returned with a single call to
	// GetObjectAttributes. If you encrypt an object by using server-side encryption
	// with customer-provided encryption keys (SSE-C) when you store the object in
	// Amazon S3, then when you retrieve the metadata from the object, you must use the
	// following headers:
	//
	// * x-amz-server-side-encryption-customer-algorithm
	//
	// *
	// x-amz-server-side-encryption-customer-key
	//
	// *
	// x-amz-server-side-encryption-customer-key-MD5
	//
	// For more information about SSE-C,
	// see Server-Side Encryption (Using Customer-Provided Encryption Keys)
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
	// in the Amazon S3 User Guide.
	//
	// * Encryption request headers, such as
	// x-amz-server-side-encryption, should not be sent for GET requests if your object
	// uses server-side encryption with Amazon Web Services KMS keys stored in Amazon
	// Web Services Key Management Service (SSE-KMS) or server-side encryption with
	// Amazon S3 managed encryption keys (SSE-S3). If your object does use these types
	// of keys, you'll get an HTTP 400 Bad Request error.
	//
	// * The last modified property
	// in this case is the creation date of the object.
	//
	// Consider the following when
	// using request headers:
	//
	// * If both of the If-Match and If-Unmodified-Since
	// headers are present in the request as follows, then Amazon S3 returns the HTTP
	// status code 200 OK and the data requested:
	//
	// * If-Match condition evaluates to
	// true.
	//
	// * If-Unmodified-Since condition evaluates to false.
	//
	// * If both of the
	// If-None-Match and If-Modified-Since headers are present in the request as
	// follows, then Amazon S3 returns the HTTP status code 304 Not Modified:
	//
	// *
	// If-None-Match condition evaluates to false.
	//
	// * If-Modified-Since condition
	// evaluates to true.
	//
	// For more information about conditional requests, see RFC
	// 7232 (https://tools.ietf.org/html/rfc7232). Permissions The permissions that you
	// need to use this operation depend on whether the bucket is versioned. If the
	// bucket is versioned, you need both the s3:GetObjectVersion and
	// s3:GetObjectVersionAttributes permissions for this operation. If the bucket is
	// not versioned, you need the s3:GetObject and s3:GetObjectAttributes permissions.
	// For more information, see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) in
	// the Amazon S3 User Guide. If the object that you request does not exist, the
	// error Amazon S3 returns depends on whether you also have the s3:ListBucket
	// permission.
	//
	// * If you have the s3:ListBucket permission on the bucket, Amazon S3
	// returns an HTTP status code 404 Not Found ("no such key") error.
	//
	// * If you don't
	// have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403
	// Forbidden ("access denied") error.
	//
	// The following actions are related to
	// GetObjectAttributes:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// GetObjectAcl
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
	//
	// *
	// GetObjectLegalHold
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html)
	//
	// *
	// GetObjectLockConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html)
	//
	// *
	// GetObjectRetention
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html)
	//
	// *
	// GetObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
	//
	// *
	// HeadObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
	//
	// *
	// ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	GetObjectAttributes(ctx context.Context, params *s3.GetObjectAttributesInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectAttributesOutput, error)

	// Gets an object's current legal hold status. For more information, see Locking
	// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). This
	// action is not supported by Amazon S3 on Outposts. The following action is
	// related to GetObjectLegalHold:
	//
	// * GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	GetObjectLegalHold(ctx context.Context, params *s3.GetObjectLegalHoldInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectLegalHoldOutput, error)

	// Gets the Object Lock configuration for a bucket. The rule specified in the
	// Object Lock configuration will be applied by default to every new object placed
	// in the specified bucket. For more information, see Locking Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). The
	// following action is related to GetObjectLockConfiguration:
	//
	// *
	// GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	GetObjectLockConfiguration(ctx context.Context, params *s3.GetObjectLockConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectLockConfigurationOutput, error)

	// Retrieves an object's retention settings. For more information, see Locking
	// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). This
	// action is not supported by Amazon S3 on Outposts. The following action is
	// related to GetObjectRetention:
	//
	// * GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	GetObjectRetention(ctx context.Context, params *s3.GetObjectRetentionInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectRetentionOutput, error)

	// Returns the tag-set of an object. You send the GET request against the tagging
	// subresource associated with the object. To use this operation, you must have
	// permission to perform the s3:GetObjectTagging action. By default, the GET action
	// returns information about current version of an object. For a versioned bucket,
	// you can have multiple versions of an object in your bucket. To retrieve tags of
	// any other version, use the versionId query parameter. You also need permission
	// for the s3:GetObjectVersionTagging action. By default, the bucket owner has this
	// permission and can grant this permission to others. For information about the
	// Amazon S3 object tagging feature, see Object Tagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). The
	// following actions are related to GetObjectTagging:
	//
	// * DeleteObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
	//
	// *
	// GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	//
	// *
	// PutObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
	GetObjectTagging(ctx context.Context, params *s3.GetObjectTaggingInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectTaggingOutput, error)

	// Returns torrent files from a bucket. BitTorrent can save you bandwidth when
	// you're distributing large files. For more information about BitTorrent, see
	// Using BitTorrent with Amazon S3
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html). You can get
	// torrent only for objects that are less than 5 GB in size, and that are not
	// encrypted using server-side encryption with a customer-provided encryption key.
	// To use GET, you must have READ access to the object. This action is not
	// supported by Amazon S3 on Outposts. The following action is related to
	// GetObjectTorrent:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	GetObjectTorrent(ctx context.Context, params *s3.GetObjectTorrentInput,
		optFns ...func(*s3.Options)) (*s3.GetObjectTorrentOutput, error)

	// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To use
	// this operation, you must have the s3:GetBucketPublicAccessBlock permission. For
	// more information about Amazon S3 permissions, see Specifying Permissions in a
	// Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
	// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket or an
	// object, it checks the PublicAccessBlock configuration for both the bucket (or
	// the bucket that contains the object) and the bucket owner's account. If the
	// PublicAccessBlock settings are different between the bucket and the account,
	// Amazon S3 uses the most restrictive combination of the bucket-level and
	// account-level settings. For more information about when Amazon S3 considers a
	// bucket or an object 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).
	// The following operations are related to GetPublicAccessBlock:
	//
	// * Using Amazon S3
	// Block Public Access
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
	//
	// *
	// PutPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
	//
	// *
	// GetPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
	//
	// *
	// DeletePublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
	GetPublicAccessBlock(ctx context.Context, params *s3.GetPublicAccessBlockInput,
		optFns ...func(*s3.Options)) (*s3.GetPublicAccessBlockOutput, error)

	// This action is useful to determine if a bucket exists and you have permission to
	// access it. The action returns a 200 OK if the bucket exists and you have
	// permission to access it. If the bucket does not exist or you do not have
	// permission to access it, the HEAD request returns a generic 404 Not Found or 403
	// Forbidden code. A message body is not included, so you cannot determine the
	// exception beyond these error codes. To use this operation, you must have
	// permissions to perform the s3:ListBucket action. The bucket owner has this
	// permission by default and can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// To use this API against an access point, you must provide the alias of the
	// access point in place of the bucket name or specify the access point ARN. When
	// using the access point ARN, you must direct requests to the access point
	// hostname. The access point hostname takes the form
	// AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using the
	// Amazon Web Services SDKs, you provide the ARN in place of the bucket name. For
	// more information see, Using access points
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html).
	HeadBucket(ctx context.Context, params *s3.HeadBucketInput,
		optFns ...func(*s3.Options)) (*s3.HeadBucketOutput, error)

	// The HEAD action retrieves metadata from an object without returning the object
	// itself. This action is useful if you're only interested in an object's metadata.
	// To use HEAD, you must have READ access to the object. A HEAD request has the
	// same options as a GET action on an object. The response is identical to the GET
	// response except that there is no response body. Because of this, if the HEAD
	// request generates an error, it returns a generic 404 Not Found or 403 Forbidden
	// code. It is not possible to retrieve the exact exception beyond these error
	// codes. If you encrypt an object by using server-side encryption with
	// customer-provided encryption keys (SSE-C) when you store the object in Amazon
	// S3, then when you retrieve the metadata from the object, you must use the
	// following headers:
	//
	// * x-amz-server-side-encryption-customer-algorithm
	//
	// *
	// x-amz-server-side-encryption-customer-key
	//
	// *
	// x-amz-server-side-encryption-customer-key-MD5
	//
	// For more information about SSE-C,
	// see Server-Side Encryption (Using Customer-Provided Encryption Keys)
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
	//
	// *
	// Encryption request headers, like x-amz-server-side-encryption, should not be
	// sent for GET requests if your object uses server-side encryption with KMS keys
	// (SSE-KMS) or server-side encryption with Amazon S3–managed encryption keys
	// (SSE-S3). If your object does use these types of keys, you’ll get an HTTP 400
	// BadRequest error.
	//
	// * The last modified property in this case is the creation
	// date of the object.
	//
	// Request headers are limited to 8 KB in size. For more
	// information, see Common Request Headers
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
	// Consider the following when using request headers:
	//
	// * Consideration 1 – If both
	// of the If-Match and If-Unmodified-Since headers are present in the request as
	// follows:
	//
	// * If-Match condition evaluates to true, and;
	//
	// * If-Unmodified-Since
	// condition evaluates to false;
	//
	// Then Amazon S3 returns 200 OK and the data
	// requested.
	//
	// * Consideration 2 – If both of the If-None-Match and
	// If-Modified-Since headers are present in the request as follows:
	//
	// *
	// If-None-Match condition evaluates to false, and;
	//
	// * If-Modified-Since condition
	// evaluates to true;
	//
	// Then Amazon S3 returns the 304 Not Modified response
	// code.
	//
	// For more information about conditional requests, see RFC 7232
	// (https://tools.ietf.org/html/rfc7232). Permissions You need the relevant read
	// object (or version) permission for this operation. For more information, see
	// Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html). If
	// the object you request does not exist, the error Amazon S3 returns depends on
	// whether you also have the s3:ListBucket permission.
	//
	// * If you have the
	// s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code
	// 404 ("no such key") error.
	//
	// * If you don’t have the s3:ListBucket permission,
	// Amazon S3 returns an HTTP status code 403 ("access denied") error.
	//
	// The
	// following actions are related to HeadObject:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	HeadObject(ctx context.Context, params *s3.HeadObjectInput,
		optFns ...func(*s3.Options)) (*s3.HeadObjectOutput, error)

	// Lists the analytics configurations for the bucket. You can have up to 1,000
	// analytics configurations per bucket. This action supports list pagination and
	// does not return more than 100 configurations at a time. You should always check
	// the IsTruncated element in the response. If there are no more configurations to
	// list, IsTruncated is set to false. If there are more configurations to list,
	// IsTruncated is set to true, and there will be a value in NextContinuationToken.
	// You use the NextContinuationToken value to continue the pagination of the list
	// by passing the value in continuation-token in the request to GET the next page.
	// To use this operation, you must have permissions to perform the
	// s3:GetAnalyticsConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about Amazon S3 analytics feature, see Amazon S3 Analytics –
	// Storage Class Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
	// The following operations are related to ListBucketAnalyticsConfigurations:
	//
	// *
	// GetBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
	//
	// *
	// DeleteBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
	//
	// *
	// PutBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
	ListBucketAnalyticsConfigurations(ctx context.Context, params *s3.ListBucketAnalyticsConfigurationsInput,
		optFns ...func(*s3.Options)) (*s3.ListBucketAnalyticsConfigurationsOutput, error)

	// Lists the S3 Intelligent-Tiering configuration from the specified bucket. The S3
	// Intelligent-Tiering storage class is designed to optimize storage costs by
	// automatically moving data to the most cost-effective storage access tier,
	// without performance impact or operational overhead. S3 Intelligent-Tiering
	// delivers automatic cost savings in three low latency and high throughput access
	// tiers. To get the lowest storage cost on data that can be accessed in minutes to
	// hours, you can choose to activate additional archiving capabilities. The S3
	// Intelligent-Tiering storage class is the ideal storage class for data with
	// unknown, changing, or unpredictable access patterns, independent of object size
	// or retention period. If the size of an object is less than 128 KB, it is not
	// monitored and not eligible for auto-tiering. Smaller objects can be stored, but
	// they are always charged at the Frequent Access tier rates in the S3
	// Intelligent-Tiering storage class. For more information, see Storage class for
	// automatically optimizing frequently and infrequently accessed objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
	// Operations related to ListBucketIntelligentTieringConfigurations include:
	//
	// *
	// DeleteBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
	//
	// *
	// PutBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
	//
	// *
	// GetBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
	ListBucketIntelligentTieringConfigurations(ctx context.Context, params *s3.ListBucketIntelligentTieringConfigurationsInput,
		optFns ...func(*s3.Options)) (*s3.ListBucketIntelligentTieringConfigurationsOutput, error)

	// Returns a list of inventory configurations for the bucket. You can have up to
	// 1,000 analytics configurations per bucket. This action supports list pagination
	// and does not return more than 100 configurations at a time. Always check the
	// IsTruncated element in the response. If there are no more configurations to
	// list, IsTruncated is set to false. If there are more configurations to list,
	// IsTruncated is set to true, and there is a value in NextContinuationToken. You
	// use the NextContinuationToken value to continue the pagination of the list by
	// passing the value in continuation-token in the request to GET the next page. To
	// use this operation, you must have permissions to perform the
	// s3:GetInventoryConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) The
	// following operations are related to ListBucketInventoryConfigurations:
	//
	// *
	// GetBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
	//
	// *
	// DeleteBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
	//
	// *
	// PutBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
	ListBucketInventoryConfigurations(ctx context.Context, params *s3.ListBucketInventoryConfigurationsInput,
		optFns ...func(*s3.Options)) (*s3.ListBucketInventoryConfigurationsOutput, error)

	// Lists the metrics configurations for the bucket. The metrics configurations are
	// only for the request metrics of the bucket and do not provide information on
	// daily storage metrics. You can have up to 1,000 configurations per bucket. This
	// action supports list pagination and does not return more than 100 configurations
	// at a time. Always check the IsTruncated element in the response. If there are no
	// more configurations to list, IsTruncated is set to false. If there are more
	// configurations to list, IsTruncated is set to true, and there is a value in
	// NextContinuationToken. You use the NextContinuationToken value to continue the
	// pagination of the list by passing the value in continuation-token in the request
	// to GET the next page. To use this operation, you must have permissions to
	// perform the s3:GetMetricsConfiguration action. The bucket owner has this
	// permission by default. The bucket owner can grant this permission to others. For
	// more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For more information about metrics configurations and CloudWatch request
	// metrics, see Monitoring Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
	// The following operations are related to ListBucketMetricsConfigurations:
	//
	// *
	// PutBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
	//
	// *
	// GetBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
	//
	// *
	// DeleteBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
	ListBucketMetricsConfigurations(ctx context.Context, params *s3.ListBucketMetricsConfigurationsInput,
		optFns ...func(*s3.Options)) (*s3.ListBucketMetricsConfigurationsOutput, error)

	// Returns a list of all buckets owned by the authenticated sender of the request.
	// To use this operation, you must have the s3:ListAllMyBuckets permission.
	ListBuckets(ctx context.Context, params *s3.ListBucketsInput,
		optFns ...func(*s3.Options)) (*s3.ListBucketsOutput, error)

	// This action lists in-progress multipart uploads. An in-progress multipart upload
	// is a multipart upload that has been initiated using the Initiate Multipart
	// Upload request, but has not yet been completed or aborted. This action returns
	// at most 1,000 multipart uploads in the response. 1,000 multipart uploads is the
	// maximum number of uploads a response can include, which is also the default
	// value. You can further limit the number of uploads in a response by specifying
	// the max-uploads parameter in the response. If additional multipart uploads
	// satisfy the list criteria, the response will contain an IsTruncated element with
	// the value true. To list the additional multipart uploads, use the key-marker and
	// upload-id-marker request parameters. In the response, the uploads are sorted by
	// key. If your application has initiated more than one multipart upload using the
	// same object key, then uploads in the response are first sorted by key.
	// Additionally, uploads are sorted in ascending order within each key by the
	// upload initiation time. For more information on multipart uploads, see Uploading
	// Objects Using Multipart Upload
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). For
	// information on permissions required to use the multipart upload API, see
	// Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). The
	// following operations are related to ListMultipartUploads:
	//
	// *
	// CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	ListMultipartUploads(ctx context.Context, params *s3.ListMultipartUploadsInput,
		optFns ...func(*s3.Options)) (*s3.ListMultipartUploadsOutput, error)

	// Returns some or all (up to 1,000) of the objects in a bucket. You can use the
	// request parameters as selection criteria to return a subset of the objects in a
	// bucket. A 200 OK response can contain valid or invalid XML. Be sure to design
	// your application to parse the contents of the response and handle it
	// appropriately. This action has been revised. We recommend that you use the newer
	// version, ListObjectsV2
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), when
	// developing applications. For backward compatibility, Amazon S3 continues to
	// support ListObjects. The following operations are related to ListObjects:
	//
	// *
	// ListObjectsV2
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
	//
	// *
	// GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// ListBuckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
	ListObjects(ctx context.Context, params *s3.ListObjectsInput,
		optFns ...func(*s3.Options)) (*s3.ListObjectsOutput, error)

	// Returns some or all (up to 1,000) of the objects in a bucket with each request.
	// You can use the request parameters as selection criteria to return a subset of
	// the objects in a bucket. A 200 OK response can contain valid or invalid XML.
	// Make sure to design your application to parse the contents of the response and
	// handle it appropriately. Objects are returned sorted in an ascending order of
	// the respective key names in the list. For more information about listing
	// objects, see Listing object keys programmatically
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)
	// To use this operation, you must have READ access to the bucket. To use this
	// action in an Identity and Access Management (IAM) policy, you must have
	// permissions to perform the s3:ListBucket action. The bucket owner has this
	// permission by default and can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// This section describes the latest revision of this action. We recommend that you
	// use this revised API for application development. For backward compatibility,
	// Amazon S3 continues to support the prior version of this API, ListObjects
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html). To get a
	// list of your buckets, see ListBuckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html). The
	// following operations are related to ListObjectsV2:
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	ListObjectsV2(ctx context.Context, params *s3.ListObjectsV2Input,
		optFns ...func(*s3.Options)) (*s3.ListObjectsV2Output, error)

	// Returns metadata about all versions of the objects in a bucket. You can also use
	// request parameters as selection criteria to return metadata about a subset of
	// all the object versions. To use this operation, you must have permissions to
	// perform the s3:ListBucketVersions action. Be aware of the name difference. A 200
	// OK response can contain valid or invalid XML. Make sure to design your
	// application to parse the contents of the response and handle it appropriately.
	// To use this operation, you must have READ access to the bucket. This action is
	// not supported by Amazon S3 on Outposts. The following operations are related to
	// ListObjectVersions:
	//
	// * ListObjectsV2
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
	//
	// *
	// GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	ListObjectVersions(ctx context.Context, params *s3.ListObjectVersionsInput,
		optFns ...func(*s3.Options)) (*s3.ListObjectVersionsOutput, error)

	// Lists the parts that have been uploaded for a specific multipart upload. This
	// operation must include the upload ID, which you obtain by sending the initiate
	// multipart upload request (see CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)).
	// This request returns a maximum of 1,000 uploaded parts. The default number of
	// parts returned is 1,000 parts. You can restrict the number of parts returned by
	// specifying the max-parts request parameter. If your multipart upload consists of
	// more than 1,000 parts, the response returns an IsTruncated field with the value
	// of true, and a NextPartNumberMarker element. In subsequent ListParts requests
	// you can include the part-number-marker query string parameter and set its value
	// to the NextPartNumberMarker field value from the previous response. If the
	// upload was created using a checksum algorithm, you will need to have permission
	// to the kms:Decrypt action for the request to succeed. For more information on
	// multipart uploads, see Uploading Objects Using Multipart Upload
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html). For
	// information on permissions required to use the multipart upload API, see
	// Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html). The
	// following operations are related to ListParts:
	//
	// * CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	//
	// *
	// GetObjectAttributes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	ListParts(ctx context.Context, params *s3.ListPartsInput,
		optFns ...func(*s3.Options)) (*s3.ListPartsOutput, error)

	// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
	// Acceleration is a bucket-level feature that enables you to perform faster data
	// transfers to Amazon S3. To use this operation, you must have permission to
	// perform the s3:PutAccelerateConfiguration action. The bucket owner has this
	// permission by default. The bucket owner can grant this permission to others. For
	// more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// The Transfer Acceleration state of a bucket can be set to one of the following
	// two values:
	//
	// * Enabled – Enables accelerated data transfers to the bucket.
	//
	// *
	// Suspended – Disables accelerated data transfers to the bucket.
	//
	// The
	// GetBucketAccelerateConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
	// action returns the transfer acceleration state of a bucket. After setting the
	// Transfer Acceleration state of a bucket to Enabled, it might take up to thirty
	// minutes before the data transfer rates to the bucket increase. The name of the
	// bucket used for Transfer Acceleration must be DNS-compliant and must not contain
	// periods ("."). For more information about transfer acceleration, see Transfer
	// Acceleration
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
	// The following operations are related to PutBucketAccelerateConfiguration:
	//
	// *
	// GetBucketAccelerateConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
	//
	// *
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	PutBucketAccelerateConfiguration(ctx context.Context, params *s3.PutBucketAccelerateConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketAccelerateConfigurationOutput, error)

	// Sets the permissions on an existing bucket using access control lists (ACL). For
	// more information, see Using ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html). To set
	// the ACL of a bucket, you must have WRITE_ACP permission. You can use one of the
	// following two ways to set a bucket's permissions:
	//
	// * Specify the ACL in the
	// request body
	//
	// * Specify permissions using request headers
	//
	// You cannot specify
	// access permission using both the body and the request headers. Depending on your
	// application needs, you may choose to set the ACL on a bucket using either the
	// request body or the headers. For example, if you have an existing application
	// that updates a bucket ACL using the request body, then you can continue to use
	// that approach. If your bucket uses the bucket owner enforced setting for S3
	// Object Ownership, ACLs are disabled and no longer affect permissions. You must
	// use policies to grant access to your bucket and the objects in it. Requests to
	// set ACLs or update ACLs fail and return the AccessControlListNotSupported error
	// code. Requests to read ACLs are still supported. For more information, see
	// Controlling object ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. Access Permissions You can set access permissions
	// using one of the following methods:
	//
	// * Specify a canned ACL with the x-amz-acl
	// request header. Amazon S3 supports a set of predefined ACLs, known as canned
	// ACLs. Each canned ACL has a predefined set of grantees and permissions. Specify
	// the canned ACL name as the value of x-amz-acl. If you use this header, you
	// cannot use other access control-specific headers in your request. For more
	// information, see Canned ACL
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
	//
	// *
	// Specify access permissions explicitly with the x-amz-grant-read,
	// x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
	// headers. When using these headers, you specify explicit access permissions and
	// grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the
	// permission. If you use these ACL-specific headers, you cannot use the x-amz-acl
	// header to set a canned ACL. These parameters map to the set of permissions that
	// Amazon S3 supports in an ACL. For more information, see Access Control List
	// (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You specify
	// each grantee as a type=value pair, where the type is one of the following:
	//
	// * id
	// – if the value specified is the canonical user ID of an Amazon Web Services
	// account
	//
	// * uri – if you are granting permissions to a predefined group
	//
	// *
	// emailAddress – if the value specified is the email address of an Amazon Web
	// Services account Using email addresses to specify a grantee is only supported in
	// the following Amazon Web Services Regions:
	//
	// * US East (N. Virginia)
	//
	// * US West
	// (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific (Singapore)
	//
	// * Asia Pacific
	// (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe (Ireland)
	//
	// * South America (São
	// Paulo)
	//
	// For a list of all the Amazon S3 supported Regions and endpoints, see
	// Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// For example, the following
	// x-amz-grant-write header grants create, overwrite, and delete objects permission
	// to LogDelivery group predefined by Amazon S3 and two Amazon Web Services
	// accounts identified by their email addresses. x-amz-grant-write:
	// uri="http://acs.amazonaws.com/groups/s3/LogDelivery", id="111122223333",
	// id="555566667777"
	//
	// You can use either a canned ACL or specify access permissions
	// explicitly. You cannot do both. Grantee Values You can specify the person
	// (grantee) to whom you're assigning access rights (using request elements) in the
	// following ways:
	//
	// * By the person's ID: <>ID<><>GranteesEmail<>  DisplayName is
	// optional and ignored in the request
	//
	// * By URI:
	// <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<>
	//
	// * By Email
	// address: <>Grantees@email.com<>lt;/Grantee> The grantee is resolved to the
	// CanonicalUser and, in a response to a GET Object acl request, appears as the
	// CanonicalUser. Using email addresses to specify a grantee is only supported in
	// the following Amazon Web Services Regions:
	//
	// * US East (N. Virginia)
	//
	// * US West
	// (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific (Singapore)
	//
	// * Asia Pacific
	// (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe (Ireland)
	//
	// * South America (São
	// Paulo)
	//
	// For a list of all the Amazon S3 supported Regions and endpoints, see
	// Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// # Related Resources
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// DeleteBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
	//
	// *
	// GetObjectAcl
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
	PutBucketAcl(ctx context.Context, params *s3.PutBucketAclInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketAclOutput, error)

	// Sets an analytics configuration for the bucket (specified by the analytics
	// configuration ID). You can have up to 1,000 analytics configurations per bucket.
	// You can choose to have storage class analysis export analysis reports sent to a
	// comma-separated values (CSV) flat file. See the DataExport request element.
	// Reports are updated daily and are based on the object filters that you
	// configure. When selecting data export, you specify a destination bucket and an
	// optional destination prefix where the file is written. You can export the data
	// to a destination bucket in a different account. However, the destination bucket
	// must be in the same Region as the bucket that you are making the PUT analytics
	// configuration to. For more information, see Amazon S3 Analytics – Storage Class
	// Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
	// You must create a bucket policy on the destination bucket where the exported
	// file is written to grant permissions to Amazon S3 to write objects to the
	// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
	// and Storage Class Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
	// To use this operation, you must have permissions to perform the
	// s3:PutAnalyticsConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// Special Errors
	//
	// * HTTP Error: HTTP 400 Bad Request
	//
	// * Code: InvalidArgument
	//
	// *
	// Cause: Invalid argument.
	//
	// * HTTP Error: HTTP 400 Bad Request
	//
	// * Code:
	// TooManyConfigurations
	//
	// * Cause: You are attempting to create a new configuration
	// but have already reached the 1,000-configuration limit.
	//
	// * HTTP Error: HTTP 403
	// Forbidden
	//
	// * Code: AccessDenied
	//
	// * Cause: You are not the owner of the specified
	// bucket, or you do not have the s3:PutAnalyticsConfiguration bucket permission to
	// set the configuration on the bucket.
	//
	// # Related Resources
	//
	// *
	// GetBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
	//
	// *
	// DeleteBucketAnalyticsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
	//
	// *
	// ListBucketAnalyticsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
	PutBucketAnalyticsConfiguration(ctx context.Context, params *s3.PutBucketAnalyticsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketAnalyticsConfigurationOutput, error)

	// Sets the cors configuration for your bucket. If the configuration exists, Amazon
	// S3 replaces it. To use this operation, you must be allowed to perform the
	// s3:PutBucketCORS action. By default, the bucket owner has this permission and
	// can grant it to others. You set this configuration on a bucket so that the
	// bucket can service cross-origin requests. For example, you might want to enable
	// a request whose origin is http://www.example.com to access your Amazon S3 bucket
	// at my.example.bucket.com by using the browser's XMLHttpRequest capability. To
	// enable cross-origin resource sharing (CORS) on a bucket, you add the cors
	// subresource to the bucket. The cors subresource is an XML document in which you
	// configure rules that identify origins and the HTTP methods that can be executed
	// on your bucket. The document is limited to 64 KB in size. When Amazon S3
	// receives a cross-origin request (or a pre-flight OPTIONS request) against a
	// bucket, it evaluates the cors configuration on the bucket and uses the first
	// CORSRule rule that matches the incoming browser request to enable a cross-origin
	// request. For a rule to match, the following conditions must be met:
	//
	// * The
	// request's Origin header must match AllowedOrigin elements.
	//
	// * The request method
	// (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
	// header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
	// elements.
	//
	// * Every header specified in the Access-Control-Request-Headers
	// request header of a pre-flight request must match an AllowedHeader element.
	//
	// For
	// more information about CORS, go to Enabling Cross-Origin Resource Sharing
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon S3
	// User Guide. Related Resources
	//
	// * GetBucketCors
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)
	//
	// *
	// DeleteBucketCors
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
	//
	// *
	// RESTOPTIONSobject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
	PutBucketCors(ctx context.Context, params *s3.PutBucketCorsInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketCorsOutput, error)

	// This action uses the encryption subresource to configure default encryption and
	// Amazon S3 Bucket Key for an existing bucket. Default encryption for a bucket can
	// use server-side encryption with Amazon S3-managed keys (SSE-S3) or customer
	// managed keys (SSE-KMS). If you specify default encryption using SSE-KMS, you can
	// also configure Amazon S3 Bucket Key. When the default encryption is SSE-KMS, if
	// you upload an object to the bucket and do not specify the KMS key to use for
	// encryption, Amazon S3 uses the default Amazon Web Services managed KMS key for
	// your account. For information about default encryption, see Amazon S3 default
	// bucket encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) in the
	// Amazon S3 User Guide. For more information about S3 Bucket Keys, see Amazon S3
	// Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in
	// the Amazon S3 User Guide. This action requires Amazon Web Services Signature
	// Version 4. For more information, see  Authenticating Requests (Amazon Web
	// Services Signature Version 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
	// To use this operation, you must have permissions to perform the
	// s3:PutEncryptionConfiguration action. The bucket owner has this permission by
	// default. The bucket owner can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. Related Resources
	//
	// * GetBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
	//
	// *
	// DeleteBucketEncryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
	PutBucketEncryption(ctx context.Context, params *s3.PutBucketEncryptionInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketEncryptionOutput, error)

	// Puts a S3 Intelligent-Tiering configuration to the specified bucket. You can
	// have up to 1,000 S3 Intelligent-Tiering configurations per bucket. The S3
	// Intelligent-Tiering storage class is designed to optimize storage costs by
	// automatically moving data to the most cost-effective storage access tier,
	// without performance impact or operational overhead. S3 Intelligent-Tiering
	// delivers automatic cost savings in three low latency and high throughput access
	// tiers. To get the lowest storage cost on data that can be accessed in minutes to
	// hours, you can choose to activate additional archiving capabilities. The S3
	// Intelligent-Tiering storage class is the ideal storage class for data with
	// unknown, changing, or unpredictable access patterns, independent of object size
	// or retention period. If the size of an object is less than 128 KB, it is not
	// monitored and not eligible for auto-tiering. Smaller objects can be stored, but
	// they are always charged at the Frequent Access tier rates in the S3
	// Intelligent-Tiering storage class. For more information, see Storage class for
	// automatically optimizing frequently and infrequently accessed objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
	// Operations related to PutBucketIntelligentTieringConfiguration include:
	//
	// *
	// DeleteBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
	//
	// *
	// GetBucketIntelligentTieringConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
	//
	// *
	// ListBucketIntelligentTieringConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
	//
	// You
	// only need S3 Intelligent-Tiering enabled on a bucket if you want to
	// automatically move objects stored in the S3 Intelligent-Tiering storage class to
	// the Archive Access or Deep Archive Access tier. Special Errors
	//
	// * HTTP 400 Bad
	// Request Error
	//
	// * Code: InvalidArgument
	//
	// * Cause: Invalid Argument
	//
	// * HTTP 400
	// Bad Request Error
	//
	// * Code: TooManyConfigurations
	//
	// * Cause: You are attempting to
	// create a new configuration but have already reached the 1,000-configuration
	// limit.
	//
	// * HTTP 403 Forbidden Error
	//
	// * Code: AccessDenied
	//
	// * Cause: You are not
	// the owner of the specified bucket, or you do not have the
	// s3:PutIntelligentTieringConfiguration bucket permission to set the configuration
	// on the bucket.
	PutBucketIntelligentTieringConfiguration(ctx context.Context, params *s3.PutBucketIntelligentTieringConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketIntelligentTieringConfigurationOutput, error)

	// This implementation of the PUT action adds an inventory configuration
	// (identified by the inventory ID) to the bucket. You can have up to 1,000
	// inventory configurations per bucket. Amazon S3 inventory generates inventories
	// of the objects in the bucket on a daily or weekly basis, and the results are
	// published to a flat file. The bucket that is inventoried is called the source
	// bucket, and the bucket where the inventory flat file is stored is called the
	// destination bucket. The destination bucket must be in the same Amazon Web
	// Services Region as the source bucket. When you configure an inventory for a
	// source bucket, you specify the destination bucket where you want the inventory
	// to be stored, and whether to generate the inventory daily or weekly. You can
	// also configure what object metadata to include and whether to inventory all
	// object versions or only current versions. For more information, see Amazon S3
	// Inventory
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) in the
	// Amazon S3 User Guide. You must create a bucket policy on the destination bucket
	// to grant permissions to Amazon S3 to write objects to the bucket in the defined
	// location. For an example policy, see  Granting Permissions for Amazon S3
	// Inventory and Storage Class Analysis
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
	// To use this operation, you must have permissions to perform the
	// s3:PutInventoryConfiguration action. The bucket owner has this permission by
	// default and can grant this permission to others. For more information about
	// permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. Special Errors
	//
	// * HTTP 400 Bad Request Error
	//
	// *
	// Code: InvalidArgument
	//
	// * Cause: Invalid Argument
	//
	// * HTTP 400 Bad Request
	// Error
	//
	// * Code: TooManyConfigurations
	//
	// * Cause: You are attempting to create a
	// new configuration but have already reached the 1,000-configuration limit.
	//
	// *
	// HTTP 403 Forbidden Error
	//
	// * Code: AccessDenied
	//
	// * Cause: You are not the owner
	// of the specified bucket, or you do not have the s3:PutInventoryConfiguration
	// bucket permission to set the configuration on the bucket.
	//
	// # Related Resources
	//
	// *
	// GetBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
	//
	// *
	// DeleteBucketInventoryConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
	//
	// *
	// ListBucketInventoryConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
	PutBucketInventoryConfiguration(ctx context.Context, params *s3.PutBucketInventoryConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketInventoryConfigurationOutput, error)

	// Creates a new lifecycle configuration for the bucket or replaces an existing
	// lifecycle configuration. Keep in mind that this will overwrite an existing
	// lifecycle configuration, so if you want to retain any configuration details,
	// they must be included in the new lifecycle configuration. For information about
	// lifecycle configuration, see Managing your storage lifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html).
	// Bucket lifecycle configuration now supports specifying a lifecycle rule using an
	// object key name prefix, one or more object tags, or a combination of both.
	// Accordingly, this section describes the latest API. The previous version of the
	// API supported filtering based only on an object key name prefix, which is
	// supported for backward compatibility. For the related API description, see
	// PutBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html).
	// Rules You specify the lifecycle configuration in your request body. The
	// lifecycle configuration is specified as XML consisting of one or more rules. An
	// Amazon S3 Lifecycle configuration can have up to 1,000 rules. This limit is not
	// adjustable. Each rule consists of the following:
	//
	// * Filter identifying a subset
	// of objects to which the rule applies. The filter can be based on a key name
	// prefix, object tags, or a combination of both.
	//
	// * Status whether the rule is in
	// effect.
	//
	// * One or more lifecycle transition and expiration actions that you want
	// Amazon S3 to perform on the objects identified by the filter. If the state of
	// your bucket is versioning-enabled or versioning-suspended, you can have many
	// versions of the same object (one current version and zero or more noncurrent
	// versions). Amazon S3 provides predefined actions that you can specify for
	// current and noncurrent object versions.
	//
	// For more information, see Object
	// Lifecycle Management
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) and
	// Lifecycle Configuration Elements
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
	// Permissions By default, all Amazon S3 resources are private, including buckets,
	// objects, and related subresources (for example, lifecycle configuration and
	// website configuration). Only the resource owner (that is, the Amazon Web
	// Services account that created it) can access the resource. The resource owner
	// can optionally grant access permissions to others by writing an access policy.
	// For this operation, a user must get the s3:PutLifecycleConfiguration permission.
	// You can also explicitly deny permissions. Explicit deny also supersedes any
	// other permissions. If you want to block users or accounts from removing or
	// deleting objects from your bucket, you must deny them permissions for the
	// following actions:
	//
	// * s3:DeleteObject
	//
	// * s3:DeleteObjectVersion
	//
	// *
	// s3:PutLifecycleConfiguration
	//
	// For more information about permissions, see
	// Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// The following are related to PutBucketLifecycleConfiguration:
	//
	// * Examples of
	// Lifecycle Configuration
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
	//
	// *
	// GetBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
	//
	// *
	// DeleteBucketLifecycle
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
	PutBucketLifecycleConfiguration(ctx context.Context, params *s3.PutBucketLifecycleConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketLifecycleConfigurationOutput, error)

	// Set the logging parameters for a bucket and to specify permissions for who can
	// view and modify the logging parameters. All logs are saved to buckets in the
	// same Amazon Web Services Region as the source bucket. To set the logging status
	// of a bucket, you must be the bucket owner. The bucket owner is automatically
	// granted FULL_CONTROL to all logs. You use the Grantee request element to grant
	// access to other people. The Permissions request element specifies the kind of
	// access the grantee has to the logs. If the target bucket for log delivery uses
	// the bucket owner enforced setting for S3 Object Ownership, you can't use the
	// Grantee request element to grant access to others. Permissions can only be
	// granted using policies. For more information, see Permissions for server access
	// log delivery
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html#grant-log-delivery-permissions-general)
	// in the Amazon S3 User Guide. Grantee Values You can specify the person (grantee)
	// to whom you're assigning access rights (using request elements) in the following
	// ways:
	//
	// * By the person's ID: <>ID<><>GranteesEmail<>  DisplayName is optional
	// and ignored in the request.
	//
	// * By Email address:  <>Grantees@email.com<> The
	// grantee is resolved to the CanonicalUser and, in a response to a GET Object acl
	// request, appears as the CanonicalUser.
	//
	// * By URI:
	// <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<>
	//
	// To enable
	// logging, you use LoggingEnabled and its children request elements. To disable
	// logging, you use an empty BucketLoggingStatus request element:  For more
	// information about server access logging, see Server Access Logging
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html) in the
	// Amazon S3 User Guide. For more information about creating a bucket, see
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html). For
	// more information about returning the logging status of a bucket, see
	// GetBucketLogging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html). The
	// following operations are related to PutBucketLogging:
	//
	// * PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// *
	// DeleteBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
	//
	// *
	// CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// GetBucketLogging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)
	PutBucketLogging(ctx context.Context, params *s3.PutBucketLoggingInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketLoggingOutput, error)

	// Sets a metrics configuration (specified by the metrics configuration ID) for the
	// bucket. You can have up to 1,000 metrics configurations per bucket. If you're
	// updating an existing metrics configuration, note that this is a full replacement
	// of the existing metrics configuration. If you don't include the elements you
	// want to keep, they are erased. To use this operation, you must have permissions
	// to perform the s3:PutMetricsConfiguration action. The bucket owner has this
	// permission by default. The bucket owner can grant this permission to others. For
	// more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// For information about CloudWatch request metrics for Amazon S3, see Monitoring
	// Metrics with Amazon CloudWatch
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
	// The following operations are related to PutBucketMetricsConfiguration:
	//
	// *
	// DeleteBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
	//
	// *
	// GetBucketMetricsConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
	//
	// *
	// ListBucketMetricsConfigurations
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
	//
	// GetBucketLifecycle
	// has the following special error:
	//
	// * Error code: TooManyConfigurations
	//
	// *
	// Description: You are attempting to create a new configuration but have already
	// reached the 1,000-configuration limit.
	//
	// * HTTP Status Code: HTTP 400 Bad Request
	PutBucketMetricsConfiguration(ctx context.Context, params *s3.PutBucketMetricsConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketMetricsConfigurationOutput, error)

	// Enables notifications of specified events for a bucket. For more information
	// about event notifications, see Configuring Event Notifications
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). Using
	// this API, you can replace an existing notification configuration. The
	// configuration is an XML file that defines the event types that you want Amazon
	// S3 to publish and the destination where you want Amazon S3 to publish an event
	// notification when it detects an event of the specified type. By default, your
	// bucket has no event notifications configured. That is, the notification
	// configuration will be an empty NotificationConfiguration.  This action replaces
	// the existing notification configuration with the configuration you include in
	// the request body. After Amazon S3 receives this request, it first verifies that
	// any Amazon Simple Notification Service (Amazon SNS) or Amazon Simple Queue
	// Service (Amazon SQS) destination exists, and that the bucket owner has
	// permission to publish to it by sending a test notification. In the case of
	// Lambda destinations, Amazon S3 verifies that the Lambda function permissions
	// grant Amazon S3 permission to invoke the function from the Amazon S3 bucket. For
	// more information, see Configuring Notifications for Amazon S3 Events
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). You
	// can disable notifications by adding the empty NotificationConfiguration element.
	// For more information about the number of event notification configurations that
	// you can create per bucket, see Amazon S3 service quotas
	// (https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3) in Amazon Web
	// Services General Reference. By default, only the bucket owner can configure
	// notifications on a bucket. However, bucket owners can use a bucket policy to
	// grant permission to other users to set this configuration with
	// s3:PutBucketNotification permission. The PUT notification is an atomic
	// operation. For example, suppose your notification configuration includes SNS
	// topic, SQS queue, and Lambda function configurations. When you send a PUT
	// request with this configuration, Amazon S3 sends test messages to your SNS
	// topic. If the message fails, the entire PUT action will fail, and Amazon S3 will
	// not add the configuration to your bucket. Responses If the configuration in the
	// request body includes only one TopicConfiguration specifying only the
	// s3:ReducedRedundancyLostObject event type, the response will also include the
	// x-amz-sns-test-message-id header containing the message ID of the test
	// notification sent to the topic. The following action is related to
	// PutBucketNotificationConfiguration:
	//
	// * GetBucketNotificationConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
	PutBucketNotificationConfiguration(ctx context.Context, params *s3.PutBucketNotificationConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketNotificationConfigurationOutput, error)

	// Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this
	// operation, you must have the s3:PutBucketOwnershipControls permission. For more
	// information about Amazon S3 permissions, see Specifying permissions in a policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-with-s3-actions.html).
	// For information about Amazon S3 Object Ownership, see Using object ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/user-guide/about-object-ownership.html).
	// The following operations are related to PutBucketOwnershipControls:
	//
	// *
	// GetBucketOwnershipControls
	//
	// * DeleteBucketOwnershipControls
	PutBucketOwnershipControls(ctx context.Context, params *s3.PutBucketOwnershipControlsInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketOwnershipControlsOutput, error)

	// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using an
	// identity other than the root user of the Amazon Web Services account that owns
	// the bucket, the calling identity must have the PutBucketPolicy permissions on
	// the specified bucket and belong to the bucket owner's account in order to use
	// this operation. If you don't have PutBucketPolicy permissions, Amazon S3 returns
	// a 403 Access Denied error. If you have the correct permissions, but you're not
	// using an identity that belongs to the bucket owner's account, Amazon S3 returns
	// a 405 Method Not Allowed error. As a security precaution, the root user of the
	// Amazon Web Services account that owns a bucket can always use this operation,
	// even if the policy explicitly denies the root user the ability to perform this
	// action. For more information, see Bucket policy examples
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).
	// The following operations are related to PutBucketPolicy:
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// DeleteBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
	PutBucketPolicy(ctx context.Context, params *s3.PutBucketPolicyInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketPolicyOutput, error)

	// Creates a replication configuration or replaces an existing one. For more
	// information, see Replication
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html) in the Amazon
	// S3 User Guide. Specify the replication configuration in the request body. In the
	// replication configuration, you provide the name of the destination bucket or
	// buckets where you want Amazon S3 to replicate objects, the IAM role that Amazon
	// S3 can assume to replicate objects on your behalf, and other relevant
	// information. A replication configuration must include at least one rule, and can
	// contain a maximum of 1,000. Each rule identifies a subset of objects to
	// replicate by filtering the objects in the source bucket. To choose additional
	// subsets of objects to replicate, add a rule for each subset. To specify a subset
	// of the objects in the source bucket to apply a replication rule to, add the
	// Filter element as a child of the Rule element. You can filter objects based on
	// an object key prefix, one or more object tags, or both. When you add the Filter
	// element in the configuration, you must also add the following elements:
	// DeleteMarkerReplication, Status, and Priority. If you are using an earlier
	// version of the replication configuration, Amazon S3 handles replication of
	// delete markers differently. For more information, see Backward Compatibility
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
	// For information about enabling versioning on a bucket, see Using Versioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). Handling
	// Replication of Encrypted Objects By default, Amazon S3 doesn't replicate objects
	// that are stored at rest using server-side encryption with KMS keys. To replicate
	// Amazon Web Services KMS-encrypted objects, add the following:
	// SourceSelectionCriteria, SseKmsEncryptedObjects, Status,
	// EncryptionConfiguration, and ReplicaKmsKeyID. For information about replication
	// configuration, see Replicating Objects Created with SSE Using KMS keys
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
	// For information on PutBucketReplication errors, see List of replication-related
	// error codes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
	// Permissions To create a PutBucketReplication request, you must have
	// s3:PutReplicationConfiguration permissions for the bucket. By default, a
	// resource owner, in this case the Amazon Web Services account that created the
	// bucket, can perform this operation. The resource owner can also grant others
	// permissions to perform the operation. For more information about permissions,
	// see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) and
	// Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// To perform this operation, the user or role performing the action must have the
	// iam:PassRole
	// (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
	// permission. The following operations are related to PutBucketReplication:
	//
	// *
	// GetBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
	//
	// *
	// DeleteBucketReplication
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
	PutBucketReplication(ctx context.Context, params *s3.PutBucketReplicationInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketReplicationOutput, error)

	// Sets the request payment configuration for a bucket. By default, the bucket
	// owner pays for downloads from the bucket. This configuration parameter enables
	// the bucket owner (only) to specify that the person requesting the download will
	// be charged for the download. For more information, see Requester Pays Buckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html). The
	// following operations are related to PutBucketRequestPayment:
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// GetBucketRequestPayment
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)
	PutBucketRequestPayment(ctx context.Context, params *s3.PutBucketRequestPaymentInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketRequestPaymentOutput, error)

	// Sets the tags for a bucket. Use tags to organize your Amazon Web Services bill
	// to reflect your own cost structure. To do this, sign up to get your Amazon Web
	// Services account bill with tag key values included. Then, to see the cost of
	// combined resources, organize your billing information according to resources
	// with the same tag key values. For example, you can tag several resources with a
	// specific application name, and then organize your billing information to see the
	// total cost of that application across several services. For more information,
	// see Cost Allocation and Tagging
	// (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
	// and Using Cost Allocation in Amazon S3 Bucket Tags
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html). When
	// this operation sets the tags for a bucket, it will overwrite any current tags
	// the bucket already has. You cannot use this operation to add tags to an existing
	// list of tags. To use this operation, you must have permissions to perform the
	// s3:PutBucketTagging action. The bucket owner has this permission by default and
	// can grant this permission to others. For more information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
	// PutBucketTagging has the following special errors:
	//
	// * Error code:
	// InvalidTagError
	//
	// * Description: The tag provided was not a valid tag. This error
	// can occur if the tag did not pass input validation. For information about tag
	// restrictions, see User-Defined Tag Restrictions
	// (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)
	// and Amazon Web Services-Generated Cost Allocation Tag Restrictions
	// (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html).
	//
	// *
	// Error code: MalformedXMLError
	//
	// * Description: The XML provided does not match
	// the schema.
	//
	// * Error code: OperationAbortedError
	//
	// * Description: A conflicting
	// conditional action is currently in progress against this resource. Please try
	// again.
	//
	// * Error code: InternalError
	//
	// * Description: The service was unable to
	// apply the provided tag to the bucket.
	//
	// The following operations are related to
	// PutBucketTagging:
	//
	// * GetBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
	//
	// *
	// DeleteBucketTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
	PutBucketTagging(ctx context.Context, params *s3.PutBucketTaggingInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketTaggingOutput, error)

	// Sets the versioning state of an existing bucket. You can set the versioning
	// state with one of the following values: Enabled—Enables versioning for the
	// objects in the bucket. All objects added to the bucket receive a unique version
	// ID. Suspended—Disables versioning for the objects in the bucket. All objects
	// added to the bucket receive the version ID null. If the versioning state has
	// never been set on a bucket, it has no versioning state; a GetBucketVersioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
	// request does not return a versioning state value. In order to enable MFA Delete,
	// you must be the bucket owner. If you are the bucket owner and want to enable MFA
	// Delete in the bucket versioning configuration, you must include the x-amz-mfa
	// request header and the Status and the MfaDelete request elements in a request to
	// set the versioning state of the bucket. If you have an object expiration
	// lifecycle policy in your non-versioned bucket and you want to maintain the same
	// permanent delete behavior when you enable versioning, you must add a noncurrent
	// expiration policy. The noncurrent expiration lifecycle policy will manage the
	// deletes of the noncurrent object versions in the version-enabled bucket. (A
	// version-enabled bucket maintains one current and zero or more noncurrent object
	// versions.) For more information, see Lifecycle and Versioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
	// Related Resources
	//
	// * CreateBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
	//
	// *
	// DeleteBucket
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
	//
	// *
	// GetBucketVersioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
	PutBucketVersioning(ctx context.Context, params *s3.PutBucketVersioningInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketVersioningOutput, error)

	// Sets the configuration of the website that is specified in the website
	// subresource. To configure a bucket as a website, you can add this subresource on
	// the bucket with website configuration information such as the file name of the
	// index document and any redirect rules. For more information, see Hosting
	// Websites on Amazon S3
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). This PUT
	// action requires the S3:PutBucketWebsite permission. By default, only the bucket
	// owner can configure the website attached to a bucket; however, bucket owners can
	// allow other users to set the website configuration by writing a bucket policy
	// that grants them the S3:PutBucketWebsite permission. To redirect all website
	// requests sent to the bucket's website endpoint, you add a website configuration
	// with the following elements. Because all requests are sent to another website,
	// you don't need to provide index document name for the bucket.
	//
	// *
	// WebsiteConfiguration
	//
	// * RedirectAllRequestsTo
	//
	// * HostName
	//
	// * Protocol
	//
	// If you
	// want granular control over redirects, you can use the following elements to add
	// routing rules that describe conditions for redirecting requests and information
	// about the redirect destination. In this case, the website configuration must
	// provide an index document for the bucket, because some requests might not be
	// redirected.
	//
	// * WebsiteConfiguration
	//
	// * IndexDocument
	//
	// * Suffix
	//
	// *
	// ErrorDocument
	//
	// * Key
	//
	// * RoutingRules
	//
	// * RoutingRule
	//
	// * Condition
	//
	// *
	// HttpErrorCodeReturnedEquals
	//
	// * KeyPrefixEquals
	//
	// * Redirect
	//
	// * Protocol
	//
	// *
	// HostName
	//
	// * ReplaceKeyPrefixWith
	//
	// * ReplaceKeyWith
	//
	// * HttpRedirectCode
	//
	// Amazon
	// S3 has a limitation of 50 routing rules per website configuration. If you
	// require more than 50 routing rules, you can use object redirect. For more
	// information, see Configuring an Object Redirect
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html) in
	// the Amazon S3 User Guide.
	PutBucketWebsite(ctx context.Context, params *s3.PutBucketWebsiteInput,
		optFns ...func(*s3.Options)) (*s3.PutBucketWebsiteOutput, error)

	// Adds an object to a bucket. You must have WRITE permissions on a bucket to add
	// an object to it. Amazon S3 never adds partial objects; if you receive a success
	// response, Amazon S3 added the entire object to the bucket. Amazon S3 is a
	// distributed system. If it receives multiple write requests for the same object
	// simultaneously, it overwrites all but the last object written. Amazon S3 does
	// not provide object locking; if you need this, make sure to build it into your
	// application layer or use versioning instead. To ensure that data is not
	// corrupted traversing the network, use the Content-MD5 header. When you use this
	// header, Amazon S3 checks the object against the provided MD5 value and, if they
	// do not match, returns an error. Additionally, you can calculate the MD5 while
	// putting an object to Amazon S3 and compare the returned ETag to the calculated
	// MD5 value.
	//
	// * To successfully complete the PutObject request, you must have the
	// s3:PutObject in your IAM permissions.
	//
	// * To successfully change the objects acl
	// of your PutObject request, you must have the s3:PutObjectAcl in your IAM
	// permissions.
	//
	// * The Content-MD5 header is required for any request to upload an
	// object with a retention period configured using Amazon S3 Object Lock. For more
	// information about Amazon S3 Object Lock, see Amazon S3 Object Lock Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html) in
	// the Amazon S3 User Guide.
	//
	// Server-side Encryption You can optionally request
	// server-side encryption. With server-side encryption, Amazon S3 encrypts your
	// data as it writes it to disks in its data centers and decrypts the data when you
	// access it. You have the option to provide your own encryption key or use Amazon
	// Web Services managed encryption keys (SSE-S3 or SSE-KMS). For more information,
	// see Using Server-Side Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
	// If you request server-side encryption using Amazon Web Services Key Management
	// Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For more
	// information, see Amazon S3 Bucket Keys
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) in the Amazon
	// S3 User Guide. Access Control List (ACL)-Specific Request Headers You can use
	// headers to grant ACL- based permissions. By default, all objects are private.
	// Only the owner has full access control. When adding a new object, you can grant
	// permissions to individual Amazon Web Services accounts or to predefined groups
	// defined by Amazon S3. These permissions are then added to the ACL on the object.
	// For more information, see Access Control List (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html) and Managing
	// ACLs Using the REST API
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html). If
	// the bucket that you're uploading objects to uses the bucket owner enforced
	// setting for S3 Object Ownership, ACLs are disabled and no longer affect
	// permissions. Buckets that use this setting only accept PUT requests that don't
	// specify an ACL or PUT requests that specify bucket owner full control ACLs, such
	// as the bucket-owner-full-control canned ACL or an equivalent form of this ACL
	// expressed in the XML format. PUT requests that contain other ACLs (for example,
	// custom grants to certain Amazon Web Services accounts) fail and return a 400
	// error with the error code AccessControlListNotSupported. For more information,
	// see  Controlling ownership of objects and disabling ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. If your bucket uses the bucket owner enforced
	// setting for Object Ownership, all objects written to the bucket by any account
	// will be owned by the bucket owner. Storage Class Options By default, Amazon S3
	// uses the STANDARD Storage Class to store newly created objects. The STANDARD
	// storage class provides high durability and high availability. Depending on
	// performance needs, you can specify a different Storage Class. Amazon S3 on
	// Outposts only uses the OUTPOSTS Storage Class. For more information, see Storage
	// Classes
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) in
	// the Amazon S3 User Guide. Versioning If you enable versioning for a bucket,
	// Amazon S3 automatically generates a unique version ID for the object being
	// stored. Amazon S3 returns this ID in the response. When you enable versioning
	// for a bucket, if Amazon S3 receives multiple write requests for the same object
	// simultaneously, it stores all of the objects. For more information about
	// versioning, see Adding Objects to Versioning Enabled Buckets
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
	// For information about returning the versioning state of a bucket, see
	// GetBucketVersioning
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html).
	// Related Resources
	//
	// * CopyObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
	//
	// *
	// DeleteObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
	PutObject(ctx context.Context, params *s3.PutObjectInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectOutput, error)

	// Uses the acl subresource to set the access control list (ACL) permissions for a
	// new or existing object in an S3 bucket. You must have WRITE_ACP permission to
	// set the ACL of an object. For more information, see What permissions can I
	// grant?
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions)
	// in the Amazon S3 User Guide. This action is not supported by Amazon S3 on
	// Outposts. Depending on your application needs, you can choose to set the ACL on
	// an object using either the request body or the headers. For example, if you have
	// an existing application that updates a bucket ACL using the request body, you
	// can continue to use that approach. For more information, see Access Control List
	// (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html) in the
	// Amazon S3 User Guide. If your bucket uses the bucket owner enforced setting for
	// S3 Object Ownership, ACLs are disabled and no longer affect permissions. You
	// must use policies to grant access to your bucket and the objects in it. Requests
	// to set ACLs or update ACLs fail and return the AccessControlListNotSupported
	// error code. Requests to read ACLs are still supported. For more information, see
	// Controlling object ownership
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)
	// in the Amazon S3 User Guide. Access Permissions You can set access permissions
	// using one of the following methods:
	//
	// * Specify a canned ACL with the x-amz-acl
	// request header. Amazon S3 supports a set of predefined ACLs, known as canned
	// ACLs. Each canned ACL has a predefined set of grantees and permissions. Specify
	// the canned ACL name as the value of x-amz-acl. If you use this header, you
	// cannot use other access control-specific headers in your request. For more
	// information, see Canned ACL
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
	//
	// *
	// Specify access permissions explicitly with the x-amz-grant-read,
	// x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
	// headers. When using these headers, you specify explicit access permissions and
	// grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the
	// permission. If you use these ACL-specific headers, you cannot use x-amz-acl
	// header to set a canned ACL. These parameters map to the set of permissions that
	// Amazon S3 supports in an ACL. For more information, see Access Control List
	// (ACL) Overview
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You specify
	// each grantee as a type=value pair, where the type is one of the following:
	//
	// * id
	// – if the value specified is the canonical user ID of an Amazon Web Services
	// account
	//
	// * uri – if you are granting permissions to a predefined group
	//
	// *
	// emailAddress – if the value specified is the email address of an Amazon Web
	// Services account Using email addresses to specify a grantee is only supported in
	// the following Amazon Web Services Regions:
	//
	// * US East (N. Virginia)
	//
	// * US West
	// (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific (Singapore)
	//
	// * Asia Pacific
	// (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe (Ireland)
	//
	// * South America (São
	// Paulo)
	//
	// For a list of all the Amazon S3 supported Regions and endpoints, see
	// Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// For example, the following
	// x-amz-grant-read header grants list objects permission to the two Amazon Web
	// Services accounts identified by their email addresses. x-amz-grant-read:
	// emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
	//
	// You can use either
	// a canned ACL or specify access permissions explicitly. You cannot do both.
	// Grantee Values You can specify the person (grantee) to whom you're assigning
	// access rights (using request elements) in the following ways:
	//
	// * By the person's
	// ID: <>ID<><>GranteesEmail<>  DisplayName is optional and ignored in the
	// request.
	//
	// * By URI:
	// <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<>
	//
	// * By Email
	// address: <>Grantees@email.com<>lt;/Grantee> The grantee is resolved to the
	// CanonicalUser and, in a response to a GET Object acl request, appears as the
	// CanonicalUser. Using email addresses to specify a grantee is only supported in
	// the following Amazon Web Services Regions:
	//
	// * US East (N. Virginia)
	//
	// * US West
	// (N. California)
	//
	// * US West (Oregon)
	//
	// * Asia Pacific (Singapore)
	//
	// * Asia Pacific
	// (Sydney)
	//
	// * Asia Pacific (Tokyo)
	//
	// * Europe (Ireland)
	//
	// * South America (São
	// Paulo)
	//
	// For a list of all the Amazon S3 supported Regions and endpoints, see
	// Regions and Endpoints
	// (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in the
	// Amazon Web Services General Reference.
	//
	// Versioning The ACL of an object is set
	// at the object version level. By default, PUT sets the ACL of the current version
	// of an object. To set the ACL of a different version, use the versionId
	// subresource. Related Resources
	//
	// * CopyObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
	//
	// *
	// GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	PutObjectAcl(ctx context.Context, params *s3.PutObjectAclInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectAclOutput, error)

	// Applies a legal hold configuration to the specified object. For more
	// information, see Locking Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). This action
	// is not supported by Amazon S3 on Outposts.
	PutObjectLegalHold(ctx context.Context, params *s3.PutObjectLegalHoldInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectLegalHoldOutput, error)

	// Places an Object Lock configuration on the specified bucket. The rule specified
	// in the Object Lock configuration will be applied by default to every new object
	// placed in the specified bucket. For more information, see Locking Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
	//
	// * The
	// DefaultRetention settings require both a mode and a period.
	//
	// * The
	// DefaultRetention period can be either Days or Years but you must select one. You
	// cannot specify Days and Years at the same time.
	//
	// * You can only enable Object
	// Lock for new buckets. If you want to turn on Object Lock for an existing bucket,
	// contact Amazon Web Services Support.
	PutObjectLockConfiguration(ctx context.Context, params *s3.PutObjectLockConfigurationInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectLockConfigurationOutput, error)

	// Places an Object Retention configuration on an object. For more information, see
	// Locking Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). Users or
	// accounts require the s3:PutObjectRetention permission in order to place an
	// Object Retention configuration on objects. Bypassing a Governance Retention
	// configuration requires the s3:BypassGovernanceRetention permission. This action
	// is not supported by Amazon S3 on Outposts.
	PutObjectRetention(ctx context.Context, params *s3.PutObjectRetentionInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectRetentionOutput, error)

	// Sets the supplied tag-set to an object that already exists in a bucket. A tag is
	// a key-value pair. You can associate tags with an object by sending a PUT request
	// against the tagging subresource that is associated with the object. You can
	// retrieve tags by sending a GET request. For more information, see
	// GetObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html). For
	// tagging-related restrictions related to characters and encodings, see Tag
	// Restrictions
	// (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
	// Note that Amazon S3 limits the maximum number of tags to 10 tags per object. To
	// use this operation, you must have permission to perform the s3:PutObjectTagging
	// action. By default, the bucket owner has this permission and can grant this
	// permission to others. To put tags of any other version, use the versionId query
	// parameter. You also need permission for the s3:PutObjectVersionTagging action.
	// For information about the Amazon S3 object tagging feature, see Object Tagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html). Special
	// Errors
	//
	// * Code: InvalidTagError
	//
	// * Cause: The tag provided was not a valid tag.
	// This error can occur if the tag did not pass input validation. For more
	// information, see Object Tagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
	//
	// * Code:
	// MalformedXMLError
	//
	// * Cause: The XML provided does not match the schema.
	//
	// * Code:
	// OperationAbortedError
	//
	// * Cause: A conflicting conditional action is currently in
	// progress against this resource. Please try again.
	//
	// * Code: InternalError
	//
	// *
	// Cause: The service was unable to apply the provided tag to the object.
	//
	// Related
	// Resources
	//
	// * GetObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
	//
	// *
	// DeleteObjectTagging
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
	PutObjectTagging(ctx context.Context, params *s3.PutObjectTaggingInput,
		optFns ...func(*s3.Options)) (*s3.PutObjectTaggingOutput, error)

	// Creates or modifies the PublicAccessBlock configuration for an Amazon S3 bucket.
	// To use this operation, you must have the s3:PutBucketPublicAccessBlock
	// permission. For more information about Amazon S3 permissions, see Specifying
	// Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
	// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket or an
	// object, it checks the PublicAccessBlock configuration for both the bucket (or
	// the bucket that contains the object) and the bucket owner's account. If the
	// PublicAccessBlock configurations are different between the bucket and the
	// account, Amazon S3 uses the most restrictive combination of the bucket-level and
	// account-level settings. For more information about when Amazon S3 considers a
	// bucket or an object 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).
	// Related Resources
	//
	// * GetPublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
	//
	// *
	// DeletePublicAccessBlock
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
	//
	// *
	// GetBucketPolicyStatus
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
	//
	// *
	// Using Amazon S3 Block Public Access
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
	PutPublicAccessBlock(ctx context.Context, params *s3.PutPublicAccessBlockInput,
		optFns ...func(*s3.Options)) (*s3.PutPublicAccessBlockOutput, error)

	// Restores an archived copy of an object back into Amazon S3 This action is not
	// supported by Amazon S3 on Outposts. This action performs the following types of
	// requests:
	//
	// * select - Perform a select query on an archived object
	//
	// * restore an
	// archive - Restore an archived object
	//
	// To use this operation, you must have
	// permissions to perform the s3:RestoreObject action. The bucket owner has this
	// permission by default and can grant this permission to others. For more
	// information about permissions, 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)
	// and Managing Access Permissions to Your Amazon S3 Resources
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
	// in the Amazon S3 User Guide. Querying Archives with Select Requests You use a
	// select type of request to perform SQL queries on archived objects. The archived
	// objects that are being queried by the select request must be formatted as
	// uncompressed comma-separated values (CSV) files. You can run queries and custom
	// analytics on your archived data without having to restore your data to a hotter
	// Amazon S3 tier. For an overview about select requests, see Querying Archived
	// Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
	// in the Amazon S3 User Guide. When making a select request, do the following:
	//
	// *
	// Define an output location for the select query's output. This must be an Amazon
	// S3 bucket in the same Amazon Web Services Region as the bucket that contains the
	// archive object that is being queried. The Amazon Web Services account that
	// initiates the job must have permissions to write to the S3 bucket. You can
	// specify the storage class and encryption for the output objects stored in the
	// bucket. For more information about output, see Querying Archived Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
	// in the Amazon S3 User Guide. For more information about the S3 structure in the
	// request body, see the following:
	//
	// * PutObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
	//
	// * Managing
	// Access with ACLs
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html) in the
	// Amazon S3 User Guide
	//
	// * Protecting Data Using Server-Side Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) in
	// the Amazon S3 User Guide
	//
	// * Define the SQL expression for the SELECT type of
	// restoration for your query in the request body's SelectParameters structure. You
	// can use expressions like the following examples.
	//
	// * The following expression
	// returns all records from the specified object. SELECT * FROM Object
	//
	// * Assuming
	// that you are not using any headers for data stored in the object, you can
	// specify columns with positional headers. SELECT s._1, s._2 FROM Object s WHERE
	// s._3 > 100
	//
	// * If you have headers and you set the fileHeaderInfo in the CSV
	// structure in the request body to USE, you can specify headers in the query. (If
	// you set the fileHeaderInfo field to IGNORE, the first row is skipped for the
	// query.) You cannot mix ordinal positions with header column names. SELECT s.Id,
	// s.FirstName, s.SSN FROM S3Object s
	//
	// For more information about using SQL with S3
	// Glacier Select restore, see SQL Reference for Amazon S3 Select and S3 Glacier
	// Select
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
	// in the Amazon S3 User Guide. When making a select request, you can also do the
	// following:
	//
	// * To expedite your queries, specify the Expedited tier. For more
	// information about tiers, see "Restoring Archives," later in this topic.
	//
	// *
	// Specify details about the data serialization format of both the input object
	// that is being queried and the serialization of the CSV-encoded query
	// results.
	//
	// The following are additional important facts about the select
	// feature:
	//
	// * The output results are new Amazon S3 objects. Unlike archive
	// retrievals, they are stored until explicitly deleted-manually or through a
	// lifecycle policy.
	//
	// * You can issue more than one select request on the same
	// Amazon S3 object. Amazon S3 doesn't deduplicate requests, so avoid issuing
	// duplicate requests.
	//
	// * Amazon S3 accepts a select request even if the object has
	// already been restored. A select request doesn’t return error response
	// 409.
	//
	// Restoring objects Objects that you archive to the S3 Glacier or S3 Glacier
	// Deep Archive storage class, and S3 Intelligent-Tiering Archive or S3
	// Intelligent-Tiering Deep Archive tiers are not accessible in real time. For
	// objects in Archive Access or Deep Archive Access tiers you must first initiate a
	// restore request, and then wait until the object is moved into the Frequent
	// Access tier. For objects in S3 Glacier or S3 Glacier Deep Archive storage
	// classes you must first initiate a restore request, and then wait until a
	// temporary copy of the object is available. To access an archived object, you
	// must restore the object for the duration (number of days) that you specify. To
	// restore a specific object version, you can provide a version ID. If you don't
	// provide a version ID, Amazon S3 restores the current version. When restoring an
	// archived object (or using a select request), you can specify one of the
	// following data access tier options in the Tier element of the request body:
	//
	// *
	// Expedited - Expedited retrievals allow you to quickly access your data stored in
	// the S3 Glacier storage class or S3 Intelligent-Tiering Archive tier when
	// occasional urgent requests for a subset of archives are required. For all but
	// the largest archived objects (250 MB+), data accessed using Expedited retrievals
	// is typically made available within 1–5 minutes. Provisioned capacity ensures
	// that retrieval capacity for Expedited retrievals is available when you need it.
	// Expedited retrievals and provisioned capacity are not available for objects
	// stored in the S3 Glacier Deep Archive storage class or S3 Intelligent-Tiering
	// Deep Archive tier.
	//
	// * Standard - Standard retrievals allow you to access any of
	// your archived objects within several hours. This is the default option for
	// retrieval requests that do not specify the retrieval option. Standard retrievals
	// typically finish within 3–5 hours for objects stored in the S3 Glacier storage
	// class or S3 Intelligent-Tiering Archive tier. They typically finish within 12
	// hours for objects stored in the S3 Glacier Deep Archive storage class or S3
	// Intelligent-Tiering Deep Archive tier. Standard retrievals are free for objects
	// stored in S3 Intelligent-Tiering.
	//
	// * Bulk - Bulk retrievals are the lowest-cost
	// retrieval option in S3 Glacier, enabling you to retrieve large amounts, even
	// petabytes, of data inexpensively. Bulk retrievals typically finish within 5–12
	// hours for objects stored in the S3 Glacier storage class or S3
	// Intelligent-Tiering Archive tier. They typically finish within 48 hours for
	// objects stored in the S3 Glacier Deep Archive storage class or S3
	// Intelligent-Tiering Deep Archive tier. Bulk retrievals are free for objects
	// stored in S3 Intelligent-Tiering.
	//
	// For more information about archive retrieval
	// options and provisioned capacity for Expedited data access, see Restoring
	// Archived Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html) in the
	// Amazon S3 User Guide. You can use Amazon S3 restore speed upgrade to change the
	// restore speed to a faster speed while it is in progress. For more information,
	// see  Upgrading the speed of an in-progress restore
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
	// in the Amazon S3 User Guide. To get the status of object restoration, you can
	// send a HEAD request. Operations return the x-amz-restore header, which provides
	// information about the restoration status, in the response. You can use Amazon S3
	// event notifications to notify you when a restore is initiated or completed. For
	// more information, see Configuring Amazon S3 Event Notifications
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html) in the
	// Amazon S3 User Guide. After restoring an archived object, you can update the
	// restoration period by reissuing the request with a new period. Amazon S3 updates
	// the restoration period relative to the current time and charges only for the
	// request-there are no data transfer charges. You cannot update the restoration
	// period when Amazon S3 is actively processing your current restore request for
	// the object. If your bucket has a lifecycle configuration with a rule that
	// includes an expiration action, the object expiration overrides the life span
	// that you specify in a restore request. For example, if you restore an object
	// copy for 10 days, but the object is scheduled to expire in 3 days, Amazon S3
	// deletes the object in 3 days. For more information about lifecycle
	// configuration, see PutBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
	// and Object Lifecycle Management
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) in
	// Amazon S3 User Guide. Responses A successful action returns either the 200 OK or
	// 202 Accepted status code.
	//
	// * If the object is not previously restored, then
	// Amazon S3 returns 202 Accepted in the response.
	//
	// * If the object is previously
	// restored, Amazon S3 returns 200 OK in the response.
	//
	// # Special Errors
	//
	// * Code:
	// RestoreAlreadyInProgress
	//
	// * Cause: Object restore is already in progress. (This
	// error does not apply to SELECT type requests.)
	//
	// * HTTP Status Code: 409
	// Conflict
	//
	// * SOAP Fault Code Prefix: Client
	//
	// * Code:
	// GlacierExpeditedRetrievalNotAvailable
	//
	// * Cause: expedited retrievals are
	// currently not available. Try again later. (Returned if there is insufficient
	// capacity to process the Expedited request. This error applies only to Expedited
	// retrievals and not to S3 Standard or Bulk retrievals.)
	//
	// * HTTP Status Code:
	// 503
	//
	// * SOAP Fault Code Prefix: N/A
	//
	// # Related Resources
	//
	// *
	// PutBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
	//
	// *
	// GetBucketNotificationConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
	//
	// *
	// SQL Reference for Amazon S3 Select and S3 Glacier Select
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
	// in the Amazon S3 User Guide
	RestoreObject(ctx context.Context, params *s3.RestoreObjectInput,
		optFns ...func(*s3.Options)) (*s3.RestoreObjectOutput, error)

	// This action filters the contents of an Amazon S3 object based on a simple
	// structured query language (SQL) statement. In the request, along with the SQL
	// expression, you must also specify a data serialization format (JSON, CSV, or
	// Apache Parquet) of the object. Amazon S3 uses this format to parse object data
	// into records, and returns only records that match the specified SQL expression.
	// You must also specify the data serialization format for the response. This
	// action is not supported by Amazon S3 on Outposts. For more information about
	// Amazon S3 Select, see Selecting Content from Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
	// and SELECT Command
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html)
	// in the Amazon S3 User Guide. For more information about using SQL with Amazon S3
	// Select, see  SQL Reference for Amazon S3 Select and S3 Glacier Select
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
	// in the Amazon S3 User Guide. Permissions You must have s3:GetObject permission
	// for this operation. Amazon S3 Select does not support anonymous access. For more
	// information about permissions, see Specifying Permissions in a Policy
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html) in
	// the Amazon S3 User Guide. Object Data Formats You can use Amazon S3 Select to
	// query objects that have the following format properties:
	//
	// * CSV, JSON, and
	// Parquet - Objects must be in CSV, JSON, or Parquet format.
	//
	// * UTF-8 - UTF-8 is
	// the only encoding type Amazon S3 Select supports.
	//
	// * GZIP or BZIP2 - CSV and
	// JSON files can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only
	// compression formats that Amazon S3 Select supports for CSV and JSON files.
	// Amazon S3 Select supports columnar compression for Parquet using GZIP or Snappy.
	// Amazon S3 Select does not support whole-object compression for Parquet
	// objects.
	//
	// * Server-side encryption - Amazon S3 Select supports querying objects
	// that are protected with server-side encryption. For objects that are encrypted
	// with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must
	// use the headers that are documented in the GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). For more
	// information about SSE-C, see Server-Side Encryption (Using Customer-Provided
	// Encryption Keys)
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
	// in the Amazon S3 User Guide. For objects that are encrypted with Amazon S3
	// managed encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS),
	// server-side encryption is handled transparently, so you don't need to specify
	// anything. For more information about server-side encryption, including SSE-S3
	// and SSE-KMS, see Protecting Data Using Server-Side Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) in
	// the Amazon S3 User Guide.
	//
	// Working with the Response Body Given the response
	// size is unknown, Amazon S3 Select streams the response as a series of messages
	// and includes a Transfer-Encoding header with chunked as its value in the
	// response. For more information, see Appendix: SelectObjectContent Response
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html).
	// GetObject Support The SelectObjectContent action does not support the following
	// GetObject functionality. For more information, see GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
	//
	// * Range:
	// Although you can specify a scan range for an Amazon S3 Select request (see
	// SelectObjectContentRequest - ScanRange
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange)
	// in the request parameters), you cannot specify the range of bytes of an object
	// to return.
	//
	// * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You
	// cannot specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
	// For more information, about storage classes see Storage Classes
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
	// in the Amazon S3 User Guide.
	//
	// Special Errors For a list of special errors for
	// this operation, see List of SELECT Object Content Error Codes
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList)
	// Related Resources
	//
	// * GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
	//
	// *
	// GetBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
	//
	// *
	// PutBucketLifecycleConfiguration
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
	SelectObjectContent(ctx context.Context, params *s3.SelectObjectContentInput,
		optFns ...func(*s3.Options)) (*s3.SelectObjectContentOutput, error)

	// Uploads a part in a multipart upload. In this operation, you provide part data
	// in your request. However, you have an option to specify your existing Amazon S3
	// object as a data source for the part you are uploading. To upload a part from an
	// existing object, you use the UploadPartCopy
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
	// operation. You must initiate a multipart upload (see CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html))
	// before you can upload any part. In response to your initiate request, Amazon S3
	// returns an upload ID, a unique identifier, that you must include in your upload
	// part request. Part numbers can be any number from 1 to 10,000, inclusive. A part
	// number uniquely identifies a part and also defines its position within the
	// object being created. If you upload a new part using the same part number that
	// was used with a previous part, the previously uploaded part is overwritten. For
	// information about maximum and minimum part sizes and other multipart upload
	// specifications, see Multipart upload limits
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html) in the
	// Amazon S3 User Guide. To ensure that data is not corrupted when traversing the
	// network, specify the Content-MD5 header in the upload part request. Amazon S3
	// checks the part data against the provided MD5 value. If they do not match,
	// Amazon S3 returns an error. If the upload request is signed with Signature
	// Version 4, then Amazon Web Services S3 uses the x-amz-content-sha256 header as a
	// checksum instead of Content-MD5. For more information see Authenticating
	// Requests: Using the Authorization Header (Amazon Web Services Signature Version
	// 4)
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html).
	// Note: After you initiate multipart upload and upload one or more parts, you must
	// either complete or abort multipart upload in order to stop getting charged for
	// storage of the uploaded parts. Only after you either complete or abort multipart
	// upload, Amazon S3 frees up the parts storage and stops charging you for the
	// parts storage. For more information on multipart uploads, go to Multipart Upload
	// Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in
	// the Amazon S3 User Guide . For information on the permissions required to use
	// the multipart upload API, go to Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) in the
	// Amazon S3 User Guide. You can optionally request server-side encryption where
	// Amazon S3 encrypts your data as it writes it to disks in its data centers and
	// decrypts it for you when you access it. You have the option of providing your
	// own encryption key, or you can use the Amazon Web Services managed encryption
	// keys. If you choose to provide your own encryption key, the request headers you
	// provide in the request must match the headers you used in the request to
	// initiate the upload by using CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
	// For more information, go to Using Server-Side Encryption
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
	// in the Amazon S3 User Guide. Server-side encryption is supported by the S3
	// Multipart Upload actions. Unless you are using a customer-provided encryption
	// key, you don't need to specify the encryption parameters in each UploadPart
	// request. Instead, you only need to specify the server-side encryption parameters
	// in the initial Initiate Multipart request. For more information, see
	// CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
	// If you requested server-side encryption using a customer-provided encryption key
	// in your initiate multipart upload request, you must provide identical encryption
	// information in each part upload using the following headers.
	//
	// *
	// x-amz-server-side-encryption-customer-algorithm
	//
	// *
	// x-amz-server-side-encryption-customer-key
	//
	// *
	// x-amz-server-side-encryption-customer-key-MD5
	//
	// # Special Errors
	//
	// * Code:
	// NoSuchUpload
	//
	// * Cause: The specified multipart upload does not exist. The upload
	// ID might be invalid, or the multipart upload might have been aborted or
	// completed.
	//
	// * HTTP Status Code: 404 Not Found
	//
	// * SOAP Fault Code Prefix:
	// Client
	//
	// # Related Resources
	//
	// * CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	UploadPart(ctx context.Context, params *s3.UploadPartInput,
		optFns ...func(*s3.Options)) (*s3.UploadPartOutput, error)

	// Uploads a part by copying data from an existing object as data source. You
	// specify the data source by adding the request header x-amz-copy-source in your
	// request and a byte range by adding the request header x-amz-copy-source-range in
	// your request. For information about maximum and minimum part sizes and other
	// multipart upload specifications, see Multipart upload limits
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html) in the
	// Amazon S3 User Guide. Instead of using an existing object as part data, you
	// might use the UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) action and
	// provide data in your request. You must initiate a multipart upload before you
	// can upload any part. In response to your initiate request. Amazon S3 returns a
	// unique identifier, the upload ID, that you must include in your upload part
	// request. For more information about using the UploadPartCopy operation, see the
	// following:
	//
	// * For conceptual information about multipart uploads, see Uploading
	// Objects Using Multipart Upload
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html) in the
	// Amazon S3 User Guide.
	//
	// * For information about permissions required to use the
	// multipart upload API, see Multipart Upload and Permissions
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html) in the
	// Amazon S3 User Guide.
	//
	// * For information about copying objects using a single
	// atomic action vs. a multipart upload, see Operations on Objects
	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html) in the
	// Amazon S3 User Guide.
	//
	// * For information about using server-side encryption with
	// customer-provided encryption keys with the UploadPartCopy operation, see
	// CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
	// and UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html).
	//
	// Note the
	// following additional considerations about the request headers
	// x-amz-copy-source-if-match, x-amz-copy-source-if-none-match,
	// x-amz-copy-source-if-unmodified-since, and
	// x-amz-copy-source-if-modified-since:
	//
	// * Consideration 1 - If both of the
	// x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since headers are
	// present in the request as follows: x-amz-copy-source-if-match condition
	// evaluates to true, and; x-amz-copy-source-if-unmodified-since condition
	// evaluates to false; Amazon S3 returns 200 OK and copies the data.
	//
	// *
	// Consideration 2 - If both of the x-amz-copy-source-if-none-match and
	// x-amz-copy-source-if-modified-since headers are present in the request as
	// follows: x-amz-copy-source-if-none-match condition evaluates to false, and;
	// x-amz-copy-source-if-modified-since condition evaluates to true; Amazon S3
	// returns 412 Precondition Failed response code.
	//
	// Versioning If your bucket has
	// versioning enabled, you could have multiple versions of the same object. By
	// default, x-amz-copy-source identifies the current version of the object to copy.
	// If the current version is a delete marker and you don't specify a versionId in
	// the x-amz-copy-source, Amazon S3 returns a 404 error, because the object does
	// not exist. If you specify versionId in the x-amz-copy-source and the versionId
	// is a delete marker, Amazon S3 returns an HTTP 400 error, because you are not
	// allowed to specify a delete marker as a version for the x-amz-copy-source. You
	// can optionally specify a specific version of the source object to copy by adding
	// the versionId subresource as shown in the following example: x-amz-copy-source:
	// /bucket/object?versionId=version id Special Errors
	//
	// * Code: NoSuchUpload
	//
	// *
	// Cause: The specified multipart upload does not exist. The upload ID might be
	// invalid, or the multipart upload might have been aborted or completed.
	//
	// * HTTP
	// Status Code: 404 Not Found
	//
	// * Code: InvalidRequest
	//
	// * Cause: The specified copy
	// source is not supported as a byte-range copy source.
	//
	// * HTTP Status Code: 400
	// Bad Request
	//
	// # Related Resources
	//
	// * CreateMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
	//
	// *
	// UploadPart
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
	//
	// *
	// CompleteMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
	//
	// *
	// AbortMultipartUpload
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
	//
	// *
	// ListParts
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
	//
	// *
	// ListMultipartUploads
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
	UploadPartCopy(ctx context.Context, params *s3.UploadPartCopyInput,
		optFns ...func(*s3.Options)) (*s3.UploadPartCopyOutput, error)

	// Passes transformed objects to a GetObject operation when using Object Lambda
	// access points. For information about Object Lambda access points, see
	// Transforming objects with Object Lambda access points
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html)
	// in the Amazon S3 User Guide. This operation supports metadata that can be
	// returned by GetObject
	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), in
	// addition to RequestRoute, RequestToken, StatusCode, ErrorCode, and ErrorMessage.
	// The GetObject response metadata is supported so that the WriteGetObjectResponse
	// caller, typically an Lambda function, can provide the same metadata when it
	// internally invokes GetObject. When WriteGetObjectResponse is called by a
	// customer-owned Lambda function, the metadata returned to the end user GetObject
	// call might differ from what Amazon S3 would normally return. You can include any
	// number of metadata headers. When including a metadata header, it should be
	// prefaced with x-amz-meta. For example, x-amz-meta-my-custom-header:
	// MyCustomValue. The primary use case for this is to forward GetObject metadata.
	// Amazon Web Services provides some prebuilt Lambda functions that you can use
	// with S3 Object Lambda to detect and redact personally identifiable information
	// (PII) and decompress S3 objects. These Lambda functions are available in the
	// Amazon Web Services Serverless Application Repository, and can be selected
	// through the Amazon Web Services Management Console when you create your Object
	// Lambda access point. Example 1: PII Access Control - This Lambda function uses
	// Amazon Comprehend, a natural language processing (NLP) service using machine
	// learning to find insights and relationships in text. It automatically detects
	// personally identifiable information (PII) such as names, addresses, dates,
	// credit card numbers, and social security numbers from documents in your Amazon
	// S3 bucket. Example 2: PII Redaction - This Lambda function uses Amazon
	// Comprehend, a natural language processing (NLP) service using machine learning
	// to find insights and relationships in text. It automatically redacts personally
	// identifiable information (PII) such as names, addresses, dates, credit card
	// numbers, and social security numbers from documents in your Amazon S3 bucket.
	// Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression, is
	// equipped to decompress objects stored in S3 in one of six compressed file
	// formats including bzip2, gzip, snappy, zlib, zstandard and ZIP. For information
	// on how to view and use these functions, see Using Amazon Web Services built
	// Lambda functions
	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-examples.html) in
	// the Amazon S3 User Guide.
	WriteGetObjectResponse(ctx context.Context, params *s3.WriteGetObjectResponseInput,
		optFns ...func(*s3.Options)) (*s3.WriteGetObjectResponseOutput, error)
}

S3API describes all the functionality implemented by the AWS Go SDK v2 S3 client

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL