aws_sdk_ssm/operation/
send_command.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `SendCommand`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct SendCommand;
6impl SendCommand {
7    /// Creates a new `SendCommand`
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::send_command::SendCommandInput,
14    ) -> ::std::result::Result<
15        crate::operation::send_command::SendCommandOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::send_command::SendCommandError,
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::send_command::SendCommandError>()
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::send_command::SendCommandOutput>()
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::send_command::SendCommandInput,
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("SSM", "SendCommand", 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                "SSM.SendCommand",
59                "rpc.service" = "SSM",
60                "rpc.method" = "SendCommand",
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 SendCommand {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("SendCommand");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            SendCommandRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            SendCommandResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("SendCommand")
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("SendCommand", "SSM"));
107        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
108        signing_options.double_uri_encode = true;
109        signing_options.content_sha256_header = false;
110        signing_options.normalize_uri_path = true;
111        signing_options.payload_override = None;
112
113        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
114            signing_options,
115            ..::std::default::Default::default()
116        });
117
118        ::std::option::Option::Some(cfg.freeze())
119    }
120
121    fn runtime_components(
122        &self,
123        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
124    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
125        #[allow(unused_mut)]
126        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("SendCommand")
127            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
128            .with_interceptor(SendCommandEndpointParamsInterceptor)
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
130                crate::operation::send_command::SendCommandError,
131            >::new())
132            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
133                crate::operation::send_command::SendCommandError,
134            >::new())
135            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
136                crate::operation::send_command::SendCommandError,
137            >::new());
138
139        ::std::borrow::Cow::Owned(rcb)
140    }
141}
142
143#[derive(Debug)]
144struct SendCommandResponseDeserializer;
145impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for SendCommandResponseDeserializer {
146    fn deserialize_nonstreaming(
147        &self,
148        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
149    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
150        let (success, status) = (response.status().is_success(), response.status().as_u16());
151        let headers = response.headers();
152        let body = response.body().bytes().expect("body loaded");
153        #[allow(unused_mut)]
154        let mut force_error = false;
155        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
156        let parse_result = if !success && status != 200 || force_error {
157            crate::protocol_serde::shape_send_command::de_send_command_http_error(status, headers, body)
158        } else {
159            crate::protocol_serde::shape_send_command::de_send_command_http_response(status, headers, body)
160        };
161        crate::protocol_serde::type_erase_result(parse_result)
162    }
163}
164#[derive(Debug)]
165struct SendCommandRequestSerializer;
166impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for SendCommandRequestSerializer {
167    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
168    fn serialize_input(
169        &self,
170        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
171        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
172    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
173        let input = input
174            .downcast::<crate::operation::send_command::SendCommandInput>()
175            .expect("correct type");
176        let _header_serialization_settings = _cfg
177            .load::<crate::serialization_settings::HeaderSerializationSettings>()
178            .cloned()
179            .unwrap_or_default();
180        let mut request_builder = {
181            fn uri_base(
182                _input: &crate::operation::send_command::SendCommandInput,
183                output: &mut ::std::string::String,
184            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
185                use ::std::fmt::Write as _;
186                ::std::write!(output, "/").expect("formatting should succeed");
187                ::std::result::Result::Ok(())
188            }
189            #[allow(clippy::unnecessary_wraps)]
190            fn update_http_builder(
191                input: &crate::operation::send_command::SendCommandInput,
192                builder: ::http::request::Builder,
193            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
194                let mut uri = ::std::string::String::new();
195                uri_base(input, &mut uri)?;
196                ::std::result::Result::Ok(builder.method("POST").uri(uri))
197            }
198            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
199            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
200            builder = _header_serialization_settings.set_default_header(
201                builder,
202                ::http::header::HeaderName::from_static("x-amz-target"),
203                "AmazonSSM.SendCommand",
204            );
205            builder
206        };
207        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_send_command::ser_send_command_input(&input)?);
208        if let Some(content_length) = body.content_length() {
209            let content_length = content_length.to_string();
210            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
211        }
212        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
213    }
214}
215#[derive(Debug)]
216struct SendCommandEndpointParamsInterceptor;
217
218impl ::aws_smithy_runtime_api::client::interceptors::Intercept for SendCommandEndpointParamsInterceptor {
219    fn name(&self) -> &'static str {
220        "SendCommandEndpointParamsInterceptor"
221    }
222
223    fn read_before_execution(
224        &self,
225        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
226            '_,
227            ::aws_smithy_runtime_api::client::interceptors::context::Input,
228            ::aws_smithy_runtime_api::client::interceptors::context::Output,
229            ::aws_smithy_runtime_api::client::interceptors::context::Error,
230        >,
231        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
233        let _input = context
234            .input()
235            .downcast_ref::<SendCommandInput>()
236            .ok_or("failed to downcast to SendCommandInput")?;
237
238        let params = crate::config::endpoint::Params::builder()
239            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
240            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
241            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
242            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
243            .build()
244            .map_err(|err| {
245                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
246            })?;
247        cfg.interceptor_state()
248            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
249        ::std::result::Result::Ok(())
250    }
251}
252
253// The get_* functions below are generated from JMESPath expressions in the
254// operationContextParams trait. They target the operation's input shape.
255
256/// Error type for the `SendCommandError` operation.
257#[non_exhaustive]
258#[derive(::std::fmt::Debug)]
259pub enum SendCommandError {
260    /// <p>You can't specify a managed node ID in more than one association.</p>
261    DuplicateInstanceId(crate::types::error::DuplicateInstanceId),
262    /// <p>An error occurred on the server side.</p>
263    InternalServerError(crate::types::error::InternalServerError),
264    /// <p>The specified SSM document doesn't exist.</p>
265    InvalidDocument(crate::types::error::InvalidDocument),
266    /// <p>The document version isn't valid or doesn't exist.</p>
267    InvalidDocumentVersion(crate::types::error::InvalidDocumentVersion),
268    /// <p>The following problems can cause this exception:</p>
269    /// <ul>
270    /// <li>
271    /// <p>You don't have permission to access the managed node.</p></li>
272    /// <li>
273    /// <p>Amazon Web Services Systems Manager Agent (SSM Agent) isn't running. Verify that SSM Agent is running.</p></li>
274    /// <li>
275    /// <p>SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM Agent.</p></li>
276    /// <li>
277    /// <p>The managed node isn't in a valid state. Valid states are: <code>Running</code>, <code>Pending</code>, <code>Stopped</code>, and <code>Stopping</code>. Invalid states are: <code>Shutting-down</code> and <code>Terminated</code>.</p></li>
278    /// </ul>
279    InvalidInstanceId(crate::types::error::InvalidInstanceId),
280    /// <p>One or more configuration items isn't valid. Verify that a valid Amazon Resource Name (ARN) was provided for an Amazon Simple Notification Service topic.</p>
281    InvalidNotificationConfig(crate::types::error::InvalidNotificationConfig),
282    /// <p>The S3 bucket doesn't exist.</p>
283    InvalidOutputFolder(crate::types::error::InvalidOutputFolder),
284    /// <p>You must specify values for all required parameters in the Amazon Web Services Systems Manager document (SSM document). You can only supply values to parameters defined in the SSM document.</p>
285    InvalidParameters(crate::types::error::InvalidParameters),
286    /// <p>The role name can't contain invalid characters. Also verify that you specified an IAM role for notifications that includes the required trust policy. For information about configuring the IAM role for Run Command notifications, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-sns-notifications.html">Monitoring Systems Manager status changes using Amazon SNS notifications</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
287    InvalidRole(crate::types::error::InvalidRole),
288    /// <p>The size limit of a document is 64 KB.</p>
289    MaxDocumentSizeExceeded(crate::types::error::MaxDocumentSizeExceeded),
290    /// <p>The document doesn't support the platform type of the given managed node IDs. For example, you sent an document for a Windows managed node to a Linux node.</p>
291    UnsupportedPlatformType(crate::types::error::UnsupportedPlatformType),
292    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
293    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
294    variable wildcard pattern and check `.code()`:
295     \
296    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
297     \
298    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-SendCommandError) for what information is available for the error.")]
299    Unhandled(crate::error::sealed_unhandled::Unhandled),
300}
301impl SendCommandError {
302    /// Creates the `SendCommandError::Unhandled` variant from any error type.
303    pub fn unhandled(
304        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
305    ) -> Self {
306        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
307            source: err.into(),
308            meta: ::std::default::Default::default(),
309        })
310    }
311
312    /// Creates the `SendCommandError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
313    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
314        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
315            source: err.clone().into(),
316            meta: err,
317        })
318    }
319    ///
320    /// Returns error metadata, which includes the error code, message,
321    /// request ID, and potentially additional information.
322    ///
323    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
324        match self {
325            Self::DuplicateInstanceId(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
326            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
327            Self::InvalidDocument(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::InvalidDocumentVersion(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::InvalidInstanceId(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::InvalidNotificationConfig(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::InvalidOutputFolder(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::InvalidParameters(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::InvalidRole(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::MaxDocumentSizeExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::UnsupportedPlatformType(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::Unhandled(e) => &e.meta,
337        }
338    }
339    /// Returns `true` if the error kind is `SendCommandError::DuplicateInstanceId`.
340    pub fn is_duplicate_instance_id(&self) -> bool {
341        matches!(self, Self::DuplicateInstanceId(_))
342    }
343    /// Returns `true` if the error kind is `SendCommandError::InternalServerError`.
344    pub fn is_internal_server_error(&self) -> bool {
345        matches!(self, Self::InternalServerError(_))
346    }
347    /// Returns `true` if the error kind is `SendCommandError::InvalidDocument`.
348    pub fn is_invalid_document(&self) -> bool {
349        matches!(self, Self::InvalidDocument(_))
350    }
351    /// Returns `true` if the error kind is `SendCommandError::InvalidDocumentVersion`.
352    pub fn is_invalid_document_version(&self) -> bool {
353        matches!(self, Self::InvalidDocumentVersion(_))
354    }
355    /// Returns `true` if the error kind is `SendCommandError::InvalidInstanceId`.
356    pub fn is_invalid_instance_id(&self) -> bool {
357        matches!(self, Self::InvalidInstanceId(_))
358    }
359    /// Returns `true` if the error kind is `SendCommandError::InvalidNotificationConfig`.
360    pub fn is_invalid_notification_config(&self) -> bool {
361        matches!(self, Self::InvalidNotificationConfig(_))
362    }
363    /// Returns `true` if the error kind is `SendCommandError::InvalidOutputFolder`.
364    pub fn is_invalid_output_folder(&self) -> bool {
365        matches!(self, Self::InvalidOutputFolder(_))
366    }
367    /// Returns `true` if the error kind is `SendCommandError::InvalidParameters`.
368    pub fn is_invalid_parameters(&self) -> bool {
369        matches!(self, Self::InvalidParameters(_))
370    }
371    /// Returns `true` if the error kind is `SendCommandError::InvalidRole`.
372    pub fn is_invalid_role(&self) -> bool {
373        matches!(self, Self::InvalidRole(_))
374    }
375    /// Returns `true` if the error kind is `SendCommandError::MaxDocumentSizeExceeded`.
376    pub fn is_max_document_size_exceeded(&self) -> bool {
377        matches!(self, Self::MaxDocumentSizeExceeded(_))
378    }
379    /// Returns `true` if the error kind is `SendCommandError::UnsupportedPlatformType`.
380    pub fn is_unsupported_platform_type(&self) -> bool {
381        matches!(self, Self::UnsupportedPlatformType(_))
382    }
383}
384impl ::std::error::Error for SendCommandError {
385    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
386        match self {
387            Self::DuplicateInstanceId(_inner) => ::std::option::Option::Some(_inner),
388            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
389            Self::InvalidDocument(_inner) => ::std::option::Option::Some(_inner),
390            Self::InvalidDocumentVersion(_inner) => ::std::option::Option::Some(_inner),
391            Self::InvalidInstanceId(_inner) => ::std::option::Option::Some(_inner),
392            Self::InvalidNotificationConfig(_inner) => ::std::option::Option::Some(_inner),
393            Self::InvalidOutputFolder(_inner) => ::std::option::Option::Some(_inner),
394            Self::InvalidParameters(_inner) => ::std::option::Option::Some(_inner),
395            Self::InvalidRole(_inner) => ::std::option::Option::Some(_inner),
396            Self::MaxDocumentSizeExceeded(_inner) => ::std::option::Option::Some(_inner),
397            Self::UnsupportedPlatformType(_inner) => ::std::option::Option::Some(_inner),
398            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
399        }
400    }
401}
402impl ::std::fmt::Display for SendCommandError {
403    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
404        match self {
405            Self::DuplicateInstanceId(_inner) => _inner.fmt(f),
406            Self::InternalServerError(_inner) => _inner.fmt(f),
407            Self::InvalidDocument(_inner) => _inner.fmt(f),
408            Self::InvalidDocumentVersion(_inner) => _inner.fmt(f),
409            Self::InvalidInstanceId(_inner) => _inner.fmt(f),
410            Self::InvalidNotificationConfig(_inner) => _inner.fmt(f),
411            Self::InvalidOutputFolder(_inner) => _inner.fmt(f),
412            Self::InvalidParameters(_inner) => _inner.fmt(f),
413            Self::InvalidRole(_inner) => _inner.fmt(f),
414            Self::MaxDocumentSizeExceeded(_inner) => _inner.fmt(f),
415            Self::UnsupportedPlatformType(_inner) => _inner.fmt(f),
416            Self::Unhandled(_inner) => {
417                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
418                    write!(f, "unhandled error ({code})")
419                } else {
420                    f.write_str("unhandled error")
421                }
422            }
423        }
424    }
425}
426impl ::aws_smithy_types::retry::ProvideErrorKind for SendCommandError {
427    fn code(&self) -> ::std::option::Option<&str> {
428        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
429    }
430    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
431        ::std::option::Option::None
432    }
433}
434impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for SendCommandError {
435    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
436        match self {
437            Self::DuplicateInstanceId(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
438            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
439            Self::InvalidDocument(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
440            Self::InvalidDocumentVersion(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
441            Self::InvalidInstanceId(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
442            Self::InvalidNotificationConfig(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
443            Self::InvalidOutputFolder(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
444            Self::InvalidParameters(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
445            Self::InvalidRole(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
446            Self::MaxDocumentSizeExceeded(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
447            Self::UnsupportedPlatformType(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
448            Self::Unhandled(_inner) => &_inner.meta,
449        }
450    }
451}
452impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for SendCommandError {
453    fn create_unhandled_error(
454        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
455        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
456    ) -> Self {
457        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
458            source,
459            meta: meta.unwrap_or_default(),
460        })
461    }
462}
463impl ::aws_types::request_id::RequestId for crate::operation::send_command::SendCommandError {
464    fn request_id(&self) -> Option<&str> {
465        self.meta().request_id()
466    }
467}
468
469pub use crate::operation::send_command::_send_command_output::SendCommandOutput;
470
471pub use crate::operation::send_command::_send_command_input::SendCommandInput;
472
473mod _send_command_input;
474
475mod _send_command_output;
476
477/// Builders
478pub mod builders;