aws_sdk_s3/operation/put_object/_put_object_input.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4pub struct PutObjectInput {
5 /// <p>The canned ACL to apply to the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned ACL</a> in the <i>Amazon S3 User Guide</i>.</p>
6 /// <p>When adding a new object, you can use headers to grant ACL-based 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. By default, all objects are private. Only the owner has full access control. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST API</a> in the <i>Amazon S3 User Guide</i>.</p>
7 /// <p>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 <code>bucket-owner-full-control</code> 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 <code>400</code> error with the error code <code>AccessControlListNotSupported</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p><note>
8 /// <ul>
9 /// <li>
10 /// <p>This functionality is not supported for directory buckets.</p></li>
11 /// <li>
12 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
13 /// </ul>
14 /// </note>
15 pub acl: ::std::option::Option<crate::types::ObjectCannedAcl>,
16 /// <p>Object data.</p>
17 pub body: ::aws_smithy_types::byte_stream::ByteStream,
18 /// <p>The bucket name to which the PUT action was initiated.</p>
19 /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
20 /// <p><b>Access points</b> - When you use this action with 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 <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
21 /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
22 /// </note>
23 /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
24 pub bucket: ::std::option::Option<::std::string::String>,
25 /// <p>Can be used to specify caching behavior along the request/reply chain. For more information, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
26 pub cache_control: ::std::option::Option<::std::string::String>,
27 /// <p>Specifies presentational information for the object. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc6266#section-4">https://www.rfc-editor.org/rfc/rfc6266#section-4</a>.</p>
28 pub content_disposition: ::std::option::Option<::std::string::String>,
29 /// <p>Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding">https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding</a>.</p>
30 pub content_encoding: ::std::option::Option<::std::string::String>,
31 /// <p>The language the content is in.</p>
32 pub content_language: ::std::option::Option<::std::string::String>,
33 /// <p>Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length</a>.</p>
34 pub content_length: ::std::option::Option<i64>,
35 /// <p>The Base64 encoded 128-bit <code>MD5</code> digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST Authentication</a>.</p><note>
36 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
37 /// </note> <note>
38 /// <p>This functionality is not supported for directory buckets.</p>
39 /// </note>
40 pub content_md5: ::std::option::Option<::std::string::String>,
41 /// <p>A standard MIME type describing the format of the contents. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type</a>.</p>
42 pub content_type: ::std::option::Option<::std::string::String>,
43 /// <p>Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding <code>x-amz-checksum-<i>algorithm</i> </code> or <code>x-amz-trailer</code> header sent. Otherwise, Amazon S3 fails the request with the HTTP status code <code>400 Bad Request</code>.</p>
44 /// <p>For the <code>x-amz-checksum-<i>algorithm</i> </code> header, replace <code> <i>algorithm</i> </code> with the supported algorithm from the following list:</p>
45 /// <ul>
46 /// <li>
47 /// <p><code>CRC-32</code></p></li>
48 /// <li>
49 /// <p><code>CRC-32C</code></p></li>
50 /// <li>
51 /// <p><code>CRC-64NVME</code></p></li>
52 /// <li>
53 /// <p><code>SHA-1</code></p></li>
54 /// <li>
55 /// <p><code>SHA-256</code></p></li>
56 /// </ul>
57 /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
58 /// <p>If the individual checksum value you provide through <code>x-amz-checksum-<i>algorithm</i> </code> doesn't match the checksum algorithm you set through <code>x-amz-sdk-checksum-algorithm</code>, Amazon S3 fails the request with a <code>BadDigest</code> error.</p><note>
59 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
60 /// </note>
61 /// <p>For directory buckets, when you use Amazon Web Services SDKs, <code>CRC32</code> is the default checksum algorithm that's used for performance.</p>
62 pub checksum_algorithm: ::std::option::Option<crate::types::ChecksumAlgorithm>,
63 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
64 pub checksum_crc32: ::std::option::Option<::std::string::String>,
65 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
66 pub checksum_crc32_c: ::std::option::Option<::std::string::String>,
67 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. The <code>CRC-64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
68 pub checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
69 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
70 pub checksum_sha1: ::std::option::Option<::std::string::String>,
71 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
72 pub checksum_sha256: ::std::option::Option<::std::string::String>,
73 /// <p>The date and time at which the object is no longer cacheable. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc7234#section-5.3">https://www.rfc-editor.org/rfc/rfc7234#section-5.3</a>.</p>
74 pub expires: ::std::option::Option<::aws_smithy_types::DateTime>,
75 /// <p>Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches the ETag of the object in S3. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error.</p>
76 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p>
77 /// <p>Expects the ETag value as a string.</p>
78 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
79 pub if_match: ::std::option::Option<::std::string::String>,
80 /// <p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p>
81 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p>
82 /// <p>Expects the '*' (asterisk) character.</p>
83 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
84 pub if_none_match: ::std::option::Option<::std::string::String>,
85 /// <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>
86 /// <ul>
87 /// <li>
88 /// <p>This functionality is not supported for directory buckets.</p></li>
89 /// <li>
90 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
91 /// </ul>
92 /// </note>
93 pub grant_full_control: ::std::option::Option<::std::string::String>,
94 /// <p>Allows grantee to read the object data and its metadata.</p><note>
95 /// <ul>
96 /// <li>
97 /// <p>This functionality is not supported for directory buckets.</p></li>
98 /// <li>
99 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
100 /// </ul>
101 /// </note>
102 pub grant_read: ::std::option::Option<::std::string::String>,
103 /// <p>Allows grantee to read the object ACL.</p><note>
104 /// <ul>
105 /// <li>
106 /// <p>This functionality is not supported for directory buckets.</p></li>
107 /// <li>
108 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
109 /// </ul>
110 /// </note>
111 pub grant_read_acp: ::std::option::Option<::std::string::String>,
112 /// <p>Allows grantee to write the ACL for the applicable object.</p><note>
113 /// <ul>
114 /// <li>
115 /// <p>This functionality is not supported for directory buckets.</p></li>
116 /// <li>
117 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
118 /// </ul>
119 /// </note>
120 pub grant_write_acp: ::std::option::Option<::std::string::String>,
121 /// <p>Object key for which the PUT action was initiated.</p>
122 pub key: ::std::option::Option<::std::string::String>,
123 /// <p>Specifies the offset for appending data to existing objects in bytes. The offset must be equal to the size of the existing object being appended to. If no object exists, setting this header to 0 will create a new object.</p><note>
124 /// <p>This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in directory buckets.</p>
125 /// </note>
126 pub write_offset_bytes: ::std::option::Option<i64>,
127 /// <p>A map of metadata to store with the object in S3.</p>
128 pub metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
129 /// <p>The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
130 /// <ul>
131 /// <li>
132 /// <p><b>General purpose buckets </b> - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
133 /// <li>
134 /// <p><b>Directory buckets </b> - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p>
135 /// <p>In the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>) using the REST API, the encryption request headers must match the encryption settings that are specified in the <code>CreateSession</code> request. You can't override the values of the encryption settings (<code>x-amz-server-side-encryption</code>, <code>x-amz-server-side-encryption-aws-kms-key-id</code>, <code>x-amz-server-side-encryption-context</code>, and <code>x-amz-server-side-encryption-bucket-key-enabled</code>) that are specified in the <code>CreateSession</code> request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the <code>CreateSession</code> request to protect new objects in the directory bucket.</p><note>
136 /// <p>When you use the CLI or the Amazon Web Services SDKs, for <code>CreateSession</code>, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the <code>CreateSession</code> request. It's not supported to override the encryption settings values in the <code>CreateSession</code> request. So in the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>), the encryption request headers must match the default encryption configuration of the directory bucket.</p>
137 /// </note></li>
138 /// </ul>
139 pub server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
140 /// <p>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. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p><note>
141 /// <ul>
142 /// <li>
143 /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
144 /// <li>
145 /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
146 /// </ul>
147 /// </note>
148 pub storage_class: ::std::option::Option<crate::types::StorageClass>,
149 /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object Key and Metadata</a> in the <i>Amazon S3 User Guide</i>.</p>
150 /// <p>In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:</p>
151 /// <p><code>x-amz-website-redirect-location: /anotherPage.html</code></p>
152 /// <p>In the following example, the request header sets the object redirect to another website:</p>
153 /// <p><code>x-amz-website-redirect-location: http://www.example.com/</code></p>
154 /// <p>For more information about website hosting in Amazon S3, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on Amazon S3</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How to Configure Website Page Redirects</a> in the <i>Amazon S3 User Guide</i>.</p><note>
155 /// <p>This functionality is not supported for directory buckets.</p>
156 /// </note>
157 pub website_redirect_location: ::std::option::Option<::std::string::String>,
158 /// <p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p><note>
159 /// <p>This functionality is not supported for directory buckets.</p>
160 /// </note>
161 pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
162 /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
163 /// <p>This functionality is not supported for directory buckets.</p>
164 /// </note>
165 pub sse_customer_key: ::std::option::Option<::std::string::String>,
166 /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
167 /// <p>This functionality is not supported for directory buckets.</p>
168 /// </note>
169 pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
170 /// <p>Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.</p>
171 /// <p><b>General purpose buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code> or <code>aws:kms:dsse</code>, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify <code>x-amz-server-side-encryption:aws:kms</code> or <code>x-amz-server-side-encryption:aws:kms:dsse</code>, but do not provide <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the Amazon Web Services managed key (<code>aws/s3</code>) to protect the data.</p>
172 /// <p><b>Directory buckets</b> - To encrypt data using SSE-KMS, it's recommended to specify the <code>x-amz-server-side-encryption</code> header to <code>aws:kms</code>. Then, the <code>x-amz-server-side-encryption-aws-kms-key-id</code> header implicitly uses the bucket's default KMS customer managed key ID. If you want to explicitly set the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket's lifetime. The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Incorrect key specification results in an HTTP <code>400 Bad Request</code> error.</p>
173 pub ssekms_key_id: ::std::option::Option<::std::string::String>,
174 /// <p>Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future <code>GetObject</code> operations on this object.</p>
175 /// <p><b>General purpose buckets</b> - This value must be explicitly added during <code>CopyObject</code> operations if you want an additional encryption context for your object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context">Encryption context</a> in the <i>Amazon S3 User Guide</i>.</p>
176 /// <p><b>Directory buckets</b> - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.</p>
177 pub ssekms_encryption_context: ::std::option::Option<::std::string::String>,
178 /// <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).</p>
179 /// <p><b>General purpose buckets</b> - Setting this header to <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.</p>
180 /// <p><b>Directory buckets</b> - S3 Bucket Keys are always enabled for <code>GET</code> and <code>PUT</code> operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops">the Copy operation in Batch Operations</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job">the import jobs</a>. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.</p>
181 pub bucket_key_enabled: ::std::option::Option<bool>,
182 /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
183 /// <p>This functionality is not supported for directory buckets.</p>
184 /// </note>
185 pub request_payer: ::std::option::Option<crate::types::RequestPayer>,
186 /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")</p><note>
187 /// <p>This functionality is not supported for directory buckets.</p>
188 /// </note>
189 pub tagging: ::std::option::Option<::std::string::String>,
190 /// <p>The Object Lock mode that you want to apply to this object.</p><note>
191 /// <p>This functionality is not supported for directory buckets.</p>
192 /// </note>
193 pub object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
194 /// <p>The date and time when you want this object's Object Lock to expire. Must be formatted as a timestamp parameter.</p><note>
195 /// <p>This functionality is not supported for directory buckets.</p>
196 /// </note>
197 pub object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
198 /// <p>Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a> in the <i>Amazon S3 User Guide</i>.</p><note>
199 /// <p>This functionality is not supported for directory buckets.</p>
200 /// </note>
201 pub object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
202 /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
203 pub expected_bucket_owner: ::std::option::Option<::std::string::String>,
204}
205impl PutObjectInput {
206 /// <p>The canned ACL to apply to the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned ACL</a> in the <i>Amazon S3 User Guide</i>.</p>
207 /// <p>When adding a new object, you can use headers to grant ACL-based 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. By default, all objects are private. Only the owner has full access control. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST API</a> in the <i>Amazon S3 User Guide</i>.</p>
208 /// <p>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 <code>bucket-owner-full-control</code> 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 <code>400</code> error with the error code <code>AccessControlListNotSupported</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p><note>
209 /// <ul>
210 /// <li>
211 /// <p>This functionality is not supported for directory buckets.</p></li>
212 /// <li>
213 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
214 /// </ul>
215 /// </note>
216 pub fn acl(&self) -> ::std::option::Option<&crate::types::ObjectCannedAcl> {
217 self.acl.as_ref()
218 }
219 /// <p>Object data.</p>
220 pub fn body(&self) -> &::aws_smithy_types::byte_stream::ByteStream {
221 &self.body
222 }
223 /// <p>The bucket name to which the PUT action was initiated.</p>
224 /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
225 /// <p><b>Access points</b> - When you use this action with 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 <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
226 /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
227 /// </note>
228 /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
229 pub fn bucket(&self) -> ::std::option::Option<&str> {
230 self.bucket.as_deref()
231 }
232 /// <p>Can be used to specify caching behavior along the request/reply chain. For more information, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
233 pub fn cache_control(&self) -> ::std::option::Option<&str> {
234 self.cache_control.as_deref()
235 }
236 /// <p>Specifies presentational information for the object. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc6266#section-4">https://www.rfc-editor.org/rfc/rfc6266#section-4</a>.</p>
237 pub fn content_disposition(&self) -> ::std::option::Option<&str> {
238 self.content_disposition.as_deref()
239 }
240 /// <p>Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding">https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding</a>.</p>
241 pub fn content_encoding(&self) -> ::std::option::Option<&str> {
242 self.content_encoding.as_deref()
243 }
244 /// <p>The language the content is in.</p>
245 pub fn content_language(&self) -> ::std::option::Option<&str> {
246 self.content_language.as_deref()
247 }
248 /// <p>Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length</a>.</p>
249 pub fn content_length(&self) -> ::std::option::Option<i64> {
250 self.content_length
251 }
252 /// <p>The Base64 encoded 128-bit <code>MD5</code> digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST Authentication</a>.</p><note>
253 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
254 /// </note> <note>
255 /// <p>This functionality is not supported for directory buckets.</p>
256 /// </note>
257 pub fn content_md5(&self) -> ::std::option::Option<&str> {
258 self.content_md5.as_deref()
259 }
260 /// <p>A standard MIME type describing the format of the contents. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type</a>.</p>
261 pub fn content_type(&self) -> ::std::option::Option<&str> {
262 self.content_type.as_deref()
263 }
264 /// <p>Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding <code>x-amz-checksum-<i>algorithm</i> </code> or <code>x-amz-trailer</code> header sent. Otherwise, Amazon S3 fails the request with the HTTP status code <code>400 Bad Request</code>.</p>
265 /// <p>For the <code>x-amz-checksum-<i>algorithm</i> </code> header, replace <code> <i>algorithm</i> </code> with the supported algorithm from the following list:</p>
266 /// <ul>
267 /// <li>
268 /// <p><code>CRC-32</code></p></li>
269 /// <li>
270 /// <p><code>CRC-32C</code></p></li>
271 /// <li>
272 /// <p><code>CRC-64NVME</code></p></li>
273 /// <li>
274 /// <p><code>SHA-1</code></p></li>
275 /// <li>
276 /// <p><code>SHA-256</code></p></li>
277 /// </ul>
278 /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
279 /// <p>If the individual checksum value you provide through <code>x-amz-checksum-<i>algorithm</i> </code> doesn't match the checksum algorithm you set through <code>x-amz-sdk-checksum-algorithm</code>, Amazon S3 fails the request with a <code>BadDigest</code> error.</p><note>
280 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
281 /// </note>
282 /// <p>For directory buckets, when you use Amazon Web Services SDKs, <code>CRC32</code> is the default checksum algorithm that's used for performance.</p>
283 pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::types::ChecksumAlgorithm> {
284 self.checksum_algorithm.as_ref()
285 }
286 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
287 pub fn checksum_crc32(&self) -> ::std::option::Option<&str> {
288 self.checksum_crc32.as_deref()
289 }
290 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
291 pub fn checksum_crc32_c(&self) -> ::std::option::Option<&str> {
292 self.checksum_crc32_c.as_deref()
293 }
294 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. The <code>CRC-64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
295 pub fn checksum_crc64_nvme(&self) -> ::std::option::Option<&str> {
296 self.checksum_crc64_nvme.as_deref()
297 }
298 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
299 pub fn checksum_sha1(&self) -> ::std::option::Option<&str> {
300 self.checksum_sha1.as_deref()
301 }
302 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
303 pub fn checksum_sha256(&self) -> ::std::option::Option<&str> {
304 self.checksum_sha256.as_deref()
305 }
306 /// <p>The date and time at which the object is no longer cacheable. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc7234#section-5.3">https://www.rfc-editor.org/rfc/rfc7234#section-5.3</a>.</p>
307 pub fn expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
308 self.expires.as_ref()
309 }
310 /// <p>Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches the ETag of the object in S3. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error.</p>
311 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p>
312 /// <p>Expects the ETag value as a string.</p>
313 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
314 pub fn if_match(&self) -> ::std::option::Option<&str> {
315 self.if_match.as_deref()
316 }
317 /// <p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p>
318 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p>
319 /// <p>Expects the '*' (asterisk) character.</p>
320 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
321 pub fn if_none_match(&self) -> ::std::option::Option<&str> {
322 self.if_none_match.as_deref()
323 }
324 /// <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>
325 /// <ul>
326 /// <li>
327 /// <p>This functionality is not supported for directory buckets.</p></li>
328 /// <li>
329 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
330 /// </ul>
331 /// </note>
332 pub fn grant_full_control(&self) -> ::std::option::Option<&str> {
333 self.grant_full_control.as_deref()
334 }
335 /// <p>Allows grantee to read the object data and its metadata.</p><note>
336 /// <ul>
337 /// <li>
338 /// <p>This functionality is not supported for directory buckets.</p></li>
339 /// <li>
340 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
341 /// </ul>
342 /// </note>
343 pub fn grant_read(&self) -> ::std::option::Option<&str> {
344 self.grant_read.as_deref()
345 }
346 /// <p>Allows grantee to read the object ACL.</p><note>
347 /// <ul>
348 /// <li>
349 /// <p>This functionality is not supported for directory buckets.</p></li>
350 /// <li>
351 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
352 /// </ul>
353 /// </note>
354 pub fn grant_read_acp(&self) -> ::std::option::Option<&str> {
355 self.grant_read_acp.as_deref()
356 }
357 /// <p>Allows grantee to write the ACL for the applicable object.</p><note>
358 /// <ul>
359 /// <li>
360 /// <p>This functionality is not supported for directory buckets.</p></li>
361 /// <li>
362 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
363 /// </ul>
364 /// </note>
365 pub fn grant_write_acp(&self) -> ::std::option::Option<&str> {
366 self.grant_write_acp.as_deref()
367 }
368 /// <p>Object key for which the PUT action was initiated.</p>
369 pub fn key(&self) -> ::std::option::Option<&str> {
370 self.key.as_deref()
371 }
372 /// <p>Specifies the offset for appending data to existing objects in bytes. The offset must be equal to the size of the existing object being appended to. If no object exists, setting this header to 0 will create a new object.</p><note>
373 /// <p>This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in directory buckets.</p>
374 /// </note>
375 pub fn write_offset_bytes(&self) -> ::std::option::Option<i64> {
376 self.write_offset_bytes
377 }
378 /// <p>A map of metadata to store with the object in S3.</p>
379 pub fn metadata(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
380 self.metadata.as_ref()
381 }
382 /// <p>The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
383 /// <ul>
384 /// <li>
385 /// <p><b>General purpose buckets </b> - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
386 /// <li>
387 /// <p><b>Directory buckets </b> - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p>
388 /// <p>In the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>) using the REST API, the encryption request headers must match the encryption settings that are specified in the <code>CreateSession</code> request. You can't override the values of the encryption settings (<code>x-amz-server-side-encryption</code>, <code>x-amz-server-side-encryption-aws-kms-key-id</code>, <code>x-amz-server-side-encryption-context</code>, and <code>x-amz-server-side-encryption-bucket-key-enabled</code>) that are specified in the <code>CreateSession</code> request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the <code>CreateSession</code> request to protect new objects in the directory bucket.</p><note>
389 /// <p>When you use the CLI or the Amazon Web Services SDKs, for <code>CreateSession</code>, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the <code>CreateSession</code> request. It's not supported to override the encryption settings values in the <code>CreateSession</code> request. So in the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>), the encryption request headers must match the default encryption configuration of the directory bucket.</p>
390 /// </note></li>
391 /// </ul>
392 pub fn server_side_encryption(&self) -> ::std::option::Option<&crate::types::ServerSideEncryption> {
393 self.server_side_encryption.as_ref()
394 }
395 /// <p>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. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p><note>
396 /// <ul>
397 /// <li>
398 /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
399 /// <li>
400 /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
401 /// </ul>
402 /// </note>
403 pub fn storage_class(&self) -> ::std::option::Option<&crate::types::StorageClass> {
404 self.storage_class.as_ref()
405 }
406 /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object Key and Metadata</a> in the <i>Amazon S3 User Guide</i>.</p>
407 /// <p>In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:</p>
408 /// <p><code>x-amz-website-redirect-location: /anotherPage.html</code></p>
409 /// <p>In the following example, the request header sets the object redirect to another website:</p>
410 /// <p><code>x-amz-website-redirect-location: http://www.example.com/</code></p>
411 /// <p>For more information about website hosting in Amazon S3, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on Amazon S3</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How to Configure Website Page Redirects</a> in the <i>Amazon S3 User Guide</i>.</p><note>
412 /// <p>This functionality is not supported for directory buckets.</p>
413 /// </note>
414 pub fn website_redirect_location(&self) -> ::std::option::Option<&str> {
415 self.website_redirect_location.as_deref()
416 }
417 /// <p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p><note>
418 /// <p>This functionality is not supported for directory buckets.</p>
419 /// </note>
420 pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
421 self.sse_customer_algorithm.as_deref()
422 }
423 /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
424 /// <p>This functionality is not supported for directory buckets.</p>
425 /// </note>
426 pub fn sse_customer_key(&self) -> ::std::option::Option<&str> {
427 self.sse_customer_key.as_deref()
428 }
429 /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
430 /// <p>This functionality is not supported for directory buckets.</p>
431 /// </note>
432 pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
433 self.sse_customer_key_md5.as_deref()
434 }
435 /// <p>Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.</p>
436 /// <p><b>General purpose buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code> or <code>aws:kms:dsse</code>, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify <code>x-amz-server-side-encryption:aws:kms</code> or <code>x-amz-server-side-encryption:aws:kms:dsse</code>, but do not provide <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the Amazon Web Services managed key (<code>aws/s3</code>) to protect the data.</p>
437 /// <p><b>Directory buckets</b> - To encrypt data using SSE-KMS, it's recommended to specify the <code>x-amz-server-side-encryption</code> header to <code>aws:kms</code>. Then, the <code>x-amz-server-side-encryption-aws-kms-key-id</code> header implicitly uses the bucket's default KMS customer managed key ID. If you want to explicitly set the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket's lifetime. The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Incorrect key specification results in an HTTP <code>400 Bad Request</code> error.</p>
438 pub fn ssekms_key_id(&self) -> ::std::option::Option<&str> {
439 self.ssekms_key_id.as_deref()
440 }
441 /// <p>Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future <code>GetObject</code> operations on this object.</p>
442 /// <p><b>General purpose buckets</b> - This value must be explicitly added during <code>CopyObject</code> operations if you want an additional encryption context for your object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context">Encryption context</a> in the <i>Amazon S3 User Guide</i>.</p>
443 /// <p><b>Directory buckets</b> - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.</p>
444 pub fn ssekms_encryption_context(&self) -> ::std::option::Option<&str> {
445 self.ssekms_encryption_context.as_deref()
446 }
447 /// <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).</p>
448 /// <p><b>General purpose buckets</b> - Setting this header to <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.</p>
449 /// <p><b>Directory buckets</b> - S3 Bucket Keys are always enabled for <code>GET</code> and <code>PUT</code> operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops">the Copy operation in Batch Operations</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job">the import jobs</a>. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.</p>
450 pub fn bucket_key_enabled(&self) -> ::std::option::Option<bool> {
451 self.bucket_key_enabled
452 }
453 /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
454 /// <p>This functionality is not supported for directory buckets.</p>
455 /// </note>
456 pub fn request_payer(&self) -> ::std::option::Option<&crate::types::RequestPayer> {
457 self.request_payer.as_ref()
458 }
459 /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")</p><note>
460 /// <p>This functionality is not supported for directory buckets.</p>
461 /// </note>
462 pub fn tagging(&self) -> ::std::option::Option<&str> {
463 self.tagging.as_deref()
464 }
465 /// <p>The Object Lock mode that you want to apply to this object.</p><note>
466 /// <p>This functionality is not supported for directory buckets.</p>
467 /// </note>
468 pub fn object_lock_mode(&self) -> ::std::option::Option<&crate::types::ObjectLockMode> {
469 self.object_lock_mode.as_ref()
470 }
471 /// <p>The date and time when you want this object's Object Lock to expire. Must be formatted as a timestamp parameter.</p><note>
472 /// <p>This functionality is not supported for directory buckets.</p>
473 /// </note>
474 pub fn object_lock_retain_until_date(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
475 self.object_lock_retain_until_date.as_ref()
476 }
477 /// <p>Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a> in the <i>Amazon S3 User Guide</i>.</p><note>
478 /// <p>This functionality is not supported for directory buckets.</p>
479 /// </note>
480 pub fn object_lock_legal_hold_status(&self) -> ::std::option::Option<&crate::types::ObjectLockLegalHoldStatus> {
481 self.object_lock_legal_hold_status.as_ref()
482 }
483 /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
484 pub fn expected_bucket_owner(&self) -> ::std::option::Option<&str> {
485 self.expected_bucket_owner.as_deref()
486 }
487}
488impl ::std::fmt::Debug for PutObjectInput {
489 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
490 let mut formatter = f.debug_struct("PutObjectInput");
491 formatter.field("acl", &self.acl);
492 formatter.field("body", &self.body);
493 formatter.field("bucket", &self.bucket);
494 formatter.field("cache_control", &self.cache_control);
495 formatter.field("content_disposition", &self.content_disposition);
496 formatter.field("content_encoding", &self.content_encoding);
497 formatter.field("content_language", &self.content_language);
498 formatter.field("content_length", &self.content_length);
499 formatter.field("content_md5", &self.content_md5);
500 formatter.field("content_type", &self.content_type);
501 formatter.field("checksum_algorithm", &self.checksum_algorithm);
502 formatter.field("checksum_crc32", &self.checksum_crc32);
503 formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
504 formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
505 formatter.field("checksum_sha1", &self.checksum_sha1);
506 formatter.field("checksum_sha256", &self.checksum_sha256);
507 formatter.field("expires", &self.expires);
508 formatter.field("if_match", &self.if_match);
509 formatter.field("if_none_match", &self.if_none_match);
510 formatter.field("grant_full_control", &self.grant_full_control);
511 formatter.field("grant_read", &self.grant_read);
512 formatter.field("grant_read_acp", &self.grant_read_acp);
513 formatter.field("grant_write_acp", &self.grant_write_acp);
514 formatter.field("key", &self.key);
515 formatter.field("write_offset_bytes", &self.write_offset_bytes);
516 formatter.field("metadata", &self.metadata);
517 formatter.field("server_side_encryption", &self.server_side_encryption);
518 formatter.field("storage_class", &self.storage_class);
519 formatter.field("website_redirect_location", &self.website_redirect_location);
520 formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
521 formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
522 formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
523 formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
524 formatter.field("ssekms_encryption_context", &"*** Sensitive Data Redacted ***");
525 formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
526 formatter.field("request_payer", &self.request_payer);
527 formatter.field("tagging", &self.tagging);
528 formatter.field("object_lock_mode", &self.object_lock_mode);
529 formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
530 formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
531 formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
532 formatter.finish()
533 }
534}
535impl PutObjectInput {
536 /// Creates a new builder-style object to manufacture [`PutObjectInput`](crate::operation::put_object::PutObjectInput).
537 pub fn builder() -> crate::operation::put_object::builders::PutObjectInputBuilder {
538 crate::operation::put_object::builders::PutObjectInputBuilder::default()
539 }
540}
541
542/// A builder for [`PutObjectInput`](crate::operation::put_object::PutObjectInput).
543#[derive(::std::default::Default)]
544#[non_exhaustive]
545pub struct PutObjectInputBuilder {
546 pub(crate) acl: ::std::option::Option<crate::types::ObjectCannedAcl>,
547 pub(crate) body: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>,
548 pub(crate) bucket: ::std::option::Option<::std::string::String>,
549 pub(crate) cache_control: ::std::option::Option<::std::string::String>,
550 pub(crate) content_disposition: ::std::option::Option<::std::string::String>,
551 pub(crate) content_encoding: ::std::option::Option<::std::string::String>,
552 pub(crate) content_language: ::std::option::Option<::std::string::String>,
553 pub(crate) content_length: ::std::option::Option<i64>,
554 pub(crate) content_md5: ::std::option::Option<::std::string::String>,
555 pub(crate) content_type: ::std::option::Option<::std::string::String>,
556 pub(crate) checksum_algorithm: ::std::option::Option<crate::types::ChecksumAlgorithm>,
557 pub(crate) checksum_crc32: ::std::option::Option<::std::string::String>,
558 pub(crate) checksum_crc32_c: ::std::option::Option<::std::string::String>,
559 pub(crate) checksum_crc64_nvme: ::std::option::Option<::std::string::String>,
560 pub(crate) checksum_sha1: ::std::option::Option<::std::string::String>,
561 pub(crate) checksum_sha256: ::std::option::Option<::std::string::String>,
562 pub(crate) expires: ::std::option::Option<::aws_smithy_types::DateTime>,
563 pub(crate) if_match: ::std::option::Option<::std::string::String>,
564 pub(crate) if_none_match: ::std::option::Option<::std::string::String>,
565 pub(crate) grant_full_control: ::std::option::Option<::std::string::String>,
566 pub(crate) grant_read: ::std::option::Option<::std::string::String>,
567 pub(crate) grant_read_acp: ::std::option::Option<::std::string::String>,
568 pub(crate) grant_write_acp: ::std::option::Option<::std::string::String>,
569 pub(crate) key: ::std::option::Option<::std::string::String>,
570 pub(crate) write_offset_bytes: ::std::option::Option<i64>,
571 pub(crate) metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
572 pub(crate) server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
573 pub(crate) storage_class: ::std::option::Option<crate::types::StorageClass>,
574 pub(crate) website_redirect_location: ::std::option::Option<::std::string::String>,
575 pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
576 pub(crate) sse_customer_key: ::std::option::Option<::std::string::String>,
577 pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
578 pub(crate) ssekms_key_id: ::std::option::Option<::std::string::String>,
579 pub(crate) ssekms_encryption_context: ::std::option::Option<::std::string::String>,
580 pub(crate) bucket_key_enabled: ::std::option::Option<bool>,
581 pub(crate) request_payer: ::std::option::Option<crate::types::RequestPayer>,
582 pub(crate) tagging: ::std::option::Option<::std::string::String>,
583 pub(crate) object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
584 pub(crate) object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
585 pub(crate) object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
586 pub(crate) expected_bucket_owner: ::std::option::Option<::std::string::String>,
587}
588impl PutObjectInputBuilder {
589 /// <p>The canned ACL to apply to the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned ACL</a> in the <i>Amazon S3 User Guide</i>.</p>
590 /// <p>When adding a new object, you can use headers to grant ACL-based 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. By default, all objects are private. Only the owner has full access control. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST API</a> in the <i>Amazon S3 User Guide</i>.</p>
591 /// <p>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 <code>bucket-owner-full-control</code> 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 <code>400</code> error with the error code <code>AccessControlListNotSupported</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p><note>
592 /// <ul>
593 /// <li>
594 /// <p>This functionality is not supported for directory buckets.</p></li>
595 /// <li>
596 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
597 /// </ul>
598 /// </note>
599 pub fn acl(mut self, input: crate::types::ObjectCannedAcl) -> Self {
600 self.acl = ::std::option::Option::Some(input);
601 self
602 }
603 /// <p>The canned ACL to apply to the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned ACL</a> in the <i>Amazon S3 User Guide</i>.</p>
604 /// <p>When adding a new object, you can use headers to grant ACL-based 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. By default, all objects are private. Only the owner has full access control. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST API</a> in the <i>Amazon S3 User Guide</i>.</p>
605 /// <p>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 <code>bucket-owner-full-control</code> 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 <code>400</code> error with the error code <code>AccessControlListNotSupported</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p><note>
606 /// <ul>
607 /// <li>
608 /// <p>This functionality is not supported for directory buckets.</p></li>
609 /// <li>
610 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
611 /// </ul>
612 /// </note>
613 pub fn set_acl(mut self, input: ::std::option::Option<crate::types::ObjectCannedAcl>) -> Self {
614 self.acl = input;
615 self
616 }
617 /// <p>The canned ACL to apply to the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL">Canned ACL</a> in the <i>Amazon S3 User Guide</i>.</p>
618 /// <p>When adding a new object, you can use headers to grant ACL-based 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. By default, all objects are private. Only the owner has full access control. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html">Managing ACLs Using the REST API</a> in the <i>Amazon S3 User Guide</i>.</p>
619 /// <p>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 <code>bucket-owner-full-control</code> 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 <code>400</code> error with the error code <code>AccessControlListNotSupported</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html"> Controlling ownership of objects and disabling ACLs</a> in the <i>Amazon S3 User Guide</i>.</p><note>
620 /// <ul>
621 /// <li>
622 /// <p>This functionality is not supported for directory buckets.</p></li>
623 /// <li>
624 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
625 /// </ul>
626 /// </note>
627 pub fn get_acl(&self) -> &::std::option::Option<crate::types::ObjectCannedAcl> {
628 &self.acl
629 }
630 /// <p>Object data.</p>
631 pub fn body(mut self, input: ::aws_smithy_types::byte_stream::ByteStream) -> Self {
632 self.body = ::std::option::Option::Some(input);
633 self
634 }
635 /// <p>Object data.</p>
636 pub fn set_body(mut self, input: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>) -> Self {
637 self.body = input;
638 self
639 }
640 /// <p>Object data.</p>
641 pub fn get_body(&self) -> &::std::option::Option<::aws_smithy_types::byte_stream::ByteStream> {
642 &self.body
643 }
644 /// <p>The bucket name to which the PUT action was initiated.</p>
645 /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
646 /// <p><b>Access points</b> - When you use this action with 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 <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
647 /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
648 /// </note>
649 /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
650 /// This field is required.
651 pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
652 self.bucket = ::std::option::Option::Some(input.into());
653 self
654 }
655 /// <p>The bucket name to which the PUT action was initiated.</p>
656 /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
657 /// <p><b>Access points</b> - When you use this action with 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 <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
658 /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
659 /// </note>
660 /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
661 pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
662 self.bucket = input;
663 self
664 }
665 /// <p>The bucket name to which the PUT action was initiated.</p>
666 /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
667 /// <p><b>Access points</b> - When you use this action with 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 <i>AccessPointName</i>-<i>AccountId</i>.s3-accesspoint.<i>Region</i>.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html">Using access points</a> in the <i>Amazon S3 User Guide</i>.</p><note>
668 /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
669 /// </note>
670 /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
671 pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
672 &self.bucket
673 }
674 /// <p>Can be used to specify caching behavior along the request/reply chain. For more information, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
675 pub fn cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
676 self.cache_control = ::std::option::Option::Some(input.into());
677 self
678 }
679 /// <p>Can be used to specify caching behavior along the request/reply chain. For more information, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
680 pub fn set_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
681 self.cache_control = input;
682 self
683 }
684 /// <p>Can be used to specify caching behavior along the request/reply chain. For more information, see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9</a>.</p>
685 pub fn get_cache_control(&self) -> &::std::option::Option<::std::string::String> {
686 &self.cache_control
687 }
688 /// <p>Specifies presentational information for the object. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc6266#section-4">https://www.rfc-editor.org/rfc/rfc6266#section-4</a>.</p>
689 pub fn content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
690 self.content_disposition = ::std::option::Option::Some(input.into());
691 self
692 }
693 /// <p>Specifies presentational information for the object. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc6266#section-4">https://www.rfc-editor.org/rfc/rfc6266#section-4</a>.</p>
694 pub fn set_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
695 self.content_disposition = input;
696 self
697 }
698 /// <p>Specifies presentational information for the object. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc6266#section-4">https://www.rfc-editor.org/rfc/rfc6266#section-4</a>.</p>
699 pub fn get_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
700 &self.content_disposition
701 }
702 /// <p>Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding">https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding</a>.</p>
703 pub fn content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
704 self.content_encoding = ::std::option::Option::Some(input.into());
705 self
706 }
707 /// <p>Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding">https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding</a>.</p>
708 pub fn set_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
709 self.content_encoding = input;
710 self
711 }
712 /// <p>Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding">https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding</a>.</p>
713 pub fn get_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
714 &self.content_encoding
715 }
716 /// <p>The language the content is in.</p>
717 pub fn content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
718 self.content_language = ::std::option::Option::Some(input.into());
719 self
720 }
721 /// <p>The language the content is in.</p>
722 pub fn set_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
723 self.content_language = input;
724 self
725 }
726 /// <p>The language the content is in.</p>
727 pub fn get_content_language(&self) -> &::std::option::Option<::std::string::String> {
728 &self.content_language
729 }
730 /// <p>Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length</a>.</p>
731 pub fn content_length(mut self, input: i64) -> Self {
732 self.content_length = ::std::option::Option::Some(input);
733 self
734 }
735 /// <p>Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length</a>.</p>
736 pub fn set_content_length(mut self, input: ::std::option::Option<i64>) -> Self {
737 self.content_length = input;
738 self
739 }
740 /// <p>Size of the body in bytes. This parameter is useful when the size of the body cannot be determined automatically. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length</a>.</p>
741 pub fn get_content_length(&self) -> &::std::option::Option<i64> {
742 &self.content_length
743 }
744 /// <p>The Base64 encoded 128-bit <code>MD5</code> digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST Authentication</a>.</p><note>
745 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
746 /// </note> <note>
747 /// <p>This functionality is not supported for directory buckets.</p>
748 /// </note>
749 pub fn content_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
750 self.content_md5 = ::std::option::Option::Some(input.into());
751 self
752 }
753 /// <p>The Base64 encoded 128-bit <code>MD5</code> digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST Authentication</a>.</p><note>
754 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
755 /// </note> <note>
756 /// <p>This functionality is not supported for directory buckets.</p>
757 /// </note>
758 pub fn set_content_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
759 self.content_md5 = input;
760 self
761 }
762 /// <p>The Base64 encoded 128-bit <code>MD5</code> digest of the message (without the headers) according to RFC 1864. This header can be used as a message integrity check to verify that the data is the same data that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an end-to-end integrity check. For more information about REST request authentication, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html">REST Authentication</a>.</p><note>
763 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
764 /// </note> <note>
765 /// <p>This functionality is not supported for directory buckets.</p>
766 /// </note>
767 pub fn get_content_md5(&self) -> &::std::option::Option<::std::string::String> {
768 &self.content_md5
769 }
770 /// <p>A standard MIME type describing the format of the contents. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type</a>.</p>
771 pub fn content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
772 self.content_type = ::std::option::Option::Some(input.into());
773 self
774 }
775 /// <p>A standard MIME type describing the format of the contents. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type</a>.</p>
776 pub fn set_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
777 self.content_type = input;
778 self
779 }
780 /// <p>A standard MIME type describing the format of the contents. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type">https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type</a>.</p>
781 pub fn get_content_type(&self) -> &::std::option::Option<::std::string::String> {
782 &self.content_type
783 }
784 /// <p>Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding <code>x-amz-checksum-<i>algorithm</i> </code> or <code>x-amz-trailer</code> header sent. Otherwise, Amazon S3 fails the request with the HTTP status code <code>400 Bad Request</code>.</p>
785 /// <p>For the <code>x-amz-checksum-<i>algorithm</i> </code> header, replace <code> <i>algorithm</i> </code> with the supported algorithm from the following list:</p>
786 /// <ul>
787 /// <li>
788 /// <p><code>CRC-32</code></p></li>
789 /// <li>
790 /// <p><code>CRC-32C</code></p></li>
791 /// <li>
792 /// <p><code>CRC-64NVME</code></p></li>
793 /// <li>
794 /// <p><code>SHA-1</code></p></li>
795 /// <li>
796 /// <p><code>SHA-256</code></p></li>
797 /// </ul>
798 /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
799 /// <p>If the individual checksum value you provide through <code>x-amz-checksum-<i>algorithm</i> </code> doesn't match the checksum algorithm you set through <code>x-amz-sdk-checksum-algorithm</code>, Amazon S3 fails the request with a <code>BadDigest</code> error.</p><note>
800 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
801 /// </note>
802 /// <p>For directory buckets, when you use Amazon Web Services SDKs, <code>CRC32</code> is the default checksum algorithm that's used for performance.</p>
803 pub fn checksum_algorithm(mut self, input: crate::types::ChecksumAlgorithm) -> Self {
804 self.checksum_algorithm = ::std::option::Option::Some(input);
805 self
806 }
807 /// <p>Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding <code>x-amz-checksum-<i>algorithm</i> </code> or <code>x-amz-trailer</code> header sent. Otherwise, Amazon S3 fails the request with the HTTP status code <code>400 Bad Request</code>.</p>
808 /// <p>For the <code>x-amz-checksum-<i>algorithm</i> </code> header, replace <code> <i>algorithm</i> </code> with the supported algorithm from the following list:</p>
809 /// <ul>
810 /// <li>
811 /// <p><code>CRC-32</code></p></li>
812 /// <li>
813 /// <p><code>CRC-32C</code></p></li>
814 /// <li>
815 /// <p><code>CRC-64NVME</code></p></li>
816 /// <li>
817 /// <p><code>SHA-1</code></p></li>
818 /// <li>
819 /// <p><code>SHA-256</code></p></li>
820 /// </ul>
821 /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
822 /// <p>If the individual checksum value you provide through <code>x-amz-checksum-<i>algorithm</i> </code> doesn't match the checksum algorithm you set through <code>x-amz-sdk-checksum-algorithm</code>, Amazon S3 fails the request with a <code>BadDigest</code> error.</p><note>
823 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
824 /// </note>
825 /// <p>For directory buckets, when you use Amazon Web Services SDKs, <code>CRC32</code> is the default checksum algorithm that's used for performance.</p>
826 pub fn set_checksum_algorithm(mut self, input: ::std::option::Option<crate::types::ChecksumAlgorithm>) -> Self {
827 self.checksum_algorithm = input;
828 self
829 }
830 /// <p>Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding <code>x-amz-checksum-<i>algorithm</i> </code> or <code>x-amz-trailer</code> header sent. Otherwise, Amazon S3 fails the request with the HTTP status code <code>400 Bad Request</code>.</p>
831 /// <p>For the <code>x-amz-checksum-<i>algorithm</i> </code> header, replace <code> <i>algorithm</i> </code> with the supported algorithm from the following list:</p>
832 /// <ul>
833 /// <li>
834 /// <p><code>CRC-32</code></p></li>
835 /// <li>
836 /// <p><code>CRC-32C</code></p></li>
837 /// <li>
838 /// <p><code>CRC-64NVME</code></p></li>
839 /// <li>
840 /// <p><code>SHA-1</code></p></li>
841 /// <li>
842 /// <p><code>SHA-256</code></p></li>
843 /// </ul>
844 /// <p>For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
845 /// <p>If the individual checksum value you provide through <code>x-amz-checksum-<i>algorithm</i> </code> doesn't match the checksum algorithm you set through <code>x-amz-sdk-checksum-algorithm</code>, Amazon S3 fails the request with a <code>BadDigest</code> error.</p><note>
846 /// <p>The <code>Content-MD5</code> or <code>x-amz-sdk-checksum-algorithm</code> header is required for any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object">Uploading objects to an Object Lock enabled bucket </a> in the <i>Amazon S3 User Guide</i>.</p>
847 /// </note>
848 /// <p>For directory buckets, when you use Amazon Web Services SDKs, <code>CRC32</code> is the default checksum algorithm that's used for performance.</p>
849 pub fn get_checksum_algorithm(&self) -> &::std::option::Option<crate::types::ChecksumAlgorithm> {
850 &self.checksum_algorithm
851 }
852 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
853 pub fn checksum_crc32(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
854 self.checksum_crc32 = ::std::option::Option::Some(input.into());
855 self
856 }
857 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
858 pub fn set_checksum_crc32(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
859 self.checksum_crc32 = input;
860 self
861 }
862 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
863 pub fn get_checksum_crc32(&self) -> &::std::option::Option<::std::string::String> {
864 &self.checksum_crc32
865 }
866 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
867 pub fn checksum_crc32_c(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
868 self.checksum_crc32_c = ::std::option::Option::Some(input.into());
869 self
870 }
871 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
872 pub fn set_checksum_crc32_c(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
873 self.checksum_crc32_c = input;
874 self
875 }
876 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 32-bit <code>CRC-32C</code> checksum of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
877 pub fn get_checksum_crc32_c(&self) -> &::std::option::Option<::std::string::String> {
878 &self.checksum_crc32_c
879 }
880 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. The <code>CRC-64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
881 pub fn checksum_crc64_nvme(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
882 self.checksum_crc64_nvme = ::std::option::Option::Some(input.into());
883 self
884 }
885 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. The <code>CRC-64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
886 pub fn set_checksum_crc64_nvme(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
887 self.checksum_crc64_nvme = input;
888 self
889 }
890 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 64-bit <code>CRC-64NVME</code> checksum of the object. The <code>CRC-64NVME</code> checksum is always a full object checksum. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity in the Amazon S3 User Guide</a>.</p>
891 pub fn get_checksum_crc64_nvme(&self) -> &::std::option::Option<::std::string::String> {
892 &self.checksum_crc64_nvme
893 }
894 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
895 pub fn checksum_sha1(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
896 self.checksum_sha1 = ::std::option::Option::Some(input.into());
897 self
898 }
899 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
900 pub fn set_checksum_sha1(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
901 self.checksum_sha1 = input;
902 self
903 }
904 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 160-bit <code>SHA-1</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
905 pub fn get_checksum_sha1(&self) -> &::std::option::Option<::std::string::String> {
906 &self.checksum_sha1
907 }
908 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
909 pub fn checksum_sha256(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
910 self.checksum_sha256 = ::std::option::Option::Some(input.into());
911 self
912 }
913 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
914 pub fn set_checksum_sha256(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
915 self.checksum_sha256 = input;
916 self
917 }
918 /// <p>This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. This header specifies the Base64 encoded, 256-bit <code>SHA-256</code> digest of the object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking object integrity</a> in the <i>Amazon S3 User Guide</i>.</p>
919 pub fn get_checksum_sha256(&self) -> &::std::option::Option<::std::string::String> {
920 &self.checksum_sha256
921 }
922 /// <p>The date and time at which the object is no longer cacheable. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc7234#section-5.3">https://www.rfc-editor.org/rfc/rfc7234#section-5.3</a>.</p>
923 pub fn expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
924 self.expires = ::std::option::Option::Some(input);
925 self
926 }
927 /// <p>The date and time at which the object is no longer cacheable. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc7234#section-5.3">https://www.rfc-editor.org/rfc/rfc7234#section-5.3</a>.</p>
928 pub fn set_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
929 self.expires = input;
930 self
931 }
932 /// <p>The date and time at which the object is no longer cacheable. For more information, see <a href="https://www.rfc-editor.org/rfc/rfc7234#section-5.3">https://www.rfc-editor.org/rfc/rfc7234#section-5.3</a>.</p>
933 pub fn get_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
934 &self.expires
935 }
936 /// <p>Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches the ETag of the object in S3. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error.</p>
937 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p>
938 /// <p>Expects the ETag value as a string.</p>
939 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
940 pub fn if_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
941 self.if_match = ::std::option::Option::Some(input.into());
942 self
943 }
944 /// <p>Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches the ETag of the object in S3. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error.</p>
945 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p>
946 /// <p>Expects the ETag value as a string.</p>
947 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
948 pub fn set_if_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
949 self.if_match = input;
950 self
951 }
952 /// <p>Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches the ETag of the object in S3. If the ETag values do not match, the operation returns a <code>412 Precondition Failed</code> error.</p>
953 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should fetch the object's ETag and retry the upload.</p>
954 /// <p>Expects the ETag value as a string.</p>
955 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
956 pub fn get_if_match(&self) -> &::std::option::Option<::std::string::String> {
957 &self.if_match
958 }
959 /// <p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p>
960 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p>
961 /// <p>Expects the '*' (asterisk) character.</p>
962 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
963 pub fn if_none_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
964 self.if_none_match = ::std::option::Option::Some(input.into());
965 self
966 }
967 /// <p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p>
968 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p>
969 /// <p>Expects the '*' (asterisk) character.</p>
970 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
971 pub fn set_if_none_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
972 self.if_none_match = input;
973 self
974 }
975 /// <p>Uploads the object only if the object key name does not already exist in the bucket specified. Otherwise, Amazon S3 returns a <code>412 Precondition Failed</code> error.</p>
976 /// <p>If a conflicting operation occurs during the upload S3 returns a <code>409 ConditionalRequestConflict</code> response. On a 409 failure you should retry the upload.</p>
977 /// <p>Expects the '*' (asterisk) character.</p>
978 /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html">Conditional requests</a> in the <i>Amazon S3 User Guide</i>.</p>
979 pub fn get_if_none_match(&self) -> &::std::option::Option<::std::string::String> {
980 &self.if_none_match
981 }
982 /// <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>
983 /// <ul>
984 /// <li>
985 /// <p>This functionality is not supported for directory buckets.</p></li>
986 /// <li>
987 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
988 /// </ul>
989 /// </note>
990 pub fn grant_full_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
991 self.grant_full_control = ::std::option::Option::Some(input.into());
992 self
993 }
994 /// <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>
995 /// <ul>
996 /// <li>
997 /// <p>This functionality is not supported for directory buckets.</p></li>
998 /// <li>
999 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1000 /// </ul>
1001 /// </note>
1002 pub fn set_grant_full_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1003 self.grant_full_control = input;
1004 self
1005 }
1006 /// <p>Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p><note>
1007 /// <ul>
1008 /// <li>
1009 /// <p>This functionality is not supported for directory buckets.</p></li>
1010 /// <li>
1011 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1012 /// </ul>
1013 /// </note>
1014 pub fn get_grant_full_control(&self) -> &::std::option::Option<::std::string::String> {
1015 &self.grant_full_control
1016 }
1017 /// <p>Allows grantee to read the object data and its metadata.</p><note>
1018 /// <ul>
1019 /// <li>
1020 /// <p>This functionality is not supported for directory buckets.</p></li>
1021 /// <li>
1022 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1023 /// </ul>
1024 /// </note>
1025 pub fn grant_read(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1026 self.grant_read = ::std::option::Option::Some(input.into());
1027 self
1028 }
1029 /// <p>Allows grantee to read the object data and its metadata.</p><note>
1030 /// <ul>
1031 /// <li>
1032 /// <p>This functionality is not supported for directory buckets.</p></li>
1033 /// <li>
1034 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1035 /// </ul>
1036 /// </note>
1037 pub fn set_grant_read(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1038 self.grant_read = input;
1039 self
1040 }
1041 /// <p>Allows grantee to read the object data and its metadata.</p><note>
1042 /// <ul>
1043 /// <li>
1044 /// <p>This functionality is not supported for directory buckets.</p></li>
1045 /// <li>
1046 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1047 /// </ul>
1048 /// </note>
1049 pub fn get_grant_read(&self) -> &::std::option::Option<::std::string::String> {
1050 &self.grant_read
1051 }
1052 /// <p>Allows grantee to read the object ACL.</p><note>
1053 /// <ul>
1054 /// <li>
1055 /// <p>This functionality is not supported for directory buckets.</p></li>
1056 /// <li>
1057 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1058 /// </ul>
1059 /// </note>
1060 pub fn grant_read_acp(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1061 self.grant_read_acp = ::std::option::Option::Some(input.into());
1062 self
1063 }
1064 /// <p>Allows grantee to read the object ACL.</p><note>
1065 /// <ul>
1066 /// <li>
1067 /// <p>This functionality is not supported for directory buckets.</p></li>
1068 /// <li>
1069 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1070 /// </ul>
1071 /// </note>
1072 pub fn set_grant_read_acp(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1073 self.grant_read_acp = input;
1074 self
1075 }
1076 /// <p>Allows grantee to read the object ACL.</p><note>
1077 /// <ul>
1078 /// <li>
1079 /// <p>This functionality is not supported for directory buckets.</p></li>
1080 /// <li>
1081 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1082 /// </ul>
1083 /// </note>
1084 pub fn get_grant_read_acp(&self) -> &::std::option::Option<::std::string::String> {
1085 &self.grant_read_acp
1086 }
1087 /// <p>Allows grantee to write the ACL for the applicable object.</p><note>
1088 /// <ul>
1089 /// <li>
1090 /// <p>This functionality is not supported for directory buckets.</p></li>
1091 /// <li>
1092 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1093 /// </ul>
1094 /// </note>
1095 pub fn grant_write_acp(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1096 self.grant_write_acp = ::std::option::Option::Some(input.into());
1097 self
1098 }
1099 /// <p>Allows grantee to write the ACL for the applicable object.</p><note>
1100 /// <ul>
1101 /// <li>
1102 /// <p>This functionality is not supported for directory buckets.</p></li>
1103 /// <li>
1104 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1105 /// </ul>
1106 /// </note>
1107 pub fn set_grant_write_acp(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1108 self.grant_write_acp = input;
1109 self
1110 }
1111 /// <p>Allows grantee to write the ACL for the applicable object.</p><note>
1112 /// <ul>
1113 /// <li>
1114 /// <p>This functionality is not supported for directory buckets.</p></li>
1115 /// <li>
1116 /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1117 /// </ul>
1118 /// </note>
1119 pub fn get_grant_write_acp(&self) -> &::std::option::Option<::std::string::String> {
1120 &self.grant_write_acp
1121 }
1122 /// <p>Object key for which the PUT action was initiated.</p>
1123 /// This field is required.
1124 pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1125 self.key = ::std::option::Option::Some(input.into());
1126 self
1127 }
1128 /// <p>Object key for which the PUT action was initiated.</p>
1129 pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1130 self.key = input;
1131 self
1132 }
1133 /// <p>Object key for which the PUT action was initiated.</p>
1134 pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
1135 &self.key
1136 }
1137 /// <p>Specifies the offset for appending data to existing objects in bytes. The offset must be equal to the size of the existing object being appended to. If no object exists, setting this header to 0 will create a new object.</p><note>
1138 /// <p>This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in directory buckets.</p>
1139 /// </note>
1140 pub fn write_offset_bytes(mut self, input: i64) -> Self {
1141 self.write_offset_bytes = ::std::option::Option::Some(input);
1142 self
1143 }
1144 /// <p>Specifies the offset for appending data to existing objects in bytes. The offset must be equal to the size of the existing object being appended to. If no object exists, setting this header to 0 will create a new object.</p><note>
1145 /// <p>This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in directory buckets.</p>
1146 /// </note>
1147 pub fn set_write_offset_bytes(mut self, input: ::std::option::Option<i64>) -> Self {
1148 self.write_offset_bytes = input;
1149 self
1150 }
1151 /// <p>Specifies the offset for appending data to existing objects in bytes. The offset must be equal to the size of the existing object being appended to. If no object exists, setting this header to 0 will create a new object.</p><note>
1152 /// <p>This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in directory buckets.</p>
1153 /// </note>
1154 pub fn get_write_offset_bytes(&self) -> &::std::option::Option<i64> {
1155 &self.write_offset_bytes
1156 }
1157 /// Adds a key-value pair to `metadata`.
1158 ///
1159 /// To override the contents of this collection use [`set_metadata`](Self::set_metadata).
1160 ///
1161 /// <p>A map of metadata to store with the object in S3.</p>
1162 pub fn metadata(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
1163 let mut hash_map = self.metadata.unwrap_or_default();
1164 hash_map.insert(k.into(), v.into());
1165 self.metadata = ::std::option::Option::Some(hash_map);
1166 self
1167 }
1168 /// <p>A map of metadata to store with the object in S3.</p>
1169 pub fn set_metadata(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
1170 self.metadata = input;
1171 self
1172 }
1173 /// <p>A map of metadata to store with the object in S3.</p>
1174 pub fn get_metadata(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
1175 &self.metadata
1176 }
1177 /// <p>The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
1178 /// <ul>
1179 /// <li>
1180 /// <p><b>General purpose buckets </b> - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
1181 /// <li>
1182 /// <p><b>Directory buckets </b> - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p>
1183 /// <p>In the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>) using the REST API, the encryption request headers must match the encryption settings that are specified in the <code>CreateSession</code> request. You can't override the values of the encryption settings (<code>x-amz-server-side-encryption</code>, <code>x-amz-server-side-encryption-aws-kms-key-id</code>, <code>x-amz-server-side-encryption-context</code>, and <code>x-amz-server-side-encryption-bucket-key-enabled</code>) that are specified in the <code>CreateSession</code> request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the <code>CreateSession</code> request to protect new objects in the directory bucket.</p><note>
1184 /// <p>When you use the CLI or the Amazon Web Services SDKs, for <code>CreateSession</code>, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the <code>CreateSession</code> request. It's not supported to override the encryption settings values in the <code>CreateSession</code> request. So in the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>), the encryption request headers must match the default encryption configuration of the directory bucket.</p>
1185 /// </note></li>
1186 /// </ul>
1187 pub fn server_side_encryption(mut self, input: crate::types::ServerSideEncryption) -> Self {
1188 self.server_side_encryption = ::std::option::Option::Some(input);
1189 self
1190 }
1191 /// <p>The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
1192 /// <ul>
1193 /// <li>
1194 /// <p><b>General purpose buckets </b> - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
1195 /// <li>
1196 /// <p><b>Directory buckets </b> - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p>
1197 /// <p>In the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>) using the REST API, the encryption request headers must match the encryption settings that are specified in the <code>CreateSession</code> request. You can't override the values of the encryption settings (<code>x-amz-server-side-encryption</code>, <code>x-amz-server-side-encryption-aws-kms-key-id</code>, <code>x-amz-server-side-encryption-context</code>, and <code>x-amz-server-side-encryption-bucket-key-enabled</code>) that are specified in the <code>CreateSession</code> request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the <code>CreateSession</code> request to protect new objects in the directory bucket.</p><note>
1198 /// <p>When you use the CLI or the Amazon Web Services SDKs, for <code>CreateSession</code>, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the <code>CreateSession</code> request. It's not supported to override the encryption settings values in the <code>CreateSession</code> request. So in the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>), the encryption request headers must match the default encryption configuration of the directory bucket.</p>
1199 /// </note></li>
1200 /// </ul>
1201 pub fn set_server_side_encryption(mut self, input: ::std::option::Option<crate::types::ServerSideEncryption>) -> Self {
1202 self.server_side_encryption = input;
1203 self
1204 }
1205 /// <p>The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>, <code>aws:kms:dsse</code>).</p>
1206 /// <ul>
1207 /// <li>
1208 /// <p><b>General purpose buckets </b> - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
1209 /// <li>
1210 /// <p><b>Directory buckets </b> - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (<code>AES256</code>) and server-side encryption with KMS keys (SSE-KMS) (<code>aws:kms</code>). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your <code>CreateSession</code> requests or <code>PUT</code> object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html">Protecting data with server-side encryption</a> in the <i>Amazon S3 User Guide</i>. For more information about the encryption overriding behaviors in directory buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html">Specifying server-side encryption with KMS for new object uploads</a>.</p>
1211 /// <p>In the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>) using the REST API, the encryption request headers must match the encryption settings that are specified in the <code>CreateSession</code> request. You can't override the values of the encryption settings (<code>x-amz-server-side-encryption</code>, <code>x-amz-server-side-encryption-aws-kms-key-id</code>, <code>x-amz-server-side-encryption-context</code>, and <code>x-amz-server-side-encryption-bucket-key-enabled</code>) that are specified in the <code>CreateSession</code> request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the <code>CreateSession</code> request to protect new objects in the directory bucket.</p><note>
1212 /// <p>When you use the CLI or the Amazon Web Services SDKs, for <code>CreateSession</code>, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the <code>CreateSession</code> request. It's not supported to override the encryption settings values in the <code>CreateSession</code> request. So in the Zonal endpoint API calls (except <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>), the encryption request headers must match the default encryption configuration of the directory bucket.</p>
1213 /// </note></li>
1214 /// </ul>
1215 pub fn get_server_side_encryption(&self) -> &::std::option::Option<crate::types::ServerSideEncryption> {
1216 &self.server_side_encryption
1217 }
1218 /// <p>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. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1219 /// <ul>
1220 /// <li>
1221 /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1222 /// <li>
1223 /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1224 /// </ul>
1225 /// </note>
1226 pub fn storage_class(mut self, input: crate::types::StorageClass) -> Self {
1227 self.storage_class = ::std::option::Option::Some(input);
1228 self
1229 }
1230 /// <p>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. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1231 /// <ul>
1232 /// <li>
1233 /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1234 /// <li>
1235 /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1236 /// </ul>
1237 /// </note>
1238 pub fn set_storage_class(mut self, input: ::std::option::Option<crate::types::StorageClass>) -> Self {
1239 self.storage_class = input;
1240 self
1241 }
1242 /// <p>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. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html">Storage Classes</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1243 /// <ul>
1244 /// <li>
1245 /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1246 /// <li>
1247 /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1248 /// </ul>
1249 /// </note>
1250 pub fn get_storage_class(&self) -> &::std::option::Option<crate::types::StorageClass> {
1251 &self.storage_class
1252 }
1253 /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object Key and Metadata</a> in the <i>Amazon S3 User Guide</i>.</p>
1254 /// <p>In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:</p>
1255 /// <p><code>x-amz-website-redirect-location: /anotherPage.html</code></p>
1256 /// <p>In the following example, the request header sets the object redirect to another website:</p>
1257 /// <p><code>x-amz-website-redirect-location: http://www.example.com/</code></p>
1258 /// <p>For more information about website hosting in Amazon S3, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on Amazon S3</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How to Configure Website Page Redirects</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1259 /// <p>This functionality is not supported for directory buckets.</p>
1260 /// </note>
1261 pub fn website_redirect_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1262 self.website_redirect_location = ::std::option::Option::Some(input.into());
1263 self
1264 }
1265 /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object Key and Metadata</a> in the <i>Amazon S3 User Guide</i>.</p>
1266 /// <p>In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:</p>
1267 /// <p><code>x-amz-website-redirect-location: /anotherPage.html</code></p>
1268 /// <p>In the following example, the request header sets the object redirect to another website:</p>
1269 /// <p><code>x-amz-website-redirect-location: http://www.example.com/</code></p>
1270 /// <p>For more information about website hosting in Amazon S3, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on Amazon S3</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How to Configure Website Page Redirects</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1271 /// <p>This functionality is not supported for directory buckets.</p>
1272 /// </note>
1273 pub fn set_website_redirect_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1274 self.website_redirect_location = input;
1275 self
1276 }
1277 /// <p>If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For information about object metadata, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html">Object Key and Metadata</a> in the <i>Amazon S3 User Guide</i>.</p>
1278 /// <p>In the following example, the request header sets the redirect to an object (anotherPage.html) in the same bucket:</p>
1279 /// <p><code>x-amz-website-redirect-location: /anotherPage.html</code></p>
1280 /// <p>In the following example, the request header sets the object redirect to another website:</p>
1281 /// <p><code>x-amz-website-redirect-location: http://www.example.com/</code></p>
1282 /// <p>For more information about website hosting in Amazon S3, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html">Hosting Websites on Amazon S3</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html">How to Configure Website Page Redirects</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1283 /// <p>This functionality is not supported for directory buckets.</p>
1284 /// </note>
1285 pub fn get_website_redirect_location(&self) -> &::std::option::Option<::std::string::String> {
1286 &self.website_redirect_location
1287 }
1288 /// <p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p><note>
1289 /// <p>This functionality is not supported for directory buckets.</p>
1290 /// </note>
1291 pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1292 self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
1293 self
1294 }
1295 /// <p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p><note>
1296 /// <p>This functionality is not supported for directory buckets.</p>
1297 /// </note>
1298 pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1299 self.sse_customer_algorithm = input;
1300 self
1301 }
1302 /// <p>Specifies the algorithm to use when encrypting the object (for example, <code>AES256</code>).</p><note>
1303 /// <p>This functionality is not supported for directory buckets.</p>
1304 /// </note>
1305 pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
1306 &self.sse_customer_algorithm
1307 }
1308 /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
1309 /// <p>This functionality is not supported for directory buckets.</p>
1310 /// </note>
1311 pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1312 self.sse_customer_key = ::std::option::Option::Some(input.into());
1313 self
1314 }
1315 /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
1316 /// <p>This functionality is not supported for directory buckets.</p>
1317 /// </note>
1318 pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1319 self.sse_customer_key = input;
1320 self
1321 }
1322 /// <p>Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p><note>
1323 /// <p>This functionality is not supported for directory buckets.</p>
1324 /// </note>
1325 pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
1326 &self.sse_customer_key
1327 }
1328 /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
1329 /// <p>This functionality is not supported for directory buckets.</p>
1330 /// </note>
1331 pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1332 self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
1333 self
1334 }
1335 /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
1336 /// <p>This functionality is not supported for directory buckets.</p>
1337 /// </note>
1338 pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1339 self.sse_customer_key_md5 = input;
1340 self
1341 }
1342 /// <p>Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error.</p><note>
1343 /// <p>This functionality is not supported for directory buckets.</p>
1344 /// </note>
1345 pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
1346 &self.sse_customer_key_md5
1347 }
1348 /// <p>Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.</p>
1349 /// <p><b>General purpose buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code> or <code>aws:kms:dsse</code>, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify <code>x-amz-server-side-encryption:aws:kms</code> or <code>x-amz-server-side-encryption:aws:kms:dsse</code>, but do not provide <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the Amazon Web Services managed key (<code>aws/s3</code>) to protect the data.</p>
1350 /// <p><b>Directory buckets</b> - To encrypt data using SSE-KMS, it's recommended to specify the <code>x-amz-server-side-encryption</code> header to <code>aws:kms</code>. Then, the <code>x-amz-server-side-encryption-aws-kms-key-id</code> header implicitly uses the bucket's default KMS customer managed key ID. If you want to explicitly set the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket's lifetime. The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Incorrect key specification results in an HTTP <code>400 Bad Request</code> error.</p>
1351 pub fn ssekms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1352 self.ssekms_key_id = ::std::option::Option::Some(input.into());
1353 self
1354 }
1355 /// <p>Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.</p>
1356 /// <p><b>General purpose buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code> or <code>aws:kms:dsse</code>, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify <code>x-amz-server-side-encryption:aws:kms</code> or <code>x-amz-server-side-encryption:aws:kms:dsse</code>, but do not provide <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the Amazon Web Services managed key (<code>aws/s3</code>) to protect the data.</p>
1357 /// <p><b>Directory buckets</b> - To encrypt data using SSE-KMS, it's recommended to specify the <code>x-amz-server-side-encryption</code> header to <code>aws:kms</code>. Then, the <code>x-amz-server-side-encryption-aws-kms-key-id</code> header implicitly uses the bucket's default KMS customer managed key ID. If you want to explicitly set the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket's lifetime. The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Incorrect key specification results in an HTTP <code>400 Bad Request</code> error.</p>
1358 pub fn set_ssekms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1359 self.ssekms_key_id = input;
1360 self
1361 }
1362 /// <p>Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.</p>
1363 /// <p><b>General purpose buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code> or <code>aws:kms:dsse</code>, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify <code>x-amz-server-side-encryption:aws:kms</code> or <code>x-amz-server-side-encryption:aws:kms:dsse</code>, but do not provide <code>x-amz-server-side-encryption-aws-kms-key-id</code>, Amazon S3 uses the Amazon Web Services managed key (<code>aws/s3</code>) to protect the data.</p>
1364 /// <p><b>Directory buckets</b> - To encrypt data using SSE-KMS, it's recommended to specify the <code>x-amz-server-side-encryption</code> header to <code>aws:kms</code>. Then, the <code>x-amz-server-side-encryption-aws-kms-key-id</code> header implicitly uses the bucket's default KMS customer managed key ID. If you want to explicitly set the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk">customer managed key</a> per directory bucket's lifetime. The <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk">Amazon Web Services managed key</a> (<code>aws/s3</code>) isn't supported. Incorrect key specification results in an HTTP <code>400 Bad Request</code> error.</p>
1365 pub fn get_ssekms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1366 &self.ssekms_key_id
1367 }
1368 /// <p>Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future <code>GetObject</code> operations on this object.</p>
1369 /// <p><b>General purpose buckets</b> - This value must be explicitly added during <code>CopyObject</code> operations if you want an additional encryption context for your object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context">Encryption context</a> in the <i>Amazon S3 User Guide</i>.</p>
1370 /// <p><b>Directory buckets</b> - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.</p>
1371 pub fn ssekms_encryption_context(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1372 self.ssekms_encryption_context = ::std::option::Option::Some(input.into());
1373 self
1374 }
1375 /// <p>Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future <code>GetObject</code> operations on this object.</p>
1376 /// <p><b>General purpose buckets</b> - This value must be explicitly added during <code>CopyObject</code> operations if you want an additional encryption context for your object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context">Encryption context</a> in the <i>Amazon S3 User Guide</i>.</p>
1377 /// <p><b>Directory buckets</b> - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.</p>
1378 pub fn set_ssekms_encryption_context(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1379 self.ssekms_encryption_context = input;
1380 self
1381 }
1382 /// <p>Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future <code>GetObject</code> operations on this object.</p>
1383 /// <p><b>General purpose buckets</b> - This value must be explicitly added during <code>CopyObject</code> operations if you want an additional encryption context for your object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context">Encryption context</a> in the <i>Amazon S3 User Guide</i>.</p>
1384 /// <p><b>Directory buckets</b> - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.</p>
1385 pub fn get_ssekms_encryption_context(&self) -> &::std::option::Option<::std::string::String> {
1386 &self.ssekms_encryption_context
1387 }
1388 /// <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).</p>
1389 /// <p><b>General purpose buckets</b> - Setting this header to <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.</p>
1390 /// <p><b>Directory buckets</b> - S3 Bucket Keys are always enabled for <code>GET</code> and <code>PUT</code> operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops">the Copy operation in Batch Operations</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job">the import jobs</a>. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.</p>
1391 pub fn bucket_key_enabled(mut self, input: bool) -> Self {
1392 self.bucket_key_enabled = ::std::option::Option::Some(input);
1393 self
1394 }
1395 /// <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).</p>
1396 /// <p><b>General purpose buckets</b> - Setting this header to <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.</p>
1397 /// <p><b>Directory buckets</b> - S3 Bucket Keys are always enabled for <code>GET</code> and <code>PUT</code> operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops">the Copy operation in Batch Operations</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job">the import jobs</a>. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.</p>
1398 pub fn set_bucket_key_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
1399 self.bucket_key_enabled = input;
1400 self
1401 }
1402 /// <p>Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).</p>
1403 /// <p><b>General purpose buckets</b> - Setting this header to <code>true</code> causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.</p>
1404 /// <p><b>Directory buckets</b> - S3 Bucket Keys are always enabled for <code>GET</code> and <code>PUT</code> operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html">UploadPartCopy</a>, <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops">the Copy operation in Batch Operations</a>, or <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job">the import jobs</a>. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.</p>
1405 pub fn get_bucket_key_enabled(&self) -> &::std::option::Option<bool> {
1406 &self.bucket_key_enabled
1407 }
1408 /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1409 /// <p>This functionality is not supported for directory buckets.</p>
1410 /// </note>
1411 pub fn request_payer(mut self, input: crate::types::RequestPayer) -> Self {
1412 self.request_payer = ::std::option::Option::Some(input);
1413 self
1414 }
1415 /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1416 /// <p>This functionality is not supported for directory buckets.</p>
1417 /// </note>
1418 pub fn set_request_payer(mut self, input: ::std::option::Option<crate::types::RequestPayer>) -> Self {
1419 self.request_payer = input;
1420 self
1421 }
1422 /// <p>Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If either the source or destination S3 bucket has Requester Pays enabled, the requester will pay for corresponding charges to copy the object. For information about downloading objects from Requester Pays buckets, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html">Downloading Objects in Requester Pays Buckets</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1423 /// <p>This functionality is not supported for directory buckets.</p>
1424 /// </note>
1425 pub fn get_request_payer(&self) -> &::std::option::Option<crate::types::RequestPayer> {
1426 &self.request_payer
1427 }
1428 /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")</p><note>
1429 /// <p>This functionality is not supported for directory buckets.</p>
1430 /// </note>
1431 pub fn tagging(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1432 self.tagging = ::std::option::Option::Some(input.into());
1433 self
1434 }
1435 /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")</p><note>
1436 /// <p>This functionality is not supported for directory buckets.</p>
1437 /// </note>
1438 pub fn set_tagging(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1439 self.tagging = input;
1440 self
1441 }
1442 /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")</p><note>
1443 /// <p>This functionality is not supported for directory buckets.</p>
1444 /// </note>
1445 pub fn get_tagging(&self) -> &::std::option::Option<::std::string::String> {
1446 &self.tagging
1447 }
1448 /// <p>The Object Lock mode that you want to apply to this object.</p><note>
1449 /// <p>This functionality is not supported for directory buckets.</p>
1450 /// </note>
1451 pub fn object_lock_mode(mut self, input: crate::types::ObjectLockMode) -> Self {
1452 self.object_lock_mode = ::std::option::Option::Some(input);
1453 self
1454 }
1455 /// <p>The Object Lock mode that you want to apply to this object.</p><note>
1456 /// <p>This functionality is not supported for directory buckets.</p>
1457 /// </note>
1458 pub fn set_object_lock_mode(mut self, input: ::std::option::Option<crate::types::ObjectLockMode>) -> Self {
1459 self.object_lock_mode = input;
1460 self
1461 }
1462 /// <p>The Object Lock mode that you want to apply to this object.</p><note>
1463 /// <p>This functionality is not supported for directory buckets.</p>
1464 /// </note>
1465 pub fn get_object_lock_mode(&self) -> &::std::option::Option<crate::types::ObjectLockMode> {
1466 &self.object_lock_mode
1467 }
1468 /// <p>The date and time when you want this object's Object Lock to expire. Must be formatted as a timestamp parameter.</p><note>
1469 /// <p>This functionality is not supported for directory buckets.</p>
1470 /// </note>
1471 pub fn object_lock_retain_until_date(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1472 self.object_lock_retain_until_date = ::std::option::Option::Some(input);
1473 self
1474 }
1475 /// <p>The date and time when you want this object's Object Lock to expire. Must be formatted as a timestamp parameter.</p><note>
1476 /// <p>This functionality is not supported for directory buckets.</p>
1477 /// </note>
1478 pub fn set_object_lock_retain_until_date(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1479 self.object_lock_retain_until_date = input;
1480 self
1481 }
1482 /// <p>The date and time when you want this object's Object Lock to expire. Must be formatted as a timestamp parameter.</p><note>
1483 /// <p>This functionality is not supported for directory buckets.</p>
1484 /// </note>
1485 pub fn get_object_lock_retain_until_date(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1486 &self.object_lock_retain_until_date
1487 }
1488 /// <p>Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1489 /// <p>This functionality is not supported for directory buckets.</p>
1490 /// </note>
1491 pub fn object_lock_legal_hold_status(mut self, input: crate::types::ObjectLockLegalHoldStatus) -> Self {
1492 self.object_lock_legal_hold_status = ::std::option::Option::Some(input);
1493 self
1494 }
1495 /// <p>Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1496 /// <p>This functionality is not supported for directory buckets.</p>
1497 /// </note>
1498 pub fn set_object_lock_legal_hold_status(mut self, input: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>) -> Self {
1499 self.object_lock_legal_hold_status = input;
1500 self
1501 }
1502 /// <p>Specifies whether a legal hold will be applied to this object. For more information about S3 Object Lock, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html">Object Lock</a> in the <i>Amazon S3 User Guide</i>.</p><note>
1503 /// <p>This functionality is not supported for directory buckets.</p>
1504 /// </note>
1505 pub fn get_object_lock_legal_hold_status(&self) -> &::std::option::Option<crate::types::ObjectLockLegalHoldStatus> {
1506 &self.object_lock_legal_hold_status
1507 }
1508 /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
1509 pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1510 self.expected_bucket_owner = ::std::option::Option::Some(input.into());
1511 self
1512 }
1513 /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
1514 pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1515 self.expected_bucket_owner = input;
1516 self
1517 }
1518 /// <p>The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code <code>403 Forbidden</code> (access denied).</p>
1519 pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
1520 &self.expected_bucket_owner
1521 }
1522 /// Consumes the builder and constructs a [`PutObjectInput`](crate::operation::put_object::PutObjectInput).
1523 pub fn build(self) -> ::std::result::Result<crate::operation::put_object::PutObjectInput, ::aws_smithy_types::error::operation::BuildError> {
1524 ::std::result::Result::Ok(crate::operation::put_object::PutObjectInput {
1525 acl: self.acl,
1526 body: self.body.unwrap_or_default(),
1527 bucket: self.bucket,
1528 cache_control: self.cache_control,
1529 content_disposition: self.content_disposition,
1530 content_encoding: self.content_encoding,
1531 content_language: self.content_language,
1532 content_length: self.content_length,
1533 content_md5: self.content_md5,
1534 content_type: self.content_type,
1535 checksum_algorithm: self.checksum_algorithm,
1536 checksum_crc32: self.checksum_crc32,
1537 checksum_crc32_c: self.checksum_crc32_c,
1538 checksum_crc64_nvme: self.checksum_crc64_nvme,
1539 checksum_sha1: self.checksum_sha1,
1540 checksum_sha256: self.checksum_sha256,
1541 expires: self.expires,
1542 if_match: self.if_match,
1543 if_none_match: self.if_none_match,
1544 grant_full_control: self.grant_full_control,
1545 grant_read: self.grant_read,
1546 grant_read_acp: self.grant_read_acp,
1547 grant_write_acp: self.grant_write_acp,
1548 key: self.key,
1549 write_offset_bytes: self.write_offset_bytes,
1550 metadata: self.metadata,
1551 server_side_encryption: self.server_side_encryption,
1552 storage_class: self.storage_class,
1553 website_redirect_location: self.website_redirect_location,
1554 sse_customer_algorithm: self.sse_customer_algorithm,
1555 sse_customer_key: self.sse_customer_key,
1556 sse_customer_key_md5: self.sse_customer_key_md5,
1557 ssekms_key_id: self.ssekms_key_id,
1558 ssekms_encryption_context: self.ssekms_encryption_context,
1559 bucket_key_enabled: self.bucket_key_enabled,
1560 request_payer: self.request_payer,
1561 tagging: self.tagging,
1562 object_lock_mode: self.object_lock_mode,
1563 object_lock_retain_until_date: self.object_lock_retain_until_date,
1564 object_lock_legal_hold_status: self.object_lock_legal_hold_status,
1565 expected_bucket_owner: self.expected_bucket_owner,
1566 })
1567 }
1568}
1569impl ::std::fmt::Debug for PutObjectInputBuilder {
1570 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1571 let mut formatter = f.debug_struct("PutObjectInputBuilder");
1572 formatter.field("acl", &self.acl);
1573 formatter.field("body", &self.body);
1574 formatter.field("bucket", &self.bucket);
1575 formatter.field("cache_control", &self.cache_control);
1576 formatter.field("content_disposition", &self.content_disposition);
1577 formatter.field("content_encoding", &self.content_encoding);
1578 formatter.field("content_language", &self.content_language);
1579 formatter.field("content_length", &self.content_length);
1580 formatter.field("content_md5", &self.content_md5);
1581 formatter.field("content_type", &self.content_type);
1582 formatter.field("checksum_algorithm", &self.checksum_algorithm);
1583 formatter.field("checksum_crc32", &self.checksum_crc32);
1584 formatter.field("checksum_crc32_c", &self.checksum_crc32_c);
1585 formatter.field("checksum_crc64_nvme", &self.checksum_crc64_nvme);
1586 formatter.field("checksum_sha1", &self.checksum_sha1);
1587 formatter.field("checksum_sha256", &self.checksum_sha256);
1588 formatter.field("expires", &self.expires);
1589 formatter.field("if_match", &self.if_match);
1590 formatter.field("if_none_match", &self.if_none_match);
1591 formatter.field("grant_full_control", &self.grant_full_control);
1592 formatter.field("grant_read", &self.grant_read);
1593 formatter.field("grant_read_acp", &self.grant_read_acp);
1594 formatter.field("grant_write_acp", &self.grant_write_acp);
1595 formatter.field("key", &self.key);
1596 formatter.field("write_offset_bytes", &self.write_offset_bytes);
1597 formatter.field("metadata", &self.metadata);
1598 formatter.field("server_side_encryption", &self.server_side_encryption);
1599 formatter.field("storage_class", &self.storage_class);
1600 formatter.field("website_redirect_location", &self.website_redirect_location);
1601 formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
1602 formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
1603 formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
1604 formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
1605 formatter.field("ssekms_encryption_context", &"*** Sensitive Data Redacted ***");
1606 formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
1607 formatter.field("request_payer", &self.request_payer);
1608 formatter.field("tagging", &self.tagging);
1609 formatter.field("object_lock_mode", &self.object_lock_mode);
1610 formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
1611 formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
1612 formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
1613 formatter.finish()
1614 }
1615}