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