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            #[allow(clippy::uninlined_format_args)]
182            fn uri_base(
183                _input: &crate::operation::send_command::SendCommandInput,
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::send_command::SendCommandInput,
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                "AmazonSSM.SendCommand",
205            );
206            builder
207        };
208        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_send_command::ser_send_command_input(&input)?);
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 SendCommandEndpointParamsInterceptor;
218
219impl ::aws_smithy_runtime_api::client::interceptors::Intercept for SendCommandEndpointParamsInterceptor {
220    fn name(&self) -> &'static str {
221        "SendCommandEndpointParamsInterceptor"
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::<SendCommandInput>()
237            .ok_or("failed to downcast to SendCommandInput")?;
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 `SendCommandError` operation.
258#[non_exhaustive]
259#[derive(::std::fmt::Debug)]
260pub enum SendCommandError {
261    /// <p>You can't specify a managed node ID in more than one association.</p>
262    DuplicateInstanceId(crate::types::error::DuplicateInstanceId),
263    /// <p>An error occurred on the server side.</p>
264    InternalServerError(crate::types::error::InternalServerError),
265    /// <p>The specified SSM document doesn't exist.</p>
266    InvalidDocument(crate::types::error::InvalidDocument),
267    /// <p>The document version isn't valid or doesn't exist.</p>
268    InvalidDocumentVersion(crate::types::error::InvalidDocumentVersion),
269    /// <p>The following problems can cause this exception:</p>
270    /// <ul>
271    /// <li>
272    /// <p>You don't have permission to access the managed node.</p></li>
273    /// <li>
274    /// <p>Amazon Web Services Systems Manager Agent (SSM Agent) isn't running. Verify that SSM Agent is running.</p></li>
275    /// <li>
276    /// <p>SSM Agent isn't registered with the SSM endpoint. Try reinstalling SSM Agent.</p></li>
277    /// <li>
278    /// <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>
279    /// </ul>
280    InvalidInstanceId(crate::types::error::InvalidInstanceId),
281    /// <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>
282    InvalidNotificationConfig(crate::types::error::InvalidNotificationConfig),
283    /// <p>The S3 bucket doesn't exist.</p>
284    InvalidOutputFolder(crate::types::error::InvalidOutputFolder),
285    /// <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>
286    InvalidParameters(crate::types::error::InvalidParameters),
287    /// <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>
288    InvalidRole(crate::types::error::InvalidRole),
289    /// <p>The size limit of a document is 64 KB.</p>
290    MaxDocumentSizeExceeded(crate::types::error::MaxDocumentSizeExceeded),
291    /// <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>
292    UnsupportedPlatformType(crate::types::error::UnsupportedPlatformType),
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-SendCommandError) for what information is available for the error.")]
300    Unhandled(crate::error::sealed_unhandled::Unhandled),
301}
302impl SendCommandError {
303    /// Creates the `SendCommandError::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 `SendCommandError::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::DuplicateInstanceId(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
327            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
328            Self::InvalidDocument(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
329            Self::InvalidDocumentVersion(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
330            Self::InvalidInstanceId(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
331            Self::InvalidNotificationConfig(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
332            Self::InvalidOutputFolder(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
333            Self::InvalidParameters(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
334            Self::InvalidRole(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
335            Self::MaxDocumentSizeExceeded(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
336            Self::UnsupportedPlatformType(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
337            Self::Unhandled(e) => &e.meta,
338        }
339    }
340    /// Returns `true` if the error kind is `SendCommandError::DuplicateInstanceId`.
341    pub fn is_duplicate_instance_id(&self) -> bool {
342        matches!(self, Self::DuplicateInstanceId(_))
343    }
344    /// Returns `true` if the error kind is `SendCommandError::InternalServerError`.
345    pub fn is_internal_server_error(&self) -> bool {
346        matches!(self, Self::InternalServerError(_))
347    }
348    /// Returns `true` if the error kind is `SendCommandError::InvalidDocument`.
349    pub fn is_invalid_document(&self) -> bool {
350        matches!(self, Self::InvalidDocument(_))
351    }
352    /// Returns `true` if the error kind is `SendCommandError::InvalidDocumentVersion`.
353    pub fn is_invalid_document_version(&self) -> bool {
354        matches!(self, Self::InvalidDocumentVersion(_))
355    }
356    /// Returns `true` if the error kind is `SendCommandError::InvalidInstanceId`.
357    pub fn is_invalid_instance_id(&self) -> bool {
358        matches!(self, Self::InvalidInstanceId(_))
359    }
360    /// Returns `true` if the error kind is `SendCommandError::InvalidNotificationConfig`.
361    pub fn is_invalid_notification_config(&self) -> bool {
362        matches!(self, Self::InvalidNotificationConfig(_))
363    }
364    /// Returns `true` if the error kind is `SendCommandError::InvalidOutputFolder`.
365    pub fn is_invalid_output_folder(&self) -> bool {
366        matches!(self, Self::InvalidOutputFolder(_))
367    }
368    /// Returns `true` if the error kind is `SendCommandError::InvalidParameters`.
369    pub fn is_invalid_parameters(&self) -> bool {
370        matches!(self, Self::InvalidParameters(_))
371    }
372    /// Returns `true` if the error kind is `SendCommandError::InvalidRole`.
373    pub fn is_invalid_role(&self) -> bool {
374        matches!(self, Self::InvalidRole(_))
375    }
376    /// Returns `true` if the error kind is `SendCommandError::MaxDocumentSizeExceeded`.
377    pub fn is_max_document_size_exceeded(&self) -> bool {
378        matches!(self, Self::MaxDocumentSizeExceeded(_))
379    }
380    /// Returns `true` if the error kind is `SendCommandError::UnsupportedPlatformType`.
381    pub fn is_unsupported_platform_type(&self) -> bool {
382        matches!(self, Self::UnsupportedPlatformType(_))
383    }
384}
385impl ::std::error::Error for SendCommandError {
386    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
387        match self {
388            Self::DuplicateInstanceId(_inner) => ::std::option::Option::Some(_inner),
389            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
390            Self::InvalidDocument(_inner) => ::std::option::Option::Some(_inner),
391            Self::InvalidDocumentVersion(_inner) => ::std::option::Option::Some(_inner),
392            Self::InvalidInstanceId(_inner) => ::std::option::Option::Some(_inner),
393            Self::InvalidNotificationConfig(_inner) => ::std::option::Option::Some(_inner),
394            Self::InvalidOutputFolder(_inner) => ::std::option::Option::Some(_inner),
395            Self::InvalidParameters(_inner) => ::std::option::Option::Some(_inner),
396            Self::InvalidRole(_inner) => ::std::option::Option::Some(_inner),
397            Self::MaxDocumentSizeExceeded(_inner) => ::std::option::Option::Some(_inner),
398            Self::UnsupportedPlatformType(_inner) => ::std::option::Option::Some(_inner),
399            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
400        }
401    }
402}
403impl ::std::fmt::Display for SendCommandError {
404    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
405        match self {
406            Self::DuplicateInstanceId(_inner) => _inner.fmt(f),
407            Self::InternalServerError(_inner) => _inner.fmt(f),
408            Self::InvalidDocument(_inner) => _inner.fmt(f),
409            Self::InvalidDocumentVersion(_inner) => _inner.fmt(f),
410            Self::InvalidInstanceId(_inner) => _inner.fmt(f),
411            Self::InvalidNotificationConfig(_inner) => _inner.fmt(f),
412            Self::InvalidOutputFolder(_inner) => _inner.fmt(f),
413            Self::InvalidParameters(_inner) => _inner.fmt(f),
414            Self::InvalidRole(_inner) => _inner.fmt(f),
415            Self::MaxDocumentSizeExceeded(_inner) => _inner.fmt(f),
416            Self::UnsupportedPlatformType(_inner) => _inner.fmt(f),
417            Self::Unhandled(_inner) => {
418                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
419                    write!(f, "unhandled error ({code})")
420                } else {
421                    f.write_str("unhandled error")
422                }
423            }
424        }
425    }
426}
427impl ::aws_smithy_types::retry::ProvideErrorKind for SendCommandError {
428    fn code(&self) -> ::std::option::Option<&str> {
429        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
430    }
431    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
432        ::std::option::Option::None
433    }
434}
435impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for SendCommandError {
436    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
437        match self {
438            Self::DuplicateInstanceId(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
439            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
440            Self::InvalidDocument(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
441            Self::InvalidDocumentVersion(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
442            Self::InvalidInstanceId(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
443            Self::InvalidNotificationConfig(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
444            Self::InvalidOutputFolder(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
445            Self::InvalidParameters(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
446            Self::InvalidRole(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
447            Self::MaxDocumentSizeExceeded(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
448            Self::UnsupportedPlatformType(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
449            Self::Unhandled(_inner) => &_inner.meta,
450        }
451    }
452}
453impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for SendCommandError {
454    fn create_unhandled_error(
455        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
456        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
457    ) -> Self {
458        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
459            source,
460            meta: meta.unwrap_or_default(),
461        })
462    }
463}
464impl ::aws_types::request_id::RequestId for crate::operation::send_command::SendCommandError {
465    fn request_id(&self) -> Option<&str> {
466        self.meta().request_id()
467    }
468}
469
470pub use crate::operation::send_command::_send_command_output::SendCommandOutput;
471
472pub use crate::operation::send_command::_send_command_input::SendCommandInput;
473
474mod _send_command_input;
475
476mod _send_command_output;
477
478/// Builders
479pub mod builders;