aws_sdk_fsx/operation/
create_and_attach_s3_access_point.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateAndAttachS3AccessPoint`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateAndAttachS3AccessPoint;
6impl CreateAndAttachS3AccessPoint {
7    /// Creates a new `CreateAndAttachS3AccessPoint`
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::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError,
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::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError>()
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::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointOutput>()
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::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput,
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("FSx", "CreateAndAttachS3AccessPoint", 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                "FSx.CreateAndAttachS3AccessPoint",
59                "rpc.service" = "FSx",
60                "rpc.method" = "CreateAndAttachS3AccessPoint",
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_operation_plugin(crate::client_idempotency_token::IdempotencyTokenRuntimePlugin::new(
74            |token_provider, input| {
75                let input: &mut crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput =
76                    input.downcast_mut().expect("correct type");
77                if input.client_request_token.is_none() {
78                    input.client_request_token = ::std::option::Option::Some(token_provider.make_idempotency_token());
79                }
80            },
81        ));
82        if let ::std::option::Option::Some(config_override) = config_override {
83            for plugin in config_override.runtime_plugins.iter().cloned() {
84                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
85            }
86            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
87                config_override,
88                client_config.config.clone(),
89                &client_config.runtime_components,
90            ));
91        }
92        runtime_plugins
93    }
94}
95impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for CreateAndAttachS3AccessPoint {
96    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
97        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateAndAttachS3AccessPoint");
98
99        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
100            CreateAndAttachS3AccessPointRequestSerializer,
101        ));
102        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
103            CreateAndAttachS3AccessPointResponseDeserializer,
104        ));
105
106        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
107            crate::config::auth::Params::builder()
108                .operation_name("CreateAndAttachS3AccessPoint")
109                .build()
110                .expect("required fields set"),
111        ));
112
113        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
114            "CreateAndAttachS3AccessPoint",
115            "FSx",
116        ));
117        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
118        signing_options.double_uri_encode = true;
119        signing_options.content_sha256_header = false;
120        signing_options.normalize_uri_path = true;
121        signing_options.payload_override = None;
122
123        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
124            signing_options,
125            ..::std::default::Default::default()
126        });
127
128        ::std::option::Option::Some(cfg.freeze())
129    }
130
131    fn runtime_components(
132        &self,
133        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
134    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
135        #[allow(unused_mut)]
136        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateAndAttachS3AccessPoint")
137            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
138            .with_interceptor(CreateAndAttachS3AccessPointEndpointParamsInterceptor)
139            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
140                crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError,
141            >::new())
142            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
143                crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError,
144            >::new())
145            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
146                crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError,
147            >::new());
148
149        ::std::borrow::Cow::Owned(rcb)
150    }
151}
152
153#[derive(Debug)]
154struct CreateAndAttachS3AccessPointResponseDeserializer;
155impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateAndAttachS3AccessPointResponseDeserializer {
156    fn deserialize_nonstreaming(
157        &self,
158        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
159    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
160        let (success, status) = (response.status().is_success(), response.status().as_u16());
161        let headers = response.headers();
162        let body = response.body().bytes().expect("body loaded");
163        #[allow(unused_mut)]
164        let mut force_error = false;
165        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
166        let parse_result = if !success && status != 200 || force_error {
167            crate::protocol_serde::shape_create_and_attach_s3_access_point::de_create_and_attach_s3_access_point_http_error(status, headers, body)
168        } else {
169            crate::protocol_serde::shape_create_and_attach_s3_access_point::de_create_and_attach_s3_access_point_http_response(status, headers, body)
170        };
171        crate::protocol_serde::type_erase_result(parse_result)
172    }
173}
174#[derive(Debug)]
175struct CreateAndAttachS3AccessPointRequestSerializer;
176impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateAndAttachS3AccessPointRequestSerializer {
177    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
178    fn serialize_input(
179        &self,
180        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
181        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
182    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
183        let input = input
184            .downcast::<crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput>()
185            .expect("correct type");
186        let _header_serialization_settings = _cfg
187            .load::<crate::serialization_settings::HeaderSerializationSettings>()
188            .cloned()
189            .unwrap_or_default();
190        let mut request_builder = {
191            #[allow(clippy::uninlined_format_args)]
192            fn uri_base(
193                _input: &crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput,
194                output: &mut ::std::string::String,
195            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
196                use ::std::fmt::Write as _;
197                ::std::write!(output, "/").expect("formatting should succeed");
198                ::std::result::Result::Ok(())
199            }
200            #[allow(clippy::unnecessary_wraps)]
201            fn update_http_builder(
202                input: &crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointInput,
203                builder: ::http::request::Builder,
204            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
205                let mut uri = ::std::string::String::new();
206                uri_base(input, &mut uri)?;
207                ::std::result::Result::Ok(builder.method("POST").uri(uri))
208            }
209            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
210            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
211            builder = _header_serialization_settings.set_default_header(
212                builder,
213                ::http::header::HeaderName::from_static("x-amz-target"),
214                "AWSSimbaAPIService_v20180301.CreateAndAttachS3AccessPoint",
215            );
216            builder
217        };
218        let body = ::aws_smithy_types::body::SdkBody::from(
219            crate::protocol_serde::shape_create_and_attach_s3_access_point::ser_create_and_attach_s3_access_point_input(&input)?,
220        );
221        if let Some(content_length) = body.content_length() {
222            let content_length = content_length.to_string();
223            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
224        }
225        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
226    }
227}
228#[derive(Debug)]
229struct CreateAndAttachS3AccessPointEndpointParamsInterceptor;
230
231impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateAndAttachS3AccessPointEndpointParamsInterceptor {
232    fn name(&self) -> &'static str {
233        "CreateAndAttachS3AccessPointEndpointParamsInterceptor"
234    }
235
236    fn read_before_execution(
237        &self,
238        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
239            '_,
240            ::aws_smithy_runtime_api::client::interceptors::context::Input,
241            ::aws_smithy_runtime_api::client::interceptors::context::Output,
242            ::aws_smithy_runtime_api::client::interceptors::context::Error,
243        >,
244        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
245    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
246        let _input = context
247            .input()
248            .downcast_ref::<CreateAndAttachS3AccessPointInput>()
249            .ok_or("failed to downcast to CreateAndAttachS3AccessPointInput")?;
250
251        let params = crate::config::endpoint::Params::builder()
252            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
253            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
254            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
255            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
256            .build()
257            .map_err(|err| {
258                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
259            })?;
260        cfg.interceptor_state()
261            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
262        ::std::result::Result::Ok(())
263    }
264}
265
266// The get_* functions below are generated from JMESPath expressions in the
267// operationContextParams trait. They target the operation's input shape.
268
269/// Error type for the `CreateAndAttachS3AccessPointError` operation.
270#[non_exhaustive]
271#[derive(::std::fmt::Debug)]
272pub enum CreateAndAttachS3AccessPointError {
273    /// <p>An access point with that name already exists in the Amazon Web Services Region in your Amazon Web Services account.</p>
274    AccessPointAlreadyOwnedByYou(crate::types::error::AccessPointAlreadyOwnedByYou),
275    /// <p>A generic error indicating a failure with a client request.</p>
276    BadRequest(crate::types::error::BadRequest),
277    /// <p>The error returned when a second request is received with the same client request token but different parameters settings. A client request token should always uniquely identify a single request.</p>
278    IncompatibleParameterError(crate::types::error::IncompatibleParameterError),
279    /// <p>A generic error indicating a server-side failure.</p>
280    InternalServerError(crate::types::error::InternalServerError),
281    /// <p>The access point specified doesn't exist.</p>
282    InvalidAccessPoint(crate::types::error::InvalidAccessPoint),
283    /// <p>The action or operation requested is invalid. Verify that the action is typed correctly.</p>
284    InvalidRequest(crate::types::error::InvalidRequest),
285    /// <p>You have reached the maximum number of S3 access points attachments allowed for your account in this Amazon Web Services Region, or for the file system. For more information, or to request an increase, see <a href="https://docs.aws.amazon.com/fsx/latest/OpenZFSGuide/limits.html">Service quotas on FSx resources</a> in the FSx for OpenZFS User Guide.</p>
286    TooManyAccessPoints(crate::types::error::TooManyAccessPoints),
287    /// <p>The requested operation is not supported for this resource or API.</p>
288    UnsupportedOperation(crate::types::error::UnsupportedOperation),
289    /// <p>No Amazon FSx volumes were found based upon the supplied parameters.</p>
290    VolumeNotFound(crate::types::error::VolumeNotFound),
291    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
292    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
293    variable wildcard pattern and check `.code()`:
294     \
295    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
296     \
297    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateAndAttachS3AccessPointError) for what information is available for the error.")]
298    Unhandled(crate::error::sealed_unhandled::Unhandled),
299}
300impl CreateAndAttachS3AccessPointError {
301    /// Creates the `CreateAndAttachS3AccessPointError::Unhandled` variant from any error type.
302    pub fn unhandled(
303        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
304    ) -> Self {
305        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
306            source: err.into(),
307            meta: ::std::default::Default::default(),
308        })
309    }
310
311    /// Creates the `CreateAndAttachS3AccessPointError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
312    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
313        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
314            source: err.clone().into(),
315            meta: err,
316        })
317    }
318    ///
319    /// Returns error metadata, which includes the error code, message,
320    /// request ID, and potentially additional information.
321    ///
322    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
323        match self {
324            Self::AccessPointAlreadyOwnedByYou(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
325            Self::BadRequest(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
326            Self::IncompatibleParameterError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
327            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::InvalidAccessPoint(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::InvalidRequest(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::TooManyAccessPoints(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::UnsupportedOperation(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::VolumeNotFound(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::Unhandled(e) => &e.meta,
334        }
335    }
336    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::AccessPointAlreadyOwnedByYou`.
337    pub fn is_access_point_already_owned_by_you(&self) -> bool {
338        matches!(self, Self::AccessPointAlreadyOwnedByYou(_))
339    }
340    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::BadRequest`.
341    pub fn is_bad_request(&self) -> bool {
342        matches!(self, Self::BadRequest(_))
343    }
344    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::IncompatibleParameterError`.
345    pub fn is_incompatible_parameter_error(&self) -> bool {
346        matches!(self, Self::IncompatibleParameterError(_))
347    }
348    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::InternalServerError`.
349    pub fn is_internal_server_error(&self) -> bool {
350        matches!(self, Self::InternalServerError(_))
351    }
352    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::InvalidAccessPoint`.
353    pub fn is_invalid_access_point(&self) -> bool {
354        matches!(self, Self::InvalidAccessPoint(_))
355    }
356    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::InvalidRequest`.
357    pub fn is_invalid_request(&self) -> bool {
358        matches!(self, Self::InvalidRequest(_))
359    }
360    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::TooManyAccessPoints`.
361    pub fn is_too_many_access_points(&self) -> bool {
362        matches!(self, Self::TooManyAccessPoints(_))
363    }
364    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::UnsupportedOperation`.
365    pub fn is_unsupported_operation(&self) -> bool {
366        matches!(self, Self::UnsupportedOperation(_))
367    }
368    /// Returns `true` if the error kind is `CreateAndAttachS3AccessPointError::VolumeNotFound`.
369    pub fn is_volume_not_found(&self) -> bool {
370        matches!(self, Self::VolumeNotFound(_))
371    }
372}
373impl ::std::error::Error for CreateAndAttachS3AccessPointError {
374    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
375        match self {
376            Self::AccessPointAlreadyOwnedByYou(_inner) => ::std::option::Option::Some(_inner),
377            Self::BadRequest(_inner) => ::std::option::Option::Some(_inner),
378            Self::IncompatibleParameterError(_inner) => ::std::option::Option::Some(_inner),
379            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
380            Self::InvalidAccessPoint(_inner) => ::std::option::Option::Some(_inner),
381            Self::InvalidRequest(_inner) => ::std::option::Option::Some(_inner),
382            Self::TooManyAccessPoints(_inner) => ::std::option::Option::Some(_inner),
383            Self::UnsupportedOperation(_inner) => ::std::option::Option::Some(_inner),
384            Self::VolumeNotFound(_inner) => ::std::option::Option::Some(_inner),
385            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
386        }
387    }
388}
389impl ::std::fmt::Display for CreateAndAttachS3AccessPointError {
390    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
391        match self {
392            Self::AccessPointAlreadyOwnedByYou(_inner) => _inner.fmt(f),
393            Self::BadRequest(_inner) => _inner.fmt(f),
394            Self::IncompatibleParameterError(_inner) => _inner.fmt(f),
395            Self::InternalServerError(_inner) => _inner.fmt(f),
396            Self::InvalidAccessPoint(_inner) => _inner.fmt(f),
397            Self::InvalidRequest(_inner) => _inner.fmt(f),
398            Self::TooManyAccessPoints(_inner) => _inner.fmt(f),
399            Self::UnsupportedOperation(_inner) => _inner.fmt(f),
400            Self::VolumeNotFound(_inner) => _inner.fmt(f),
401            Self::Unhandled(_inner) => {
402                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
403                    write!(f, "unhandled error ({code})")
404                } else {
405                    f.write_str("unhandled error")
406                }
407            }
408        }
409    }
410}
411impl ::aws_smithy_types::retry::ProvideErrorKind for CreateAndAttachS3AccessPointError {
412    fn code(&self) -> ::std::option::Option<&str> {
413        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
414    }
415    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
416        ::std::option::Option::None
417    }
418}
419impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateAndAttachS3AccessPointError {
420    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
421        match self {
422            Self::AccessPointAlreadyOwnedByYou(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
423            Self::BadRequest(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
424            Self::IncompatibleParameterError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
425            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
426            Self::InvalidAccessPoint(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
427            Self::InvalidRequest(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
428            Self::TooManyAccessPoints(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
429            Self::UnsupportedOperation(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
430            Self::VolumeNotFound(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
431            Self::Unhandled(_inner) => &_inner.meta,
432        }
433    }
434}
435impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateAndAttachS3AccessPointError {
436    fn create_unhandled_error(
437        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
438        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
439    ) -> Self {
440        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
441            source,
442            meta: meta.unwrap_or_default(),
443        })
444    }
445}
446impl ::aws_types::request_id::RequestId for crate::operation::create_and_attach_s3_access_point::CreateAndAttachS3AccessPointError {
447    fn request_id(&self) -> Option<&str> {
448        self.meta().request_id()
449    }
450}
451
452pub use crate::operation::create_and_attach_s3_access_point::_create_and_attach_s3_access_point_output::CreateAndAttachS3AccessPointOutput;
453
454pub use crate::operation::create_and_attach_s3_access_point::_create_and_attach_s3_access_point_input::CreateAndAttachS3AccessPointInput;
455
456mod _create_and_attach_s3_access_point_input;
457
458mod _create_and_attach_s3_access_point_output;
459
460/// Builders
461pub mod builders;