aws_sdk_s3/operation/get_object/
_get_object_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
5pub struct GetObjectInput {
6    /// <p>The bucket name containing the object.</p>
7    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
8    /// <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>
9    /// <p><b>Object Lambda access points</b> - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-object-lambda.<i>Region</i>.amazonaws.com.</p><note>
10    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
11    /// </note>
12    /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
13    pub bucket: ::std::option::Option<::std::string::String>,
14    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a <code>412 Precondition Failed</code> error.</p>
15    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
16    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
17    pub if_match: ::std::option::Option<::std::string::String>,
18    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a <code>304 Not Modified</code> error.</p>
19    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> status code.</p>
20    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
21    pub if_modified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
22    /// <p>Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a <code>304 Not Modified</code> error.</p>
23    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> HTTP status code.</p>
24    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
25    pub if_none_match: ::std::option::Option<::std::string::String>,
26    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a <code>412 Precondition Failed</code> error.</p>
27    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
28    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
29    pub if_unmodified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
30    /// <p>Key of the object to get.</p>
31    pub key: ::std::option::Option<::std::string::String>,
32    /// <p>Downloads the specified byte range of an object. For more information about the HTTP Range header, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-range">https://www.rfc-editor.org/rfc/rfc9110.html#name-range</a>.</p><note>
33    /// <p>Amazon S3 doesn't support retrieving multiple ranges of data per <code>GET</code> request.</p>
34    /// </note>
35    pub range: ::std::option::Option<::std::string::String>,
36    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
37    pub response_cache_control: ::std::option::Option<::std::string::String>,
38    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
39    pub response_content_disposition: ::std::option::Option<::std::string::String>,
40    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
41    pub response_content_encoding: ::std::option::Option<::std::string::String>,
42    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
43    pub response_content_language: ::std::option::Option<::std::string::String>,
44    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
45    pub response_content_type: ::std::option::Option<::std::string::String>,
46    /// <p>Sets the <code>Expires</code> header of the response.</p>
47    pub response_expires: ::std::option::Option<::aws_smithy_types::DateTime>,
48    /// <p>Version ID used to reference a specific version of the object.</p>
49    /// <p>By default, the <code>GetObject</code> operation returns the current version of an object. To return a different version, use the <code>versionId</code> subresource.</p><note>
50    /// <ul>
51    /// <li>
52    /// <p>If you include a <code>versionId</code> in your request header, you must have the <code>s3:GetObjectVersion</code> permission to access a specific version of an object. The <code>s3:GetObject</code> permission is not required in this scenario.</p></li>
53    /// <li>
54    /// <p>If you request the current version of an object without a specific <code>versionId</code> in the request header, only the <code>s3:GetObject</code> permission is required. The <code>s3:GetObjectVersion</code> permission is not required in this scenario.</p></li>
55    /// <li>
56    /// <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the <code>null</code> value of the version ID is supported by directory buckets. You can only specify <code>null</code> to the <code>versionId</code> query parameter in the request.</p></li>
57    /// </ul>
58    /// </note>
59    /// <p>For more information about versioning, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.</p>
60    pub version_id: ::std::option::Option<::std::string::String>,
61    /// <p>Specifies the algorithm to use when decrypting the object (for example, <code>AES256</code>).</p>
62    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
63    /// <ul>
64    /// <li>
65    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
66    /// <li>
67    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
68    /// <li>
69    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
70    /// </ul>
71    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
72    /// <p>This functionality is not supported for directory buckets.</p>
73    /// </note>
74    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
75    /// <p>Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
76    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
77    /// <ul>
78    /// <li>
79    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
80    /// <li>
81    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
82    /// <li>
83    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
84    /// </ul>
85    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
86    /// <p>This functionality is not supported for directory buckets.</p>
87    /// </note>
88    pub sse_customer_key: ::std::option::Option<::std::string::String>,
89    /// <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>
90    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
91    /// <ul>
92    /// <li>
93    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
94    /// <li>
95    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
96    /// <li>
97    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
98    /// </ul>
99    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
100    /// <p>This functionality is not supported for directory buckets.</p>
101    /// </note>
102    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
103    /// <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>
104    /// <p>This functionality is not supported for directory buckets.</p>
105    /// </note>
106    pub request_payer: ::std::option::Option<crate::types::RequestPayer>,
107    /// <p>Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object.</p>
108    pub part_number: ::std::option::Option<i32>,
109    /// <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>
110    pub expected_bucket_owner: ::std::option::Option<::std::string::String>,
111    /// <p>To retrieve the checksum, this mode must be enabled.</p>
112    pub checksum_mode: ::std::option::Option<crate::types::ChecksumMode>,
113}
114impl GetObjectInput {
115    /// <p>The bucket name containing the object.</p>
116    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
117    /// <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>
118    /// <p><b>Object Lambda access points</b> - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-object-lambda.<i>Region</i>.amazonaws.com.</p><note>
119    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
120    /// </note>
121    /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
122    pub fn bucket(&self) -> ::std::option::Option<&str> {
123        self.bucket.as_deref()
124    }
125    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a <code>412 Precondition Failed</code> error.</p>
126    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
127    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
128    pub fn if_match(&self) -> ::std::option::Option<&str> {
129        self.if_match.as_deref()
130    }
131    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a <code>304 Not Modified</code> error.</p>
132    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> status code.</p>
133    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
134    pub fn if_modified_since(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
135        self.if_modified_since.as_ref()
136    }
137    /// <p>Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a <code>304 Not Modified</code> error.</p>
138    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> HTTP status code.</p>
139    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
140    pub fn if_none_match(&self) -> ::std::option::Option<&str> {
141        self.if_none_match.as_deref()
142    }
143    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a <code>412 Precondition Failed</code> error.</p>
144    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
145    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
146    pub fn if_unmodified_since(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
147        self.if_unmodified_since.as_ref()
148    }
149    /// <p>Key of the object to get.</p>
150    pub fn key(&self) -> ::std::option::Option<&str> {
151        self.key.as_deref()
152    }
153    /// <p>Downloads the specified byte range of an object. For more information about the HTTP Range header, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-range">https://www.rfc-editor.org/rfc/rfc9110.html#name-range</a>.</p><note>
154    /// <p>Amazon S3 doesn't support retrieving multiple ranges of data per <code>GET</code> request.</p>
155    /// </note>
156    pub fn range(&self) -> ::std::option::Option<&str> {
157        self.range.as_deref()
158    }
159    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
160    pub fn response_cache_control(&self) -> ::std::option::Option<&str> {
161        self.response_cache_control.as_deref()
162    }
163    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
164    pub fn response_content_disposition(&self) -> ::std::option::Option<&str> {
165        self.response_content_disposition.as_deref()
166    }
167    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
168    pub fn response_content_encoding(&self) -> ::std::option::Option<&str> {
169        self.response_content_encoding.as_deref()
170    }
171    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
172    pub fn response_content_language(&self) -> ::std::option::Option<&str> {
173        self.response_content_language.as_deref()
174    }
175    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
176    pub fn response_content_type(&self) -> ::std::option::Option<&str> {
177        self.response_content_type.as_deref()
178    }
179    /// <p>Sets the <code>Expires</code> header of the response.</p>
180    pub fn response_expires(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
181        self.response_expires.as_ref()
182    }
183    /// <p>Version ID used to reference a specific version of the object.</p>
184    /// <p>By default, the <code>GetObject</code> operation returns the current version of an object. To return a different version, use the <code>versionId</code> subresource.</p><note>
185    /// <ul>
186    /// <li>
187    /// <p>If you include a <code>versionId</code> in your request header, you must have the <code>s3:GetObjectVersion</code> permission to access a specific version of an object. The <code>s3:GetObject</code> permission is not required in this scenario.</p></li>
188    /// <li>
189    /// <p>If you request the current version of an object without a specific <code>versionId</code> in the request header, only the <code>s3:GetObject</code> permission is required. The <code>s3:GetObjectVersion</code> permission is not required in this scenario.</p></li>
190    /// <li>
191    /// <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the <code>null</code> value of the version ID is supported by directory buckets. You can only specify <code>null</code> to the <code>versionId</code> query parameter in the request.</p></li>
192    /// </ul>
193    /// </note>
194    /// <p>For more information about versioning, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.</p>
195    pub fn version_id(&self) -> ::std::option::Option<&str> {
196        self.version_id.as_deref()
197    }
198    /// <p>Specifies the algorithm to use when decrypting the object (for example, <code>AES256</code>).</p>
199    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
200    /// <ul>
201    /// <li>
202    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
203    /// <li>
204    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
205    /// <li>
206    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
207    /// </ul>
208    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
209    /// <p>This functionality is not supported for directory buckets.</p>
210    /// </note>
211    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
212        self.sse_customer_algorithm.as_deref()
213    }
214    /// <p>Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
215    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
216    /// <ul>
217    /// <li>
218    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
219    /// <li>
220    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
221    /// <li>
222    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
223    /// </ul>
224    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
225    /// <p>This functionality is not supported for directory buckets.</p>
226    /// </note>
227    pub fn sse_customer_key(&self) -> ::std::option::Option<&str> {
228        self.sse_customer_key.as_deref()
229    }
230    /// <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>
231    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
232    /// <ul>
233    /// <li>
234    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
235    /// <li>
236    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
237    /// <li>
238    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
239    /// </ul>
240    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
241    /// <p>This functionality is not supported for directory buckets.</p>
242    /// </note>
243    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
244        self.sse_customer_key_md5.as_deref()
245    }
246    /// <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>
247    /// <p>This functionality is not supported for directory buckets.</p>
248    /// </note>
249    pub fn request_payer(&self) -> ::std::option::Option<&crate::types::RequestPayer> {
250        self.request_payer.as_ref()
251    }
252    /// <p>Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object.</p>
253    pub fn part_number(&self) -> ::std::option::Option<i32> {
254        self.part_number
255    }
256    /// <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>
257    pub fn expected_bucket_owner(&self) -> ::std::option::Option<&str> {
258        self.expected_bucket_owner.as_deref()
259    }
260    /// <p>To retrieve the checksum, this mode must be enabled.</p>
261    pub fn checksum_mode(&self) -> ::std::option::Option<&crate::types::ChecksumMode> {
262        self.checksum_mode.as_ref()
263    }
264}
265impl ::std::fmt::Debug for GetObjectInput {
266    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
267        let mut formatter = f.debug_struct("GetObjectInput");
268        formatter.field("bucket", &self.bucket);
269        formatter.field("if_match", &self.if_match);
270        formatter.field("if_modified_since", &self.if_modified_since);
271        formatter.field("if_none_match", &self.if_none_match);
272        formatter.field("if_unmodified_since", &self.if_unmodified_since);
273        formatter.field("key", &self.key);
274        formatter.field("range", &self.range);
275        formatter.field("response_cache_control", &self.response_cache_control);
276        formatter.field("response_content_disposition", &self.response_content_disposition);
277        formatter.field("response_content_encoding", &self.response_content_encoding);
278        formatter.field("response_content_language", &self.response_content_language);
279        formatter.field("response_content_type", &self.response_content_type);
280        formatter.field("response_expires", &self.response_expires);
281        formatter.field("version_id", &self.version_id);
282        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
283        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
284        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
285        formatter.field("request_payer", &self.request_payer);
286        formatter.field("part_number", &self.part_number);
287        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
288        formatter.field("checksum_mode", &self.checksum_mode);
289        formatter.finish()
290    }
291}
292impl GetObjectInput {
293    /// Creates a new builder-style object to manufacture [`GetObjectInput`](crate::operation::get_object::GetObjectInput).
294    pub fn builder() -> crate::operation::get_object::builders::GetObjectInputBuilder {
295        crate::operation::get_object::builders::GetObjectInputBuilder::default()
296    }
297}
298
299/// A builder for [`GetObjectInput`](crate::operation::get_object::GetObjectInput).
300#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
301#[non_exhaustive]
302pub struct GetObjectInputBuilder {
303    pub(crate) bucket: ::std::option::Option<::std::string::String>,
304    pub(crate) if_match: ::std::option::Option<::std::string::String>,
305    pub(crate) if_modified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
306    pub(crate) if_none_match: ::std::option::Option<::std::string::String>,
307    pub(crate) if_unmodified_since: ::std::option::Option<::aws_smithy_types::DateTime>,
308    pub(crate) key: ::std::option::Option<::std::string::String>,
309    pub(crate) range: ::std::option::Option<::std::string::String>,
310    pub(crate) response_cache_control: ::std::option::Option<::std::string::String>,
311    pub(crate) response_content_disposition: ::std::option::Option<::std::string::String>,
312    pub(crate) response_content_encoding: ::std::option::Option<::std::string::String>,
313    pub(crate) response_content_language: ::std::option::Option<::std::string::String>,
314    pub(crate) response_content_type: ::std::option::Option<::std::string::String>,
315    pub(crate) response_expires: ::std::option::Option<::aws_smithy_types::DateTime>,
316    pub(crate) version_id: ::std::option::Option<::std::string::String>,
317    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
318    pub(crate) sse_customer_key: ::std::option::Option<::std::string::String>,
319    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
320    pub(crate) request_payer: ::std::option::Option<crate::types::RequestPayer>,
321    pub(crate) part_number: ::std::option::Option<i32>,
322    pub(crate) expected_bucket_owner: ::std::option::Option<::std::string::String>,
323    pub(crate) checksum_mode: ::std::option::Option<crate::types::ChecksumMode>,
324}
325impl GetObjectInputBuilder {
326    /// <p>The bucket name containing the object.</p>
327    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
328    /// <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>
329    /// <p><b>Object Lambda access points</b> - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-object-lambda.<i>Region</i>.amazonaws.com.</p><note>
330    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
331    /// </note>
332    /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
333    /// This field is required.
334    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
335        self.bucket = ::std::option::Option::Some(input.into());
336        self
337    }
338    /// <p>The bucket name containing the object.</p>
339    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
340    /// <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>
341    /// <p><b>Object Lambda access points</b> - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-object-lambda.<i>Region</i>.amazonaws.com.</p><note>
342    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
343    /// </note>
344    /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
345    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
346        self.bucket = input;
347        self
348    }
349    /// <p>The bucket name containing the object.</p>
350    /// <p><b>Directory buckets</b> - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format <code> <i>Bucket-name</i>.s3express-<i>zone-id</i>.<i>region-code</i>.amazonaws.com</code>. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format <code> <i>bucket-base-name</i>--<i>zone-id</i>--x-s3</code> (for example, <code> <i>amzn-s3-demo-bucket</i>--<i>usw2-az1</i>--x-s3</code>). For information about bucket naming restrictions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html">Directory bucket naming rules</a> in the <i>Amazon S3 User Guide</i>.</p>
351    /// <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>
352    /// <p><b>Object Lambda access points</b> - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form <i>AccessPointName</i>-<i>AccountId</i>.s3-object-lambda.<i>Region</i>.amazonaws.com.</p><note>
353    /// <p>Access points and Object Lambda access points are not supported by directory buckets.</p>
354    /// </note>
355    /// <p><b>S3 on Outposts</b> - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form <code> <i>AccessPointName</i>-<i>AccountId</i>.<i>outpostID</i>.s3-outposts.<i>Region</i>.amazonaws.com</code>. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html">What is S3 on Outposts?</a> in the <i>Amazon S3 User Guide</i>.</p>
356    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
357        &self.bucket
358    }
359    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a <code>412 Precondition Failed</code> error.</p>
360    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
361    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
362    pub fn if_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
363        self.if_match = ::std::option::Option::Some(input.into());
364        self
365    }
366    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a <code>412 Precondition Failed</code> error.</p>
367    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
368    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
369    pub fn set_if_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
370        self.if_match = input;
371        self
372    }
373    /// <p>Return the object only if its entity tag (ETag) is the same as the one specified in this header; otherwise, return a <code>412 Precondition Failed</code> error.</p>
374    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
375    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
376    pub fn get_if_match(&self) -> &::std::option::Option<::std::string::String> {
377        &self.if_match
378    }
379    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a <code>304 Not Modified</code> error.</p>
380    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> status code.</p>
381    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
382    pub fn if_modified_since(mut self, input: ::aws_smithy_types::DateTime) -> Self {
383        self.if_modified_since = ::std::option::Option::Some(input);
384        self
385    }
386    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a <code>304 Not Modified</code> error.</p>
387    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> status code.</p>
388    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
389    pub fn set_if_modified_since(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
390        self.if_modified_since = input;
391        self
392    }
393    /// <p>Return the object only if it has been modified since the specified time; otherwise, return a <code>304 Not Modified</code> error.</p>
394    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> status code.</p>
395    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
396    pub fn get_if_modified_since(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
397        &self.if_modified_since
398    }
399    /// <p>Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a <code>304 Not Modified</code> error.</p>
400    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> HTTP status code.</p>
401    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
402    pub fn if_none_match(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
403        self.if_none_match = ::std::option::Option::Some(input.into());
404        self
405    }
406    /// <p>Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a <code>304 Not Modified</code> error.</p>
407    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> HTTP status code.</p>
408    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
409    pub fn set_if_none_match(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
410        self.if_none_match = input;
411        self
412    }
413    /// <p>Return the object only if its entity tag (ETag) is different from the one specified in this header; otherwise, return a <code>304 Not Modified</code> error.</p>
414    /// <p>If both of the <code>If-None-Match</code> and <code>If-Modified-Since</code> headers are present in the request as follows:<code> If-None-Match</code> condition evaluates to <code>false</code>, and; <code>If-Modified-Since</code> condition evaluates to <code>true</code>; then, S3 returns <code>304 Not Modified</code> HTTP status code.</p>
415    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
416    pub fn get_if_none_match(&self) -> &::std::option::Option<::std::string::String> {
417        &self.if_none_match
418    }
419    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a <code>412 Precondition Failed</code> error.</p>
420    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
421    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
422    pub fn if_unmodified_since(mut self, input: ::aws_smithy_types::DateTime) -> Self {
423        self.if_unmodified_since = ::std::option::Option::Some(input);
424        self
425    }
426    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a <code>412 Precondition Failed</code> error.</p>
427    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
428    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
429    pub fn set_if_unmodified_since(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
430        self.if_unmodified_since = input;
431        self
432    }
433    /// <p>Return the object only if it has not been modified since the specified time; otherwise, return a <code>412 Precondition Failed</code> error.</p>
434    /// <p>If both of the <code>If-Match</code> and <code>If-Unmodified-Since</code> headers are present in the request as follows: <code>If-Match</code> condition evaluates to <code>true</code>, and; <code>If-Unmodified-Since</code> condition evaluates to <code>false</code>; then, S3 returns <code>200 OK</code> and the data requested.</p>
435    /// <p>For more information about conditional requests, see <a href="https://tools.ietf.org/html/rfc7232">RFC 7232</a>.</p>
436    pub fn get_if_unmodified_since(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
437        &self.if_unmodified_since
438    }
439    /// <p>Key of the object to get.</p>
440    /// This field is required.
441    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
442        self.key = ::std::option::Option::Some(input.into());
443        self
444    }
445    /// <p>Key of the object to get.</p>
446    pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
447        self.key = input;
448        self
449    }
450    /// <p>Key of the object to get.</p>
451    pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
452        &self.key
453    }
454    /// <p>Downloads the specified byte range of an object. For more information about the HTTP Range header, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-range">https://www.rfc-editor.org/rfc/rfc9110.html#name-range</a>.</p><note>
455    /// <p>Amazon S3 doesn't support retrieving multiple ranges of data per <code>GET</code> request.</p>
456    /// </note>
457    pub fn range(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
458        self.range = ::std::option::Option::Some(input.into());
459        self
460    }
461    /// <p>Downloads the specified byte range of an object. For more information about the HTTP Range header, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-range">https://www.rfc-editor.org/rfc/rfc9110.html#name-range</a>.</p><note>
462    /// <p>Amazon S3 doesn't support retrieving multiple ranges of data per <code>GET</code> request.</p>
463    /// </note>
464    pub fn set_range(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
465        self.range = input;
466        self
467    }
468    /// <p>Downloads the specified byte range of an object. For more information about the HTTP Range header, see <a href="https://www.rfc-editor.org/rfc/rfc9110.html#name-range">https://www.rfc-editor.org/rfc/rfc9110.html#name-range</a>.</p><note>
469    /// <p>Amazon S3 doesn't support retrieving multiple ranges of data per <code>GET</code> request.</p>
470    /// </note>
471    pub fn get_range(&self) -> &::std::option::Option<::std::string::String> {
472        &self.range
473    }
474    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
475    pub fn response_cache_control(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
476        self.response_cache_control = ::std::option::Option::Some(input.into());
477        self
478    }
479    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
480    pub fn set_response_cache_control(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
481        self.response_cache_control = input;
482        self
483    }
484    /// <p>Sets the <code>Cache-Control</code> header of the response.</p>
485    pub fn get_response_cache_control(&self) -> &::std::option::Option<::std::string::String> {
486        &self.response_cache_control
487    }
488    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
489    pub fn response_content_disposition(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
490        self.response_content_disposition = ::std::option::Option::Some(input.into());
491        self
492    }
493    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
494    pub fn set_response_content_disposition(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
495        self.response_content_disposition = input;
496        self
497    }
498    /// <p>Sets the <code>Content-Disposition</code> header of the response.</p>
499    pub fn get_response_content_disposition(&self) -> &::std::option::Option<::std::string::String> {
500        &self.response_content_disposition
501    }
502    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
503    pub fn response_content_encoding(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
504        self.response_content_encoding = ::std::option::Option::Some(input.into());
505        self
506    }
507    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
508    pub fn set_response_content_encoding(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
509        self.response_content_encoding = input;
510        self
511    }
512    /// <p>Sets the <code>Content-Encoding</code> header of the response.</p>
513    pub fn get_response_content_encoding(&self) -> &::std::option::Option<::std::string::String> {
514        &self.response_content_encoding
515    }
516    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
517    pub fn response_content_language(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
518        self.response_content_language = ::std::option::Option::Some(input.into());
519        self
520    }
521    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
522    pub fn set_response_content_language(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
523        self.response_content_language = input;
524        self
525    }
526    /// <p>Sets the <code>Content-Language</code> header of the response.</p>
527    pub fn get_response_content_language(&self) -> &::std::option::Option<::std::string::String> {
528        &self.response_content_language
529    }
530    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
531    pub fn response_content_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
532        self.response_content_type = ::std::option::Option::Some(input.into());
533        self
534    }
535    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
536    pub fn set_response_content_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
537        self.response_content_type = input;
538        self
539    }
540    /// <p>Sets the <code>Content-Type</code> header of the response.</p>
541    pub fn get_response_content_type(&self) -> &::std::option::Option<::std::string::String> {
542        &self.response_content_type
543    }
544    /// <p>Sets the <code>Expires</code> header of the response.</p>
545    pub fn response_expires(mut self, input: ::aws_smithy_types::DateTime) -> Self {
546        self.response_expires = ::std::option::Option::Some(input);
547        self
548    }
549    /// <p>Sets the <code>Expires</code> header of the response.</p>
550    pub fn set_response_expires(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
551        self.response_expires = input;
552        self
553    }
554    /// <p>Sets the <code>Expires</code> header of the response.</p>
555    pub fn get_response_expires(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
556        &self.response_expires
557    }
558    /// <p>Version ID used to reference a specific version of the object.</p>
559    /// <p>By default, the <code>GetObject</code> operation returns the current version of an object. To return a different version, use the <code>versionId</code> subresource.</p><note>
560    /// <ul>
561    /// <li>
562    /// <p>If you include a <code>versionId</code> in your request header, you must have the <code>s3:GetObjectVersion</code> permission to access a specific version of an object. The <code>s3:GetObject</code> permission is not required in this scenario.</p></li>
563    /// <li>
564    /// <p>If you request the current version of an object without a specific <code>versionId</code> in the request header, only the <code>s3:GetObject</code> permission is required. The <code>s3:GetObjectVersion</code> permission is not required in this scenario.</p></li>
565    /// <li>
566    /// <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the <code>null</code> value of the version ID is supported by directory buckets. You can only specify <code>null</code> to the <code>versionId</code> query parameter in the request.</p></li>
567    /// </ul>
568    /// </note>
569    /// <p>For more information about versioning, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.</p>
570    pub fn version_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
571        self.version_id = ::std::option::Option::Some(input.into());
572        self
573    }
574    /// <p>Version ID used to reference a specific version of the object.</p>
575    /// <p>By default, the <code>GetObject</code> operation returns the current version of an object. To return a different version, use the <code>versionId</code> subresource.</p><note>
576    /// <ul>
577    /// <li>
578    /// <p>If you include a <code>versionId</code> in your request header, you must have the <code>s3:GetObjectVersion</code> permission to access a specific version of an object. The <code>s3:GetObject</code> permission is not required in this scenario.</p></li>
579    /// <li>
580    /// <p>If you request the current version of an object without a specific <code>versionId</code> in the request header, only the <code>s3:GetObject</code> permission is required. The <code>s3:GetObjectVersion</code> permission is not required in this scenario.</p></li>
581    /// <li>
582    /// <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the <code>null</code> value of the version ID is supported by directory buckets. You can only specify <code>null</code> to the <code>versionId</code> query parameter in the request.</p></li>
583    /// </ul>
584    /// </note>
585    /// <p>For more information about versioning, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.</p>
586    pub fn set_version_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
587        self.version_id = input;
588        self
589    }
590    /// <p>Version ID used to reference a specific version of the object.</p>
591    /// <p>By default, the <code>GetObject</code> operation returns the current version of an object. To return a different version, use the <code>versionId</code> subresource.</p><note>
592    /// <ul>
593    /// <li>
594    /// <p>If you include a <code>versionId</code> in your request header, you must have the <code>s3:GetObjectVersion</code> permission to access a specific version of an object. The <code>s3:GetObject</code> permission is not required in this scenario.</p></li>
595    /// <li>
596    /// <p>If you request the current version of an object without a specific <code>versionId</code> in the request header, only the <code>s3:GetObject</code> permission is required. The <code>s3:GetObjectVersion</code> permission is not required in this scenario.</p></li>
597    /// <li>
598    /// <p><b>Directory buckets</b> - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the <code>null</code> value of the version ID is supported by directory buckets. You can only specify <code>null</code> to the <code>versionId</code> query parameter in the request.</p></li>
599    /// </ul>
600    /// </note>
601    /// <p>For more information about versioning, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html">PutBucketVersioning</a>.</p>
602    pub fn get_version_id(&self) -> &::std::option::Option<::std::string::String> {
603        &self.version_id
604    }
605    /// <p>Specifies the algorithm to use when decrypting the object (for example, <code>AES256</code>).</p>
606    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
607    /// <ul>
608    /// <li>
609    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
610    /// <li>
611    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
612    /// <li>
613    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
614    /// </ul>
615    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
616    /// <p>This functionality is not supported for directory buckets.</p>
617    /// </note>
618    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
619        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
620        self
621    }
622    /// <p>Specifies the algorithm to use when decrypting the object (for example, <code>AES256</code>).</p>
623    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
624    /// <ul>
625    /// <li>
626    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
627    /// <li>
628    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
629    /// <li>
630    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
631    /// </ul>
632    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
633    /// <p>This functionality is not supported for directory buckets.</p>
634    /// </note>
635    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
636        self.sse_customer_algorithm = input;
637        self
638    }
639    /// <p>Specifies the algorithm to use when decrypting the object (for example, <code>AES256</code>).</p>
640    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
641    /// <ul>
642    /// <li>
643    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
644    /// <li>
645    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
646    /// <li>
647    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
648    /// </ul>
649    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
650    /// <p>This functionality is not supported for directory buckets.</p>
651    /// </note>
652    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
653        &self.sse_customer_algorithm
654    }
655    /// <p>Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
656    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
657    /// <ul>
658    /// <li>
659    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
660    /// <li>
661    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
662    /// <li>
663    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
664    /// </ul>
665    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
666    /// <p>This functionality is not supported for directory buckets.</p>
667    /// </note>
668    pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
669        self.sse_customer_key = ::std::option::Option::Some(input.into());
670        self
671    }
672    /// <p>Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
673    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
674    /// <ul>
675    /// <li>
676    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
677    /// <li>
678    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
679    /// <li>
680    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
681    /// </ul>
682    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
683    /// <p>This functionality is not supported for directory buckets.</p>
684    /// </note>
685    pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
686        self.sse_customer_key = input;
687        self
688    }
689    /// <p>Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the data before storing it. This value is used to decrypt the object when recovering it and must match the one used when storing the data. The key must be appropriate for use with the algorithm specified in the <code>x-amz-server-side-encryption-customer-algorithm</code> header.</p>
690    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
691    /// <ul>
692    /// <li>
693    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
694    /// <li>
695    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
696    /// <li>
697    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
698    /// </ul>
699    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
700    /// <p>This functionality is not supported for directory buckets.</p>
701    /// </note>
702    pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
703        &self.sse_customer_key
704    }
705    /// <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>
706    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
707    /// <ul>
708    /// <li>
709    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
710    /// <li>
711    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
712    /// <li>
713    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
714    /// </ul>
715    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
716    /// <p>This functionality is not supported for directory buckets.</p>
717    /// </note>
718    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
719        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
720        self
721    }
722    /// <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>
723    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
724    /// <ul>
725    /// <li>
726    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
727    /// <li>
728    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
729    /// <li>
730    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
731    /// </ul>
732    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
733    /// <p>This functionality is not supported for directory buckets.</p>
734    /// </note>
735    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
736        self.sse_customer_key_md5 = input;
737        self
738    }
739    /// <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>
740    /// <p>If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following headers:</p>
741    /// <ul>
742    /// <li>
743    /// <p><code>x-amz-server-side-encryption-customer-algorithm</code></p></li>
744    /// <li>
745    /// <p><code>x-amz-server-side-encryption-customer-key</code></p></li>
746    /// <li>
747    /// <p><code>x-amz-server-side-encryption-customer-key-MD5</code></p></li>
748    /// </ul>
749    /// <p>For more information about SSE-C, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.</p><note>
750    /// <p>This functionality is not supported for directory buckets.</p>
751    /// </note>
752    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
753        &self.sse_customer_key_md5
754    }
755    /// <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>
756    /// <p>This functionality is not supported for directory buckets.</p>
757    /// </note>
758    pub fn request_payer(mut self, input: crate::types::RequestPayer) -> Self {
759        self.request_payer = ::std::option::Option::Some(input);
760        self
761    }
762    /// <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>
763    /// <p>This functionality is not supported for directory buckets.</p>
764    /// </note>
765    pub fn set_request_payer(mut self, input: ::std::option::Option<crate::types::RequestPayer>) -> Self {
766        self.request_payer = input;
767        self
768    }
769    /// <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>
770    /// <p>This functionality is not supported for directory buckets.</p>
771    /// </note>
772    pub fn get_request_payer(&self) -> &::std::option::Option<crate::types::RequestPayer> {
773        &self.request_payer
774    }
775    /// <p>Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object.</p>
776    pub fn part_number(mut self, input: i32) -> Self {
777        self.part_number = ::std::option::Option::Some(input);
778        self
779    }
780    /// <p>Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object.</p>
781    pub fn set_part_number(mut self, input: ::std::option::Option<i32>) -> Self {
782        self.part_number = input;
783        self
784    }
785    /// <p>Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an object.</p>
786    pub fn get_part_number(&self) -> &::std::option::Option<i32> {
787        &self.part_number
788    }
789    /// <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>
790    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
791        self.expected_bucket_owner = ::std::option::Option::Some(input.into());
792        self
793    }
794    /// <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>
795    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
796        self.expected_bucket_owner = input;
797        self
798    }
799    /// <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>
800    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
801        &self.expected_bucket_owner
802    }
803    /// <p>To retrieve the checksum, this mode must be enabled.</p>
804    pub fn checksum_mode(mut self, input: crate::types::ChecksumMode) -> Self {
805        self.checksum_mode = ::std::option::Option::Some(input);
806        self
807    }
808    /// <p>To retrieve the checksum, this mode must be enabled.</p>
809    pub fn set_checksum_mode(mut self, input: ::std::option::Option<crate::types::ChecksumMode>) -> Self {
810        self.checksum_mode = input;
811        self
812    }
813    /// <p>To retrieve the checksum, this mode must be enabled.</p>
814    pub fn get_checksum_mode(&self) -> &::std::option::Option<crate::types::ChecksumMode> {
815        &self.checksum_mode
816    }
817    /// Consumes the builder and constructs a [`GetObjectInput`](crate::operation::get_object::GetObjectInput).
818    pub fn build(self) -> ::std::result::Result<crate::operation::get_object::GetObjectInput, ::aws_smithy_types::error::operation::BuildError> {
819        ::std::result::Result::Ok(crate::operation::get_object::GetObjectInput {
820            bucket: self.bucket,
821            if_match: self.if_match,
822            if_modified_since: self.if_modified_since,
823            if_none_match: self.if_none_match,
824            if_unmodified_since: self.if_unmodified_since,
825            key: self.key,
826            range: self.range,
827            response_cache_control: self.response_cache_control,
828            response_content_disposition: self.response_content_disposition,
829            response_content_encoding: self.response_content_encoding,
830            response_content_language: self.response_content_language,
831            response_content_type: self.response_content_type,
832            response_expires: self.response_expires,
833            version_id: self.version_id,
834            sse_customer_algorithm: self.sse_customer_algorithm,
835            sse_customer_key: self.sse_customer_key,
836            sse_customer_key_md5: self.sse_customer_key_md5,
837            request_payer: self.request_payer,
838            part_number: self.part_number,
839            expected_bucket_owner: self.expected_bucket_owner,
840            checksum_mode: self.checksum_mode,
841        })
842    }
843}
844impl ::std::fmt::Debug for GetObjectInputBuilder {
845    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
846        let mut formatter = f.debug_struct("GetObjectInputBuilder");
847        formatter.field("bucket", &self.bucket);
848        formatter.field("if_match", &self.if_match);
849        formatter.field("if_modified_since", &self.if_modified_since);
850        formatter.field("if_none_match", &self.if_none_match);
851        formatter.field("if_unmodified_since", &self.if_unmodified_since);
852        formatter.field("key", &self.key);
853        formatter.field("range", &self.range);
854        formatter.field("response_cache_control", &self.response_cache_control);
855        formatter.field("response_content_disposition", &self.response_content_disposition);
856        formatter.field("response_content_encoding", &self.response_content_encoding);
857        formatter.field("response_content_language", &self.response_content_language);
858        formatter.field("response_content_type", &self.response_content_type);
859        formatter.field("response_expires", &self.response_expires);
860        formatter.field("version_id", &self.version_id);
861        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
862        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
863        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
864        formatter.field("request_payer", &self.request_payer);
865        formatter.field("part_number", &self.part_number);
866        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
867        formatter.field("checksum_mode", &self.checksum_mode);
868        formatter.finish()
869    }
870}