aws_sdk_s3/operation/create_multipart_upload/
_create_multipart_upload_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]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
5pub struct CreateMultipartUploadInput {
6    /// <p>The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. 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>
7    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using ACLs</a>. One way to grant the permissions using the request headers is to specify a canned ACL with the <code>x-amz-acl</code> request header.</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>The name of the bucket where the multipart upload is initiated and where the object is uploaded.</p>
17    /// <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>DOC-EXAMPLE-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>
18    /// <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>
19    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
20    /// </note>
21    /// <p><b>S3 on Outposts</b> - When you use this action with Amazon 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 through the Amazon Web Services SDKs, you provide the Outposts access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, 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>
22    pub bucket: ::std::option::Option<::std::string::String>,
23    /// <p>Specifies caching behavior along the request/reply chain.</p>
24    pub cache_control: ::std::option::Option<::std::string::String>,
25    /// <p>Specifies presentational information for the object.</p>
26    pub content_disposition: ::std::option::Option<::std::string::String>,
27    /// <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.</p><note>
28    /// <p>For directory buckets, only the <code>aws-chunked</code> value is supported in this header field.</p>
29    /// </note>
30    pub content_encoding: ::std::option::Option<::std::string::String>,
31    /// <p>The language that the content is in.</p>
32    pub content_language: ::std::option::Option<::std::string::String>,
33    /// <p>A standard MIME type describing the format of the object data.</p>
34    pub content_type: ::std::option::Option<::std::string::String>,
35    /// <p>The date and time at which the object is no longer cacheable.</p>
36    pub expires: ::std::option::Option<::aws_smithy_types::DateTime>,
37    /// <p>Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p>
38    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
39    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
40    /// <ul>
41    /// <li>
42    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
43    /// <li>
44    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
45    /// <li>
46    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
47    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
48    /// <ul>
49    /// <li>
50    /// <p>US East (N. Virginia)</p></li>
51    /// <li>
52    /// <p>US West (N. California)</p></li>
53    /// <li>
54    /// <p>US West (Oregon)</p></li>
55    /// <li>
56    /// <p>Asia Pacific (Singapore)</p></li>
57    /// <li>
58    /// <p>Asia Pacific (Sydney)</p></li>
59    /// <li>
60    /// <p>Asia Pacific (Tokyo)</p></li>
61    /// <li>
62    /// <p>Europe (Ireland)</p></li>
63    /// <li>
64    /// <p>South America (São Paulo)</p></li>
65    /// </ul>
66    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
67    /// </note></li>
68    /// </ul>
69    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
70    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
71    /// <ul>
72    /// <li>
73    /// <p>This functionality is not supported for directory buckets.</p></li>
74    /// <li>
75    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
76    /// </ul>
77    /// </note>
78    pub grant_full_control: ::std::option::Option<::std::string::String>,
79    /// <p>Specify access permissions explicitly to allow grantee to read the object data and its metadata.</p>
80    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
81    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
82    /// <ul>
83    /// <li>
84    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
85    /// <li>
86    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
87    /// <li>
88    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
89    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
90    /// <ul>
91    /// <li>
92    /// <p>US East (N. Virginia)</p></li>
93    /// <li>
94    /// <p>US West (N. California)</p></li>
95    /// <li>
96    /// <p>US West (Oregon)</p></li>
97    /// <li>
98    /// <p>Asia Pacific (Singapore)</p></li>
99    /// <li>
100    /// <p>Asia Pacific (Sydney)</p></li>
101    /// <li>
102    /// <p>Asia Pacific (Tokyo)</p></li>
103    /// <li>
104    /// <p>Europe (Ireland)</p></li>
105    /// <li>
106    /// <p>South America (São Paulo)</p></li>
107    /// </ul>
108    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
109    /// </note></li>
110    /// </ul>
111    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
112    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></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_read: ::std::option::Option<::std::string::String>,
121    /// <p>Specify access permissions explicitly to allows grantee to read the object ACL.</p>
122    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
123    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
124    /// <ul>
125    /// <li>
126    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
127    /// <li>
128    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
129    /// <li>
130    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
131    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
132    /// <ul>
133    /// <li>
134    /// <p>US East (N. Virginia)</p></li>
135    /// <li>
136    /// <p>US West (N. California)</p></li>
137    /// <li>
138    /// <p>US West (Oregon)</p></li>
139    /// <li>
140    /// <p>Asia Pacific (Singapore)</p></li>
141    /// <li>
142    /// <p>Asia Pacific (Sydney)</p></li>
143    /// <li>
144    /// <p>Asia Pacific (Tokyo)</p></li>
145    /// <li>
146    /// <p>Europe (Ireland)</p></li>
147    /// <li>
148    /// <p>South America (São Paulo)</p></li>
149    /// </ul>
150    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
151    /// </note></li>
152    /// </ul>
153    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
154    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
155    /// <ul>
156    /// <li>
157    /// <p>This functionality is not supported for directory buckets.</p></li>
158    /// <li>
159    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
160    /// </ul>
161    /// </note>
162    pub grant_read_acp: ::std::option::Option<::std::string::String>,
163    /// <p>Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.</p>
164    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
165    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
166    /// <ul>
167    /// <li>
168    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
169    /// <li>
170    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
171    /// <li>
172    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
173    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
174    /// <ul>
175    /// <li>
176    /// <p>US East (N. Virginia)</p></li>
177    /// <li>
178    /// <p>US West (N. California)</p></li>
179    /// <li>
180    /// <p>US West (Oregon)</p></li>
181    /// <li>
182    /// <p>Asia Pacific (Singapore)</p></li>
183    /// <li>
184    /// <p>Asia Pacific (Sydney)</p></li>
185    /// <li>
186    /// <p>Asia Pacific (Tokyo)</p></li>
187    /// <li>
188    /// <p>Europe (Ireland)</p></li>
189    /// <li>
190    /// <p>South America (São Paulo)</p></li>
191    /// </ul>
192    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
193    /// </note></li>
194    /// </ul>
195    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
196    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
197    /// <ul>
198    /// <li>
199    /// <p>This functionality is not supported for directory buckets.</p></li>
200    /// <li>
201    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
202    /// </ul>
203    /// </note>
204    pub grant_write_acp: ::std::option::Option<::std::string::String>,
205    /// <p>Object key for which the multipart upload is to be initiated.</p>
206    pub key: ::std::option::Option<::std::string::String>,
207    /// <p>A map of metadata to store with the object in S3.</p>
208    pub metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
209    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>).</p>
210    /// <ul>
211    /// <li>
212    /// <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>
213    /// <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>
214    /// <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>
215    /// </note></li>
216    /// </ul>
217    pub server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
218    /// <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>
219    /// <ul>
220    /// <li>
221    /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
222    /// <li>
223    /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
224    /// </ul>
225    /// </note>
226    pub storage_class: ::std::option::Option<crate::types::StorageClass>,
227    /// <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.</p><note>
228    /// <p>This functionality is not supported for directory buckets.</p>
229    /// </note>
230    pub website_redirect_location: ::std::option::Option<::std::string::String>,
231    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
232    /// <p>This functionality is not supported for directory buckets.</p>
233    /// </note>
234    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
235    /// <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>
236    /// <p>This functionality is not supported for directory buckets.</p>
237    /// </note>
238    pub sse_customer_key: ::std::option::Option<::std::string::String>,
239    /// <p>Specifies the 128-bit MD5 digest of the customer-provided 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>
240    /// <p>This functionality is not supported for directory buckets.</p>
241    /// </note>
242    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
243    /// <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>
244    /// <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>
245    /// <p><b>Directory buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code>, the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header is implicitly assigned the ID of the KMS symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. If you want to specify the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS customer managed key that's configured for your directory bucket's default encryption setting. Otherwise, you get an HTTP <code>400 Bad Request</code> error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. 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 for the lifetime of the bucket. 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.</p>
246    pub ssekms_key_id: ::std::option::Option<::std::string::String>,
247    /// <p>Specifies the Amazon Web Services KMS 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.</p>
248    /// <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>
249    pub ssekms_encryption_context: ::std::option::Option<::std::string::String>,
250    /// <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>
251    /// <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>
252    /// <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>
253    pub bucket_key_enabled: ::std::option::Option<bool>,
254    /// <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>
255    /// <p>This functionality is not supported for directory buckets.</p>
256    /// </note>
257    pub request_payer: ::std::option::Option<crate::types::RequestPayer>,
258    /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters.</p><note>
259    /// <p>This functionality is not supported for directory buckets.</p>
260    /// </note>
261    pub tagging: ::std::option::Option<::std::string::String>,
262    /// <p>Specifies the Object Lock mode that you want to apply to the uploaded object.</p><note>
263    /// <p>This functionality is not supported for directory buckets.</p>
264    /// </note>
265    pub object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
266    /// <p>Specifies the date and time when you want the Object Lock to expire.</p><note>
267    /// <p>This functionality is not supported for directory buckets.</p>
268    /// </note>
269    pub object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
270    /// <p>Specifies whether you want to apply a legal hold to the uploaded object.</p><note>
271    /// <p>This functionality is not supported for directory buckets.</p>
272    /// </note>
273    pub object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
274    /// <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>
275    pub expected_bucket_owner: ::std::option::Option<::std::string::String>,
276    /// <p>Indicates the algorithm that you want Amazon S3 to use to create the checksum for 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>
277    pub checksum_algorithm: ::std::option::Option<crate::types::ChecksumAlgorithm>,
278}
279impl CreateMultipartUploadInput {
280    /// <p>The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. 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>
281    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using ACLs</a>. One way to grant the permissions using the request headers is to specify a canned ACL with the <code>x-amz-acl</code> request header.</p><note>
282    /// <ul>
283    /// <li>
284    /// <p>This functionality is not supported for directory buckets.</p></li>
285    /// <li>
286    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
287    /// </ul>
288    /// </note>
289    pub fn acl(&self) -> ::std::option::Option<&crate::types::ObjectCannedAcl> {
290        self.acl.as_ref()
291    }
292    /// <p>The name of the bucket where the multipart upload is initiated and where the object is uploaded.</p>
293    /// <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>DOC-EXAMPLE-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>
294    /// <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>
295    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
296    /// </note>
297    /// <p><b>S3 on Outposts</b> - When you use this action with Amazon 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 through the Amazon Web Services SDKs, you provide the Outposts access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, 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>
298    pub fn bucket(&self) -> ::std::option::Option<&str> {
299        self.bucket.as_deref()
300    }
301    /// <p>Specifies caching behavior along the request/reply chain.</p>
302    pub fn cache_control(&self) -> ::std::option::Option<&str> {
303        self.cache_control.as_deref()
304    }
305    /// <p>Specifies presentational information for the object.</p>
306    pub fn content_disposition(&self) -> ::std::option::Option<&str> {
307        self.content_disposition.as_deref()
308    }
309    /// <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.</p><note>
310    /// <p>For directory buckets, only the <code>aws-chunked</code> value is supported in this header field.</p>
311    /// </note>
312    pub fn content_encoding(&self) -> ::std::option::Option<&str> {
313        self.content_encoding.as_deref()
314    }
315    /// <p>The language that the content is in.</p>
316    pub fn content_language(&self) -> ::std::option::Option<&str> {
317        self.content_language.as_deref()
318    }
319    /// <p>A standard MIME type describing the format of the object data.</p>
320    pub fn content_type(&self) -> ::std::option::Option<&str> {
321        self.content_type.as_deref()
322    }
323    /// <p>The date and time at which the object is no longer cacheable.</p>
324    pub fn expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
325        self.expires.as_ref()
326    }
327    /// <p>Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p>
328    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
329    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
330    /// <ul>
331    /// <li>
332    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
333    /// <li>
334    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
335    /// <li>
336    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
337    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
338    /// <ul>
339    /// <li>
340    /// <p>US East (N. Virginia)</p></li>
341    /// <li>
342    /// <p>US West (N. California)</p></li>
343    /// <li>
344    /// <p>US West (Oregon)</p></li>
345    /// <li>
346    /// <p>Asia Pacific (Singapore)</p></li>
347    /// <li>
348    /// <p>Asia Pacific (Sydney)</p></li>
349    /// <li>
350    /// <p>Asia Pacific (Tokyo)</p></li>
351    /// <li>
352    /// <p>Europe (Ireland)</p></li>
353    /// <li>
354    /// <p>South America (São Paulo)</p></li>
355    /// </ul>
356    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
357    /// </note></li>
358    /// </ul>
359    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
360    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
361    /// <ul>
362    /// <li>
363    /// <p>This functionality is not supported for directory buckets.</p></li>
364    /// <li>
365    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
366    /// </ul>
367    /// </note>
368    pub fn grant_full_control(&self) -> ::std::option::Option<&str> {
369        self.grant_full_control.as_deref()
370    }
371    /// <p>Specify access permissions explicitly to allow grantee to read the object data and its metadata.</p>
372    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
373    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
374    /// <ul>
375    /// <li>
376    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
377    /// <li>
378    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
379    /// <li>
380    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
381    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
382    /// <ul>
383    /// <li>
384    /// <p>US East (N. Virginia)</p></li>
385    /// <li>
386    /// <p>US West (N. California)</p></li>
387    /// <li>
388    /// <p>US West (Oregon)</p></li>
389    /// <li>
390    /// <p>Asia Pacific (Singapore)</p></li>
391    /// <li>
392    /// <p>Asia Pacific (Sydney)</p></li>
393    /// <li>
394    /// <p>Asia Pacific (Tokyo)</p></li>
395    /// <li>
396    /// <p>Europe (Ireland)</p></li>
397    /// <li>
398    /// <p>South America (São Paulo)</p></li>
399    /// </ul>
400    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
401    /// </note></li>
402    /// </ul>
403    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
404    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
405    /// <ul>
406    /// <li>
407    /// <p>This functionality is not supported for directory buckets.</p></li>
408    /// <li>
409    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
410    /// </ul>
411    /// </note>
412    pub fn grant_read(&self) -> ::std::option::Option<&str> {
413        self.grant_read.as_deref()
414    }
415    /// <p>Specify access permissions explicitly to allows grantee to read the object ACL.</p>
416    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
417    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
418    /// <ul>
419    /// <li>
420    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
421    /// <li>
422    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
423    /// <li>
424    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
425    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
426    /// <ul>
427    /// <li>
428    /// <p>US East (N. Virginia)</p></li>
429    /// <li>
430    /// <p>US West (N. California)</p></li>
431    /// <li>
432    /// <p>US West (Oregon)</p></li>
433    /// <li>
434    /// <p>Asia Pacific (Singapore)</p></li>
435    /// <li>
436    /// <p>Asia Pacific (Sydney)</p></li>
437    /// <li>
438    /// <p>Asia Pacific (Tokyo)</p></li>
439    /// <li>
440    /// <p>Europe (Ireland)</p></li>
441    /// <li>
442    /// <p>South America (São Paulo)</p></li>
443    /// </ul>
444    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
445    /// </note></li>
446    /// </ul>
447    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
448    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
449    /// <ul>
450    /// <li>
451    /// <p>This functionality is not supported for directory buckets.</p></li>
452    /// <li>
453    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
454    /// </ul>
455    /// </note>
456    pub fn grant_read_acp(&self) -> ::std::option::Option<&str> {
457        self.grant_read_acp.as_deref()
458    }
459    /// <p>Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.</p>
460    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
461    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
462    /// <ul>
463    /// <li>
464    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
465    /// <li>
466    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
467    /// <li>
468    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
469    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
470    /// <ul>
471    /// <li>
472    /// <p>US East (N. Virginia)</p></li>
473    /// <li>
474    /// <p>US West (N. California)</p></li>
475    /// <li>
476    /// <p>US West (Oregon)</p></li>
477    /// <li>
478    /// <p>Asia Pacific (Singapore)</p></li>
479    /// <li>
480    /// <p>Asia Pacific (Sydney)</p></li>
481    /// <li>
482    /// <p>Asia Pacific (Tokyo)</p></li>
483    /// <li>
484    /// <p>Europe (Ireland)</p></li>
485    /// <li>
486    /// <p>South America (São Paulo)</p></li>
487    /// </ul>
488    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
489    /// </note></li>
490    /// </ul>
491    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
492    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
493    /// <ul>
494    /// <li>
495    /// <p>This functionality is not supported for directory buckets.</p></li>
496    /// <li>
497    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
498    /// </ul>
499    /// </note>
500    pub fn grant_write_acp(&self) -> ::std::option::Option<&str> {
501        self.grant_write_acp.as_deref()
502    }
503    /// <p>Object key for which the multipart upload is to be initiated.</p>
504    pub fn key(&self) -> ::std::option::Option<&str> {
505        self.key.as_deref()
506    }
507    /// <p>A map of metadata to store with the object in S3.</p>
508    pub fn metadata(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
509        self.metadata.as_ref()
510    }
511    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>).</p>
512    /// <ul>
513    /// <li>
514    /// <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>
515    /// <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>
516    /// <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>
517    /// </note></li>
518    /// </ul>
519    pub fn server_side_encryption(&self) -> ::std::option::Option<&crate::types::ServerSideEncryption> {
520        self.server_side_encryption.as_ref()
521    }
522    /// <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>
523    /// <ul>
524    /// <li>
525    /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
526    /// <li>
527    /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
528    /// </ul>
529    /// </note>
530    pub fn storage_class(&self) -> ::std::option::Option<&crate::types::StorageClass> {
531        self.storage_class.as_ref()
532    }
533    /// <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.</p><note>
534    /// <p>This functionality is not supported for directory buckets.</p>
535    /// </note>
536    pub fn website_redirect_location(&self) -> ::std::option::Option<&str> {
537        self.website_redirect_location.as_deref()
538    }
539    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
540    /// <p>This functionality is not supported for directory buckets.</p>
541    /// </note>
542    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
543        self.sse_customer_algorithm.as_deref()
544    }
545    /// <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>
546    /// <p>This functionality is not supported for directory buckets.</p>
547    /// </note>
548    pub fn sse_customer_key(&self) -> ::std::option::Option<&str> {
549        self.sse_customer_key.as_deref()
550    }
551    /// <p>Specifies the 128-bit MD5 digest of the customer-provided 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>
552    /// <p>This functionality is not supported for directory buckets.</p>
553    /// </note>
554    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
555        self.sse_customer_key_md5.as_deref()
556    }
557    /// <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>
558    /// <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>
559    /// <p><b>Directory buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code>, the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header is implicitly assigned the ID of the KMS symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. If you want to specify the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS customer managed key that's configured for your directory bucket's default encryption setting. Otherwise, you get an HTTP <code>400 Bad Request</code> error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. 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 for the lifetime of the bucket. 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.</p>
560    pub fn ssekms_key_id(&self) -> ::std::option::Option<&str> {
561        self.ssekms_key_id.as_deref()
562    }
563    /// <p>Specifies the Amazon Web Services KMS 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.</p>
564    /// <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>
565    pub fn ssekms_encryption_context(&self) -> ::std::option::Option<&str> {
566        self.ssekms_encryption_context.as_deref()
567    }
568    /// <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>
569    /// <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>
570    /// <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>
571    pub fn bucket_key_enabled(&self) -> ::std::option::Option<bool> {
572        self.bucket_key_enabled
573    }
574    /// <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>
575    /// <p>This functionality is not supported for directory buckets.</p>
576    /// </note>
577    pub fn request_payer(&self) -> ::std::option::Option<&crate::types::RequestPayer> {
578        self.request_payer.as_ref()
579    }
580    /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters.</p><note>
581    /// <p>This functionality is not supported for directory buckets.</p>
582    /// </note>
583    pub fn tagging(&self) -> ::std::option::Option<&str> {
584        self.tagging.as_deref()
585    }
586    /// <p>Specifies the Object Lock mode that you want to apply to the uploaded object.</p><note>
587    /// <p>This functionality is not supported for directory buckets.</p>
588    /// </note>
589    pub fn object_lock_mode(&self) -> ::std::option::Option<&crate::types::ObjectLockMode> {
590        self.object_lock_mode.as_ref()
591    }
592    /// <p>Specifies the date and time when you want the Object Lock to expire.</p><note>
593    /// <p>This functionality is not supported for directory buckets.</p>
594    /// </note>
595    pub fn object_lock_retain_until_date(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
596        self.object_lock_retain_until_date.as_ref()
597    }
598    /// <p>Specifies whether you want to apply a legal hold to the uploaded object.</p><note>
599    /// <p>This functionality is not supported for directory buckets.</p>
600    /// </note>
601    pub fn object_lock_legal_hold_status(&self) -> ::std::option::Option<&crate::types::ObjectLockLegalHoldStatus> {
602        self.object_lock_legal_hold_status.as_ref()
603    }
604    /// <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>
605    pub fn expected_bucket_owner(&self) -> ::std::option::Option<&str> {
606        self.expected_bucket_owner.as_deref()
607    }
608    /// <p>Indicates the algorithm that you want Amazon S3 to use to create the checksum for 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>
609    pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::types::ChecksumAlgorithm> {
610        self.checksum_algorithm.as_ref()
611    }
612}
613impl ::std::fmt::Debug for CreateMultipartUploadInput {
614    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
615        let mut formatter = f.debug_struct("CreateMultipartUploadInput");
616        formatter.field("acl", &self.acl);
617        formatter.field("bucket", &self.bucket);
618        formatter.field("cache_control", &self.cache_control);
619        formatter.field("content_disposition", &self.content_disposition);
620        formatter.field("content_encoding", &self.content_encoding);
621        formatter.field("content_language", &self.content_language);
622        formatter.field("content_type", &self.content_type);
623        formatter.field("expires", &self.expires);
624        formatter.field("grant_full_control", &self.grant_full_control);
625        formatter.field("grant_read", &self.grant_read);
626        formatter.field("grant_read_acp", &self.grant_read_acp);
627        formatter.field("grant_write_acp", &self.grant_write_acp);
628        formatter.field("key", &self.key);
629        formatter.field("metadata", &self.metadata);
630        formatter.field("server_side_encryption", &self.server_side_encryption);
631        formatter.field("storage_class", &self.storage_class);
632        formatter.field("website_redirect_location", &self.website_redirect_location);
633        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
634        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
635        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
636        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
637        formatter.field("ssekms_encryption_context", &"*** Sensitive Data Redacted ***");
638        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
639        formatter.field("request_payer", &self.request_payer);
640        formatter.field("tagging", &self.tagging);
641        formatter.field("object_lock_mode", &self.object_lock_mode);
642        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
643        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
644        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
645        formatter.field("checksum_algorithm", &self.checksum_algorithm);
646        formatter.finish()
647    }
648}
649impl CreateMultipartUploadInput {
650    /// Creates a new builder-style object to manufacture [`CreateMultipartUploadInput`](crate::operation::create_multipart_upload::CreateMultipartUploadInput).
651    pub fn builder() -> crate::operation::create_multipart_upload::builders::CreateMultipartUploadInputBuilder {
652        crate::operation::create_multipart_upload::builders::CreateMultipartUploadInputBuilder::default()
653    }
654}
655
656/// A builder for [`CreateMultipartUploadInput`](crate::operation::create_multipart_upload::CreateMultipartUploadInput).
657#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
658#[non_exhaustive]
659pub struct CreateMultipartUploadInputBuilder {
660    pub(crate) acl: ::std::option::Option<crate::types::ObjectCannedAcl>,
661    pub(crate) bucket: ::std::option::Option<::std::string::String>,
662    pub(crate) cache_control: ::std::option::Option<::std::string::String>,
663    pub(crate) content_disposition: ::std::option::Option<::std::string::String>,
664    pub(crate) content_encoding: ::std::option::Option<::std::string::String>,
665    pub(crate) content_language: ::std::option::Option<::std::string::String>,
666    pub(crate) content_type: ::std::option::Option<::std::string::String>,
667    pub(crate) expires: ::std::option::Option<::aws_smithy_types::DateTime>,
668    pub(crate) grant_full_control: ::std::option::Option<::std::string::String>,
669    pub(crate) grant_read: ::std::option::Option<::std::string::String>,
670    pub(crate) grant_read_acp: ::std::option::Option<::std::string::String>,
671    pub(crate) grant_write_acp: ::std::option::Option<::std::string::String>,
672    pub(crate) key: ::std::option::Option<::std::string::String>,
673    pub(crate) metadata: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
674    pub(crate) server_side_encryption: ::std::option::Option<crate::types::ServerSideEncryption>,
675    pub(crate) storage_class: ::std::option::Option<crate::types::StorageClass>,
676    pub(crate) website_redirect_location: ::std::option::Option<::std::string::String>,
677    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
678    pub(crate) sse_customer_key: ::std::option::Option<::std::string::String>,
679    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
680    pub(crate) ssekms_key_id: ::std::option::Option<::std::string::String>,
681    pub(crate) ssekms_encryption_context: ::std::option::Option<::std::string::String>,
682    pub(crate) bucket_key_enabled: ::std::option::Option<bool>,
683    pub(crate) request_payer: ::std::option::Option<crate::types::RequestPayer>,
684    pub(crate) tagging: ::std::option::Option<::std::string::String>,
685    pub(crate) object_lock_mode: ::std::option::Option<crate::types::ObjectLockMode>,
686    pub(crate) object_lock_retain_until_date: ::std::option::Option<::aws_smithy_types::DateTime>,
687    pub(crate) object_lock_legal_hold_status: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>,
688    pub(crate) expected_bucket_owner: ::std::option::Option<::std::string::String>,
689    pub(crate) checksum_algorithm: ::std::option::Option<crate::types::ChecksumAlgorithm>,
690}
691impl CreateMultipartUploadInputBuilder {
692    /// <p>The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. 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>
693    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using ACLs</a>. One way to grant the permissions using the request headers is to specify a canned ACL with the <code>x-amz-acl</code> request header.</p><note>
694    /// <ul>
695    /// <li>
696    /// <p>This functionality is not supported for directory buckets.</p></li>
697    /// <li>
698    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
699    /// </ul>
700    /// </note>
701    pub fn acl(mut self, input: crate::types::ObjectCannedAcl) -> Self {
702        self.acl = ::std::option::Option::Some(input);
703        self
704    }
705    /// <p>The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. 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>
706    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using ACLs</a>. One way to grant the permissions using the request headers is to specify a canned ACL with the <code>x-amz-acl</code> request header.</p><note>
707    /// <ul>
708    /// <li>
709    /// <p>This functionality is not supported for directory buckets.</p></li>
710    /// <li>
711    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
712    /// </ul>
713    /// </note>
714    pub fn set_acl(mut self, input: ::std::option::Option<crate::types::ObjectCannedAcl>) -> Self {
715        self.acl = input;
716        self
717    }
718    /// <p>The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as <i>canned ACLs</i>. Each canned ACL has a predefined set of grantees and permissions. 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>
719    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html">Using ACLs</a>. One way to grant the permissions using the request headers is to specify a canned ACL with the <code>x-amz-acl</code> request header.</p><note>
720    /// <ul>
721    /// <li>
722    /// <p>This functionality is not supported for directory buckets.</p></li>
723    /// <li>
724    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
725    /// </ul>
726    /// </note>
727    pub fn get_acl(&self) -> &::std::option::Option<crate::types::ObjectCannedAcl> {
728        &self.acl
729    }
730    /// <p>The name of the bucket where the multipart upload is initiated and where the object is uploaded.</p>
731    /// <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>DOC-EXAMPLE-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>
732    /// <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>
733    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
734    /// </note>
735    /// <p><b>S3 on Outposts</b> - When you use this action with Amazon 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 through the Amazon Web Services SDKs, you provide the Outposts access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, 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>
736    /// This field is required.
737    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
738        self.bucket = ::std::option::Option::Some(input.into());
739        self
740    }
741    /// <p>The name of the bucket where the multipart upload is initiated and where the object is uploaded.</p>
742    /// <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>DOC-EXAMPLE-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>
743    /// <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>
744    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
745    /// </note>
746    /// <p><b>S3 on Outposts</b> - When you use this action with Amazon 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 through the Amazon Web Services SDKs, you provide the Outposts access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, 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>
747    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
748        self.bucket = input;
749        self
750    }
751    /// <p>The name of the bucket where the multipart upload is initiated and where the object is uploaded.</p>
752    /// <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>DOC-EXAMPLE-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>
753    /// <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>
754    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
755    /// </note>
756    /// <p><b>S3 on Outposts</b> - When you use this action with Amazon 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 through the Amazon Web Services SDKs, you provide the Outposts access point ARN in place of the bucket name. For more information about S3 on Outposts ARNs, 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>
757    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
758        &self.bucket
759    }
760    /// <p>Specifies caching behavior along the request/reply chain.</p>
761    pub fn cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
762        self.cache_control = ::std::option::Option::Some(input.into());
763        self
764    }
765    /// <p>Specifies caching behavior along the request/reply chain.</p>
766    pub fn set_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
767        self.cache_control = input;
768        self
769    }
770    /// <p>Specifies caching behavior along the request/reply chain.</p>
771    pub fn get_cache_control(&self) -> &::std::option::Option<::std::string::String> {
772        &self.cache_control
773    }
774    /// <p>Specifies presentational information for the object.</p>
775    pub fn content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
776        self.content_disposition = ::std::option::Option::Some(input.into());
777        self
778    }
779    /// <p>Specifies presentational information for the object.</p>
780    pub fn set_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
781        self.content_disposition = input;
782        self
783    }
784    /// <p>Specifies presentational information for the object.</p>
785    pub fn get_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
786        &self.content_disposition
787    }
788    /// <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.</p><note>
789    /// <p>For directory buckets, only the <code>aws-chunked</code> value is supported in this header field.</p>
790    /// </note>
791    pub fn content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
792        self.content_encoding = ::std::option::Option::Some(input.into());
793        self
794    }
795    /// <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.</p><note>
796    /// <p>For directory buckets, only the <code>aws-chunked</code> value is supported in this header field.</p>
797    /// </note>
798    pub fn set_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
799        self.content_encoding = input;
800        self
801    }
802    /// <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.</p><note>
803    /// <p>For directory buckets, only the <code>aws-chunked</code> value is supported in this header field.</p>
804    /// </note>
805    pub fn get_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
806        &self.content_encoding
807    }
808    /// <p>The language that the content is in.</p>
809    pub fn content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
810        self.content_language = ::std::option::Option::Some(input.into());
811        self
812    }
813    /// <p>The language that the content is in.</p>
814    pub fn set_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
815        self.content_language = input;
816        self
817    }
818    /// <p>The language that the content is in.</p>
819    pub fn get_content_language(&self) -> &::std::option::Option<::std::string::String> {
820        &self.content_language
821    }
822    /// <p>A standard MIME type describing the format of the object data.</p>
823    pub fn content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
824        self.content_type = ::std::option::Option::Some(input.into());
825        self
826    }
827    /// <p>A standard MIME type describing the format of the object data.</p>
828    pub fn set_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
829        self.content_type = input;
830        self
831    }
832    /// <p>A standard MIME type describing the format of the object data.</p>
833    pub fn get_content_type(&self) -> &::std::option::Option<::std::string::String> {
834        &self.content_type
835    }
836    /// <p>The date and time at which the object is no longer cacheable.</p>
837    pub fn expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
838        self.expires = ::std::option::Option::Some(input);
839        self
840    }
841    /// <p>The date and time at which the object is no longer cacheable.</p>
842    pub fn set_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
843        self.expires = input;
844        self
845    }
846    /// <p>The date and time at which the object is no longer cacheable.</p>
847    pub fn get_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
848        &self.expires
849    }
850    /// <p>Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p>
851    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
852    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
853    /// <ul>
854    /// <li>
855    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
856    /// <li>
857    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
858    /// <li>
859    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
860    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
861    /// <ul>
862    /// <li>
863    /// <p>US East (N. Virginia)</p></li>
864    /// <li>
865    /// <p>US West (N. California)</p></li>
866    /// <li>
867    /// <p>US West (Oregon)</p></li>
868    /// <li>
869    /// <p>Asia Pacific (Singapore)</p></li>
870    /// <li>
871    /// <p>Asia Pacific (Sydney)</p></li>
872    /// <li>
873    /// <p>Asia Pacific (Tokyo)</p></li>
874    /// <li>
875    /// <p>Europe (Ireland)</p></li>
876    /// <li>
877    /// <p>South America (São Paulo)</p></li>
878    /// </ul>
879    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
880    /// </note></li>
881    /// </ul>
882    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
883    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
884    /// <ul>
885    /// <li>
886    /// <p>This functionality is not supported for directory buckets.</p></li>
887    /// <li>
888    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
889    /// </ul>
890    /// </note>
891    pub fn grant_full_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
892        self.grant_full_control = ::std::option::Option::Some(input.into());
893        self
894    }
895    /// <p>Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p>
896    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
897    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
898    /// <ul>
899    /// <li>
900    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
901    /// <li>
902    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
903    /// <li>
904    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
905    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
906    /// <ul>
907    /// <li>
908    /// <p>US East (N. Virginia)</p></li>
909    /// <li>
910    /// <p>US West (N. California)</p></li>
911    /// <li>
912    /// <p>US West (Oregon)</p></li>
913    /// <li>
914    /// <p>Asia Pacific (Singapore)</p></li>
915    /// <li>
916    /// <p>Asia Pacific (Sydney)</p></li>
917    /// <li>
918    /// <p>Asia Pacific (Tokyo)</p></li>
919    /// <li>
920    /// <p>Europe (Ireland)</p></li>
921    /// <li>
922    /// <p>South America (São Paulo)</p></li>
923    /// </ul>
924    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
925    /// </note></li>
926    /// </ul>
927    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
928    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
929    /// <ul>
930    /// <li>
931    /// <p>This functionality is not supported for directory buckets.</p></li>
932    /// <li>
933    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
934    /// </ul>
935    /// </note>
936    pub fn set_grant_full_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
937        self.grant_full_control = input;
938        self
939    }
940    /// <p>Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.</p>
941    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
942    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
943    /// <ul>
944    /// <li>
945    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
946    /// <li>
947    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
948    /// <li>
949    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
950    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
951    /// <ul>
952    /// <li>
953    /// <p>US East (N. Virginia)</p></li>
954    /// <li>
955    /// <p>US West (N. California)</p></li>
956    /// <li>
957    /// <p>US West (Oregon)</p></li>
958    /// <li>
959    /// <p>Asia Pacific (Singapore)</p></li>
960    /// <li>
961    /// <p>Asia Pacific (Sydney)</p></li>
962    /// <li>
963    /// <p>Asia Pacific (Tokyo)</p></li>
964    /// <li>
965    /// <p>Europe (Ireland)</p></li>
966    /// <li>
967    /// <p>South America (São Paulo)</p></li>
968    /// </ul>
969    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
970    /// </note></li>
971    /// </ul>
972    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
973    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
974    /// <ul>
975    /// <li>
976    /// <p>This functionality is not supported for directory buckets.</p></li>
977    /// <li>
978    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
979    /// </ul>
980    /// </note>
981    pub fn get_grant_full_control(&self) -> &::std::option::Option<::std::string::String> {
982        &self.grant_full_control
983    }
984    /// <p>Specify access permissions explicitly to allow grantee to read the object data and its metadata.</p>
985    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
986    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
987    /// <ul>
988    /// <li>
989    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
990    /// <li>
991    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
992    /// <li>
993    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
994    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
995    /// <ul>
996    /// <li>
997    /// <p>US East (N. Virginia)</p></li>
998    /// <li>
999    /// <p>US West (N. California)</p></li>
1000    /// <li>
1001    /// <p>US West (Oregon)</p></li>
1002    /// <li>
1003    /// <p>Asia Pacific (Singapore)</p></li>
1004    /// <li>
1005    /// <p>Asia Pacific (Sydney)</p></li>
1006    /// <li>
1007    /// <p>Asia Pacific (Tokyo)</p></li>
1008    /// <li>
1009    /// <p>Europe (Ireland)</p></li>
1010    /// <li>
1011    /// <p>South America (São Paulo)</p></li>
1012    /// </ul>
1013    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1014    /// </note></li>
1015    /// </ul>
1016    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1017    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></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>Specify access permissions explicitly to allow grantee to read the object data and its metadata.</p>
1030    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1031    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1032    /// <ul>
1033    /// <li>
1034    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1035    /// <li>
1036    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1037    /// <li>
1038    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1039    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1040    /// <ul>
1041    /// <li>
1042    /// <p>US East (N. Virginia)</p></li>
1043    /// <li>
1044    /// <p>US West (N. California)</p></li>
1045    /// <li>
1046    /// <p>US West (Oregon)</p></li>
1047    /// <li>
1048    /// <p>Asia Pacific (Singapore)</p></li>
1049    /// <li>
1050    /// <p>Asia Pacific (Sydney)</p></li>
1051    /// <li>
1052    /// <p>Asia Pacific (Tokyo)</p></li>
1053    /// <li>
1054    /// <p>Europe (Ireland)</p></li>
1055    /// <li>
1056    /// <p>South America (São Paulo)</p></li>
1057    /// </ul>
1058    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1059    /// </note></li>
1060    /// </ul>
1061    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1062    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1063    /// <ul>
1064    /// <li>
1065    /// <p>This functionality is not supported for directory buckets.</p></li>
1066    /// <li>
1067    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1068    /// </ul>
1069    /// </note>
1070    pub fn set_grant_read(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1071        self.grant_read = input;
1072        self
1073    }
1074    /// <p>Specify access permissions explicitly to allow grantee to read the object data and its metadata.</p>
1075    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1076    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1077    /// <ul>
1078    /// <li>
1079    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1080    /// <li>
1081    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1082    /// <li>
1083    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1084    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1085    /// <ul>
1086    /// <li>
1087    /// <p>US East (N. Virginia)</p></li>
1088    /// <li>
1089    /// <p>US West (N. California)</p></li>
1090    /// <li>
1091    /// <p>US West (Oregon)</p></li>
1092    /// <li>
1093    /// <p>Asia Pacific (Singapore)</p></li>
1094    /// <li>
1095    /// <p>Asia Pacific (Sydney)</p></li>
1096    /// <li>
1097    /// <p>Asia Pacific (Tokyo)</p></li>
1098    /// <li>
1099    /// <p>Europe (Ireland)</p></li>
1100    /// <li>
1101    /// <p>South America (São Paulo)</p></li>
1102    /// </ul>
1103    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1104    /// </note></li>
1105    /// </ul>
1106    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1107    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1108    /// <ul>
1109    /// <li>
1110    /// <p>This functionality is not supported for directory buckets.</p></li>
1111    /// <li>
1112    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1113    /// </ul>
1114    /// </note>
1115    pub fn get_grant_read(&self) -> &::std::option::Option<::std::string::String> {
1116        &self.grant_read
1117    }
1118    /// <p>Specify access permissions explicitly to allows grantee to read the object ACL.</p>
1119    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1120    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1121    /// <ul>
1122    /// <li>
1123    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1124    /// <li>
1125    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1126    /// <li>
1127    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1128    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1129    /// <ul>
1130    /// <li>
1131    /// <p>US East (N. Virginia)</p></li>
1132    /// <li>
1133    /// <p>US West (N. California)</p></li>
1134    /// <li>
1135    /// <p>US West (Oregon)</p></li>
1136    /// <li>
1137    /// <p>Asia Pacific (Singapore)</p></li>
1138    /// <li>
1139    /// <p>Asia Pacific (Sydney)</p></li>
1140    /// <li>
1141    /// <p>Asia Pacific (Tokyo)</p></li>
1142    /// <li>
1143    /// <p>Europe (Ireland)</p></li>
1144    /// <li>
1145    /// <p>South America (São Paulo)</p></li>
1146    /// </ul>
1147    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1148    /// </note></li>
1149    /// </ul>
1150    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1151    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1152    /// <ul>
1153    /// <li>
1154    /// <p>This functionality is not supported for directory buckets.</p></li>
1155    /// <li>
1156    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1157    /// </ul>
1158    /// </note>
1159    pub fn grant_read_acp(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1160        self.grant_read_acp = ::std::option::Option::Some(input.into());
1161        self
1162    }
1163    /// <p>Specify access permissions explicitly to allows grantee to read the object ACL.</p>
1164    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1165    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1166    /// <ul>
1167    /// <li>
1168    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1169    /// <li>
1170    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1171    /// <li>
1172    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1173    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1174    /// <ul>
1175    /// <li>
1176    /// <p>US East (N. Virginia)</p></li>
1177    /// <li>
1178    /// <p>US West (N. California)</p></li>
1179    /// <li>
1180    /// <p>US West (Oregon)</p></li>
1181    /// <li>
1182    /// <p>Asia Pacific (Singapore)</p></li>
1183    /// <li>
1184    /// <p>Asia Pacific (Sydney)</p></li>
1185    /// <li>
1186    /// <p>Asia Pacific (Tokyo)</p></li>
1187    /// <li>
1188    /// <p>Europe (Ireland)</p></li>
1189    /// <li>
1190    /// <p>South America (São Paulo)</p></li>
1191    /// </ul>
1192    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1193    /// </note></li>
1194    /// </ul>
1195    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1196    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1197    /// <ul>
1198    /// <li>
1199    /// <p>This functionality is not supported for directory buckets.</p></li>
1200    /// <li>
1201    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1202    /// </ul>
1203    /// </note>
1204    pub fn set_grant_read_acp(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1205        self.grant_read_acp = input;
1206        self
1207    }
1208    /// <p>Specify access permissions explicitly to allows grantee to read the object ACL.</p>
1209    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1210    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1211    /// <ul>
1212    /// <li>
1213    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1214    /// <li>
1215    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1216    /// <li>
1217    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1218    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1219    /// <ul>
1220    /// <li>
1221    /// <p>US East (N. Virginia)</p></li>
1222    /// <li>
1223    /// <p>US West (N. California)</p></li>
1224    /// <li>
1225    /// <p>US West (Oregon)</p></li>
1226    /// <li>
1227    /// <p>Asia Pacific (Singapore)</p></li>
1228    /// <li>
1229    /// <p>Asia Pacific (Sydney)</p></li>
1230    /// <li>
1231    /// <p>Asia Pacific (Tokyo)</p></li>
1232    /// <li>
1233    /// <p>Europe (Ireland)</p></li>
1234    /// <li>
1235    /// <p>South America (São Paulo)</p></li>
1236    /// </ul>
1237    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1238    /// </note></li>
1239    /// </ul>
1240    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1241    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1242    /// <ul>
1243    /// <li>
1244    /// <p>This functionality is not supported for directory buckets.</p></li>
1245    /// <li>
1246    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1247    /// </ul>
1248    /// </note>
1249    pub fn get_grant_read_acp(&self) -> &::std::option::Option<::std::string::String> {
1250        &self.grant_read_acp
1251    }
1252    /// <p>Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.</p>
1253    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1254    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1255    /// <ul>
1256    /// <li>
1257    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1258    /// <li>
1259    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1260    /// <li>
1261    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1262    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1263    /// <ul>
1264    /// <li>
1265    /// <p>US East (N. Virginia)</p></li>
1266    /// <li>
1267    /// <p>US West (N. California)</p></li>
1268    /// <li>
1269    /// <p>US West (Oregon)</p></li>
1270    /// <li>
1271    /// <p>Asia Pacific (Singapore)</p></li>
1272    /// <li>
1273    /// <p>Asia Pacific (Sydney)</p></li>
1274    /// <li>
1275    /// <p>Asia Pacific (Tokyo)</p></li>
1276    /// <li>
1277    /// <p>Europe (Ireland)</p></li>
1278    /// <li>
1279    /// <p>South America (São Paulo)</p></li>
1280    /// </ul>
1281    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1282    /// </note></li>
1283    /// </ul>
1284    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1285    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1286    /// <ul>
1287    /// <li>
1288    /// <p>This functionality is not supported for directory buckets.</p></li>
1289    /// <li>
1290    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1291    /// </ul>
1292    /// </note>
1293    pub fn grant_write_acp(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1294        self.grant_write_acp = ::std::option::Option::Some(input.into());
1295        self
1296    }
1297    /// <p>Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.</p>
1298    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1299    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1300    /// <ul>
1301    /// <li>
1302    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1303    /// <li>
1304    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1305    /// <li>
1306    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1307    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1308    /// <ul>
1309    /// <li>
1310    /// <p>US East (N. Virginia)</p></li>
1311    /// <li>
1312    /// <p>US West (N. California)</p></li>
1313    /// <li>
1314    /// <p>US West (Oregon)</p></li>
1315    /// <li>
1316    /// <p>Asia Pacific (Singapore)</p></li>
1317    /// <li>
1318    /// <p>Asia Pacific (Sydney)</p></li>
1319    /// <li>
1320    /// <p>Asia Pacific (Tokyo)</p></li>
1321    /// <li>
1322    /// <p>Europe (Ireland)</p></li>
1323    /// <li>
1324    /// <p>South America (São Paulo)</p></li>
1325    /// </ul>
1326    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1327    /// </note></li>
1328    /// </ul>
1329    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1330    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1331    /// <ul>
1332    /// <li>
1333    /// <p>This functionality is not supported for directory buckets.</p></li>
1334    /// <li>
1335    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1336    /// </ul>
1337    /// </note>
1338    pub fn set_grant_write_acp(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1339        self.grant_write_acp = input;
1340        self
1341    }
1342    /// <p>Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the applicable object.</p>
1343    /// <p>By default, all objects are private. Only the owner has full access control. When uploading an object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html">Access Control List (ACL) Overview</a> in the <i>Amazon S3 User Guide</i>.</p>
1344    /// <p>You specify each grantee as a type=value pair, where the type is one of the following:</p>
1345    /// <ul>
1346    /// <li>
1347    /// <p><code>id</code> – if the value specified is the canonical user ID of an Amazon Web Services account</p></li>
1348    /// <li>
1349    /// <p><code>uri</code> – if you are granting permissions to a predefined group</p></li>
1350    /// <li>
1351    /// <p><code>emailAddress</code> – if the value specified is the email address of an Amazon Web Services account</p><note>
1352    /// <p>Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:</p>
1353    /// <ul>
1354    /// <li>
1355    /// <p>US East (N. Virginia)</p></li>
1356    /// <li>
1357    /// <p>US West (N. California)</p></li>
1358    /// <li>
1359    /// <p>US West (Oregon)</p></li>
1360    /// <li>
1361    /// <p>Asia Pacific (Singapore)</p></li>
1362    /// <li>
1363    /// <p>Asia Pacific (Sydney)</p></li>
1364    /// <li>
1365    /// <p>Asia Pacific (Tokyo)</p></li>
1366    /// <li>
1367    /// <p>Europe (Ireland)</p></li>
1368    /// <li>
1369    /// <p>South America (São Paulo)</p></li>
1370    /// </ul>
1371    /// <p>For a list of all the Amazon S3 supported Regions and endpoints, see <a href="https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">Regions and Endpoints</a> in the Amazon Web Services General Reference.</p>
1372    /// </note></li>
1373    /// </ul>
1374    /// <p>For example, the following <code>x-amz-grant-read</code> header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:</p>
1375    /// <p><code>x-amz-grant-read: id="11112222333", id="444455556666" </code></p><note>
1376    /// <ul>
1377    /// <li>
1378    /// <p>This functionality is not supported for directory buckets.</p></li>
1379    /// <li>
1380    /// <p>This functionality is not supported for Amazon S3 on Outposts.</p></li>
1381    /// </ul>
1382    /// </note>
1383    pub fn get_grant_write_acp(&self) -> &::std::option::Option<::std::string::String> {
1384        &self.grant_write_acp
1385    }
1386    /// <p>Object key for which the multipart upload is to be initiated.</p>
1387    /// This field is required.
1388    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1389        self.key = ::std::option::Option::Some(input.into());
1390        self
1391    }
1392    /// <p>Object key for which the multipart upload is to be initiated.</p>
1393    pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1394        self.key = input;
1395        self
1396    }
1397    /// <p>Object key for which the multipart upload is to be initiated.</p>
1398    pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
1399        &self.key
1400    }
1401    /// Adds a key-value pair to `metadata`.
1402    ///
1403    /// To override the contents of this collection use [`set_metadata`](Self::set_metadata).
1404    ///
1405    /// <p>A map of metadata to store with the object in S3.</p>
1406    pub fn metadata(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
1407        let mut hash_map = self.metadata.unwrap_or_default();
1408        hash_map.insert(k.into(), v.into());
1409        self.metadata = ::std::option::Option::Some(hash_map);
1410        self
1411    }
1412    /// <p>A map of metadata to store with the object in S3.</p>
1413    pub fn set_metadata(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
1414        self.metadata = input;
1415        self
1416    }
1417    /// <p>A map of metadata to store with the object in S3.</p>
1418    pub fn get_metadata(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
1419        &self.metadata
1420    }
1421    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>).</p>
1422    /// <ul>
1423    /// <li>
1424    /// <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>
1425    /// <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>
1426    /// <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>
1427    /// </note></li>
1428    /// </ul>
1429    pub fn server_side_encryption(mut self, input: crate::types::ServerSideEncryption) -> Self {
1430        self.server_side_encryption = ::std::option::Option::Some(input);
1431        self
1432    }
1433    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>).</p>
1434    /// <ul>
1435    /// <li>
1436    /// <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>
1437    /// <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>
1438    /// <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>
1439    /// </note></li>
1440    /// </ul>
1441    pub fn set_server_side_encryption(mut self, input: ::std::option::Option<crate::types::ServerSideEncryption>) -> Self {
1442        self.server_side_encryption = input;
1443        self
1444    }
1445    /// <p>The server-side encryption algorithm used when you store this object in Amazon S3 (for example, <code>AES256</code>, <code>aws:kms</code>).</p>
1446    /// <ul>
1447    /// <li>
1448    /// <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>
1449    /// <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>
1450    /// <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>
1451    /// </note></li>
1452    /// </ul>
1453    pub fn get_server_side_encryption(&self) -> &::std::option::Option<crate::types::ServerSideEncryption> {
1454        &self.server_side_encryption
1455    }
1456    /// <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>
1457    /// <ul>
1458    /// <li>
1459    /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1460    /// <li>
1461    /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1462    /// </ul>
1463    /// </note>
1464    pub fn storage_class(mut self, input: crate::types::StorageClass) -> Self {
1465        self.storage_class = ::std::option::Option::Some(input);
1466        self
1467    }
1468    /// <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>
1469    /// <ul>
1470    /// <li>
1471    /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1472    /// <li>
1473    /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1474    /// </ul>
1475    /// </note>
1476    pub fn set_storage_class(mut self, input: ::std::option::Option<crate::types::StorageClass>) -> Self {
1477        self.storage_class = input;
1478        self
1479    }
1480    /// <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>
1481    /// <ul>
1482    /// <li>
1483    /// <p>For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects.</p></li>
1484    /// <li>
1485    /// <p>Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.</p></li>
1486    /// </ul>
1487    /// </note>
1488    pub fn get_storage_class(&self) -> &::std::option::Option<crate::types::StorageClass> {
1489        &self.storage_class
1490    }
1491    /// <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.</p><note>
1492    /// <p>This functionality is not supported for directory buckets.</p>
1493    /// </note>
1494    pub fn website_redirect_location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1495        self.website_redirect_location = ::std::option::Option::Some(input.into());
1496        self
1497    }
1498    /// <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.</p><note>
1499    /// <p>This functionality is not supported for directory buckets.</p>
1500    /// </note>
1501    pub fn set_website_redirect_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1502        self.website_redirect_location = input;
1503        self
1504    }
1505    /// <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.</p><note>
1506    /// <p>This functionality is not supported for directory buckets.</p>
1507    /// </note>
1508    pub fn get_website_redirect_location(&self) -> &::std::option::Option<::std::string::String> {
1509        &self.website_redirect_location
1510    }
1511    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
1512    /// <p>This functionality is not supported for directory buckets.</p>
1513    /// </note>
1514    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1515        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
1516        self
1517    }
1518    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
1519    /// <p>This functionality is not supported for directory buckets.</p>
1520    /// </note>
1521    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1522        self.sse_customer_algorithm = input;
1523        self
1524    }
1525    /// <p>Specifies the algorithm to use when encrypting the object (for example, AES256).</p><note>
1526    /// <p>This functionality is not supported for directory buckets.</p>
1527    /// </note>
1528    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
1529        &self.sse_customer_algorithm
1530    }
1531    /// <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>
1532    /// <p>This functionality is not supported for directory buckets.</p>
1533    /// </note>
1534    pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1535        self.sse_customer_key = ::std::option::Option::Some(input.into());
1536        self
1537    }
1538    /// <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>
1539    /// <p>This functionality is not supported for directory buckets.</p>
1540    /// </note>
1541    pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1542        self.sse_customer_key = input;
1543        self
1544    }
1545    /// <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>
1546    /// <p>This functionality is not supported for directory buckets.</p>
1547    /// </note>
1548    pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
1549        &self.sse_customer_key
1550    }
1551    /// <p>Specifies the 128-bit MD5 digest of the customer-provided 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>
1552    /// <p>This functionality is not supported for directory buckets.</p>
1553    /// </note>
1554    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1555        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
1556        self
1557    }
1558    /// <p>Specifies the 128-bit MD5 digest of the customer-provided 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>
1559    /// <p>This functionality is not supported for directory buckets.</p>
1560    /// </note>
1561    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1562        self.sse_customer_key_md5 = input;
1563        self
1564    }
1565    /// <p>Specifies the 128-bit MD5 digest of the customer-provided 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>
1566    /// <p>This functionality is not supported for directory buckets.</p>
1567    /// </note>
1568    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
1569        &self.sse_customer_key_md5
1570    }
1571    /// <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>
1572    /// <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>
1573    /// <p><b>Directory buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code>, the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header is implicitly assigned the ID of the KMS symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. If you want to specify the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS customer managed key that's configured for your directory bucket's default encryption setting. Otherwise, you get an HTTP <code>400 Bad Request</code> error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. 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 for the lifetime of the bucket. 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.</p>
1574    pub fn ssekms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1575        self.ssekms_key_id = ::std::option::Option::Some(input.into());
1576        self
1577    }
1578    /// <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>
1579    /// <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>
1580    /// <p><b>Directory buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code>, the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header is implicitly assigned the ID of the KMS symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. If you want to specify the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS customer managed key that's configured for your directory bucket's default encryption setting. Otherwise, you get an HTTP <code>400 Bad Request</code> error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. 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 for the lifetime of the bucket. 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.</p>
1581    pub fn set_ssekms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1582        self.ssekms_key_id = input;
1583        self
1584    }
1585    /// <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>
1586    /// <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>
1587    /// <p><b>Directory buckets</b> - If you specify <code>x-amz-server-side-encryption</code> with <code>aws:kms</code>, the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header is implicitly assigned the ID of the KMS symmetric encryption customer managed key that's configured for your directory bucket's default encryption setting. If you want to specify the <code> x-amz-server-side-encryption-aws-kms-key-id</code> header explicitly, you can only specify it with the ID (Key ID or Key ARN) of the KMS customer managed key that's configured for your directory bucket's default encryption setting. Otherwise, you get an HTTP <code>400 Bad Request</code> error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. 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 for the lifetime of the bucket. 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.</p>
1588    pub fn get_ssekms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1589        &self.ssekms_key_id
1590    }
1591    /// <p>Specifies the Amazon Web Services KMS 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.</p>
1592    /// <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>
1593    pub fn ssekms_encryption_context(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1594        self.ssekms_encryption_context = ::std::option::Option::Some(input.into());
1595        self
1596    }
1597    /// <p>Specifies the Amazon Web Services KMS 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.</p>
1598    /// <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>
1599    pub fn set_ssekms_encryption_context(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1600        self.ssekms_encryption_context = input;
1601        self
1602    }
1603    /// <p>Specifies the Amazon Web Services KMS 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.</p>
1604    /// <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>
1605    pub fn get_ssekms_encryption_context(&self) -> &::std::option::Option<::std::string::String> {
1606        &self.ssekms_encryption_context
1607    }
1608    /// <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>
1609    /// <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>
1610    /// <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>
1611    pub fn bucket_key_enabled(mut self, input: bool) -> Self {
1612        self.bucket_key_enabled = ::std::option::Option::Some(input);
1613        self
1614    }
1615    /// <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>
1616    /// <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>
1617    /// <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>
1618    pub fn set_bucket_key_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
1619        self.bucket_key_enabled = input;
1620        self
1621    }
1622    /// <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>
1623    /// <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>
1624    /// <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>
1625    pub fn get_bucket_key_enabled(&self) -> &::std::option::Option<bool> {
1626        &self.bucket_key_enabled
1627    }
1628    /// <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>
1629    /// <p>This functionality is not supported for directory buckets.</p>
1630    /// </note>
1631    pub fn request_payer(mut self, input: crate::types::RequestPayer) -> Self {
1632        self.request_payer = ::std::option::Option::Some(input);
1633        self
1634    }
1635    /// <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>
1636    /// <p>This functionality is not supported for directory buckets.</p>
1637    /// </note>
1638    pub fn set_request_payer(mut self, input: ::std::option::Option<crate::types::RequestPayer>) -> Self {
1639        self.request_payer = input;
1640        self
1641    }
1642    /// <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>
1643    /// <p>This functionality is not supported for directory buckets.</p>
1644    /// </note>
1645    pub fn get_request_payer(&self) -> &::std::option::Option<crate::types::RequestPayer> {
1646        &self.request_payer
1647    }
1648    /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters.</p><note>
1649    /// <p>This functionality is not supported for directory buckets.</p>
1650    /// </note>
1651    pub fn tagging(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1652        self.tagging = ::std::option::Option::Some(input.into());
1653        self
1654    }
1655    /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters.</p><note>
1656    /// <p>This functionality is not supported for directory buckets.</p>
1657    /// </note>
1658    pub fn set_tagging(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1659        self.tagging = input;
1660        self
1661    }
1662    /// <p>The tag-set for the object. The tag-set must be encoded as URL Query parameters.</p><note>
1663    /// <p>This functionality is not supported for directory buckets.</p>
1664    /// </note>
1665    pub fn get_tagging(&self) -> &::std::option::Option<::std::string::String> {
1666        &self.tagging
1667    }
1668    /// <p>Specifies the Object Lock mode that you want to apply to the uploaded object.</p><note>
1669    /// <p>This functionality is not supported for directory buckets.</p>
1670    /// </note>
1671    pub fn object_lock_mode(mut self, input: crate::types::ObjectLockMode) -> Self {
1672        self.object_lock_mode = ::std::option::Option::Some(input);
1673        self
1674    }
1675    /// <p>Specifies the Object Lock mode that you want to apply to the uploaded object.</p><note>
1676    /// <p>This functionality is not supported for directory buckets.</p>
1677    /// </note>
1678    pub fn set_object_lock_mode(mut self, input: ::std::option::Option<crate::types::ObjectLockMode>) -> Self {
1679        self.object_lock_mode = input;
1680        self
1681    }
1682    /// <p>Specifies the Object Lock mode that you want to apply to the uploaded object.</p><note>
1683    /// <p>This functionality is not supported for directory buckets.</p>
1684    /// </note>
1685    pub fn get_object_lock_mode(&self) -> &::std::option::Option<crate::types::ObjectLockMode> {
1686        &self.object_lock_mode
1687    }
1688    /// <p>Specifies the date and time when you want the Object Lock to expire.</p><note>
1689    /// <p>This functionality is not supported for directory buckets.</p>
1690    /// </note>
1691    pub fn object_lock_retain_until_date(mut self, input: ::aws_smithy_types::DateTime) -> Self {
1692        self.object_lock_retain_until_date = ::std::option::Option::Some(input);
1693        self
1694    }
1695    /// <p>Specifies the date and time when you want the Object Lock to expire.</p><note>
1696    /// <p>This functionality is not supported for directory buckets.</p>
1697    /// </note>
1698    pub fn set_object_lock_retain_until_date(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
1699        self.object_lock_retain_until_date = input;
1700        self
1701    }
1702    /// <p>Specifies the date and time when you want the Object Lock to expire.</p><note>
1703    /// <p>This functionality is not supported for directory buckets.</p>
1704    /// </note>
1705    pub fn get_object_lock_retain_until_date(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
1706        &self.object_lock_retain_until_date
1707    }
1708    /// <p>Specifies whether you want to apply a legal hold to the uploaded object.</p><note>
1709    /// <p>This functionality is not supported for directory buckets.</p>
1710    /// </note>
1711    pub fn object_lock_legal_hold_status(mut self, input: crate::types::ObjectLockLegalHoldStatus) -> Self {
1712        self.object_lock_legal_hold_status = ::std::option::Option::Some(input);
1713        self
1714    }
1715    /// <p>Specifies whether you want to apply a legal hold to the uploaded object.</p><note>
1716    /// <p>This functionality is not supported for directory buckets.</p>
1717    /// </note>
1718    pub fn set_object_lock_legal_hold_status(mut self, input: ::std::option::Option<crate::types::ObjectLockLegalHoldStatus>) -> Self {
1719        self.object_lock_legal_hold_status = input;
1720        self
1721    }
1722    /// <p>Specifies whether you want to apply a legal hold to the uploaded object.</p><note>
1723    /// <p>This functionality is not supported for directory buckets.</p>
1724    /// </note>
1725    pub fn get_object_lock_legal_hold_status(&self) -> &::std::option::Option<crate::types::ObjectLockLegalHoldStatus> {
1726        &self.object_lock_legal_hold_status
1727    }
1728    /// <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>
1729    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1730        self.expected_bucket_owner = ::std::option::Option::Some(input.into());
1731        self
1732    }
1733    /// <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>
1734    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1735        self.expected_bucket_owner = input;
1736        self
1737    }
1738    /// <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>
1739    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
1740        &self.expected_bucket_owner
1741    }
1742    /// <p>Indicates the algorithm that you want Amazon S3 to use to create the checksum for 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>
1743    pub fn checksum_algorithm(mut self, input: crate::types::ChecksumAlgorithm) -> Self {
1744        self.checksum_algorithm = ::std::option::Option::Some(input);
1745        self
1746    }
1747    /// <p>Indicates the algorithm that you want Amazon S3 to use to create the checksum for 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>
1748    pub fn set_checksum_algorithm(mut self, input: ::std::option::Option<crate::types::ChecksumAlgorithm>) -> Self {
1749        self.checksum_algorithm = input;
1750        self
1751    }
1752    /// <p>Indicates the algorithm that you want Amazon S3 to use to create the checksum for 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>
1753    pub fn get_checksum_algorithm(&self) -> &::std::option::Option<crate::types::ChecksumAlgorithm> {
1754        &self.checksum_algorithm
1755    }
1756    /// Consumes the builder and constructs a [`CreateMultipartUploadInput`](crate::operation::create_multipart_upload::CreateMultipartUploadInput).
1757    pub fn build(
1758        self,
1759    ) -> ::std::result::Result<crate::operation::create_multipart_upload::CreateMultipartUploadInput, ::aws_smithy_types::error::operation::BuildError>
1760    {
1761        ::std::result::Result::Ok(crate::operation::create_multipart_upload::CreateMultipartUploadInput {
1762            acl: self.acl,
1763            bucket: self.bucket,
1764            cache_control: self.cache_control,
1765            content_disposition: self.content_disposition,
1766            content_encoding: self.content_encoding,
1767            content_language: self.content_language,
1768            content_type: self.content_type,
1769            expires: self.expires,
1770            grant_full_control: self.grant_full_control,
1771            grant_read: self.grant_read,
1772            grant_read_acp: self.grant_read_acp,
1773            grant_write_acp: self.grant_write_acp,
1774            key: self.key,
1775            metadata: self.metadata,
1776            server_side_encryption: self.server_side_encryption,
1777            storage_class: self.storage_class,
1778            website_redirect_location: self.website_redirect_location,
1779            sse_customer_algorithm: self.sse_customer_algorithm,
1780            sse_customer_key: self.sse_customer_key,
1781            sse_customer_key_md5: self.sse_customer_key_md5,
1782            ssekms_key_id: self.ssekms_key_id,
1783            ssekms_encryption_context: self.ssekms_encryption_context,
1784            bucket_key_enabled: self.bucket_key_enabled,
1785            request_payer: self.request_payer,
1786            tagging: self.tagging,
1787            object_lock_mode: self.object_lock_mode,
1788            object_lock_retain_until_date: self.object_lock_retain_until_date,
1789            object_lock_legal_hold_status: self.object_lock_legal_hold_status,
1790            expected_bucket_owner: self.expected_bucket_owner,
1791            checksum_algorithm: self.checksum_algorithm,
1792        })
1793    }
1794}
1795impl ::std::fmt::Debug for CreateMultipartUploadInputBuilder {
1796    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1797        let mut formatter = f.debug_struct("CreateMultipartUploadInputBuilder");
1798        formatter.field("acl", &self.acl);
1799        formatter.field("bucket", &self.bucket);
1800        formatter.field("cache_control", &self.cache_control);
1801        formatter.field("content_disposition", &self.content_disposition);
1802        formatter.field("content_encoding", &self.content_encoding);
1803        formatter.field("content_language", &self.content_language);
1804        formatter.field("content_type", &self.content_type);
1805        formatter.field("expires", &self.expires);
1806        formatter.field("grant_full_control", &self.grant_full_control);
1807        formatter.field("grant_read", &self.grant_read);
1808        formatter.field("grant_read_acp", &self.grant_read_acp);
1809        formatter.field("grant_write_acp", &self.grant_write_acp);
1810        formatter.field("key", &self.key);
1811        formatter.field("metadata", &self.metadata);
1812        formatter.field("server_side_encryption", &self.server_side_encryption);
1813        formatter.field("storage_class", &self.storage_class);
1814        formatter.field("website_redirect_location", &self.website_redirect_location);
1815        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
1816        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
1817        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
1818        formatter.field("ssekms_key_id", &"*** Sensitive Data Redacted ***");
1819        formatter.field("ssekms_encryption_context", &"*** Sensitive Data Redacted ***");
1820        formatter.field("bucket_key_enabled", &self.bucket_key_enabled);
1821        formatter.field("request_payer", &self.request_payer);
1822        formatter.field("tagging", &self.tagging);
1823        formatter.field("object_lock_mode", &self.object_lock_mode);
1824        formatter.field("object_lock_retain_until_date", &self.object_lock_retain_until_date);
1825        formatter.field("object_lock_legal_hold_status", &self.object_lock_legal_hold_status);
1826        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
1827        formatter.field("checksum_algorithm", &self.checksum_algorithm);
1828        formatter.finish()
1829    }
1830}