aws_sdk_rds/operation/
restore_db_cluster_from_s3.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `RestoreDBClusterFromS3`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct RestoreDBClusterFromS3;
6impl RestoreDBClusterFromS3 {
7    /// Creates a new `RestoreDBClusterFromS3`
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::restore_db_cluster_from_s3::RestoreDbClusterFromS3Input,
14    ) -> ::std::result::Result<
15        crate::operation::restore_db_cluster_from_s3::RestoreDbClusterFromS3Output,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error,
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::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error>()
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::restore_db_cluster_from_s3::RestoreDbClusterFromS3Output>()
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::restore_db_cluster_from_s3::RestoreDbClusterFromS3Input,
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("RDS", "RestoreDBClusterFromS3", 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                "RDS.RestoreDBClusterFromS3",
59                "rpc.service" = "RDS",
60                "rpc.method" = "RestoreDBClusterFromS3",
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
74        if let ::std::option::Option::Some(config_override) = config_override {
75            for plugin in config_override.runtime_plugins.iter().cloned() {
76                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
77            }
78            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
79                config_override,
80                client_config.config.clone(),
81                &client_config.runtime_components,
82            ));
83        }
84        runtime_plugins
85    }
86}
87impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for RestoreDBClusterFromS3 {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("RestoreDBClusterFromS3");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            RestoreDBClusterFromS3RequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            RestoreDBClusterFromS3ResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("RestoreDBClusterFromS3")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::SensitiveOutput);
106        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
107            "RestoreDBClusterFromS3",
108            "RDS",
109        ));
110        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
111        signing_options.double_uri_encode = true;
112        signing_options.content_sha256_header = false;
113        signing_options.normalize_uri_path = true;
114        signing_options.payload_override = None;
115
116        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
117            signing_options,
118            ..::std::default::Default::default()
119        });
120
121        ::std::option::Option::Some(cfg.freeze())
122    }
123
124    fn runtime_components(
125        &self,
126        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
127    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
128        #[allow(unused_mut)]
129        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("RestoreDBClusterFromS3")
130            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
131            .with_interceptor(RestoreDBClusterFromS3EndpointParamsInterceptor)
132            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
133                crate::operation::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error,
134            >::new())
135            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
136                crate::operation::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error,
137            >::new())
138            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
139                crate::operation::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error,
140            >::new());
141
142        ::std::borrow::Cow::Owned(rcb)
143    }
144}
145
146#[derive(Debug)]
147struct RestoreDBClusterFromS3ResponseDeserializer;
148impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for RestoreDBClusterFromS3ResponseDeserializer {
149    fn deserialize_nonstreaming(
150        &self,
151        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
152    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
153        let (success, status) = (response.status().is_success(), response.status().as_u16());
154        let headers = response.headers();
155        let body = response.body().bytes().expect("body loaded");
156        #[allow(unused_mut)]
157        let mut force_error = false;
158        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
159        let parse_result = if !success && status != 200 || force_error {
160            crate::protocol_serde::shape_restore_db_cluster_from_s3::de_restore_db_cluster_from_s3_http_error(status, headers, body)
161        } else {
162            crate::protocol_serde::shape_restore_db_cluster_from_s3::de_restore_db_cluster_from_s3_http_response(status, headers, body)
163        };
164        crate::protocol_serde::type_erase_result(parse_result)
165    }
166}
167#[derive(Debug)]
168struct RestoreDBClusterFromS3RequestSerializer;
169impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for RestoreDBClusterFromS3RequestSerializer {
170    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
171    fn serialize_input(
172        &self,
173        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
174        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
175    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
176        let input = input
177            .downcast::<crate::operation::restore_db_cluster_from_s3::RestoreDbClusterFromS3Input>()
178            .expect("correct type");
179        let _header_serialization_settings = _cfg
180            .load::<crate::serialization_settings::HeaderSerializationSettings>()
181            .cloned()
182            .unwrap_or_default();
183        let mut request_builder = {
184            #[allow(clippy::uninlined_format_args)]
185            fn uri_base(
186                _input: &crate::operation::restore_db_cluster_from_s3::RestoreDbClusterFromS3Input,
187                output: &mut ::std::string::String,
188            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
189                use ::std::fmt::Write as _;
190                ::std::write!(output, "/").expect("formatting should succeed");
191                ::std::result::Result::Ok(())
192            }
193            #[allow(clippy::unnecessary_wraps)]
194            fn update_http_builder(
195                input: &crate::operation::restore_db_cluster_from_s3::RestoreDbClusterFromS3Input,
196                builder: ::http::request::Builder,
197            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
198                let mut uri = ::std::string::String::new();
199                uri_base(input, &mut uri)?;
200                ::std::result::Result::Ok(builder.method("POST").uri(uri))
201            }
202            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
203            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
204            builder
205        };
206        let body = ::aws_smithy_types::body::SdkBody::from(
207            crate::protocol_serde::shape_restore_db_cluster_from_s3_input::ser_restore_db_cluster_from_s3_input_input_input(&input)?,
208        );
209        if let Some(content_length) = body.content_length() {
210            let content_length = content_length.to_string();
211            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
212        }
213        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
214    }
215}
216#[derive(Debug)]
217struct RestoreDBClusterFromS3EndpointParamsInterceptor;
218
219impl ::aws_smithy_runtime_api::client::interceptors::Intercept for RestoreDBClusterFromS3EndpointParamsInterceptor {
220    fn name(&self) -> &'static str {
221        "RestoreDBClusterFromS3EndpointParamsInterceptor"
222    }
223
224    fn read_before_execution(
225        &self,
226        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
227            '_,
228            ::aws_smithy_runtime_api::client::interceptors::context::Input,
229            ::aws_smithy_runtime_api::client::interceptors::context::Output,
230            ::aws_smithy_runtime_api::client::interceptors::context::Error,
231        >,
232        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
233    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
234        let _input = context
235            .input()
236            .downcast_ref::<RestoreDbClusterFromS3Input>()
237            .ok_or("failed to downcast to RestoreDbClusterFromS3Input")?;
238
239        let params = crate::config::endpoint::Params::builder()
240            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
241            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
242            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
243            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
244            .build()
245            .map_err(|err| {
246                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
247            })?;
248        cfg.interceptor_state()
249            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
250        ::std::result::Result::Ok(())
251    }
252}
253
254// The get_* functions below are generated from JMESPath expressions in the
255// operationContextParams trait. They target the operation's input shape.
256
257/// Error type for the `RestoreDBClusterFromS3Error` operation.
258#[non_exhaustive]
259#[derive(::std::fmt::Debug)]
260pub enum RestoreDBClusterFromS3Error {
261    /// <p>The user already has a DB cluster with the given identifier.</p>
262    DbClusterAlreadyExistsFault(crate::types::error::DbClusterAlreadyExistsFault),
263    /// <p><code>DBClusterIdentifier</code> doesn't refer to an existing DB cluster.</p>
264    DbClusterNotFoundFault(crate::types::error::DbClusterNotFoundFault),
265    /// <p><code>DBClusterParameterGroupName</code> doesn't refer to an existing DB cluster parameter group.</p>
266    DbClusterParameterGroupNotFoundFault(crate::types::error::DbClusterParameterGroupNotFoundFault),
267    /// <p>The user attempted to create a new DB cluster and the user has already reached the maximum allowed DB cluster quota.</p>
268    DbClusterQuotaExceededFault(crate::types::error::DbClusterQuotaExceededFault),
269    /// <p><code>DBSubnetGroupName</code> doesn't refer to an existing DB subnet group.</p>
270    DbSubnetGroupNotFoundFault(crate::types::error::DbSubnetGroupNotFoundFault),
271    /// <p><code>Domain</code> doesn't refer to an existing Active Directory domain.</p>
272    DomainNotFoundFault(crate::types::error::DomainNotFoundFault),
273    /// <p>There is insufficient storage available for the current action. You might be able to resolve this error by updating your subnet group to use different Availability Zones that have more storage available.</p>
274    InsufficientStorageClusterCapacityFault(crate::types::error::InsufficientStorageClusterCapacityFault),
275    /// <p>The requested operation can't be performed while the cluster is in this state.</p>
276    InvalidDbClusterStateFault(crate::types::error::InvalidDbClusterStateFault),
277    /// <p>The DB subnet group cannot be deleted because it's in use.</p>
278    InvalidDbSubnetGroupStateFault(crate::types::error::InvalidDbSubnetGroupStateFault),
279    /// <p>The specified Amazon S3 bucket name can't be found or Amazon RDS isn't authorized to access the specified Amazon S3 bucket. Verify the <b>SourceS3BucketName</b> and <b>S3IngestionRoleArn</b> values and try again.</p>
280    InvalidS3BucketFault(crate::types::error::InvalidS3BucketFault),
281    /// <p>The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC.</p>
282    InvalidSubnet(crate::types::error::InvalidSubnet),
283    /// <p>The DB subnet group doesn't cover all Availability Zones after it's created because of users' change.</p>
284    InvalidVpcNetworkStateFault(crate::types::error::InvalidVpcNetworkStateFault),
285    /// <p>An error occurred accessing an Amazon Web Services KMS key.</p>
286    KmsKeyNotAccessibleFault(crate::types::error::KmsKeyNotAccessibleFault),
287    /// <p>The network type is invalid for the DB instance. Valid nework type values are <code>IPV4</code> and <code>DUAL</code>.</p>
288    NetworkTypeNotSupported(crate::types::error::NetworkTypeNotSupported),
289    /// <p>The request would result in the user exceeding the allowed amount of storage available across all DB instances.</p>
290    StorageQuotaExceededFault(crate::types::error::StorageQuotaExceededFault),
291    /// <p>The specified <code>StorageType</code> can't be associated with the DB instance.</p>
292    StorageTypeNotSupportedFault(crate::types::error::StorageTypeNotSupportedFault),
293    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
294    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
295    variable wildcard pattern and check `.code()`:
296     \
297    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
298     \
299    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-RestoreDBClusterFromS3Error) for what information is available for the error.")]
300    Unhandled(crate::error::sealed_unhandled::Unhandled),
301}
302impl RestoreDBClusterFromS3Error {
303    /// Creates the `RestoreDBClusterFromS3Error::Unhandled` variant from any error type.
304    pub fn unhandled(
305        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
306    ) -> Self {
307        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
308            source: err.into(),
309            meta: ::std::default::Default::default(),
310        })
311    }
312
313    /// Creates the `RestoreDBClusterFromS3Error::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
314    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
315        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
316            source: err.clone().into(),
317            meta: err,
318        })
319    }
320    ///
321    /// Returns error metadata, which includes the error code, message,
322    /// request ID, and potentially additional information.
323    ///
324    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
325        match self {
326            Self::DbClusterAlreadyExistsFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
327            Self::DbClusterNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::DbClusterParameterGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::DbClusterQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::DbSubnetGroupNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::DomainNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::InsufficientStorageClusterCapacityFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::InvalidDbClusterStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::InvalidDbSubnetGroupStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::InvalidS3BucketFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::InvalidSubnet(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::InvalidVpcNetworkStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
338            Self::KmsKeyNotAccessibleFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
339            Self::NetworkTypeNotSupported(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
340            Self::StorageQuotaExceededFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
341            Self::StorageTypeNotSupportedFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
342            Self::Unhandled(e) => &e.meta,
343        }
344    }
345    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DbClusterAlreadyExistsFault`.
346    pub fn is_db_cluster_already_exists_fault(&self) -> bool {
347        matches!(self, Self::DbClusterAlreadyExistsFault(_))
348    }
349    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DbClusterNotFoundFault`.
350    pub fn is_db_cluster_not_found_fault(&self) -> bool {
351        matches!(self, Self::DbClusterNotFoundFault(_))
352    }
353    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DbClusterParameterGroupNotFoundFault`.
354    pub fn is_db_cluster_parameter_group_not_found_fault(&self) -> bool {
355        matches!(self, Self::DbClusterParameterGroupNotFoundFault(_))
356    }
357    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DbClusterQuotaExceededFault`.
358    pub fn is_db_cluster_quota_exceeded_fault(&self) -> bool {
359        matches!(self, Self::DbClusterQuotaExceededFault(_))
360    }
361    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DbSubnetGroupNotFoundFault`.
362    pub fn is_db_subnet_group_not_found_fault(&self) -> bool {
363        matches!(self, Self::DbSubnetGroupNotFoundFault(_))
364    }
365    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::DomainNotFoundFault`.
366    pub fn is_domain_not_found_fault(&self) -> bool {
367        matches!(self, Self::DomainNotFoundFault(_))
368    }
369    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InsufficientStorageClusterCapacityFault`.
370    pub fn is_insufficient_storage_cluster_capacity_fault(&self) -> bool {
371        matches!(self, Self::InsufficientStorageClusterCapacityFault(_))
372    }
373    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InvalidDbClusterStateFault`.
374    pub fn is_invalid_db_cluster_state_fault(&self) -> bool {
375        matches!(self, Self::InvalidDbClusterStateFault(_))
376    }
377    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InvalidDbSubnetGroupStateFault`.
378    pub fn is_invalid_db_subnet_group_state_fault(&self) -> bool {
379        matches!(self, Self::InvalidDbSubnetGroupStateFault(_))
380    }
381    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InvalidS3BucketFault`.
382    pub fn is_invalid_s3_bucket_fault(&self) -> bool {
383        matches!(self, Self::InvalidS3BucketFault(_))
384    }
385    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InvalidSubnet`.
386    pub fn is_invalid_subnet(&self) -> bool {
387        matches!(self, Self::InvalidSubnet(_))
388    }
389    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::InvalidVpcNetworkStateFault`.
390    pub fn is_invalid_vpc_network_state_fault(&self) -> bool {
391        matches!(self, Self::InvalidVpcNetworkStateFault(_))
392    }
393    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::KmsKeyNotAccessibleFault`.
394    pub fn is_kms_key_not_accessible_fault(&self) -> bool {
395        matches!(self, Self::KmsKeyNotAccessibleFault(_))
396    }
397    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::NetworkTypeNotSupported`.
398    pub fn is_network_type_not_supported(&self) -> bool {
399        matches!(self, Self::NetworkTypeNotSupported(_))
400    }
401    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::StorageQuotaExceededFault`.
402    pub fn is_storage_quota_exceeded_fault(&self) -> bool {
403        matches!(self, Self::StorageQuotaExceededFault(_))
404    }
405    /// Returns `true` if the error kind is `RestoreDBClusterFromS3Error::StorageTypeNotSupportedFault`.
406    pub fn is_storage_type_not_supported_fault(&self) -> bool {
407        matches!(self, Self::StorageTypeNotSupportedFault(_))
408    }
409}
410impl ::std::error::Error for RestoreDBClusterFromS3Error {
411    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
412        match self {
413            Self::DbClusterAlreadyExistsFault(_inner) => ::std::option::Option::Some(_inner),
414            Self::DbClusterNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
415            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
416            Self::DbClusterQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
417            Self::DbSubnetGroupNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
418            Self::DomainNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
419            Self::InsufficientStorageClusterCapacityFault(_inner) => ::std::option::Option::Some(_inner),
420            Self::InvalidDbClusterStateFault(_inner) => ::std::option::Option::Some(_inner),
421            Self::InvalidDbSubnetGroupStateFault(_inner) => ::std::option::Option::Some(_inner),
422            Self::InvalidS3BucketFault(_inner) => ::std::option::Option::Some(_inner),
423            Self::InvalidSubnet(_inner) => ::std::option::Option::Some(_inner),
424            Self::InvalidVpcNetworkStateFault(_inner) => ::std::option::Option::Some(_inner),
425            Self::KmsKeyNotAccessibleFault(_inner) => ::std::option::Option::Some(_inner),
426            Self::NetworkTypeNotSupported(_inner) => ::std::option::Option::Some(_inner),
427            Self::StorageQuotaExceededFault(_inner) => ::std::option::Option::Some(_inner),
428            Self::StorageTypeNotSupportedFault(_inner) => ::std::option::Option::Some(_inner),
429            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
430        }
431    }
432}
433impl ::std::fmt::Display for RestoreDBClusterFromS3Error {
434    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
435        match self {
436            Self::DbClusterAlreadyExistsFault(_inner) => _inner.fmt(f),
437            Self::DbClusterNotFoundFault(_inner) => _inner.fmt(f),
438            Self::DbClusterParameterGroupNotFoundFault(_inner) => _inner.fmt(f),
439            Self::DbClusterQuotaExceededFault(_inner) => _inner.fmt(f),
440            Self::DbSubnetGroupNotFoundFault(_inner) => _inner.fmt(f),
441            Self::DomainNotFoundFault(_inner) => _inner.fmt(f),
442            Self::InsufficientStorageClusterCapacityFault(_inner) => _inner.fmt(f),
443            Self::InvalidDbClusterStateFault(_inner) => _inner.fmt(f),
444            Self::InvalidDbSubnetGroupStateFault(_inner) => _inner.fmt(f),
445            Self::InvalidS3BucketFault(_inner) => _inner.fmt(f),
446            Self::InvalidSubnet(_inner) => _inner.fmt(f),
447            Self::InvalidVpcNetworkStateFault(_inner) => _inner.fmt(f),
448            Self::KmsKeyNotAccessibleFault(_inner) => _inner.fmt(f),
449            Self::NetworkTypeNotSupported(_inner) => _inner.fmt(f),
450            Self::StorageQuotaExceededFault(_inner) => _inner.fmt(f),
451            Self::StorageTypeNotSupportedFault(_inner) => _inner.fmt(f),
452            Self::Unhandled(_inner) => {
453                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
454                    write!(f, "unhandled error ({code})")
455                } else {
456                    f.write_str("unhandled error")
457                }
458            }
459        }
460    }
461}
462impl ::aws_smithy_types::retry::ProvideErrorKind for RestoreDBClusterFromS3Error {
463    fn code(&self) -> ::std::option::Option<&str> {
464        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
465    }
466    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
467        ::std::option::Option::None
468    }
469}
470impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for RestoreDBClusterFromS3Error {
471    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
472        match self {
473            Self::DbClusterAlreadyExistsFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
474            Self::DbClusterNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
475            Self::DbClusterParameterGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
476            Self::DbClusterQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
477            Self::DbSubnetGroupNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
478            Self::DomainNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
479            Self::InsufficientStorageClusterCapacityFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
480            Self::InvalidDbClusterStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
481            Self::InvalidDbSubnetGroupStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
482            Self::InvalidS3BucketFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
483            Self::InvalidSubnet(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
484            Self::InvalidVpcNetworkStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
485            Self::KmsKeyNotAccessibleFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
486            Self::NetworkTypeNotSupported(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
487            Self::StorageQuotaExceededFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
488            Self::StorageTypeNotSupportedFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
489            Self::Unhandled(_inner) => &_inner.meta,
490        }
491    }
492}
493impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for RestoreDBClusterFromS3Error {
494    fn create_unhandled_error(
495        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
496        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
497    ) -> Self {
498        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
499            source,
500            meta: meta.unwrap_or_default(),
501        })
502    }
503}
504impl ::aws_types::request_id::RequestId for crate::operation::restore_db_cluster_from_s3::RestoreDBClusterFromS3Error {
505    fn request_id(&self) -> Option<&str> {
506        self.meta().request_id()
507    }
508}
509
510pub use crate::operation::restore_db_cluster_from_s3::_restore_db_cluster_from_s3_output::RestoreDbClusterFromS3Output;
511
512pub use crate::operation::restore_db_cluster_from_s3::_restore_db_cluster_from_s3_input::RestoreDbClusterFromS3Input;
513
514mod _restore_db_cluster_from_s3_input;
515
516mod _restore_db_cluster_from_s3_output;
517
518/// Builders
519pub mod builders;