aws_sdk_s3/operation/select_object_content/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::select_object_content::_select_object_content_output::SelectObjectContentOutputBuilder;
3
4pub use crate::operation::select_object_content::_select_object_content_input::SelectObjectContentInputBuilder;
5
6impl crate::operation::select_object_content::builders::SelectObjectContentInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::select_object_content::SelectObjectContentOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::select_object_content::SelectObjectContentError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.select_object_content();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `SelectObjectContent`.
24///
25/// <note>
26/// <p>This operation is not supported by directory buckets.</p>
27/// </note> <important>
28/// <p>The SelectObjectContent operation is no longer available to new customers. Existing customers of Amazon S3 Select can continue to use the operation as usual. <a href="http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/">Learn more</a></p>
29/// </important>
30/// <p>This action filters the contents of an Amazon S3 object based on a simple structured query language (SQL) statement. In the request, along with the SQL expression, you must also specify a data serialization format (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse object data into records, and returns only records that match the specified SQL expression. You must also specify the data serialization format for the response.</p>
31/// <p>This functionality is not supported for Amazon S3 on Outposts.</p>
32/// <p>For more information about Amazon S3 Select, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting Content from Objects</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html">SELECT Command</a> in the <i>Amazon S3 User Guide</i>.</p>
33/// <p></p>
34/// <dl>
35/// <dt>
36/// Permissions
37/// </dt>
38/// <dd>
39/// <p>You must have the <code>s3:GetObject</code> permission for this operation.&nbsp;Amazon S3 Select does not support anonymous access. For more information about permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying Permissions in a Policy</a> in the <i>Amazon S3 User Guide</i>.</p>
40/// </dd>
41/// <dt>
42/// Object Data Formats
43/// </dt>
44/// <dd>
45/// <p>You can use Amazon S3 Select to query objects that have the following format properties:</p>
46/// <ul>
47/// <li>
48/// <p><i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet format.</p></li>
49/// <li>
50/// <p><i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select supports.</p></li>
51/// <li>
52/// <p><i>GZIP or BZIP2</i> - CSV and JSON files can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only compression formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object compression for Parquet objects.</p></li>
53/// <li>
54/// <p><i>Server-side encryption</i> - Amazon S3 Select supports querying objects that are protected with server-side encryption.</p>
55/// <p>For objects that are encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must use the headers that are documented in the <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>. 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>
56/// <p>For objects that are encrypted with Amazon S3 managed keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS), server-side encryption is handled transparently, so you don't need to specify anything. For more information about server-side encryption, including SSE-S3 and SSE-KMS, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting Data Using Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.</p></li>
57/// </ul>
58/// </dd>
59/// <dt>
60/// Working with the Response Body
61/// </dt>
62/// <dd>
63/// <p>Given the response size is unknown, Amazon S3 Select streams the response as a series of messages and includes a <code>Transfer-Encoding</code> header with <code>chunked</code> as its value in the response. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html">Appendix: SelectObjectContent Response</a>.</p>
64/// </dd>
65/// <dt>
66/// GetObject Support
67/// </dt>
68/// <dd>
69/// <p>The <code>SelectObjectContent</code> action does not support the following <code>GetObject</code> functionality. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.</p>
70/// <ul>
71/// <li>
72/// <p><code>Range</code>: Although you can specify a scan range for an Amazon S3 Select request (see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange">SelectObjectContentRequest - ScanRange</a> in the request parameters), you cannot specify the range of bytes of an object to return.</p></li>
73/// <li>
74/// <p>The <code>GLACIER</code>, <code>DEEP_ARCHIVE</code>, and <code>REDUCED_REDUNDANCY</code> storage classes, or the <code>ARCHIVE_ACCESS</code> and <code>DEEP_ARCHIVE_ACCESS</code> access tiers of the <code>INTELLIGENT_TIERING</code> storage class: You cannot query objects in the <code>GLACIER</code>, <code>DEEP_ARCHIVE</code>, or <code>REDUCED_REDUNDANCY</code> storage classes, nor objects in the <code>ARCHIVE_ACCESS</code> or <code>DEEP_ARCHIVE_ACCESS</code> access tiers of the <code>INTELLIGENT_TIERING</code> storage class. For more information about storage classes, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html">Using Amazon S3 storage classes</a> in the <i>Amazon S3 User Guide</i>.</p></li>
75/// </ul>
76/// </dd>
77/// <dt>
78/// Special Errors
79/// </dt>
80/// <dd>
81/// <p>For a list of special errors for this operation, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList">List of SELECT Object Content Error Codes</a></p>
82/// </dd>
83/// </dl>
84/// <p>The following operations are related to <code>SelectObjectContent</code>:</p>
85/// <ul>
86/// <li>
87/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a></p></li>
88/// <li>
89/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">GetBucketLifecycleConfiguration</a></p></li>
90/// <li>
91/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a></p></li>
92/// </ul>
93#[derive(::std::clone::Clone, ::std::fmt::Debug)]
94pub struct SelectObjectContentFluentBuilder {
95    handle: ::std::sync::Arc<crate::client::Handle>,
96    inner: crate::operation::select_object_content::builders::SelectObjectContentInputBuilder,
97    config_override: ::std::option::Option<crate::config::Builder>,
98}
99impl
100    crate::client::customize::internal::CustomizableSend<
101        crate::operation::select_object_content::SelectObjectContentOutput,
102        crate::operation::select_object_content::SelectObjectContentError,
103    > for SelectObjectContentFluentBuilder
104{
105    fn send(
106        self,
107        config_override: crate::config::Builder,
108    ) -> crate::client::customize::internal::BoxFuture<
109        crate::client::customize::internal::SendResult<
110            crate::operation::select_object_content::SelectObjectContentOutput,
111            crate::operation::select_object_content::SelectObjectContentError,
112        >,
113    > {
114        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
115    }
116}
117impl SelectObjectContentFluentBuilder {
118    /// Creates a new `SelectObjectContentFluentBuilder`.
119    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
120        Self {
121            handle,
122            inner: ::std::default::Default::default(),
123            config_override: ::std::option::Option::None,
124        }
125    }
126    /// Access the SelectObjectContent as a reference.
127    pub fn as_input(&self) -> &crate::operation::select_object_content::builders::SelectObjectContentInputBuilder {
128        &self.inner
129    }
130    /// Sends the request and returns the response.
131    ///
132    /// If an error occurs, an `SdkError` will be returned with additional details that
133    /// can be matched against.
134    ///
135    /// By default, any retryable failures will be retried twice. Retry behavior
136    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
137    /// set when configuring the client.
138    pub async fn send(
139        self,
140    ) -> ::std::result::Result<
141        crate::operation::select_object_content::SelectObjectContentOutput,
142        ::aws_smithy_runtime_api::client::result::SdkError<
143            crate::operation::select_object_content::SelectObjectContentError,
144            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
145        >,
146    > {
147        let input = self
148            .inner
149            .build()
150            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
151        let runtime_plugins = crate::operation::select_object_content::SelectObjectContent::operation_runtime_plugins(
152            self.handle.runtime_plugins.clone(),
153            &self.handle.conf,
154            self.config_override,
155        );
156        crate::operation::select_object_content::SelectObjectContent::orchestrate(&runtime_plugins, input).await
157    }
158
159    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
160    pub fn customize(
161        self,
162    ) -> crate::client::customize::CustomizableOperation<
163        crate::operation::select_object_content::SelectObjectContentOutput,
164        crate::operation::select_object_content::SelectObjectContentError,
165        Self,
166    > {
167        crate::client::customize::CustomizableOperation::new(self)
168    }
169    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
170        self.set_config_override(::std::option::Option::Some(config_override.into()));
171        self
172    }
173
174    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
175        self.config_override = config_override;
176        self
177    }
178    /// <p>The S3 bucket.</p>
179    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
180        self.inner = self.inner.bucket(input.into());
181        self
182    }
183    /// <p>The S3 bucket.</p>
184    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
185        self.inner = self.inner.set_bucket(input);
186        self
187    }
188    /// <p>The S3 bucket.</p>
189    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
190        self.inner.get_bucket()
191    }
192    /// <p>The object key.</p>
193    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
194        self.inner = self.inner.key(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.inner = self.inner.set_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.inner.get_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.inner = self.inner.sse_customer_algorithm(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.inner = self.inner.set_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.inner.get_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.inner = self.inner.sse_customer_key(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.inner = self.inner.set_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.inner.get_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.inner = self.inner.sse_customer_key_md5(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.inner = self.inner.set_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.inner.get_sse_customer_key_md5()
247    }
248    /// <p>The expression that is used to query the object.</p>
249    pub fn expression(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
250        self.inner = self.inner.expression(input.into());
251        self
252    }
253    /// <p>The expression that is used to query the object.</p>
254    pub fn set_expression(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
255        self.inner = self.inner.set_expression(input);
256        self
257    }
258    /// <p>The expression that is used to query the object.</p>
259    pub fn get_expression(&self) -> &::std::option::Option<::std::string::String> {
260        self.inner.get_expression()
261    }
262    /// <p>The type of the provided expression (for example, SQL).</p>
263    pub fn expression_type(mut self, input: crate::types::ExpressionType) -> Self {
264        self.inner = self.inner.expression_type(input);
265        self
266    }
267    /// <p>The type of the provided expression (for example, SQL).</p>
268    pub fn set_expression_type(mut self, input: ::std::option::Option<crate::types::ExpressionType>) -> Self {
269        self.inner = self.inner.set_expression_type(input);
270        self
271    }
272    /// <p>The type of the provided expression (for example, SQL).</p>
273    pub fn get_expression_type(&self) -> &::std::option::Option<crate::types::ExpressionType> {
274        self.inner.get_expression_type()
275    }
276    /// <p>Specifies if periodic request progress information should be enabled.</p>
277    pub fn request_progress(mut self, input: crate::types::RequestProgress) -> Self {
278        self.inner = self.inner.request_progress(input);
279        self
280    }
281    /// <p>Specifies if periodic request progress information should be enabled.</p>
282    pub fn set_request_progress(mut self, input: ::std::option::Option<crate::types::RequestProgress>) -> Self {
283        self.inner = self.inner.set_request_progress(input);
284        self
285    }
286    /// <p>Specifies if periodic request progress information should be enabled.</p>
287    pub fn get_request_progress(&self) -> &::std::option::Option<crate::types::RequestProgress> {
288        self.inner.get_request_progress()
289    }
290    /// <p>Describes the format of the data in the object that is being queried.</p>
291    pub fn input_serialization(mut self, input: crate::types::InputSerialization) -> Self {
292        self.inner = self.inner.input_serialization(input);
293        self
294    }
295    /// <p>Describes the format of the data in the object that is being queried.</p>
296    pub fn set_input_serialization(mut self, input: ::std::option::Option<crate::types::InputSerialization>) -> Self {
297        self.inner = self.inner.set_input_serialization(input);
298        self
299    }
300    /// <p>Describes the format of the data in the object that is being queried.</p>
301    pub fn get_input_serialization(&self) -> &::std::option::Option<crate::types::InputSerialization> {
302        self.inner.get_input_serialization()
303    }
304    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
305    pub fn output_serialization(mut self, input: crate::types::OutputSerialization) -> Self {
306        self.inner = self.inner.output_serialization(input);
307        self
308    }
309    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
310    pub fn set_output_serialization(mut self, input: ::std::option::Option<crate::types::OutputSerialization>) -> Self {
311        self.inner = self.inner.set_output_serialization(input);
312        self
313    }
314    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
315    pub fn get_output_serialization(&self) -> &::std::option::Option<crate::types::OutputSerialization> {
316        self.inner.get_output_serialization()
317    }
318    /// <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>
319    /// <p><code>ScanRange</code>may be used in the following ways:</p>
320    /// <ul>
321    /// <li>
322    /// <p><code><scanrange>
323    /// <start>
324    /// 50
325    /// </start>
326    /// <end>
327    /// 100
328    /// </end>
329    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
330    /// <li>
331    /// <p><code><scanrange>
332    /// <start>
333    /// 50
334    /// </start>
335    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
336    /// <li>
337    /// <p><code><scanrange>
338    /// <end>
339    /// 50
340    /// </end>
341    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
342    /// </ul>
343    pub fn scan_range(mut self, input: crate::types::ScanRange) -> Self {
344        self.inner = self.inner.scan_range(input);
345        self
346    }
347    /// <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>
348    /// <p><code>ScanRange</code>may be used in the following ways:</p>
349    /// <ul>
350    /// <li>
351    /// <p><code><scanrange>
352    /// <start>
353    /// 50
354    /// </start>
355    /// <end>
356    /// 100
357    /// </end>
358    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
359    /// <li>
360    /// <p><code><scanrange>
361    /// <start>
362    /// 50
363    /// </start>
364    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
365    /// <li>
366    /// <p><code><scanrange>
367    /// <end>
368    /// 50
369    /// </end>
370    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
371    /// </ul>
372    pub fn set_scan_range(mut self, input: ::std::option::Option<crate::types::ScanRange>) -> Self {
373        self.inner = self.inner.set_scan_range(input);
374        self
375    }
376    /// <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>
377    /// <p><code>ScanRange</code>may be used in the following ways:</p>
378    /// <ul>
379    /// <li>
380    /// <p><code><scanrange>
381    /// <start>
382    /// 50
383    /// </start>
384    /// <end>
385    /// 100
386    /// </end>
387    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
388    /// <li>
389    /// <p><code><scanrange>
390    /// <start>
391    /// 50
392    /// </start>
393    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
394    /// <li>
395    /// <p><code><scanrange>
396    /// <end>
397    /// 50
398    /// </end>
399    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
400    /// </ul>
401    pub fn get_scan_range(&self) -> &::std::option::Option<crate::types::ScanRange> {
402        self.inner.get_scan_range()
403    }
404    /// <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>
405    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
406        self.inner = self.inner.expected_bucket_owner(input.into());
407        self
408    }
409    /// <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>
410    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
411        self.inner = self.inner.set_expected_bucket_owner(input);
412        self
413    }
414    /// <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>
415    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
416        self.inner.get_expected_bucket_owner()
417    }
418}