aws_sdk_kendra/operation/create_access_control_configuration/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_access_control_configuration::_create_access_control_configuration_output::CreateAccessControlConfigurationOutputBuilder;
3
4pub use crate::operation::create_access_control_configuration::_create_access_control_configuration_input::CreateAccessControlConfigurationInputBuilder;
5
6impl crate::operation::create_access_control_configuration::builders::CreateAccessControlConfigurationInputBuilder {
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::create_access_control_configuration::CreateAccessControlConfigurationOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_access_control_configuration::CreateAccessControlConfigurationError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_access_control_configuration();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateAccessControlConfiguration`.
24///
25/// <p>Creates an access configuration for your documents. 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 use this to re-configure your existing document level access control without indexing all of your documents again. For example, your index contains top-secret company documents that only certain employees or users should access. One of these users leaves the company or switches to a team that should be blocked from accessing top-secret documents. The user still has access to top-secret documents because the user had access when your documents were previously indexed. You can create a specific access control configuration for the user with deny access. You can later update the access control configuration to allow access if the user returns to the company and re-joins the 'top-secret' team. You can re-configure access control for your documents as circumstances change.</p>
27/// <p>To apply your access control configuration to certain documents, you call the <a href="https://docs.aws.amazon.com/kendra/latest/dg/API_BatchPutDocument.html">BatchPutDocument</a> API 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 update the <code>.metadata.json</code> with the <code>AccessControlConfigurationId</code> and synchronize your data source. 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 CreateAccessControlConfigurationFluentBuilder {
32    handle: ::std::sync::Arc<crate::client::Handle>,
33    inner: crate::operation::create_access_control_configuration::builders::CreateAccessControlConfigurationInputBuilder,
34    config_override: ::std::option::Option<crate::config::Builder>,
35}
36impl
37    crate::client::customize::internal::CustomizableSend<
38        crate::operation::create_access_control_configuration::CreateAccessControlConfigurationOutput,
39        crate::operation::create_access_control_configuration::CreateAccessControlConfigurationError,
40    > for CreateAccessControlConfigurationFluentBuilder
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::create_access_control_configuration::CreateAccessControlConfigurationOutput,
48            crate::operation::create_access_control_configuration::CreateAccessControlConfigurationError,
49        >,
50    > {
51        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
52    }
53}
54impl CreateAccessControlConfigurationFluentBuilder {
55    /// Creates a new `CreateAccessControlConfigurationFluentBuilder`.
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 CreateAccessControlConfiguration as a reference.
64    pub fn as_input(&self) -> &crate::operation::create_access_control_configuration::builders::CreateAccessControlConfigurationInputBuilder {
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::create_access_control_configuration::CreateAccessControlConfigurationOutput,
79        ::aws_smithy_runtime_api::client::result::SdkError<
80            crate::operation::create_access_control_configuration::CreateAccessControlConfigurationError,
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::create_access_control_configuration::CreateAccessControlConfiguration::operation_runtime_plugins(
89            self.handle.runtime_plugins.clone(),
90            &self.handle.conf,
91            self.config_override,
92        );
93        crate::operation::create_access_control_configuration::CreateAccessControlConfiguration::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::create_access_control_configuration::CreateAccessControlConfigurationOutput,
101        crate::operation::create_access_control_configuration::CreateAccessControlConfigurationError,
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 to create an access control configuration for your documents.</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 to create an access control configuration for your documents.</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 to create an access control configuration for your documents.</p>
126    pub fn get_index_id(&self) -> &::std::option::Option<::std::string::String> {
127        self.inner.get_index_id()
128    }
129    /// <p>A name for the access control configuration.</p>
130    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
131        self.inner = self.inner.name(input.into());
132        self
133    }
134    /// <p>A name for the access control configuration.</p>
135    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
136        self.inner = self.inner.set_name(input);
137        self
138    }
139    /// <p>A name for the access control configuration.</p>
140    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
141        self.inner.get_name()
142    }
143    /// <p>A description for the access control configuration.</p>
144    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
145        self.inner = self.inner.description(input.into());
146        self
147    }
148    /// <p>A description for the access control configuration.</p>
149    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
150        self.inner = self.inner.set_description(input);
151        self
152    }
153    /// <p>A description for the access control configuration.</p>
154    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
155        self.inner.get_description()
156    }
157    ///
158    /// Appends an item to `AccessControlList`.
159    ///
160    /// To override the contents of this collection use [`set_access_control_list`](Self::set_access_control_list).
161    ///
162    /// <p>Information 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>
163    pub fn access_control_list(mut self, input: crate::types::Principal) -> Self {
164        self.inner = self.inner.access_control_list(input);
165        self
166    }
167    /// <p>Information 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>
168    pub fn set_access_control_list(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Principal>>) -> Self {
169        self.inner = self.inner.set_access_control_list(input);
170        self
171    }
172    /// <p>Information 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>
173    pub fn get_access_control_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Principal>> {
174        self.inner.get_access_control_list()
175    }
176    ///
177    /// Appends an item to `HierarchicalAccessControlList`.
178    ///
179    /// To override the contents of this collection use [`set_hierarchical_access_control_list`](Self::set_hierarchical_access_control_list).
180    ///
181    /// <p>The 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>
182    pub fn hierarchical_access_control_list(mut self, input: crate::types::HierarchicalPrincipal) -> Self {
183        self.inner = self.inner.hierarchical_access_control_list(input);
184        self
185    }
186    /// <p>The 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>
187    pub fn set_hierarchical_access_control_list(
188        mut self,
189        input: ::std::option::Option<::std::vec::Vec<crate::types::HierarchicalPrincipal>>,
190    ) -> Self {
191        self.inner = self.inner.set_hierarchical_access_control_list(input);
192        self
193    }
194    /// <p>The 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>
195    pub fn get_hierarchical_access_control_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::HierarchicalPrincipal>> {
196        self.inner.get_hierarchical_access_control_list()
197    }
198    /// <p>A token that you provide to identify the request to create an access control configuration. Multiple calls to the <code>CreateAccessControlConfiguration</code> API with the same client token will create only one access control configuration.</p>
199    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
200        self.inner = self.inner.client_token(input.into());
201        self
202    }
203    /// <p>A token that you provide to identify the request to create an access control configuration. Multiple calls to the <code>CreateAccessControlConfiguration</code> API with the same client token will create only one access control configuration.</p>
204    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
205        self.inner = self.inner.set_client_token(input);
206        self
207    }
208    /// <p>A token that you provide to identify the request to create an access control configuration. Multiple calls to the <code>CreateAccessControlConfiguration</code> API with the same client token will create only one access control configuration.</p>
209    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
210        self.inner.get_client_token()
211    }
212}