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. 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}