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}