aws_sdk_kms/operation/
connect_custom_key_store.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `ConnectCustomKeyStore`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct ConnectCustomKeyStore;
6impl ConnectCustomKeyStore {
7    /// Creates a new `ConnectCustomKeyStore`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::connect_custom_key_store::ConnectCustomKeyStoreInput,
14    ) -> ::std::result::Result<
15        crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::connect_custom_key_store::ConnectCustomKeyStoreOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::connect_custom_key_store::ConnectCustomKeyStoreInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("KMS", "ConnectCustomKeyStore", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "KMS.ConnectCustomKeyStore",
59                "rpc.service" = "KMS",
60                "rpc.method" = "ConnectCustomKeyStore",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_runtime::auth::sigv4::SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ConnectCustomKeyStore {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("ConnectCustomKeyStore");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            ConnectCustomKeyStoreRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            ConnectCustomKeyStoreResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
105            "ConnectCustomKeyStore",
106            "KMS",
107        ));
108        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
109        signing_options.double_uri_encode = true;
110        signing_options.content_sha256_header = false;
111        signing_options.normalize_uri_path = true;
112        signing_options.payload_override = None;
113
114        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
115            signing_options,
116            ..::std::default::Default::default()
117        });
118
119        ::std::option::Option::Some(cfg.freeze())
120    }
121
122    fn runtime_components(
123        &self,
124        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
125    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
126        #[allow(unused_mut)]
127        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("ConnectCustomKeyStore")
128            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
129            .with_interceptor(ConnectCustomKeyStoreEndpointParamsInterceptor)
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
131                crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
132            >::new())
133            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
134                crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
135            >::new())
136            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
137                crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError,
138            >::new());
139
140        ::std::borrow::Cow::Owned(rcb)
141    }
142}
143
144#[derive(Debug)]
145struct ConnectCustomKeyStoreResponseDeserializer;
146impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for ConnectCustomKeyStoreResponseDeserializer {
147    fn deserialize_nonstreaming(
148        &self,
149        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
150    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
151        let (success, status) = (response.status().is_success(), response.status().as_u16());
152        let headers = response.headers();
153        let body = response.body().bytes().expect("body loaded");
154        #[allow(unused_mut)]
155        let mut force_error = false;
156        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
157        let parse_result = if !success && status != 200 || force_error {
158            crate::protocol_serde::shape_connect_custom_key_store::de_connect_custom_key_store_http_error(status, headers, body)
159        } else {
160            crate::protocol_serde::shape_connect_custom_key_store::de_connect_custom_key_store_http_response(status, headers, body)
161        };
162        crate::protocol_serde::type_erase_result(parse_result)
163    }
164}
165#[derive(Debug)]
166struct ConnectCustomKeyStoreRequestSerializer;
167impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for ConnectCustomKeyStoreRequestSerializer {
168    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
169    fn serialize_input(
170        &self,
171        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
172        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
173    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
174        let input = input
175            .downcast::<crate::operation::connect_custom_key_store::ConnectCustomKeyStoreInput>()
176            .expect("correct type");
177        let _header_serialization_settings = _cfg
178            .load::<crate::serialization_settings::HeaderSerializationSettings>()
179            .cloned()
180            .unwrap_or_default();
181        let mut request_builder = {
182            fn uri_base(
183                _input: &crate::operation::connect_custom_key_store::ConnectCustomKeyStoreInput,
184                output: &mut ::std::string::String,
185            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
186                use ::std::fmt::Write as _;
187                ::std::write!(output, "/").expect("formatting should succeed");
188                ::std::result::Result::Ok(())
189            }
190            #[allow(clippy::unnecessary_wraps)]
191            fn update_http_builder(
192                input: &crate::operation::connect_custom_key_store::ConnectCustomKeyStoreInput,
193                builder: ::http::request::Builder,
194            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
195                let mut uri = ::std::string::String::new();
196                uri_base(input, &mut uri)?;
197                ::std::result::Result::Ok(builder.method("POST").uri(uri))
198            }
199            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
200            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
201            builder = _header_serialization_settings.set_default_header(
202                builder,
203                ::http::header::HeaderName::from_static("x-amz-target"),
204                "TrentService.ConnectCustomKeyStore",
205            );
206            builder
207        };
208        let body = ::aws_smithy_types::body::SdkBody::from(
209            crate::protocol_serde::shape_connect_custom_key_store::ser_connect_custom_key_store_input(&input)?,
210        );
211        if let Some(content_length) = body.content_length() {
212            let content_length = content_length.to_string();
213            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
214        }
215        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
216    }
217}
218#[derive(Debug)]
219struct ConnectCustomKeyStoreEndpointParamsInterceptor;
220
221impl ::aws_smithy_runtime_api::client::interceptors::Intercept for ConnectCustomKeyStoreEndpointParamsInterceptor {
222    fn name(&self) -> &'static str {
223        "ConnectCustomKeyStoreEndpointParamsInterceptor"
224    }
225
226    fn read_before_execution(
227        &self,
228        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
229            '_,
230            ::aws_smithy_runtime_api::client::interceptors::context::Input,
231            ::aws_smithy_runtime_api::client::interceptors::context::Output,
232            ::aws_smithy_runtime_api::client::interceptors::context::Error,
233        >,
234        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
235    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
236        let _input = context
237            .input()
238            .downcast_ref::<ConnectCustomKeyStoreInput>()
239            .ok_or("failed to downcast to ConnectCustomKeyStoreInput")?;
240
241        let params = crate::config::endpoint::Params::builder()
242            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
243            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
244            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
245            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
246            .build()
247            .map_err(|err| {
248                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
249            })?;
250        cfg.interceptor_state()
251            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
252        ::std::result::Result::Ok(())
253    }
254}
255
256// The get_* functions below are generated from JMESPath expressions in the
257// operationContextParams trait. They target the operation's input shape.
258
259/// Error type for the `ConnectCustomKeyStoreError` operation.
260#[non_exhaustive]
261#[derive(::std::fmt::Debug)]
262pub enum ConnectCustomKeyStoreError {
263    /// <p>The request was rejected because the associated CloudHSM cluster did not meet the configuration requirements for an CloudHSM key store.</p>
264    /// <ul>
265    /// <li>
266    /// <p>The CloudHSM cluster must be configured with private subnets in at least two different Availability Zones in the Region.</p></li>
267    /// <li>
268    /// <p>The <a href="https://docs.aws.amazon.com/cloudhsm/latest/userguide/configure-sg.html">security group for the cluster</a> (cloudhsm-cluster-<i><cluster-id></cluster-id></i>-sg) must include inbound rules and outbound rules that allow TCP traffic on ports 2223-2225. The <b>Source</b> in the inbound rules and the <b>Destination</b> in the outbound rules must match the security group ID. These rules are set by default when you create the CloudHSM cluster. Do not delete or change them. To get information about a particular security group, use the <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSecurityGroups.html">DescribeSecurityGroups</a> operation.</p></li>
269    /// <li>
270    /// <p>The CloudHSM cluster must contain at least as many HSMs as the operation requires. To add HSMs, use the CloudHSM <a href="https://docs.aws.amazon.com/cloudhsm/latest/APIReference/API_CreateHsm.html">CreateHsm</a> operation.</p>
271    /// <p>For the <code>CreateCustomKeyStore</code>, <code>UpdateCustomKeyStore</code>, and <code>CreateKey</code> operations, the CloudHSM cluster must have at least two active HSMs, each in a different Availability Zone. For the <code>ConnectCustomKeyStore</code> operation, the CloudHSM must contain at least one active HSM.</p></li>
272    /// </ul>
273    /// <p>For information about the requirements for an CloudHSM cluster that is associated with an CloudHSM key store, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/create-keystore.html#before-keystore">Assemble the Prerequisites</a> in the <i>Key Management Service Developer Guide</i>. For information about creating a private subnet for an CloudHSM cluster, see <a href="https://docs.aws.amazon.com/cloudhsm/latest/userguide/create-subnets.html">Create a Private Subnet</a> in the <i>CloudHSM User Guide</i>. For information about cluster security groups, see <a href="https://docs.aws.amazon.com/cloudhsm/latest/userguide/configure-sg.html">Configure a Default Security Group</a> in the <i> <i>CloudHSM User Guide</i> </i>.</p>
274    CloudHsmClusterInvalidConfigurationException(crate::types::error::CloudHsmClusterInvalidConfigurationException),
275    /// <p>The request was rejected because the CloudHSM cluster associated with the CloudHSM key store is not active. Initialize and activate the cluster and try the command again. For detailed instructions, see <a href="https://docs.aws.amazon.com/cloudhsm/latest/userguide/getting-started.html">Getting Started</a> in the <i>CloudHSM User Guide</i>.</p>
276    CloudHsmClusterNotActiveException(crate::types::error::CloudHsmClusterNotActiveException),
277    /// <p>The request was rejected because of the <code>ConnectionState</code> of the custom key store. To get the <code>ConnectionState</code> of a custom key store, use the <code>DescribeCustomKeyStores</code> operation.</p>
278    /// <p>This exception is thrown under the following conditions:</p>
279    /// <ul>
280    /// <li>
281    /// <p>You requested the <code>ConnectCustomKeyStore</code> operation on a custom key store with a <code>ConnectionState</code> of <code>DISCONNECTING</code> or <code>FAILED</code>. This operation is valid for all other <code>ConnectionState</code> values. To reconnect a custom key store in a <code>FAILED</code> state, disconnect it (<code>DisconnectCustomKeyStore</code>), then connect it (<code>ConnectCustomKeyStore</code>).</p></li>
282    /// <li>
283    /// <p>You requested the <code>CreateKey</code> operation in a custom key store that is not connected. This operations is valid only when the custom key store <code>ConnectionState</code> is <code>CONNECTED</code>.</p></li>
284    /// <li>
285    /// <p>You requested the <code>DisconnectCustomKeyStore</code> operation on a custom key store with a <code>ConnectionState</code> of <code>DISCONNECTING</code> or <code>DISCONNECTED</code>. This operation is valid for all other <code>ConnectionState</code> values.</p></li>
286    /// <li>
287    /// <p>You requested the <code>UpdateCustomKeyStore</code> or <code>DeleteCustomKeyStore</code> operation on a custom key store that is not disconnected. This operation is valid only when the custom key store <code>ConnectionState</code> is <code>DISCONNECTED</code>.</p></li>
288    /// <li>
289    /// <p>You requested the <code>GenerateRandom</code> operation in an CloudHSM key store that is not connected. This operation is valid only when the CloudHSM key store <code>ConnectionState</code> is <code>CONNECTED</code>.</p></li>
290    /// </ul>
291    CustomKeyStoreInvalidStateException(crate::types::error::CustomKeyStoreInvalidStateException),
292    /// <p>The request was rejected because KMS cannot find a custom key store with the specified key store name or ID.</p>
293    CustomKeyStoreNotFoundException(crate::types::error::CustomKeyStoreNotFoundException),
294    /// <p>The request was rejected because an internal exception occurred. The request can be retried.</p>
295    KmsInternalException(crate::types::error::KmsInternalException),
296    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
297    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
298    variable wildcard pattern and check `.code()`:
299     \
300    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
301     \
302    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-ConnectCustomKeyStoreError) for what information is available for the error.")]
303    Unhandled(crate::error::sealed_unhandled::Unhandled),
304}
305impl ConnectCustomKeyStoreError {
306    /// Creates the `ConnectCustomKeyStoreError::Unhandled` variant from any error type.
307    pub fn unhandled(
308        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
309    ) -> Self {
310        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
311            source: err.into(),
312            meta: ::std::default::Default::default(),
313        })
314    }
315
316    /// Creates the `ConnectCustomKeyStoreError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
317    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
318        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
319            source: err.clone().into(),
320            meta: err,
321        })
322    }
323    ///
324    /// Returns error metadata, which includes the error code, message,
325    /// request ID, and potentially additional information.
326    ///
327    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
328        match self {
329            Self::CloudHsmClusterInvalidConfigurationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::CloudHsmClusterNotActiveException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::CustomKeyStoreInvalidStateException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::CustomKeyStoreNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::KmsInternalException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::Unhandled(e) => &e.meta,
335        }
336    }
337    /// Returns `true` if the error kind is `ConnectCustomKeyStoreError::CloudHsmClusterInvalidConfigurationException`.
338    pub fn is_cloud_hsm_cluster_invalid_configuration_exception(&self) -> bool {
339        matches!(self, Self::CloudHsmClusterInvalidConfigurationException(_))
340    }
341    /// Returns `true` if the error kind is `ConnectCustomKeyStoreError::CloudHsmClusterNotActiveException`.
342    pub fn is_cloud_hsm_cluster_not_active_exception(&self) -> bool {
343        matches!(self, Self::CloudHsmClusterNotActiveException(_))
344    }
345    /// Returns `true` if the error kind is `ConnectCustomKeyStoreError::CustomKeyStoreInvalidStateException`.
346    pub fn is_custom_key_store_invalid_state_exception(&self) -> bool {
347        matches!(self, Self::CustomKeyStoreInvalidStateException(_))
348    }
349    /// Returns `true` if the error kind is `ConnectCustomKeyStoreError::CustomKeyStoreNotFoundException`.
350    pub fn is_custom_key_store_not_found_exception(&self) -> bool {
351        matches!(self, Self::CustomKeyStoreNotFoundException(_))
352    }
353    /// Returns `true` if the error kind is `ConnectCustomKeyStoreError::KmsInternalException`.
354    pub fn is_kms_internal_exception(&self) -> bool {
355        matches!(self, Self::KmsInternalException(_))
356    }
357}
358impl ::std::error::Error for ConnectCustomKeyStoreError {
359    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
360        match self {
361            Self::CloudHsmClusterInvalidConfigurationException(_inner) => ::std::option::Option::Some(_inner),
362            Self::CloudHsmClusterNotActiveException(_inner) => ::std::option::Option::Some(_inner),
363            Self::CustomKeyStoreInvalidStateException(_inner) => ::std::option::Option::Some(_inner),
364            Self::CustomKeyStoreNotFoundException(_inner) => ::std::option::Option::Some(_inner),
365            Self::KmsInternalException(_inner) => ::std::option::Option::Some(_inner),
366            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
367        }
368    }
369}
370impl ::std::fmt::Display for ConnectCustomKeyStoreError {
371    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
372        match self {
373            Self::CloudHsmClusterInvalidConfigurationException(_inner) => _inner.fmt(f),
374            Self::CloudHsmClusterNotActiveException(_inner) => _inner.fmt(f),
375            Self::CustomKeyStoreInvalidStateException(_inner) => _inner.fmt(f),
376            Self::CustomKeyStoreNotFoundException(_inner) => _inner.fmt(f),
377            Self::KmsInternalException(_inner) => _inner.fmt(f),
378            Self::Unhandled(_inner) => {
379                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
380                    write!(f, "unhandled error ({code})")
381                } else {
382                    f.write_str("unhandled error")
383                }
384            }
385        }
386    }
387}
388impl ::aws_smithy_types::retry::ProvideErrorKind for ConnectCustomKeyStoreError {
389    fn code(&self) -> ::std::option::Option<&str> {
390        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
391    }
392    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
393        ::std::option::Option::None
394    }
395}
396impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for ConnectCustomKeyStoreError {
397    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
398        match self {
399            Self::CloudHsmClusterInvalidConfigurationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
400            Self::CloudHsmClusterNotActiveException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
401            Self::CustomKeyStoreInvalidStateException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
402            Self::CustomKeyStoreNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
403            Self::KmsInternalException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
404            Self::Unhandled(_inner) => &_inner.meta,
405        }
406    }
407}
408impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for ConnectCustomKeyStoreError {
409    fn create_unhandled_error(
410        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
411        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
412    ) -> Self {
413        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
414            source,
415            meta: meta.unwrap_or_default(),
416        })
417    }
418}
419impl ::aws_types::request_id::RequestId for crate::operation::connect_custom_key_store::ConnectCustomKeyStoreError {
420    fn request_id(&self) -> Option<&str> {
421        self.meta().request_id()
422    }
423}
424
425pub use crate::operation::connect_custom_key_store::_connect_custom_key_store_output::ConnectCustomKeyStoreOutput;
426
427pub use crate::operation::connect_custom_key_store::_connect_custom_key_store_input::ConnectCustomKeyStoreInput;
428
429mod _connect_custom_key_store_input;
430
431mod _connect_custom_key_store_output;
432
433/// Builders
434pub mod builders;