aws_sdk_s3/operation/put_bucket_inventory_configuration/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::put_bucket_inventory_configuration::_put_bucket_inventory_configuration_output::PutBucketInventoryConfigurationOutputBuilder;
3
4pub use crate::operation::put_bucket_inventory_configuration::_put_bucket_inventory_configuration_input::PutBucketInventoryConfigurationInputBuilder;
5
6impl crate::operation::put_bucket_inventory_configuration::builders::PutBucketInventoryConfigurationInputBuilder {
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::put_bucket_inventory_configuration::PutBucketInventoryConfigurationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.put_bucket_inventory_configuration();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `PutBucketInventoryConfiguration`.
24///
25/// <note>
26/// <p>This operation is not supported for directory buckets.</p>
27/// </note>
28/// <p>This implementation of the <code>PUT</code> action adds an inventory configuration (identified by the inventory ID) to the bucket. You can have up to 1,000 inventory configurations per bucket.</p>
29/// <p>Amazon S3 inventory generates inventories of the objects in the bucket on a daily or weekly basis, and the results are published to a flat file. The bucket that is inventoried is called the <i>source</i> bucket, and the bucket where the inventory flat file is stored is called the <i>destination</i> bucket. The <i>destination</i> bucket must be in the same Amazon Web Services Region as the <i>source</i> bucket.</p>
30/// <p>When you configure an inventory for a <i>source</i> bucket, you specify the <i>destination</i> bucket where you want the inventory to be stored, and whether to generate the inventory daily or weekly. You can also configure what object metadata to include and whether to inventory all object versions or only current versions. For more information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html">Amazon S3 Inventory</a> in the Amazon S3 User Guide.</p><important>
31/// <p>You must create a bucket policy on the <i>destination</i> bucket to grant permissions to Amazon S3 to write objects to the bucket in the defined location. For an example policy, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9"> Granting Permissions for Amazon S3 Inventory and Storage Class Analysis</a>.</p>
32/// </important>
33/// <dl>
34/// <dt>
35/// Permissions
36/// </dt>
37/// <dd>
38/// <p>To use this operation, you must have permission to perform the <code>s3:PutInventoryConfiguration</code> action. The bucket owner has this permission by default and can grant this permission to others.</p>
39/// <p>The <code>s3:PutInventoryConfiguration</code> permission allows a user to create an <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html">S3 Inventory</a> report that includes all object metadata fields available and to specify the destination bucket to store the inventory. A user with read access to objects in the destination bucket can also access all object metadata fields that are available in the inventory report.</p>
40/// <p>To restrict access to an inventory report, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-use-case-10">Restricting access to an Amazon S3 Inventory report</a> in the <i>Amazon S3 User Guide</i>. For more information about the metadata fields available in S3 Inventory, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html#storage-inventory-contents">Amazon S3 Inventory lists</a> in the <i>Amazon S3 User Guide</i>. For more information about permissions, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources">Permissions related to bucket subresource operations</a> and <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html">Identity and access management in Amazon S3</a> in the <i>Amazon S3 User Guide</i>.</p>
41/// </dd>
42/// </dl>
43/// <p><code>PutBucketInventoryConfiguration</code> has the following special errors:</p>
44/// <dl>
45/// <dt>
46/// HTTP 400 Bad Request Error
47/// </dt>
48/// <dd>
49/// <p><i>Code:</i> InvalidArgument</p>
50/// <p><i>Cause:</i> Invalid Argument</p>
51/// </dd>
52/// <dt>
53/// HTTP 400 Bad Request Error
54/// </dt>
55/// <dd>
56/// <p><i>Code:</i> TooManyConfigurations</p>
57/// <p><i>Cause:</i> You are attempting to create a new configuration but have already reached the 1,000-configuration limit.</p>
58/// </dd>
59/// <dt>
60/// HTTP 403 Forbidden Error
61/// </dt>
62/// <dd>
63/// <p><i>Cause:</i> You are not the owner of the specified bucket, or you do not have the <code>s3:PutInventoryConfiguration</code> bucket permission to set the configuration on the bucket.</p>
64/// </dd>
65/// </dl>
66/// <p>The following operations are related to <code>PutBucketInventoryConfiguration</code>:</p>
67/// <ul>
68/// <li>
69/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html">GetBucketInventoryConfiguration</a></p></li>
70/// <li>
71/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html">DeleteBucketInventoryConfiguration</a></p></li>
72/// <li>
73/// <p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html">ListBucketInventoryConfigurations</a></p></li>
74/// </ul>
75#[derive(::std::clone::Clone, ::std::fmt::Debug)]
76pub struct PutBucketInventoryConfigurationFluentBuilder {
77    handle: ::std::sync::Arc<crate::client::Handle>,
78    inner: crate::operation::put_bucket_inventory_configuration::builders::PutBucketInventoryConfigurationInputBuilder,
79    config_override: ::std::option::Option<crate::config::Builder>,
80}
81impl
82    crate::client::customize::internal::CustomizableSend<
83        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationOutput,
84        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationError,
85    > for PutBucketInventoryConfigurationFluentBuilder
86{
87    fn send(
88        self,
89        config_override: crate::config::Builder,
90    ) -> crate::client::customize::internal::BoxFuture<
91        crate::client::customize::internal::SendResult<
92            crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationOutput,
93            crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationError,
94        >,
95    > {
96        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
97    }
98}
99impl PutBucketInventoryConfigurationFluentBuilder {
100    /// Creates a new `PutBucketInventoryConfigurationFluentBuilder`.
101    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
102        Self {
103            handle,
104            inner: ::std::default::Default::default(),
105            config_override: ::std::option::Option::None,
106        }
107    }
108    /// Access the PutBucketInventoryConfiguration as a reference.
109    pub fn as_input(&self) -> &crate::operation::put_bucket_inventory_configuration::builders::PutBucketInventoryConfigurationInputBuilder {
110        &self.inner
111    }
112    /// Sends the request and returns the response.
113    ///
114    /// If an error occurs, an `SdkError` will be returned with additional details that
115    /// can be matched against.
116    ///
117    /// By default, any retryable failures will be retried twice. Retry behavior
118    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
119    /// set when configuring the client.
120    pub async fn send(
121        self,
122    ) -> ::std::result::Result<
123        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationOutput,
124        ::aws_smithy_runtime_api::client::result::SdkError<
125            crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationError,
126            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
127        >,
128    > {
129        let input = self
130            .inner
131            .build()
132            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
133        let runtime_plugins = crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfiguration::operation_runtime_plugins(
134            self.handle.runtime_plugins.clone(),
135            &self.handle.conf,
136            self.config_override,
137        );
138        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfiguration::orchestrate(&runtime_plugins, input).await
139    }
140
141    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
142    pub fn customize(
143        self,
144    ) -> crate::client::customize::CustomizableOperation<
145        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationOutput,
146        crate::operation::put_bucket_inventory_configuration::PutBucketInventoryConfigurationError,
147        Self,
148    > {
149        crate::client::customize::CustomizableOperation::new(self)
150    }
151    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
152        self.set_config_override(::std::option::Option::Some(config_override.into()));
153        self
154    }
155
156    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
157        self.config_override = config_override;
158        self
159    }
160    /// <p>The name of the bucket where the inventory configuration will be stored.</p>
161    pub fn bucket(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
162        self.inner = self.inner.bucket(input.into());
163        self
164    }
165    /// <p>The name of the bucket where the inventory configuration will be stored.</p>
166    pub fn set_bucket(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
167        self.inner = self.inner.set_bucket(input);
168        self
169    }
170    /// <p>The name of the bucket where the inventory configuration will be stored.</p>
171    pub fn get_bucket(&self) -> &::std::option::Option<::std::string::String> {
172        self.inner.get_bucket()
173    }
174    /// <p>The ID used to identify the inventory configuration.</p>
175    pub fn id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
176        self.inner = self.inner.id(input.into());
177        self
178    }
179    /// <p>The ID used to identify the inventory configuration.</p>
180    pub fn set_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
181        self.inner = self.inner.set_id(input);
182        self
183    }
184    /// <p>The ID used to identify the inventory configuration.</p>
185    pub fn get_id(&self) -> &::std::option::Option<::std::string::String> {
186        self.inner.get_id()
187    }
188    /// <p>Specifies the inventory configuration.</p>
189    pub fn inventory_configuration(mut self, input: crate::types::InventoryConfiguration) -> Self {
190        self.inner = self.inner.inventory_configuration(input);
191        self
192    }
193    /// <p>Specifies the inventory configuration.</p>
194    pub fn set_inventory_configuration(mut self, input: ::std::option::Option<crate::types::InventoryConfiguration>) -> Self {
195        self.inner = self.inner.set_inventory_configuration(input);
196        self
197    }
198    /// <p>Specifies the inventory configuration.</p>
199    pub fn get_inventory_configuration(&self) -> &::std::option::Option<crate::types::InventoryConfiguration> {
200        self.inner.get_inventory_configuration()
201    }
202    /// <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>
203    pub fn expected_bucket_owner(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
204        self.inner = self.inner.expected_bucket_owner(input.into());
205        self
206    }
207    /// <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>
208    pub fn set_expected_bucket_owner(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
209        self.inner = self.inner.set_expected_bucket_owner(input);
210        self
211    }
212    /// <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>
213    pub fn get_expected_bucket_owner(&self) -> &::std::option::Option<::std::string::String> {
214        self.inner.get_expected_bucket_owner()
215    }
216}