aws_sdk_kendra/operation/update_access_control_configuration/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::update_access_control_configuration::_update_access_control_configuration_output::UpdateAccessControlConfigurationOutputBuilder;
3
4pub use crate::operation::update_access_control_configuration::_update_access_control_configuration_input::UpdateAccessControlConfigurationInputBuilder;
5
6impl crate::operation::update_access_control_configuration::builders::UpdateAccessControlConfigurationInputBuilder {
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::update_access_control_configuration::UpdateAccessControlConfigurationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.update_access_control_configuration();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `UpdateAccessControlConfiguration`.
24///
25/// <p>Updates an access control configuration for your documents in an index. This includes user and group access information for your documents. This is useful for user context filtering, where search results are filtered based on the user or their group access to documents.</p>
26/// <p>You can update an access control configuration you created without indexing all of your documents again. For example, your index contains top-secret company documents that only certain employees or users should access. You created an 'allow' access control configuration for one user who recently joined the 'top-secret' team, switching from a team with 'deny' access to top-secret documents. However, the user suddenly returns to their previous team and should no longer have access to top secret documents. You can update the access control configuration to re-configure access control for your documents as circumstances change.</p>
27/// <p>You call the <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_BatchPutDocument.html">BatchPutDocument</a> API to apply the updated access control configuration, with the <code>AccessControlConfigurationId</code> included in the <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_Document.html">Document</a> object. If you use an S3 bucket as a data source, you synchronize your data source to apply the <code>AccessControlConfigurationId</code> in the <code>.metadata.json</code> file. Amazon Kendra currently only supports access control configuration for S3 data sources and documents indexed using the <code>BatchPutDocument</code> API.</p><important>
28/// <p>You can't configure access control using <code>CreateAccessControlConfiguration</code> for an Amazon Kendra Gen AI Enterprise Edition index. Amazon Kendra will return a <code>ValidationException</code> error for a <code>Gen_AI_ENTERPRISE_EDITION</code> index.</p>
29/// </important>
30#[derive(::std::clone::Clone, ::std::fmt::Debug)]
31pub struct UpdateAccessControlConfigurationFluentBuilder {
32    handle: ::std::sync::Arc<crate::client::Handle>,
33    inner: crate::operation::update_access_control_configuration::builders::UpdateAccessControlConfigurationInputBuilder,
34    config_override: ::std::option::Option<crate::config::Builder>,
35}
36impl
37    crate::client::customize::internal::CustomizableSend<
38        crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationOutput,
39        crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationError,
40    > for UpdateAccessControlConfigurationFluentBuilder
41{
42    fn send(
43        self,
44        config_override: crate::config::Builder,
45    ) -> crate::client::customize::internal::BoxFuture<
46        crate::client::customize::internal::SendResult<
47            crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationOutput,
48            crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationError,
49        >,
50    > {
51        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
52    }
53}
54impl UpdateAccessControlConfigurationFluentBuilder {
55    /// Creates a new `UpdateAccessControlConfigurationFluentBuilder`.
56    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
57        Self {
58            handle,
59            inner: ::std::default::Default::default(),
60            config_override: ::std::option::Option::None,
61        }
62    }
63    /// Access the UpdateAccessControlConfiguration as a reference.
64    pub fn as_input(&self) -> &crate::operation::update_access_control_configuration::builders::UpdateAccessControlConfigurationInputBuilder {
65        &self.inner
66    }
67    /// Sends the request and returns the response.
68    ///
69    /// If an error occurs, an `SdkError` will be returned with additional details that
70    /// can be matched against.
71    ///
72    /// By default, any retryable failures will be retried twice. Retry behavior
73    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
74    /// set when configuring the client.
75    pub async fn send(
76        self,
77    ) -> ::std::result::Result<
78        crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationOutput,
79        ::aws_smithy_runtime_api::client::result::SdkError<
80            crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationError,
81            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
82        >,
83    > {
84        let input = self
85            .inner
86            .build()
87            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
88        let runtime_plugins = crate::operation::update_access_control_configuration::UpdateAccessControlConfiguration::operation_runtime_plugins(
89            self.handle.runtime_plugins.clone(),
90            &self.handle.conf,
91            self.config_override,
92        );
93        crate::operation::update_access_control_configuration::UpdateAccessControlConfiguration::orchestrate(&runtime_plugins, input).await
94    }
95
96    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
97    pub fn customize(
98        self,
99    ) -> crate::client::customize::CustomizableOperation<
100        crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationOutput,
101        crate::operation::update_access_control_configuration::UpdateAccessControlConfigurationError,
102        Self,
103    > {
104        crate::client::customize::CustomizableOperation::new(self)
105    }
106    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
107        self.set_config_override(::std::option::Option::Some(config_override.into()));
108        self
109    }
110
111    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
112        self.config_override = config_override;
113        self
114    }
115    /// <p>The identifier of the index for an access control configuration.</p>
116    pub fn index_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
117        self.inner = self.inner.index_id(input.into());
118        self
119    }
120    /// <p>The identifier of the index for an access control configuration.</p>
121    pub fn set_index_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
122        self.inner = self.inner.set_index_id(input);
123        self
124    }
125    /// <p>The identifier of the index for an access control configuration.</p>
126    pub fn get_index_id(&self) -> &::std::option::Option<::std::string::String> {
127        self.inner.get_index_id()
128    }
129    /// <p>The identifier of the access control configuration you want to update.</p>
130    pub fn id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
131        self.inner = self.inner.id(input.into());
132        self
133    }
134    /// <p>The identifier of the access control configuration you want to update.</p>
135    pub fn set_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
136        self.inner = self.inner.set_id(input);
137        self
138    }
139    /// <p>The identifier of the access control configuration you want to update.</p>
140    pub fn get_id(&self) -> &::std::option::Option<::std::string::String> {
141        self.inner.get_id()
142    }
143    /// <p>A new name for the access control configuration.</p>
144    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
145        self.inner = self.inner.name(input.into());
146        self
147    }
148    /// <p>A new name for the access control configuration.</p>
149    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
150        self.inner = self.inner.set_name(input);
151        self
152    }
153    /// <p>A new name for the access control configuration.</p>
154    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
155        self.inner.get_name()
156    }
157    /// <p>A new description for the access control configuration.</p>
158    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
159        self.inner = self.inner.description(input.into());
160        self
161    }
162    /// <p>A new description for the access control configuration.</p>
163    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
164        self.inner = self.inner.set_description(input);
165        self
166    }
167    /// <p>A new description for the access control configuration.</p>
168    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
169        self.inner.get_description()
170    }
171    ///
172    /// Appends an item to `AccessControlList`.
173    ///
174    /// To override the contents of this collection use [`set_access_control_list`](Self::set_access_control_list).
175    ///
176    /// <p>Information you want to update on principals (users and/or groups) and which documents they should have access to. This is useful for user context filtering, where search results are filtered based on the user or their group access to documents.</p>
177    pub fn access_control_list(mut self, input: crate::types::Principal) -> Self {
178        self.inner = self.inner.access_control_list(input);
179        self
180    }
181    /// <p>Information you want to update on principals (users and/or groups) and which documents they should have access to. This is useful for user context filtering, where search results are filtered based on the user or their group access to documents.</p>
182    pub fn set_access_control_list(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Principal>>) -> Self {
183        self.inner = self.inner.set_access_control_list(input);
184        self
185    }
186    /// <p>Information you want to update on principals (users and/or groups) and which documents they should have access to. This is useful for user context filtering, where search results are filtered based on the user or their group access to documents.</p>
187    pub fn get_access_control_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Principal>> {
188        self.inner.get_access_control_list()
189    }
190    ///
191    /// Appends an item to `HierarchicalAccessControlList`.
192    ///
193    /// To override the contents of this collection use [`set_hierarchical_access_control_list`](Self::set_hierarchical_access_control_list).
194    ///
195    /// <p>The updated list of <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_Principal.html">principal</a> lists that define the hierarchy for which documents users should have access to.</p>
196    pub fn hierarchical_access_control_list(mut self, input: crate::types::HierarchicalPrincipal) -> Self {
197        self.inner = self.inner.hierarchical_access_control_list(input);
198        self
199    }
200    /// <p>The updated list of <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_Principal.html">principal</a> lists that define the hierarchy for which documents users should have access to.</p>
201    pub fn set_hierarchical_access_control_list(
202        mut self,
203        input: ::std::option::Option<::std::vec::Vec<crate::types::HierarchicalPrincipal>>,
204    ) -> Self {
205        self.inner = self.inner.set_hierarchical_access_control_list(input);
206        self
207    }
208    /// <p>The updated list of <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_Principal.html">principal</a> lists that define the hierarchy for which documents users should have access to.</p>
209    pub fn get_hierarchical_access_control_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::HierarchicalPrincipal>> {
210        self.inner.get_hierarchical_access_control_list()
211    }
212}