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 for directory buckets.</p>
27/// </note>
28/// <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>
29/// <p>This functionality is not supported for Amazon S3 on Outposts.</p>
30/// <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>
31/// <p></p>
32/// <dl>
33/// <dt>
34/// Permissions
35/// </dt>
36/// <dd>
37/// <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>
38/// </dd>
39/// <dt>
40/// Object Data Formats
41/// </dt>
42/// <dd>
43/// <p>You can use Amazon S3 Select to query objects that have the following format properties:</p>
44/// <ul>
45/// <li>
46/// <p><i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet format.</p></li>
47/// <li>
48/// <p><i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select supports.</p></li>
49/// <li>
50/// <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>
51/// <li>
52/// <p><i>Server-side encryption</i> - Amazon S3 Select supports querying objects that are protected with server-side encryption.</p>
53/// <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>
54/// <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>
55/// </ul>
56/// </dd>
57/// <dt>
58/// Working with the Response Body
59/// </dt>
60/// <dd>
61/// <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>
62/// </dd>
63/// <dt>
64/// GetObject Support
65/// </dt>
66/// <dd>
67/// <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>
68/// <ul>
69/// <li>
70/// <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>
71/// <li>
72/// <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>
73/// </ul>
74/// </dd>
75/// <dt>
76/// Special Errors
77/// </dt>
78/// <dd>
79/// <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>
80/// </dd>
81/// </dl>
82/// <p>The following operations are related to <code>SelectObjectContent</code>:</p>
83/// <ul>
84/// <li>
85/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a></p></li>
86/// <li>
87/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">GetBucketLifecycleConfiguration</a></p></li>
88/// <li>
89/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">PutBucketLifecycleConfiguration</a></p></li>
90/// </ul><important>
91/// <p>You must URL encode any signed header values that contain spaces. For example, if your header value is <code>my file.txt</code>, containing two spaces after <code>my</code>, you must URL encode this value to <code>my%20%20file.txt</code>.</p>
92/// </important>
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        let mut output = crate::operation::select_object_content::SelectObjectContent::orchestrate(&runtime_plugins, input).await?;
157
158        // Converts any error encountered beyond this point into an `SdkError` response error
159        // with an `HttpResponse`. However, since we have already exited the `orchestrate`
160        // function, the original `HttpResponse` is no longer available and cannot be restored.
161        // This means that header information from the original response has been lost.
162        //
163        // Note that the response body would have been consumed by the deserializer
164        // regardless, even if the initial message was hypothetically processed during
165        // the orchestrator's deserialization phase but later resulted in an error.
166        fn response_error(
167            err: impl ::std::convert::Into<::aws_smithy_runtime_api::box_error::BoxError>,
168        ) -> ::aws_smithy_runtime_api::client::result::SdkError<
169            crate::operation::select_object_content::SelectObjectContentError,
170            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
171        > {
172            ::aws_smithy_runtime_api::client::result::SdkError::response_error(
173                err,
174                ::aws_smithy_runtime_api::client::orchestrator::HttpResponse::new(
175                    ::aws_smithy_runtime_api::http::StatusCode::try_from(200).expect("valid successful code"),
176                    ::aws_smithy_types::body::SdkBody::empty(),
177                ),
178            )
179        }
180
181        let message = output.payload.try_recv_initial_response().await.map_err(response_error)?;
182
183        match message {
184            ::std::option::Option::Some(_message) => ::std::result::Result::Ok(output),
185            ::std::option::Option::None => ::std::result::Result::Ok(output),
186        }
187    }
188
189    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
190    pub fn customize(
191        self,
192    ) -> crate::client::customize::CustomizableOperation<
193        crate::operation::select_object_content::SelectObjectContentOutput,
194        crate::operation::select_object_content::SelectObjectContentError,
195        Self,
196    > {
197        crate::client::customize::CustomizableOperation::new(self)
198    }
199    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
200        self.set_config_override(::std::option::Option::Some(config_override.into()));
201        self
202    }
203
204    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
205        self.config_override = config_override;
206        self
207    }
208    /// <p>The S3 bucket.</p>
209    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
210        self.inner = self.inner.bucket(input.into());
211        self
212    }
213    /// <p>The S3 bucket.</p>
214    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
215        self.inner = self.inner.set_bucket(input);
216        self
217    }
218    /// <p>The S3 bucket.</p>
219    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
220        self.inner.get_bucket()
221    }
222    /// <p>The object key.</p>
223    pub fn key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
224        self.inner = self.inner.key(input.into());
225        self
226    }
227    /// <p>The object key.</p>
228    pub fn set_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
229        self.inner = self.inner.set_key(input);
230        self
231    }
232    /// <p>The object key.</p>
233    pub fn get_key(&self) -> &::std::option::Option<::std::string::String> {
234        self.inner.get_key()
235    }
236    /// <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>
237    pub fn sse_customer_algorithm(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
238        self.inner = self.inner.sse_customer_algorithm(input.into());
239        self
240    }
241    /// <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>
242    pub fn set_sse_customer_algorithm(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
243        self.inner = self.inner.set_sse_customer_algorithm(input);
244        self
245    }
246    /// <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>
247    pub fn get_sse_customer_algorithm(&self) -> &::std::option::Option<::std::string::String> {
248        self.inner.get_sse_customer_algorithm()
249    }
250    /// <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>
251    pub fn sse_customer_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
252        self.inner = self.inner.sse_customer_key(input.into());
253        self
254    }
255    /// <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>
256    pub fn set_sse_customer_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
257        self.inner = self.inner.set_sse_customer_key(input);
258        self
259    }
260    /// <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>
261    pub fn get_sse_customer_key(&self) -> &::std::option::Option<::std::string::String> {
262        self.inner.get_sse_customer_key()
263    }
264    /// <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>
265    pub fn sse_customer_key_md5(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
266        self.inner = self.inner.sse_customer_key_md5(input.into());
267        self
268    }
269    /// <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>
270    pub fn set_sse_customer_key_md5(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
271        self.inner = self.inner.set_sse_customer_key_md5(input);
272        self
273    }
274    /// <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>
275    pub fn get_sse_customer_key_md5(&self) -> &::std::option::Option<::std::string::String> {
276        self.inner.get_sse_customer_key_md5()
277    }
278    /// <p>The expression that is used to query the object.</p>
279    pub fn expression(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
280        self.inner = self.inner.expression(input.into());
281        self
282    }
283    /// <p>The expression that is used to query the object.</p>
284    pub fn set_expression(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
285        self.inner = self.inner.set_expression(input);
286        self
287    }
288    /// <p>The expression that is used to query the object.</p>
289    pub fn get_expression(&self) -> &::std::option::Option<::std::string::String> {
290        self.inner.get_expression()
291    }
292    /// <p>The type of the provided expression (for example, SQL).</p>
293    pub fn expression_type(mut self, input: crate::types::ExpressionType) -> Self {
294        self.inner = self.inner.expression_type(input);
295        self
296    }
297    /// <p>The type of the provided expression (for example, SQL).</p>
298    pub fn set_expression_type(mut self, input: ::std::option::Option<crate::types::ExpressionType>) -> Self {
299        self.inner = self.inner.set_expression_type(input);
300        self
301    }
302    /// <p>The type of the provided expression (for example, SQL).</p>
303    pub fn get_expression_type(&self) -> &::std::option::Option<crate::types::ExpressionType> {
304        self.inner.get_expression_type()
305    }
306    /// <p>Specifies if periodic request progress information should be enabled.</p>
307    pub fn request_progress(mut self, input: crate::types::RequestProgress) -> Self {
308        self.inner = self.inner.request_progress(input);
309        self
310    }
311    /// <p>Specifies if periodic request progress information should be enabled.</p>
312    pub fn set_request_progress(mut self, input: ::std::option::Option<crate::types::RequestProgress>) -> Self {
313        self.inner = self.inner.set_request_progress(input);
314        self
315    }
316    /// <p>Specifies if periodic request progress information should be enabled.</p>
317    pub fn get_request_progress(&self) -> &::std::option::Option<crate::types::RequestProgress> {
318        self.inner.get_request_progress()
319    }
320    /// <p>Describes the format of the data in the object that is being queried.</p>
321    pub fn input_serialization(mut self, input: crate::types::InputSerialization) -> Self {
322        self.inner = self.inner.input_serialization(input);
323        self
324    }
325    /// <p>Describes the format of the data in the object that is being queried.</p>
326    pub fn set_input_serialization(mut self, input: ::std::option::Option<crate::types::InputSerialization>) -> Self {
327        self.inner = self.inner.set_input_serialization(input);
328        self
329    }
330    /// <p>Describes the format of the data in the object that is being queried.</p>
331    pub fn get_input_serialization(&self) -> &::std::option::Option<crate::types::InputSerialization> {
332        self.inner.get_input_serialization()
333    }
334    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
335    pub fn output_serialization(mut self, input: crate::types::OutputSerialization) -> Self {
336        self.inner = self.inner.output_serialization(input);
337        self
338    }
339    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
340    pub fn set_output_serialization(mut self, input: ::std::option::Option<crate::types::OutputSerialization>) -> Self {
341        self.inner = self.inner.set_output_serialization(input);
342        self
343    }
344    /// <p>Describes the format of the data that you want Amazon S3 to return in response.</p>
345    pub fn get_output_serialization(&self) -> &::std::option::Option<crate::types::OutputSerialization> {
346        self.inner.get_output_serialization()
347    }
348    /// <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>
349    /// <p><code>ScanRange</code>may be used in the following ways:</p>
350    /// <ul>
351    /// <li>
352    /// <p><code><scanrange>
353    /// <start>
354    /// 50
355    /// </start>
356    /// <end>
357    /// 100
358    /// </end>
359    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
360    /// <li>
361    /// <p><code><scanrange>
362    /// <start>
363    /// 50
364    /// </start>
365    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
366    /// <li>
367    /// <p><code><scanrange>
368    /// <end>
369    /// 50
370    /// </end>
371    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
372    /// </ul>
373    pub fn scan_range(mut self, input: crate::types::ScanRange) -> Self {
374        self.inner = self.inner.scan_range(input);
375        self
376    }
377    /// <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>
378    /// <p><code>ScanRange</code>may be used in the following ways:</p>
379    /// <ul>
380    /// <li>
381    /// <p><code><scanrange>
382    /// <start>
383    /// 50
384    /// </start>
385    /// <end>
386    /// 100
387    /// </end>
388    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
389    /// <li>
390    /// <p><code><scanrange>
391    /// <start>
392    /// 50
393    /// </start>
394    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
395    /// <li>
396    /// <p><code><scanrange>
397    /// <end>
398    /// 50
399    /// </end>
400    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
401    /// </ul>
402    pub fn set_scan_range(mut self, input: ::std::option::Option<crate::types::ScanRange>) -> Self {
403        self.inner = self.inner.set_scan_range(input);
404        self
405    }
406    /// <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>
407    /// <p><code>ScanRange</code>may be used in the following ways:</p>
408    /// <ul>
409    /// <li>
410    /// <p><code><scanrange>
411    /// <start>
412    /// 50
413    /// </start>
414    /// <end>
415    /// 100
416    /// </end>
417    /// </scanrange></code> - process only the records starting between the bytes 50 and 100 (inclusive, counting from zero)</p></li>
418    /// <li>
419    /// <p><code><scanrange>
420    /// <start>
421    /// 50
422    /// </start>
423    /// </scanrange></code> - process only the records starting after the byte 50</p></li>
424    /// <li>
425    /// <p><code><scanrange>
426    /// <end>
427    /// 50
428    /// </end>
429    /// </scanrange></code> - process only the records within the last 50 bytes of the file.</p></li>
430    /// </ul>
431    pub fn get_scan_range(&self) -> &::std::option::Option<crate::types::ScanRange> {
432        self.inner.get_scan_range()
433    }
434    /// <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>
435    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
436        self.inner = self.inner.expected_bucket_owner(input.into());
437        self
438    }
439    /// <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>
440    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
441        self.inner = self.inner.set_expected_bucket_owner(input);
442        self
443    }
444    /// <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>
445    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
446        self.inner.get_expected_bucket_owner()
447    }
448}