aws_sdk_s3/operation/select_object_content/
_select_object_content_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <note>
4/// <p>Learn Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the feature as usual. <a href="http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/">Learn more</a></p>
5/// </note>
6/// <p>Request to filter the contents of an Amazon S3 object based on a simple Structured Query Language (SQL) statement. In the request, along with the SQL expression, you must specify a data serialization format (JSON or CSV) of the object. Amazon S3 uses this to parse object data into records. It returns only records that match the specified SQL expression. You must also specify the data serialization format for the response. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html">S3Select API Documentation</a>.</p>
7#[non_exhaustive]
8#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
9pub struct SelectObjectContentInput {
10    /// <p>The S3 bucket.</p>
11    pub bucket: ::std::option::Option<::std::string::String>,
12    /// <p>The object key.</p>
13    pub key: ::std::option::Option<::std::string::String>,
14    /// <p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
15    pub sse_customer_algorithm: ::std::option::Option<::std::string::String>,
16    /// <p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
17    pub sse_customer_key: ::std::option::Option<::std::string::String>,
18    /// <p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
19    pub sse_customer_key_md5: ::std::option::Option<::std::string::String>,
20    /// <p>The expression that is used to query the object.</p>
21    pub expression: ::std::option::Option<::std::string::String>,
22    /// <p>The type of the provided expression (for example, SQL).</p>
23    pub expression_type: ::std::option::Option<crate::types::ExpressionType>,
24    /// <p>Specifies if periodic request progress information should be enabled.</p>
25    pub request_progress: ::std::option::Option<crate::types::RequestProgress>,
26    /// <p>Describes the format of the data in the object that is being queried.</p>
27    pub input_serialization: ::std::option::Option<crate::types::InputSerialization>,
28    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
29    pub output_serialization: ::std::option::Option<crate::types::OutputSerialization>,
30    /// <p>Specifies the byte range of the object to get the records from. A record is processed when its first byte is contained by the range. This parameter is optional, but when specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.</p>
31    /// <p><code>ScanRange</code>may be used in the following ways:</p>
32    /// <ul>
33    /// <li>
34    /// <p><code><scanrange>
35    /// <start>
36    /// 50
37    /// </start>
38    /// <end>
39    /// 100
40    /// </end>
41    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
42    /// <li>
43    /// <p><code><scanrange>
44    /// <start>
45    /// 50
46    /// </start>
47    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
48    /// <li>
49    /// <p><code><scanrange>
50    /// <end>
51    /// 50
52    /// </end>
53    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
54    /// </ul>
55    pub scan_range: ::std::option::Option<crate::types::ScanRange>,
56    /// <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>
57    pub expected_bucket_owner: ::std::option::Option<::std::string::String>,
58}
59impl SelectObjectContentInput {
60    /// <p>The S3 bucket.</p>
61    pub fn bucket(&self) -> ::std::option::Option<&str> {
62        self.bucket.as_deref()
63    }
64    /// <p>The object key.</p>
65    pub fn key(&self) -> ::std::option::Option<&str> {
66        self.key.as_deref()
67    }
68    /// <p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
69    pub fn sse_customer_algorithm(&self) -> ::std::option::Option<&str> {
70        self.sse_customer_algorithm.as_deref()
71    }
72    /// <p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
73    pub fn sse_customer_key(&self) -> ::std::option::Option<&str> {
74        self.sse_customer_key.as_deref()
75    }
76    /// <p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
77    pub fn sse_customer_key_md5(&self) -> ::std::option::Option<&str> {
78        self.sse_customer_key_md5.as_deref()
79    }
80    /// <p>The expression that is used to query the object.</p>
81    pub fn expression(&self) -> ::std::option::Option<&str> {
82        self.expression.as_deref()
83    }
84    /// <p>The type of the provided expression (for example, SQL).</p>
85    pub fn expression_type(&self) -> ::std::option::Option<&crate::types::ExpressionType> {
86        self.expression_type.as_ref()
87    }
88    /// <p>Specifies if periodic request progress information should be enabled.</p>
89    pub fn request_progress(&self) -> ::std::option::Option<&crate::types::RequestProgress> {
90        self.request_progress.as_ref()
91    }
92    /// <p>Describes the format of the data in the object that is being queried.</p>
93    pub fn input_serialization(&self) -> ::std::option::Option<&crate::types::InputSerialization> {
94        self.input_serialization.as_ref()
95    }
96    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
97    pub fn output_serialization(&self) -> ::std::option::Option<&crate::types::OutputSerialization> {
98        self.output_serialization.as_ref()
99    }
100    /// <p>Specifies the byte range of the object to get the records from. A record is processed when its first byte is contained by the range. This parameter is optional, but when specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.</p>
101    /// <p><code>ScanRange</code>may be used in the following ways:</p>
102    /// <ul>
103    /// <li>
104    /// <p><code><scanrange>
105    /// <start>
106    /// 50
107    /// </start>
108    /// <end>
109    /// 100
110    /// </end>
111    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
112    /// <li>
113    /// <p><code><scanrange>
114    /// <start>
115    /// 50
116    /// </start>
117    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
118    /// <li>
119    /// <p><code><scanrange>
120    /// <end>
121    /// 50
122    /// </end>
123    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
124    /// </ul>
125    pub fn scan_range(&self) -> ::std::option::Option<&crate::types::ScanRange> {
126        self.scan_range.as_ref()
127    }
128    /// <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>
129    pub fn expected_bucket_owner(&self) -> ::std::option::Option<&str> {
130        self.expected_bucket_owner.as_deref()
131    }
132}
133impl ::std::fmt::Debug for SelectObjectContentInput {
134    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
135        let mut formatter = f.debug_struct("SelectObjectContentInput");
136        formatter.field("bucket", &self.bucket);
137        formatter.field("key", &self.key);
138        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
139        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
140        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
141        formatter.field("expression", &self.expression);
142        formatter.field("expression_type", &self.expression_type);
143        formatter.field("request_progress", &self.request_progress);
144        formatter.field("input_serialization", &self.input_serialization);
145        formatter.field("output_serialization", &self.output_serialization);
146        formatter.field("scan_range", &self.scan_range);
147        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
148        formatter.finish()
149    }
150}
151impl SelectObjectContentInput {
152    /// Creates a new builder-style object to manufacture [`SelectObjectContentInput`](crate::operation::select_object_content::SelectObjectContentInput).
153    pub fn builder() -> crate::operation::select_object_content::builders::SelectObjectContentInputBuilder {
154        crate::operation::select_object_content::builders::SelectObjectContentInputBuilder::default()
155    }
156}
157
158/// A builder for [`SelectObjectContentInput`](crate::operation::select_object_content::SelectObjectContentInput).
159#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
160#[non_exhaustive]
161pub struct SelectObjectContentInputBuilder {
162    pub(crate) bucket: ::std::option::Option<::std::string::String>,
163    pub(crate) key: ::std::option::Option<::std::string::String>,
164    pub(crate) sse_customer_algorithm: ::std::option::Option<::std::string::String>,
165    pub(crate) sse_customer_key: ::std::option::Option<::std::string::String>,
166    pub(crate) sse_customer_key_md5: ::std::option::Option<::std::string::String>,
167    pub(crate) expression: ::std::option::Option<::std::string::String>,
168    pub(crate) expression_type: ::std::option::Option<crate::types::ExpressionType>,
169    pub(crate) request_progress: ::std::option::Option<crate::types::RequestProgress>,
170    pub(crate) input_serialization: ::std::option::Option<crate::types::InputSerialization>,
171    pub(crate) output_serialization: ::std::option::Option<crate::types::OutputSerialization>,
172    pub(crate) scan_range: ::std::option::Option<crate::types::ScanRange>,
173    pub(crate) expected_bucket_owner: ::std::option::Option<::std::string::String>,
174}
175impl SelectObjectContentInputBuilder {
176    /// <p>The S3 bucket.</p>
177    /// This field is required.
178    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
179        self.bucket = ::std::option::Option::Some(input.into());
180        self
181    }
182    /// <p>The S3 bucket.</p>
183    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
184        self.bucket = input;
185        self
186    }
187    /// <p>The S3 bucket.</p>
188    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
189        &self.bucket
190    }
191    /// <p>The object key.</p>
192    /// This field is required.
193    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
194        self.key = ::std::option::Option::Some(input.into());
195        self
196    }
197    /// <p>The object key.</p>
198    pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
199        self.key = input;
200        self
201    }
202    /// <p>The object key.</p>
203    pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
204        &self.key
205    }
206    /// <p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
207    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
208        self.sse_customer_algorithm = ::std::option::Option::Some(input.into());
209        self
210    }
211    /// <p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
212    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
213        self.sse_customer_algorithm = input;
214        self
215    }
216    /// <p>The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
217    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
218        &self.sse_customer_algorithm
219    }
220    /// <p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
221    pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
222        self.sse_customer_key = ::std::option::Option::Some(input.into());
223        self
224    }
225    /// <p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
226    pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
227        self.sse_customer_key = input;
228        self
229    }
230    /// <p>The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
231    pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
232        &self.sse_customer_key
233    }
234    /// <p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
235    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
236        self.sse_customer_key_md5 = ::std::option::Option::Some(input.into());
237        self
238    }
239    /// <p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
240    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
241        self.sse_customer_key_md5 = input;
242        self
243    }
244    /// <p>The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Protecting data using SSE-C keys</a> in the <i>Amazon S3 User Guide</i>.</p>
245    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
246        &self.sse_customer_key_md5
247    }
248    /// <p>The expression that is used to query the object.</p>
249    /// This field is required.
250    pub fn expression(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
251        self.expression = ::std::option::Option::Some(input.into());
252        self
253    }
254    /// <p>The expression that is used to query the object.</p>
255    pub fn set_expression(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
256        self.expression = input;
257        self
258    }
259    /// <p>The expression that is used to query the object.</p>
260    pub fn get_expression(&self) -> &::std::option::Option<::std::string::String> {
261        &self.expression
262    }
263    /// <p>The type of the provided expression (for example, SQL).</p>
264    /// This field is required.
265    pub fn expression_type(mut self, input: crate::types::ExpressionType) -> Self {
266        self.expression_type = ::std::option::Option::Some(input);
267        self
268    }
269    /// <p>The type of the provided expression (for example, SQL).</p>
270    pub fn set_expression_type(mut self, input: ::std::option::Option<crate::types::ExpressionType>) -> Self {
271        self.expression_type = input;
272        self
273    }
274    /// <p>The type of the provided expression (for example, SQL).</p>
275    pub fn get_expression_type(&self) -> &::std::option::Option<crate::types::ExpressionType> {
276        &self.expression_type
277    }
278    /// <p>Specifies if periodic request progress information should be enabled.</p>
279    pub fn request_progress(mut self, input: crate::types::RequestProgress) -> Self {
280        self.request_progress = ::std::option::Option::Some(input);
281        self
282    }
283    /// <p>Specifies if periodic request progress information should be enabled.</p>
284    pub fn set_request_progress(mut self, input: ::std::option::Option<crate::types::RequestProgress>) -> Self {
285        self.request_progress = input;
286        self
287    }
288    /// <p>Specifies if periodic request progress information should be enabled.</p>
289    pub fn get_request_progress(&self) -> &::std::option::Option<crate::types::RequestProgress> {
290        &self.request_progress
291    }
292    /// <p>Describes the format of the data in the object that is being queried.</p>
293    /// This field is required.
294    pub fn input_serialization(mut self, input: crate::types::InputSerialization) -> Self {
295        self.input_serialization = ::std::option::Option::Some(input);
296        self
297    }
298    /// <p>Describes the format of the data in the object that is being queried.</p>
299    pub fn set_input_serialization(mut self, input: ::std::option::Option<crate::types::InputSerialization>) -> Self {
300        self.input_serialization = input;
301        self
302    }
303    /// <p>Describes the format of the data in the object that is being queried.</p>
304    pub fn get_input_serialization(&self) -> &::std::option::Option<crate::types::InputSerialization> {
305        &self.input_serialization
306    }
307    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
308    /// This field is required.
309    pub fn output_serialization(mut self, input: crate::types::OutputSerialization) -> Self {
310        self.output_serialization = ::std::option::Option::Some(input);
311        self
312    }
313    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
314    pub fn set_output_serialization(mut self, input: ::std::option::Option<crate::types::OutputSerialization>) -> Self {
315        self.output_serialization = input;
316        self
317    }
318    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
319    pub fn get_output_serialization(&self) -> &::std::option::Option<crate::types::OutputSerialization> {
320        &self.output_serialization
321    }
322    /// <p>Specifies the byte range of the object to get the records from. A record is processed when its first byte is contained by the range. This parameter is optional, but when specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.</p>
323    /// <p><code>ScanRange</code>may be used in the following ways:</p>
324    /// <ul>
325    /// <li>
326    /// <p><code><scanrange>
327    /// <start>
328    /// 50
329    /// </start>
330    /// <end>
331    /// 100
332    /// </end>
333    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
334    /// <li>
335    /// <p><code><scanrange>
336    /// <start>
337    /// 50
338    /// </start>
339    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
340    /// <li>
341    /// <p><code><scanrange>
342    /// <end>
343    /// 50
344    /// </end>
345    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
346    /// </ul>
347    pub fn scan_range(mut self, input: crate::types::ScanRange) -> Self {
348        self.scan_range = ::std::option::Option::Some(input);
349        self
350    }
351    /// <p>Specifies the byte range of the object to get the records from. A record is processed when its first byte is contained by the range. This parameter is optional, but when specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.</p>
352    /// <p><code>ScanRange</code>may be used in the following ways:</p>
353    /// <ul>
354    /// <li>
355    /// <p><code><scanrange>
356    /// <start>
357    /// 50
358    /// </start>
359    /// <end>
360    /// 100
361    /// </end>
362    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
363    /// <li>
364    /// <p><code><scanrange>
365    /// <start>
366    /// 50
367    /// </start>
368    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
369    /// <li>
370    /// <p><code><scanrange>
371    /// <end>
372    /// 50
373    /// </end>
374    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
375    /// </ul>
376    pub fn set_scan_range(mut self, input: ::std::option::Option<crate::types::ScanRange>) -> Self {
377        self.scan_range = input;
378        self
379    }
380    /// <p>Specifies the byte range of the object to get the records from. A record is processed when its first byte is contained by the range. This parameter is optional, but when specified, it must not be empty. See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.</p>
381    /// <p><code>ScanRange</code>may be used in the following ways:</p>
382    /// <ul>
383    /// <li>
384    /// <p><code><scanrange>
385    /// <start>
386    /// 50
387    /// </start>
388    /// <end>
389    /// 100
390    /// </end>
391    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
392    /// <li>
393    /// <p><code><scanrange>
394    /// <start>
395    /// 50
396    /// </start>
397    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
398    /// <li>
399    /// <p><code><scanrange>
400    /// <end>
401    /// 50
402    /// </end>
403    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
404    /// </ul>
405    pub fn get_scan_range(&self) -> &::std::option::Option<crate::types::ScanRange> {
406        &self.scan_range
407    }
408    /// <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>
409    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
410        self.expected_bucket_owner = ::std::option::Option::Some(input.into());
411        self
412    }
413    /// <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>
414    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
415        self.expected_bucket_owner = input;
416        self
417    }
418    /// <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>
419    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
420        &self.expected_bucket_owner
421    }
422    /// Consumes the builder and constructs a [`SelectObjectContentInput`](crate::operation::select_object_content::SelectObjectContentInput).
423    pub fn build(
424        self,
425    ) -> ::std::result::Result<crate::operation::select_object_content::SelectObjectContentInput, ::aws_smithy_types::error::operation::BuildError>
426    {
427        ::std::result::Result::Ok(crate::operation::select_object_content::SelectObjectContentInput {
428            bucket: self.bucket,
429            key: self.key,
430            sse_customer_algorithm: self.sse_customer_algorithm,
431            sse_customer_key: self.sse_customer_key,
432            sse_customer_key_md5: self.sse_customer_key_md5,
433            expression: self.expression,
434            expression_type: self.expression_type,
435            request_progress: self.request_progress,
436            input_serialization: self.input_serialization,
437            output_serialization: self.output_serialization,
438            scan_range: self.scan_range,
439            expected_bucket_owner: self.expected_bucket_owner,
440        })
441    }
442}
443impl ::std::fmt::Debug for SelectObjectContentInputBuilder {
444    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
445        let mut formatter = f.debug_struct("SelectObjectContentInputBuilder");
446        formatter.field("bucket", &self.bucket);
447        formatter.field("key", &self.key);
448        formatter.field("sse_customer_algorithm", &self.sse_customer_algorithm);
449        formatter.field("sse_customer_key", &"*** Sensitive Data Redacted ***");
450        formatter.field("sse_customer_key_md5", &self.sse_customer_key_md5);
451        formatter.field("expression", &self.expression);
452        formatter.field("expression_type", &self.expression_type);
453        formatter.field("request_progress", &self.request_progress);
454        formatter.field("input_serialization", &self.input_serialization);
455        formatter.field("output_serialization", &self.output_serialization);
456        formatter.field("scan_range", &self.scan_range);
457        formatter.field("expected_bucket_owner", &self.expected_bucket_owner);
458        formatter.finish()
459    }
460}