aws_sdk_opensearch/operation/create_domain/
_create_domain_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateDomainInput {
6    /// <p>Name of the OpenSearch Service domain to create. Domain names are unique across the domains owned by an account within an Amazon Web Services Region.</p>
7    pub domain_name: ::std::option::Option<::std::string::String>,
8    /// <p>String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, <code>OpenSearch_1.0</code> or <code>Elasticsearch_7.9</code>. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains">Creating and managing Amazon OpenSearch Service domains</a>.</p>
9    pub engine_version: ::std::option::Option<::std::string::String>,
10    /// <p>Container for the cluster configuration of a domain.</p>
11    pub cluster_config: ::std::option::Option<crate::types::ClusterConfig>,
12    /// <p>Container for the parameters required to enable EBS-based storage for an OpenSearch Service domain.</p>
13    pub ebs_options: ::std::option::Option<crate::types::EbsOptions>,
14    /// <p>Identity and Access Management (IAM) policy document specifying the access policies for the new domain.</p>
15    pub access_policies: ::std::option::Option<::std::string::String>,
16    /// <p>Specify either dual stack or IPv4 as your IP address type. Dual stack allows you to share domain resources across IPv4 and IPv6 address types, and is the recommended option. If you set your IP address type to dual stack, you can't change your address type later.</p>
17    pub ip_address_type: ::std::option::Option<crate::types::IpAddressType>,
18    /// <p>DEPRECATED. Container for the parameters required to configure automated snapshots of domain indexes.</p>
19    pub snapshot_options: ::std::option::Option<crate::types::SnapshotOptions>,
20    /// <p>Container for the values required to configure VPC access domains. If you don't specify these values, OpenSearch Service creates the domain with a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html">Launching your Amazon OpenSearch Service domains using a VPC</a>.</p>
21    pub vpc_options: ::std::option::Option<crate::types::VpcOptions>,
22    /// <p>Key-value pairs to configure Amazon Cognito authentication. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html">Configuring Amazon Cognito authentication for OpenSearch Dashboards</a>.</p>
23    pub cognito_options: ::std::option::Option<crate::types::CognitoOptions>,
24    /// <p>Key-value pairs to enable encryption at rest.</p>
25    pub encryption_at_rest_options: ::std::option::Option<crate::types::EncryptionAtRestOptions>,
26    /// <p>Enables node-to-node encryption.</p>
27    pub node_to_node_encryption_options: ::std::option::Option<crate::types::NodeToNodeEncryptionOptions>,
28    /// <p>Key-value pairs to specify advanced configuration options. The following key-value pairs are supported:</p>
29    /// <ul>
30    /// <li>
31    /// <p><code>"rest.action.multi.allow_explicit_index": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether explicit references to indexes are allowed inside the body of HTTP requests. If you want to configure access policies for domain sub-resources, such as specific indexes and domain APIs, you must disable this property. Default is true.</p></li>
32    /// <li>
33    /// <p><code>"indices.fielddata.cache.size": "80" </code> - Note the use of a string rather than a boolean. Specifies the percentage of heap space allocated to field data. Default is unbounded.</p></li>
34    /// <li>
35    /// <p><code>"indices.query.bool.max_clause_count": "1024"</code> - Note the use of a string rather than a boolean. Specifies the maximum number of clauses allowed in a Lucene boolean query. Default is 1,024. Queries with more than the permitted number of clauses result in a <code>TooManyClauses</code> error.</p></li>
36    /// <li>
37    /// <p><code>"override_main_response_version": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether the domain reports its version as 7.10 to allow Elasticsearch OSS clients and plugins to continue working with it. Default is false when creating a domain and true when upgrading a domain.</p></li>
38    /// </ul>
39    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options">Advanced cluster parameters</a>.</p>
40    pub advanced_options: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
41    /// <p>Key-value pairs to configure log publishing.</p>
42    pub log_publishing_options: ::std::option::Option<::std::collections::HashMap<crate::types::LogType, crate::types::LogPublishingOption>>,
43    /// <p>Additional options for the domain endpoint, such as whether to require HTTPS for all traffic.</p>
44    pub domain_endpoint_options: ::std::option::Option<crate::types::DomainEndpointOptions>,
45    /// <p>Options for fine-grained access control.</p>
46    pub advanced_security_options: ::std::option::Option<crate::types::AdvancedSecurityOptionsInput>,
47    /// <p>Configuration options for enabling and managing IAM Identity Center integration within a domain.</p>
48    pub identity_center_options: ::std::option::Option<crate::types::IdentityCenterOptionsInput>,
49    /// <p>List of tags to add to the domain upon creation.</p>
50    pub tag_list: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
51    /// <p>Options for Auto-Tune.</p>
52    pub auto_tune_options: ::std::option::Option<crate::types::AutoTuneOptionsInput>,
53    /// <p>Specifies a daily 10-hour time block during which OpenSearch Service can perform configuration changes on the domain, including service software updates and Auto-Tune enhancements that require a blue/green deployment. If no options are specified, the default start time of 10:00 P.M. local time (for the Region that the domain is created in) is used.</p>
54    pub off_peak_window_options: ::std::option::Option<crate::types::OffPeakWindowOptions>,
55    /// <p>Software update options for the domain.</p>
56    pub software_update_options: ::std::option::Option<crate::types::SoftwareUpdateOptions>,
57    /// <p>Options for all machine learning features for the specified domain.</p>
58    pub aiml_options: ::std::option::Option<crate::types::AimlOptionsInput>,
59}
60impl CreateDomainInput {
61    /// <p>Name of the OpenSearch Service domain to create. Domain names are unique across the domains owned by an account within an Amazon Web Services Region.</p>
62    pub fn domain_name(&self) -> ::std::option::Option<&str> {
63        self.domain_name.as_deref()
64    }
65    /// <p>String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, <code>OpenSearch_1.0</code> or <code>Elasticsearch_7.9</code>. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains">Creating and managing Amazon OpenSearch Service domains</a>.</p>
66    pub fn engine_version(&self) -> ::std::option::Option<&str> {
67        self.engine_version.as_deref()
68    }
69    /// <p>Container for the cluster configuration of a domain.</p>
70    pub fn cluster_config(&self) -> ::std::option::Option<&crate::types::ClusterConfig> {
71        self.cluster_config.as_ref()
72    }
73    /// <p>Container for the parameters required to enable EBS-based storage for an OpenSearch Service domain.</p>
74    pub fn ebs_options(&self) -> ::std::option::Option<&crate::types::EbsOptions> {
75        self.ebs_options.as_ref()
76    }
77    /// <p>Identity and Access Management (IAM) policy document specifying the access policies for the new domain.</p>
78    pub fn access_policies(&self) -> ::std::option::Option<&str> {
79        self.access_policies.as_deref()
80    }
81    /// <p>Specify either dual stack or IPv4 as your IP address type. Dual stack allows you to share domain resources across IPv4 and IPv6 address types, and is the recommended option. If you set your IP address type to dual stack, you can't change your address type later.</p>
82    pub fn ip_address_type(&self) -> ::std::option::Option<&crate::types::IpAddressType> {
83        self.ip_address_type.as_ref()
84    }
85    /// <p>DEPRECATED. Container for the parameters required to configure automated snapshots of domain indexes.</p>
86    pub fn snapshot_options(&self) -> ::std::option::Option<&crate::types::SnapshotOptions> {
87        self.snapshot_options.as_ref()
88    }
89    /// <p>Container for the values required to configure VPC access domains. If you don't specify these values, OpenSearch Service creates the domain with a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html">Launching your Amazon OpenSearch Service domains using a VPC</a>.</p>
90    pub fn vpc_options(&self) -> ::std::option::Option<&crate::types::VpcOptions> {
91        self.vpc_options.as_ref()
92    }
93    /// <p>Key-value pairs to configure Amazon Cognito authentication. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html">Configuring Amazon Cognito authentication for OpenSearch Dashboards</a>.</p>
94    pub fn cognito_options(&self) -> ::std::option::Option<&crate::types::CognitoOptions> {
95        self.cognito_options.as_ref()
96    }
97    /// <p>Key-value pairs to enable encryption at rest.</p>
98    pub fn encryption_at_rest_options(&self) -> ::std::option::Option<&crate::types::EncryptionAtRestOptions> {
99        self.encryption_at_rest_options.as_ref()
100    }
101    /// <p>Enables node-to-node encryption.</p>
102    pub fn node_to_node_encryption_options(&self) -> ::std::option::Option<&crate::types::NodeToNodeEncryptionOptions> {
103        self.node_to_node_encryption_options.as_ref()
104    }
105    /// <p>Key-value pairs to specify advanced configuration options. The following key-value pairs are supported:</p>
106    /// <ul>
107    /// <li>
108    /// <p><code>"rest.action.multi.allow_explicit_index": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether explicit references to indexes are allowed inside the body of HTTP requests. If you want to configure access policies for domain sub-resources, such as specific indexes and domain APIs, you must disable this property. Default is true.</p></li>
109    /// <li>
110    /// <p><code>"indices.fielddata.cache.size": "80" </code> - Note the use of a string rather than a boolean. Specifies the percentage of heap space allocated to field data. Default is unbounded.</p></li>
111    /// <li>
112    /// <p><code>"indices.query.bool.max_clause_count": "1024"</code> - Note the use of a string rather than a boolean. Specifies the maximum number of clauses allowed in a Lucene boolean query. Default is 1,024. Queries with more than the permitted number of clauses result in a <code>TooManyClauses</code> error.</p></li>
113    /// <li>
114    /// <p><code>"override_main_response_version": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether the domain reports its version as 7.10 to allow Elasticsearch OSS clients and plugins to continue working with it. Default is false when creating a domain and true when upgrading a domain.</p></li>
115    /// </ul>
116    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options">Advanced cluster parameters</a>.</p>
117    pub fn advanced_options(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
118        self.advanced_options.as_ref()
119    }
120    /// <p>Key-value pairs to configure log publishing.</p>
121    pub fn log_publishing_options(
122        &self,
123    ) -> ::std::option::Option<&::std::collections::HashMap<crate::types::LogType, crate::types::LogPublishingOption>> {
124        self.log_publishing_options.as_ref()
125    }
126    /// <p>Additional options for the domain endpoint, such as whether to require HTTPS for all traffic.</p>
127    pub fn domain_endpoint_options(&self) -> ::std::option::Option<&crate::types::DomainEndpointOptions> {
128        self.domain_endpoint_options.as_ref()
129    }
130    /// <p>Options for fine-grained access control.</p>
131    pub fn advanced_security_options(&self) -> ::std::option::Option<&crate::types::AdvancedSecurityOptionsInput> {
132        self.advanced_security_options.as_ref()
133    }
134    /// <p>Configuration options for enabling and managing IAM Identity Center integration within a domain.</p>
135    pub fn identity_center_options(&self) -> ::std::option::Option<&crate::types::IdentityCenterOptionsInput> {
136        self.identity_center_options.as_ref()
137    }
138    /// <p>List of tags to add to the domain upon creation.</p>
139    ///
140    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tag_list.is_none()`.
141    pub fn tag_list(&self) -> &[crate::types::Tag] {
142        self.tag_list.as_deref().unwrap_or_default()
143    }
144    /// <p>Options for Auto-Tune.</p>
145    pub fn auto_tune_options(&self) -> ::std::option::Option<&crate::types::AutoTuneOptionsInput> {
146        self.auto_tune_options.as_ref()
147    }
148    /// <p>Specifies a daily 10-hour time block during which OpenSearch Service can perform configuration changes on the domain, including service software updates and Auto-Tune enhancements that require a blue/green deployment. If no options are specified, the default start time of 10:00 P.M. local time (for the Region that the domain is created in) is used.</p>
149    pub fn off_peak_window_options(&self) -> ::std::option::Option<&crate::types::OffPeakWindowOptions> {
150        self.off_peak_window_options.as_ref()
151    }
152    /// <p>Software update options for the domain.</p>
153    pub fn software_update_options(&self) -> ::std::option::Option<&crate::types::SoftwareUpdateOptions> {
154        self.software_update_options.as_ref()
155    }
156    /// <p>Options for all machine learning features for the specified domain.</p>
157    pub fn aiml_options(&self) -> ::std::option::Option<&crate::types::AimlOptionsInput> {
158        self.aiml_options.as_ref()
159    }
160}
161impl CreateDomainInput {
162    /// Creates a new builder-style object to manufacture [`CreateDomainInput`](crate::operation::create_domain::CreateDomainInput).
163    pub fn builder() -> crate::operation::create_domain::builders::CreateDomainInputBuilder {
164        crate::operation::create_domain::builders::CreateDomainInputBuilder::default()
165    }
166}
167
168/// A builder for [`CreateDomainInput`](crate::operation::create_domain::CreateDomainInput).
169#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
170#[non_exhaustive]
171pub struct CreateDomainInputBuilder {
172    pub(crate) domain_name: ::std::option::Option<::std::string::String>,
173    pub(crate) engine_version: ::std::option::Option<::std::string::String>,
174    pub(crate) cluster_config: ::std::option::Option<crate::types::ClusterConfig>,
175    pub(crate) ebs_options: ::std::option::Option<crate::types::EbsOptions>,
176    pub(crate) access_policies: ::std::option::Option<::std::string::String>,
177    pub(crate) ip_address_type: ::std::option::Option<crate::types::IpAddressType>,
178    pub(crate) snapshot_options: ::std::option::Option<crate::types::SnapshotOptions>,
179    pub(crate) vpc_options: ::std::option::Option<crate::types::VpcOptions>,
180    pub(crate) cognito_options: ::std::option::Option<crate::types::CognitoOptions>,
181    pub(crate) encryption_at_rest_options: ::std::option::Option<crate::types::EncryptionAtRestOptions>,
182    pub(crate) node_to_node_encryption_options: ::std::option::Option<crate::types::NodeToNodeEncryptionOptions>,
183    pub(crate) advanced_options: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
184    pub(crate) log_publishing_options: ::std::option::Option<::std::collections::HashMap<crate::types::LogType, crate::types::LogPublishingOption>>,
185    pub(crate) domain_endpoint_options: ::std::option::Option<crate::types::DomainEndpointOptions>,
186    pub(crate) advanced_security_options: ::std::option::Option<crate::types::AdvancedSecurityOptionsInput>,
187    pub(crate) identity_center_options: ::std::option::Option<crate::types::IdentityCenterOptionsInput>,
188    pub(crate) tag_list: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
189    pub(crate) auto_tune_options: ::std::option::Option<crate::types::AutoTuneOptionsInput>,
190    pub(crate) off_peak_window_options: ::std::option::Option<crate::types::OffPeakWindowOptions>,
191    pub(crate) software_update_options: ::std::option::Option<crate::types::SoftwareUpdateOptions>,
192    pub(crate) aiml_options: ::std::option::Option<crate::types::AimlOptionsInput>,
193}
194impl CreateDomainInputBuilder {
195    /// <p>Name of the OpenSearch Service domain to create. Domain names are unique across the domains owned by an account within an Amazon Web Services Region.</p>
196    /// This field is required.
197    pub fn domain_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
198        self.domain_name = ::std::option::Option::Some(input.into());
199        self
200    }
201    /// <p>Name of the OpenSearch Service domain to create. Domain names are unique across the domains owned by an account within an Amazon Web Services Region.</p>
202    pub fn set_domain_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
203        self.domain_name = input;
204        self
205    }
206    /// <p>Name of the OpenSearch Service domain to create. Domain names are unique across the domains owned by an account within an Amazon Web Services Region.</p>
207    pub fn get_domain_name(&self) -> &::std::option::Option<::std::string::String> {
208        &self.domain_name
209    }
210    /// <p>String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, <code>OpenSearch_1.0</code> or <code>Elasticsearch_7.9</code>. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains">Creating and managing Amazon OpenSearch Service domains</a>.</p>
211    pub fn engine_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
212        self.engine_version = ::std::option::Option::Some(input.into());
213        self
214    }
215    /// <p>String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, <code>OpenSearch_1.0</code> or <code>Elasticsearch_7.9</code>. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains">Creating and managing Amazon OpenSearch Service domains</a>.</p>
216    pub fn set_engine_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
217        self.engine_version = input;
218        self
219    }
220    /// <p>String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, <code>OpenSearch_1.0</code> or <code>Elasticsearch_7.9</code>. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains">Creating and managing Amazon OpenSearch Service domains</a>.</p>
221    pub fn get_engine_version(&self) -> &::std::option::Option<::std::string::String> {
222        &self.engine_version
223    }
224    /// <p>Container for the cluster configuration of a domain.</p>
225    pub fn cluster_config(mut self, input: crate::types::ClusterConfig) -> Self {
226        self.cluster_config = ::std::option::Option::Some(input);
227        self
228    }
229    /// <p>Container for the cluster configuration of a domain.</p>
230    pub fn set_cluster_config(mut self, input: ::std::option::Option<crate::types::ClusterConfig>) -> Self {
231        self.cluster_config = input;
232        self
233    }
234    /// <p>Container for the cluster configuration of a domain.</p>
235    pub fn get_cluster_config(&self) -> &::std::option::Option<crate::types::ClusterConfig> {
236        &self.cluster_config
237    }
238    /// <p>Container for the parameters required to enable EBS-based storage for an OpenSearch Service domain.</p>
239    pub fn ebs_options(mut self, input: crate::types::EbsOptions) -> Self {
240        self.ebs_options = ::std::option::Option::Some(input);
241        self
242    }
243    /// <p>Container for the parameters required to enable EBS-based storage for an OpenSearch Service domain.</p>
244    pub fn set_ebs_options(mut self, input: ::std::option::Option<crate::types::EbsOptions>) -> Self {
245        self.ebs_options = input;
246        self
247    }
248    /// <p>Container for the parameters required to enable EBS-based storage for an OpenSearch Service domain.</p>
249    pub fn get_ebs_options(&self) -> &::std::option::Option<crate::types::EbsOptions> {
250        &self.ebs_options
251    }
252    /// <p>Identity and Access Management (IAM) policy document specifying the access policies for the new domain.</p>
253    pub fn access_policies(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
254        self.access_policies = ::std::option::Option::Some(input.into());
255        self
256    }
257    /// <p>Identity and Access Management (IAM) policy document specifying the access policies for the new domain.</p>
258    pub fn set_access_policies(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
259        self.access_policies = input;
260        self
261    }
262    /// <p>Identity and Access Management (IAM) policy document specifying the access policies for the new domain.</p>
263    pub fn get_access_policies(&self) -> &::std::option::Option<::std::string::String> {
264        &self.access_policies
265    }
266    /// <p>Specify either dual stack or IPv4 as your IP address type. Dual stack allows you to share domain resources across IPv4 and IPv6 address types, and is the recommended option. If you set your IP address type to dual stack, you can't change your address type later.</p>
267    pub fn ip_address_type(mut self, input: crate::types::IpAddressType) -> Self {
268        self.ip_address_type = ::std::option::Option::Some(input);
269        self
270    }
271    /// <p>Specify either dual stack or IPv4 as your IP address type. Dual stack allows you to share domain resources across IPv4 and IPv6 address types, and is the recommended option. If you set your IP address type to dual stack, you can't change your address type later.</p>
272    pub fn set_ip_address_type(mut self, input: ::std::option::Option<crate::types::IpAddressType>) -> Self {
273        self.ip_address_type = input;
274        self
275    }
276    /// <p>Specify either dual stack or IPv4 as your IP address type. Dual stack allows you to share domain resources across IPv4 and IPv6 address types, and is the recommended option. If you set your IP address type to dual stack, you can't change your address type later.</p>
277    pub fn get_ip_address_type(&self) -> &::std::option::Option<crate::types::IpAddressType> {
278        &self.ip_address_type
279    }
280    /// <p>DEPRECATED. Container for the parameters required to configure automated snapshots of domain indexes.</p>
281    pub fn snapshot_options(mut self, input: crate::types::SnapshotOptions) -> Self {
282        self.snapshot_options = ::std::option::Option::Some(input);
283        self
284    }
285    /// <p>DEPRECATED. Container for the parameters required to configure automated snapshots of domain indexes.</p>
286    pub fn set_snapshot_options(mut self, input: ::std::option::Option<crate::types::SnapshotOptions>) -> Self {
287        self.snapshot_options = input;
288        self
289    }
290    /// <p>DEPRECATED. Container for the parameters required to configure automated snapshots of domain indexes.</p>
291    pub fn get_snapshot_options(&self) -> &::std::option::Option<crate::types::SnapshotOptions> {
292        &self.snapshot_options
293    }
294    /// <p>Container for the values required to configure VPC access domains. If you don't specify these values, OpenSearch Service creates the domain with a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html">Launching your Amazon OpenSearch Service domains using a VPC</a>.</p>
295    pub fn vpc_options(mut self, input: crate::types::VpcOptions) -> Self {
296        self.vpc_options = ::std::option::Option::Some(input);
297        self
298    }
299    /// <p>Container for the values required to configure VPC access domains. If you don't specify these values, OpenSearch Service creates the domain with a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html">Launching your Amazon OpenSearch Service domains using a VPC</a>.</p>
300    pub fn set_vpc_options(mut self, input: ::std::option::Option<crate::types::VpcOptions>) -> Self {
301        self.vpc_options = input;
302        self
303    }
304    /// <p>Container for the values required to configure VPC access domains. If you don't specify these values, OpenSearch Service creates the domain with a public endpoint. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html">Launching your Amazon OpenSearch Service domains using a VPC</a>.</p>
305    pub fn get_vpc_options(&self) -> &::std::option::Option<crate::types::VpcOptions> {
306        &self.vpc_options
307    }
308    /// <p>Key-value pairs to configure Amazon Cognito authentication. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html">Configuring Amazon Cognito authentication for OpenSearch Dashboards</a>.</p>
309    pub fn cognito_options(mut self, input: crate::types::CognitoOptions) -> Self {
310        self.cognito_options = ::std::option::Option::Some(input);
311        self
312    }
313    /// <p>Key-value pairs to configure Amazon Cognito authentication. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html">Configuring Amazon Cognito authentication for OpenSearch Dashboards</a>.</p>
314    pub fn set_cognito_options(mut self, input: ::std::option::Option<crate::types::CognitoOptions>) -> Self {
315        self.cognito_options = input;
316        self
317    }
318    /// <p>Key-value pairs to configure Amazon Cognito authentication. For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/cognito-auth.html">Configuring Amazon Cognito authentication for OpenSearch Dashboards</a>.</p>
319    pub fn get_cognito_options(&self) -> &::std::option::Option<crate::types::CognitoOptions> {
320        &self.cognito_options
321    }
322    /// <p>Key-value pairs to enable encryption at rest.</p>
323    pub fn encryption_at_rest_options(mut self, input: crate::types::EncryptionAtRestOptions) -> Self {
324        self.encryption_at_rest_options = ::std::option::Option::Some(input);
325        self
326    }
327    /// <p>Key-value pairs to enable encryption at rest.</p>
328    pub fn set_encryption_at_rest_options(mut self, input: ::std::option::Option<crate::types::EncryptionAtRestOptions>) -> Self {
329        self.encryption_at_rest_options = input;
330        self
331    }
332    /// <p>Key-value pairs to enable encryption at rest.</p>
333    pub fn get_encryption_at_rest_options(&self) -> &::std::option::Option<crate::types::EncryptionAtRestOptions> {
334        &self.encryption_at_rest_options
335    }
336    /// <p>Enables node-to-node encryption.</p>
337    pub fn node_to_node_encryption_options(mut self, input: crate::types::NodeToNodeEncryptionOptions) -> Self {
338        self.node_to_node_encryption_options = ::std::option::Option::Some(input);
339        self
340    }
341    /// <p>Enables node-to-node encryption.</p>
342    pub fn set_node_to_node_encryption_options(mut self, input: ::std::option::Option<crate::types::NodeToNodeEncryptionOptions>) -> Self {
343        self.node_to_node_encryption_options = input;
344        self
345    }
346    /// <p>Enables node-to-node encryption.</p>
347    pub fn get_node_to_node_encryption_options(&self) -> &::std::option::Option<crate::types::NodeToNodeEncryptionOptions> {
348        &self.node_to_node_encryption_options
349    }
350    /// Adds a key-value pair to `advanced_options`.
351    ///
352    /// To override the contents of this collection use [`set_advanced_options`](Self::set_advanced_options).
353    ///
354    /// <p>Key-value pairs to specify advanced configuration options. The following key-value pairs are supported:</p>
355    /// <ul>
356    /// <li>
357    /// <p><code>"rest.action.multi.allow_explicit_index": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether explicit references to indexes are allowed inside the body of HTTP requests. If you want to configure access policies for domain sub-resources, such as specific indexes and domain APIs, you must disable this property. Default is true.</p></li>
358    /// <li>
359    /// <p><code>"indices.fielddata.cache.size": "80" </code> - Note the use of a string rather than a boolean. Specifies the percentage of heap space allocated to field data. Default is unbounded.</p></li>
360    /// <li>
361    /// <p><code>"indices.query.bool.max_clause_count": "1024"</code> - Note the use of a string rather than a boolean. Specifies the maximum number of clauses allowed in a Lucene boolean query. Default is 1,024. Queries with more than the permitted number of clauses result in a <code>TooManyClauses</code> error.</p></li>
362    /// <li>
363    /// <p><code>"override_main_response_version": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether the domain reports its version as 7.10 to allow Elasticsearch OSS clients and plugins to continue working with it. Default is false when creating a domain and true when upgrading a domain.</p></li>
364    /// </ul>
365    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options">Advanced cluster parameters</a>.</p>
366    pub fn advanced_options(
367        mut self,
368        k: impl ::std::convert::Into<::std::string::String>,
369        v: impl ::std::convert::Into<::std::string::String>,
370    ) -> Self {
371        let mut hash_map = self.advanced_options.unwrap_or_default();
372        hash_map.insert(k.into(), v.into());
373        self.advanced_options = ::std::option::Option::Some(hash_map);
374        self
375    }
376    /// <p>Key-value pairs to specify advanced configuration options. The following key-value pairs are supported:</p>
377    /// <ul>
378    /// <li>
379    /// <p><code>"rest.action.multi.allow_explicit_index": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether explicit references to indexes are allowed inside the body of HTTP requests. If you want to configure access policies for domain sub-resources, such as specific indexes and domain APIs, you must disable this property. Default is true.</p></li>
380    /// <li>
381    /// <p><code>"indices.fielddata.cache.size": "80" </code> - Note the use of a string rather than a boolean. Specifies the percentage of heap space allocated to field data. Default is unbounded.</p></li>
382    /// <li>
383    /// <p><code>"indices.query.bool.max_clause_count": "1024"</code> - Note the use of a string rather than a boolean. Specifies the maximum number of clauses allowed in a Lucene boolean query. Default is 1,024. Queries with more than the permitted number of clauses result in a <code>TooManyClauses</code> error.</p></li>
384    /// <li>
385    /// <p><code>"override_main_response_version": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether the domain reports its version as 7.10 to allow Elasticsearch OSS clients and plugins to continue working with it. Default is false when creating a domain and true when upgrading a domain.</p></li>
386    /// </ul>
387    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options">Advanced cluster parameters</a>.</p>
388    pub fn set_advanced_options(
389        mut self,
390        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
391    ) -> Self {
392        self.advanced_options = input;
393        self
394    }
395    /// <p>Key-value pairs to specify advanced configuration options. The following key-value pairs are supported:</p>
396    /// <ul>
397    /// <li>
398    /// <p><code>"rest.action.multi.allow_explicit_index": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether explicit references to indexes are allowed inside the body of HTTP requests. If you want to configure access policies for domain sub-resources, such as specific indexes and domain APIs, you must disable this property. Default is true.</p></li>
399    /// <li>
400    /// <p><code>"indices.fielddata.cache.size": "80" </code> - Note the use of a string rather than a boolean. Specifies the percentage of heap space allocated to field data. Default is unbounded.</p></li>
401    /// <li>
402    /// <p><code>"indices.query.bool.max_clause_count": "1024"</code> - Note the use of a string rather than a boolean. Specifies the maximum number of clauses allowed in a Lucene boolean query. Default is 1,024. Queries with more than the permitted number of clauses result in a <code>TooManyClauses</code> error.</p></li>
403    /// <li>
404    /// <p><code>"override_main_response_version": "true" | "false"</code> - Note the use of a string rather than a boolean. Specifies whether the domain reports its version as 7.10 to allow Elasticsearch OSS clients and plugins to continue working with it. Default is false when creating a domain and true when upgrading a domain.</p></li>
405    /// </ul>
406    /// <p>For more information, see <a href="https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomain-configure-advanced-options">Advanced cluster parameters</a>.</p>
407    pub fn get_advanced_options(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
408        &self.advanced_options
409    }
410    /// Adds a key-value pair to `log_publishing_options`.
411    ///
412    /// To override the contents of this collection use [`set_log_publishing_options`](Self::set_log_publishing_options).
413    ///
414    /// <p>Key-value pairs to configure log publishing.</p>
415    pub fn log_publishing_options(mut self, k: crate::types::LogType, v: crate::types::LogPublishingOption) -> Self {
416        let mut hash_map = self.log_publishing_options.unwrap_or_default();
417        hash_map.insert(k, v);
418        self.log_publishing_options = ::std::option::Option::Some(hash_map);
419        self
420    }
421    /// <p>Key-value pairs to configure log publishing.</p>
422    pub fn set_log_publishing_options(
423        mut self,
424        input: ::std::option::Option<::std::collections::HashMap<crate::types::LogType, crate::types::LogPublishingOption>>,
425    ) -> Self {
426        self.log_publishing_options = input;
427        self
428    }
429    /// <p>Key-value pairs to configure log publishing.</p>
430    pub fn get_log_publishing_options(
431        &self,
432    ) -> &::std::option::Option<::std::collections::HashMap<crate::types::LogType, crate::types::LogPublishingOption>> {
433        &self.log_publishing_options
434    }
435    /// <p>Additional options for the domain endpoint, such as whether to require HTTPS for all traffic.</p>
436    pub fn domain_endpoint_options(mut self, input: crate::types::DomainEndpointOptions) -> Self {
437        self.domain_endpoint_options = ::std::option::Option::Some(input);
438        self
439    }
440    /// <p>Additional options for the domain endpoint, such as whether to require HTTPS for all traffic.</p>
441    pub fn set_domain_endpoint_options(mut self, input: ::std::option::Option<crate::types::DomainEndpointOptions>) -> Self {
442        self.domain_endpoint_options = input;
443        self
444    }
445    /// <p>Additional options for the domain endpoint, such as whether to require HTTPS for all traffic.</p>
446    pub fn get_domain_endpoint_options(&self) -> &::std::option::Option<crate::types::DomainEndpointOptions> {
447        &self.domain_endpoint_options
448    }
449    /// <p>Options for fine-grained access control.</p>
450    pub fn advanced_security_options(mut self, input: crate::types::AdvancedSecurityOptionsInput) -> Self {
451        self.advanced_security_options = ::std::option::Option::Some(input);
452        self
453    }
454    /// <p>Options for fine-grained access control.</p>
455    pub fn set_advanced_security_options(mut self, input: ::std::option::Option<crate::types::AdvancedSecurityOptionsInput>) -> Self {
456        self.advanced_security_options = input;
457        self
458    }
459    /// <p>Options for fine-grained access control.</p>
460    pub fn get_advanced_security_options(&self) -> &::std::option::Option<crate::types::AdvancedSecurityOptionsInput> {
461        &self.advanced_security_options
462    }
463    /// <p>Configuration options for enabling and managing IAM Identity Center integration within a domain.</p>
464    pub fn identity_center_options(mut self, input: crate::types::IdentityCenterOptionsInput) -> Self {
465        self.identity_center_options = ::std::option::Option::Some(input);
466        self
467    }
468    /// <p>Configuration options for enabling and managing IAM Identity Center integration within a domain.</p>
469    pub fn set_identity_center_options(mut self, input: ::std::option::Option<crate::types::IdentityCenterOptionsInput>) -> Self {
470        self.identity_center_options = input;
471        self
472    }
473    /// <p>Configuration options for enabling and managing IAM Identity Center integration within a domain.</p>
474    pub fn get_identity_center_options(&self) -> &::std::option::Option<crate::types::IdentityCenterOptionsInput> {
475        &self.identity_center_options
476    }
477    /// Appends an item to `tag_list`.
478    ///
479    /// To override the contents of this collection use [`set_tag_list`](Self::set_tag_list).
480    ///
481    /// <p>List of tags to add to the domain upon creation.</p>
482    pub fn tag_list(mut self, input: crate::types::Tag) -> Self {
483        let mut v = self.tag_list.unwrap_or_default();
484        v.push(input);
485        self.tag_list = ::std::option::Option::Some(v);
486        self
487    }
488    /// <p>List of tags to add to the domain upon creation.</p>
489    pub fn set_tag_list(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
490        self.tag_list = input;
491        self
492    }
493    /// <p>List of tags to add to the domain upon creation.</p>
494    pub fn get_tag_list(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
495        &self.tag_list
496    }
497    /// <p>Options for Auto-Tune.</p>
498    pub fn auto_tune_options(mut self, input: crate::types::AutoTuneOptionsInput) -> Self {
499        self.auto_tune_options = ::std::option::Option::Some(input);
500        self
501    }
502    /// <p>Options for Auto-Tune.</p>
503    pub fn set_auto_tune_options(mut self, input: ::std::option::Option<crate::types::AutoTuneOptionsInput>) -> Self {
504        self.auto_tune_options = input;
505        self
506    }
507    /// <p>Options for Auto-Tune.</p>
508    pub fn get_auto_tune_options(&self) -> &::std::option::Option<crate::types::AutoTuneOptionsInput> {
509        &self.auto_tune_options
510    }
511    /// <p>Specifies a daily 10-hour time block during which OpenSearch Service can perform configuration changes on the domain, including service software updates and Auto-Tune enhancements that require a blue/green deployment. If no options are specified, the default start time of 10:00 P.M. local time (for the Region that the domain is created in) is used.</p>
512    pub fn off_peak_window_options(mut self, input: crate::types::OffPeakWindowOptions) -> Self {
513        self.off_peak_window_options = ::std::option::Option::Some(input);
514        self
515    }
516    /// <p>Specifies a daily 10-hour time block during which OpenSearch Service can perform configuration changes on the domain, including service software updates and Auto-Tune enhancements that require a blue/green deployment. If no options are specified, the default start time of 10:00 P.M. local time (for the Region that the domain is created in) is used.</p>
517    pub fn set_off_peak_window_options(mut self, input: ::std::option::Option<crate::types::OffPeakWindowOptions>) -> Self {
518        self.off_peak_window_options = input;
519        self
520    }
521    /// <p>Specifies a daily 10-hour time block during which OpenSearch Service can perform configuration changes on the domain, including service software updates and Auto-Tune enhancements that require a blue/green deployment. If no options are specified, the default start time of 10:00 P.M. local time (for the Region that the domain is created in) is used.</p>
522    pub fn get_off_peak_window_options(&self) -> &::std::option::Option<crate::types::OffPeakWindowOptions> {
523        &self.off_peak_window_options
524    }
525    /// <p>Software update options for the domain.</p>
526    pub fn software_update_options(mut self, input: crate::types::SoftwareUpdateOptions) -> Self {
527        self.software_update_options = ::std::option::Option::Some(input);
528        self
529    }
530    /// <p>Software update options for the domain.</p>
531    pub fn set_software_update_options(mut self, input: ::std::option::Option<crate::types::SoftwareUpdateOptions>) -> Self {
532        self.software_update_options = input;
533        self
534    }
535    /// <p>Software update options for the domain.</p>
536    pub fn get_software_update_options(&self) -> &::std::option::Option<crate::types::SoftwareUpdateOptions> {
537        &self.software_update_options
538    }
539    /// <p>Options for all machine learning features for the specified domain.</p>
540    pub fn aiml_options(mut self, input: crate::types::AimlOptionsInput) -> Self {
541        self.aiml_options = ::std::option::Option::Some(input);
542        self
543    }
544    /// <p>Options for all machine learning features for the specified domain.</p>
545    pub fn set_aiml_options(mut self, input: ::std::option::Option<crate::types::AimlOptionsInput>) -> Self {
546        self.aiml_options = input;
547        self
548    }
549    /// <p>Options for all machine learning features for the specified domain.</p>
550    pub fn get_aiml_options(&self) -> &::std::option::Option<crate::types::AimlOptionsInput> {
551        &self.aiml_options
552    }
553    /// Consumes the builder and constructs a [`CreateDomainInput`](crate::operation::create_domain::CreateDomainInput).
554    pub fn build(
555        self,
556    ) -> ::std::result::Result<crate::operation::create_domain::CreateDomainInput, ::aws_smithy_types::error::operation::BuildError> {
557        ::std::result::Result::Ok(crate::operation::create_domain::CreateDomainInput {
558            domain_name: self.domain_name,
559            engine_version: self.engine_version,
560            cluster_config: self.cluster_config,
561            ebs_options: self.ebs_options,
562            access_policies: self.access_policies,
563            ip_address_type: self.ip_address_type,
564            snapshot_options: self.snapshot_options,
565            vpc_options: self.vpc_options,
566            cognito_options: self.cognito_options,
567            encryption_at_rest_options: self.encryption_at_rest_options,
568            node_to_node_encryption_options: self.node_to_node_encryption_options,
569            advanced_options: self.advanced_options,
570            log_publishing_options: self.log_publishing_options,
571            domain_endpoint_options: self.domain_endpoint_options,
572            advanced_security_options: self.advanced_security_options,
573            identity_center_options: self.identity_center_options,
574            tag_list: self.tag_list,
575            auto_tune_options: self.auto_tune_options,
576            off_peak_window_options: self.off_peak_window_options,
577            software_update_options: self.software_update_options,
578            aiml_options: self.aiml_options,
579        })
580    }
581}