aws_sdk_kms/operation/connect_custom_key_store/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::connect_custom_key_store::_connect_custom_key_store_output::ConnectCustomKeyStoreOutputBuilder;
3
4pub use crate::operation::connect_custom_key_store::_connect_custom_key_store_input::ConnectCustomKeyStoreInputBuilder;
5
6impl crate::operation::connect_custom_key_store::builders::ConnectCustomKeyStoreInputBuilder {
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::connect_custom_key_store::ConnectCustomKeyStoreOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.connect_custom_key_store();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `ConnectCustomKeyStore`.
24///
25/// <p>Connects or reconnects a <a href="https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html">custom key store</a> to its backing key store. For an CloudHSM key store, <code>ConnectCustomKeyStore</code> connects the key store to its associated CloudHSM cluster. For an external key store, <code>ConnectCustomKeyStore</code> connects the key store to the external key store proxy that communicates with your external key manager.</p>
26/// <p>The custom key store must be connected before you can create KMS keys in the key store or use the KMS keys it contains. You can disconnect and reconnect a custom key store at any time.</p>
27/// <p>The connection process for a custom key store can take an extended amount of time to complete. This operation starts the connection process, but it does not wait for it to complete. When it succeeds, this operation quickly returns an HTTP 200 response and a JSON object with no properties. However, this response does not indicate that the custom key store is connected. To get the connection state of the custom key store, use the <code>DescribeCustomKeyStores</code> operation.</p>
28/// <p>This operation is part of the <a href="https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html">custom key stores</a> feature in KMS, which combines the convenience and extensive integration of KMS with the isolation and control of a key store that you own and manage.</p>
29/// <p>The <code>ConnectCustomKeyStore</code> operation might fail for various reasons. To find the reason, use the <code>DescribeCustomKeyStores</code> operation and see the <code>ConnectionErrorCode</code> in the response. For help interpreting the <code>ConnectionErrorCode</code>, see <code>CustomKeyStoresListEntry</code>.</p>
30/// <p>To fix the failure, use the <code>DisconnectCustomKeyStore</code> operation to disconnect the custom key store, correct the error, use the <code>UpdateCustomKeyStore</code> operation if necessary, and then use <code>ConnectCustomKeyStore</code> again.</p>
31/// <p><b>CloudHSM key store</b></p>
32/// <p>During the connection process for an CloudHSM key store, KMS finds the CloudHSM cluster that is associated with the custom key store, creates the connection infrastructure, connects to the cluster, logs into the CloudHSM client as the <code>kmsuser</code> CU, and rotates its password.</p>
33/// <p>To connect an CloudHSM key store, its associated CloudHSM cluster must have at least one active HSM. To get the number of active HSMs in a cluster, use the <a href="https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_DescribeClusters.html">DescribeClusters</a> operation. To add HSMs to the cluster, use the <a href="https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateHsm.html">CreateHsm</a> operation. Also, the <a href="https://docs.aws.amazon.com/kms/latest/developerguide/key-store-concepts.html#concept-kmsuser"> <code>kmsuser</code> crypto user</a> (CU) must not be logged into the cluster. This prevents KMS from using this account to log in.</p>
34/// <p>If you are having trouble connecting or disconnecting a CloudHSM key store, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html">Troubleshooting an CloudHSM key store</a> in the <i>Key Management Service Developer Guide</i>.</p>
35/// <p><b>External key store</b></p>
36/// <p>When you connect an external key store that uses public endpoint connectivity, KMS tests its ability to communicate with your external key manager by sending a request via the external key store proxy.</p>
37/// <p>When you connect to an external key store that uses VPC endpoint service connectivity, KMS establishes the networking elements that it needs to communicate with your external key manager via the external key store proxy. This includes creating an interface endpoint to the VPC endpoint service and a private hosted zone for traffic between KMS and the VPC endpoint service.</p>
38/// <p>To connect an external key store, KMS must be able to connect to the external key store proxy, the external key store proxy must be able to communicate with your external key manager, and the external key manager must be available for cryptographic operations.</p>
39/// <p>If you are having trouble connecting or disconnecting an external key store, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/xks-troubleshooting.html">Troubleshooting an external key store</a> in the <i>Key Management Service Developer Guide</i>.</p>
40/// <p><b>Cross-account use</b>: No. You cannot perform this operation on a custom key store in a different Amazon Web Services account.</p>
41/// <p><b>Required permissions</b>: <a href="https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html">kms:ConnectCustomKeyStore</a> (IAM policy)</p>
42/// <p><b>Related operations</b></p>
43/// <ul>
44/// <li>
45/// <p><code>CreateCustomKeyStore</code></p></li>
46/// <li>
47/// <p><code>DeleteCustomKeyStore</code></p></li>
48/// <li>
49/// <p><code>DescribeCustomKeyStores</code></p></li>
50/// <li>
51/// <p><code>DisconnectCustomKeyStore</code></p></li>
52/// <li>
53/// <p><code>UpdateCustomKeyStore</code></p></li>
54/// </ul>
55/// <p><b>Eventual consistency</b>: The KMS API follows an eventual consistency model. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html">KMS eventual consistency</a>.</p>
56#[derive(::std::clone::Clone, ::std::fmt::Debug)]
57pub struct ConnectCustomKeyStoreFluentBuilder {
58 handle: ::std::sync::Arc<crate::client::Handle>,
59 inner: crate::operation::connect_custom_key_store::builders::ConnectCustomKeyStoreInputBuilder,
60 config_override: ::std::option::Option<crate::config::Builder>,
61}
62impl
63 crate::client::customize::internal::CustomizableSend<
64 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput,
65 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
66 > for ConnectCustomKeyStoreFluentBuilder
67{
68 fn send(
69 self,
70 config_override: crate::config::Builder,
71 ) -> crate::client::customize::internal::BoxFuture<
72 crate::client::customize::internal::SendResult<
73 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput,
74 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
75 >,
76 > {
77 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
78 }
79}
80impl ConnectCustomKeyStoreFluentBuilder {
81 /// Creates a new `ConnectCustomKeyStoreFluentBuilder`.
82 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
83 Self {
84 handle,
85 inner: ::std::default::Default::default(),
86 config_override: ::std::option::Option::None,
87 }
88 }
89 /// Access the ConnectCustomKeyStore as a reference.
90 pub fn as_input(&self) -> &crate::operation::connect_custom_key_store::builders::ConnectCustomKeyStoreInputBuilder {
91 &self.inner
92 }
93 /// Sends the request and returns the response.
94 ///
95 /// If an error occurs, an `SdkError` will be returned with additional details that
96 /// can be matched against.
97 ///
98 /// By default, any retryable failures will be retried twice. Retry behavior
99 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
100 /// set when configuring the client.
101 pub async fn send(
102 self,
103 ) -> ::std::result::Result<
104 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput,
105 ::aws_smithy_runtime_api::client::result::SdkError<
106 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
107 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
108 >,
109 > {
110 let input = self
111 .inner
112 .build()
113 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
114 let runtime_plugins = crate::operation::connect_custom_key_store::ConnectCustomKeyStore::operation_runtime_plugins(
115 self.handle.runtime_plugins.clone(),
116 &self.handle.conf,
117 self.config_override,
118 );
119 crate::operation::connect_custom_key_store::ConnectCustomKeyStore::orchestrate(&runtime_plugins, input).await
120 }
121
122 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
123 pub fn customize(
124 self,
125 ) -> crate::client::customize::CustomizableOperation<
126 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput,
127 crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
128 Self,
129 > {
130 crate::client::customize::CustomizableOperation::new(self)
131 }
132 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
133 self.set_config_override(::std::option::Option::Some(config_override.into()));
134 self
135 }
136
137 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
138 self.config_override = config_override;
139 self
140 }
141 /// <p>Enter the key store ID of the custom key store that you want to connect. To find the ID of a custom key store, use the <code>DescribeCustomKeyStores</code> operation.</p>
142 pub fn custom_key_store_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
143 self.inner = self.inner.custom_key_store_id(input.into());
144 self
145 }
146 /// <p>Enter the key store ID of the custom key store that you want to connect. To find the ID of a custom key store, use the <code>DescribeCustomKeyStores</code> operation.</p>
147 pub fn set_custom_key_store_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
148 self.inner = self.inner.set_custom_key_store_id(input);
149 self
150 }
151 /// <p>Enter the key store ID of the custom key store that you want to connect. To find the ID of a custom key store, use the <code>DescribeCustomKeyStores</code> operation.</p>
152 pub fn get_custom_key_store_id(&self) -> &::std::option::Option<::std::string::String> {
153 self.inner.get_custom_key_store_id()
154 }
155}