Skip to main content

aws_sdk_cloudtrail/operation/
create_trail.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `CreateTrail`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct CreateTrail;
6impl CreateTrail {
7    /// Creates a new `CreateTrail`
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_trail::CreateTrailInput,
14    ) -> ::std::result::Result<
15        crate::operation::create_trail::CreateTrailOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::create_trail::CreateTrailError,
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_trail::CreateTrailError>()
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_trail::CreateTrailOutput>()
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_trail::CreateTrailInput,
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("CloudTrail", "CreateTrail", 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                "CloudTrail.CreateTrail",
59                "rpc.service" = "CloudTrail",
60                "rpc.method" = "CreateTrail",
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 CreateTrail {
88    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
89        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("CreateTrail");
90
91        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
92            CreateTrailRequestSerializer,
93        ));
94        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
95            CreateTrailResponseDeserializer,
96        ));
97
98        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
99            crate::config::auth::Params::builder()
100                .operation_name("CreateTrail")
101                .build()
102                .expect("required fields set"),
103        ));
104
105        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("CreateTrail", "CloudTrail"));
106        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
107        signing_options.double_uri_encode = true;
108        signing_options.content_sha256_header = false;
109        signing_options.normalize_uri_path = true;
110        signing_options.payload_override = None;
111
112        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
113            signing_options,
114            ..::std::default::Default::default()
115        });
116
117        ::std::option::Option::Some(cfg.freeze())
118    }
119
120    fn runtime_components(
121        &self,
122        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
123    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
124        #[allow(unused_mut)]
125        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("CreateTrail")
126            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
127                CreateTrailTelemetryInputCaptureInterceptor,
128            ))
129            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
130                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
131            ))
132            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
133                CreateTrailEndpointParamsInterceptor,
134            ))
135            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
136                crate::operation::create_trail::CreateTrailError,
137            >::new())
138            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
139                crate::operation::create_trail::CreateTrailError,
140            >::new())
141            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
142                crate::operation::create_trail::CreateTrailError,
143            >::new());
144
145        ::std::borrow::Cow::Owned(rcb)
146    }
147}
148
149#[derive(Debug)]
150struct CreateTrailTelemetryInputCaptureInterceptor;
151
152#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
153impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateTrailTelemetryInputCaptureInterceptor {
154    fn name(&self) -> &'static str {
155        "CreateTrailTelemetryInputCaptureInterceptor"
156    }
157
158    fn read_before_execution(
159        &self,
160        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
161            '_,
162            ::aws_smithy_runtime_api::client::interceptors::context::Input,
163            ::aws_smithy_runtime_api::client::interceptors::context::Output,
164            ::aws_smithy_runtime_api::client::interceptors::context::Error,
165        >,
166        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
167    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
168        // Nothing to do unless the customer opted in by naming members to record.
169        let ::std::option::Option::Some(requested) = cfg
170            .load::<::aws_smithy_types::telemetry::RequestedTelemetryAttributes>()
171            .filter(|r| !r.is_empty())
172        else {
173            return ::std::result::Result::Ok(());
174        };
175
176        let ::std::option::Option::Some(input) = context.input().downcast_ref::<CreateTrailInput>() else {
177            // A mismatched input is not this interceptor's concern; skip quietly.
178            return ::std::result::Result::Ok(());
179        };
180
181        let mut captured = ::aws_smithy_types::telemetry::CapturedTelemetryAttributes::default();
182        if requested.should_capture("Name") {
183            if let ::std::option::Option::Some(value) = input.name.as_deref() {
184                captured.insert("Name", value);
185            }
186        }
187        if requested.should_capture("S3BucketName") {
188            if let ::std::option::Option::Some(value) = input.s3_bucket_name.as_deref() {
189                captured.insert("S3BucketName", value);
190            }
191        }
192        if requested.should_capture("S3KeyPrefix") {
193            if let ::std::option::Option::Some(value) = input.s3_key_prefix.as_deref() {
194                captured.insert("S3KeyPrefix", value);
195            }
196        }
197        if requested.should_capture("SnsTopicName") {
198            if let ::std::option::Option::Some(value) = input.sns_topic_name.as_deref() {
199                captured.insert("SnsTopicName", value);
200            }
201        }
202        if requested.should_capture("CloudWatchLogsLogGroupArn") {
203            if let ::std::option::Option::Some(value) = input.cloud_watch_logs_log_group_arn.as_deref() {
204                captured.insert("CloudWatchLogsLogGroupArn", value);
205            }
206        }
207        if requested.should_capture("CloudWatchLogsRoleArn") {
208            if let ::std::option::Option::Some(value) = input.cloud_watch_logs_role_arn.as_deref() {
209                captured.insert("CloudWatchLogsRoleArn", value);
210            }
211        }
212        if requested.should_capture("KmsKeyId") {
213            if let ::std::option::Option::Some(value) = input.kms_key_id.as_deref() {
214                captured.insert("KmsKeyId", value);
215            }
216        }
217
218        cfg.interceptor_state().store_put(captured);
219        ::std::result::Result::Ok(())
220    }
221}
222#[derive(Debug)]
223struct CreateTrailResponseDeserializer;
224impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for CreateTrailResponseDeserializer {
225    fn deserialize_nonstreaming_with_config(
226        &self,
227        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
228        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
229    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
230        let (success, status) = (response.status().is_success(), response.status().as_u16());
231        let headers = response.headers();
232        let body = response.body().bytes().expect("body loaded");
233        #[allow(unused_mut)]
234        let mut force_error = false;
235        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
236        let parse_result = if !success && status != 200 || force_error {
237            crate::protocol_serde::shape_create_trail::de_create_trail_http_error(status, headers, body)
238        } else {
239            crate::protocol_serde::shape_create_trail::de_create_trail_http_response(status, headers, body)
240        };
241        crate::protocol_serde::type_erase_result(parse_result)
242    }
243}
244#[derive(Debug)]
245struct CreateTrailRequestSerializer;
246impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for CreateTrailRequestSerializer {
247    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
248    fn serialize_input(
249        &self,
250        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
251        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
252    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
253        let input = input
254            .downcast::<crate::operation::create_trail::CreateTrailInput>()
255            .expect("correct type");
256        let _header_serialization_settings = _cfg
257            .load::<crate::serialization_settings::HeaderSerializationSettings>()
258            .cloned()
259            .unwrap_or_default();
260        let mut request_builder = {
261            #[allow(clippy::uninlined_format_args)]
262            fn uri_base(
263                _input: &crate::operation::create_trail::CreateTrailInput,
264                output: &mut ::std::string::String,
265            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
266                use ::std::fmt::Write as _;
267                ::std::write!(output, "/").expect("formatting should succeed");
268                ::std::result::Result::Ok(())
269            }
270            #[allow(clippy::unnecessary_wraps)]
271            fn update_http_builder(
272                input: &crate::operation::create_trail::CreateTrailInput,
273                builder: ::http_1x::request::Builder,
274            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
275                let mut uri = ::std::string::String::new();
276                uri_base(input, &mut uri)?;
277                ::std::result::Result::Ok(builder.method("POST").uri(uri))
278            }
279            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
280            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
281            builder = _header_serialization_settings.set_default_header(
282                builder,
283                ::http_1x::header::HeaderName::from_static("x-amz-target"),
284                "CloudTrail_20131101.CreateTrail",
285            );
286            builder
287        };
288        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_create_trail::ser_create_trail_input(&input)?);
289        if let Some(content_length) = body.content_length() {
290            let content_length = content_length.to_string();
291            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
292        }
293        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
294    }
295}
296#[derive(Debug)]
297struct CreateTrailEndpointParamsInterceptor;
298
299#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
300impl ::aws_smithy_runtime_api::client::interceptors::Intercept for CreateTrailEndpointParamsInterceptor {
301    fn name(&self) -> &'static str {
302        "CreateTrailEndpointParamsInterceptor"
303    }
304
305    fn read_before_execution(
306        &self,
307        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
308            '_,
309            ::aws_smithy_runtime_api::client::interceptors::context::Input,
310            ::aws_smithy_runtime_api::client::interceptors::context::Output,
311            ::aws_smithy_runtime_api::client::interceptors::context::Error,
312        >,
313        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
314    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
315        let _input = context
316            .input()
317            .downcast_ref::<CreateTrailInput>()
318            .ok_or("failed to downcast to CreateTrailInput")?;
319
320        let params = crate::config::endpoint::Params::builder()
321            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
322            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
323            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
324            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
325            .build()
326            .map_err(|err| {
327                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
328            })?;
329        cfg.interceptor_state()
330            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
331        ::std::result::Result::Ok(())
332    }
333}
334
335// The get_* functions below are generated from JMESPath expressions in the
336// operationContextParams trait. They target the operation's input shape.
337
338/// Error type for the `CreateTrailError` operation.
339#[non_exhaustive]
340#[derive(::std::fmt::Debug)]
341pub enum CreateTrailError {
342    /// <p>This exception is thrown when trusted access has not been enabled between CloudTrail and Organizations. For more information, see <a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services.html#orgs_how-to-enable-disable-trusted-access">How to enable or disable trusted access</a> in the <i>Organizations User Guide</i> and <a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-an-organizational-trail-prepare.html">Prepare For Creating a Trail For Your Organization</a> in the <i>CloudTrail User Guide</i>.</p>
343    CloudTrailAccessNotEnabledException(crate::types::error::CloudTrailAccessNotEnabledException),
344    /// <p>This exception is thrown when a call results in the <code>InvalidClientTokenId</code> error code. This can occur when you are creating or updating a trail to send notifications to an Amazon SNS topic that is in a suspended Amazon Web Services account.</p>
345    CloudTrailInvalidClientTokenIdException(crate::types::error::CloudTrailInvalidClientTokenIdException),
346    /// <p>Cannot set a CloudWatch Logs delivery for this Region.</p>
347    CloudWatchLogsDeliveryUnavailableException(crate::types::error::CloudWatchLogsDeliveryUnavailableException),
348    /// <p>This exception is thrown when the specified resource is not ready for an operation. This can occur when you try to run an operation on a resource before CloudTrail has time to fully load the resource, or because another operation is modifying the resource. If this exception occurs, wait a few minutes, and then try the operation again.</p>
349    ConflictException(crate::types::error::ConflictException),
350    /// <p>This exception is thrown when the IAM identity that is used to create the organization resource lacks one or more required permissions for creating an organization resource in a required service.</p>
351    InsufficientDependencyServiceAccessPermissionException(crate::types::error::InsufficientDependencyServiceAccessPermissionException),
352    /// <p>For the <code>CreateTrail</code> <code>PutInsightSelectors</code>, <code>UpdateTrail</code>, <code>StartQuery</code>, and <code>StartImport</code> operations, this exception is thrown when the policy on the S3 bucket or KMS key does not have sufficient permissions for the operation.</p>
353    /// <p>For all other operations, this exception is thrown when the policy for the KMS key does not have sufficient permissions for the operation.</p>
354    InsufficientEncryptionPolicyException(crate::types::error::InsufficientEncryptionPolicyException),
355    /// <p>This exception is thrown when the policy on the S3 bucket is not sufficient.</p>
356    InsufficientS3BucketPolicyException(crate::types::error::InsufficientS3BucketPolicyException),
357    /// <p>This exception is thrown when the policy on the Amazon SNS topic is not sufficient.</p>
358    InsufficientSnsTopicPolicyException(crate::types::error::InsufficientSnsTopicPolicyException),
359    /// <p>This exception is thrown when the provided CloudWatch Logs log group is not valid.</p>
360    InvalidCloudWatchLogsLogGroupArnException(crate::types::error::InvalidCloudWatchLogsLogGroupArnException),
361    /// <p>This exception is thrown when the provided role is not valid.</p>
362    InvalidCloudWatchLogsRoleArnException(crate::types::error::InvalidCloudWatchLogsRoleArnException),
363    /// <p>This exception is thrown when the KMS key ARN is not valid.</p>
364    InvalidKmsKeyIdException(crate::types::error::InvalidKmsKeyIdException),
365    /// <p>This exception is thrown when the combination of parameters provided is not valid.</p>
366    InvalidParameterCombinationException(crate::types::error::InvalidParameterCombinationException),
367    /// <p>The request includes a parameter that is not valid.</p>
368    InvalidParameterException(crate::types::error::InvalidParameterException),
369    /// <p>This exception is thrown when the provided S3 bucket name is not valid.</p>
370    InvalidS3BucketNameException(crate::types::error::InvalidS3BucketNameException),
371    /// <p>This exception is thrown when the provided S3 prefix is not valid.</p>
372    InvalidS3PrefixException(crate::types::error::InvalidS3PrefixException),
373    /// <p>This exception is thrown when the provided SNS topic name is not valid.</p>
374    InvalidSnsTopicNameException(crate::types::error::InvalidSnsTopicNameException),
375    /// <p>This exception is thrown when the specified tag key or values are not valid. It can also occur if there are duplicate tags or too many tags on the resource.</p>
376    InvalidTagParameterException(crate::types::error::InvalidTagParameterException),
377    /// <p>This exception is thrown when the provided trail name is not valid. Trail names must meet the following requirements:</p>
378    /// <ul>
379    /// <li>
380    /// <p>Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.), underscores (_), or dashes (-)</p></li>
381    /// <li>
382    /// <p>Start with a letter or number, and end with a letter or number</p></li>
383    /// <li>
384    /// <p>Be between 3 and 128 characters</p></li>
385    /// <li>
386    /// <p>Have no adjacent periods, underscores or dashes. Names like <code>my-_namespace</code> and <code>my--namespace</code> are not valid.</p></li>
387    /// <li>
388    /// <p>Not be in IP address format (for example, 192.168.5.4)</p></li>
389    /// </ul>
390    InvalidTrailNameException(crate::types::error::InvalidTrailNameException),
391    /// <p>This exception is thrown when there is an issue with the specified KMS key and the trail or event data store can't be updated.</p>
392    KmsException(crate::types::error::KmsException),
393    /// <p>This exception is no longer in use.</p>
394    #[deprecated]
395    KmsKeyDisabledException(crate::types::error::KmsKeyDisabledException),
396    /// <p>This exception is thrown when the KMS key does not exist, when the S3 bucket and the KMS key are not in the same Region, or when the KMS key associated with the Amazon SNS topic either does not exist or is not in the same Region.</p>
397    KmsKeyNotFoundException(crate::types::error::KmsKeyNotFoundException),
398    /// <p>This exception is thrown when the maximum number of trails is reached.</p>
399    MaximumNumberOfTrailsExceededException(crate::types::error::MaximumNumberOfTrailsExceededException),
400    /// <p>This exception is thrown when the management account does not have a service-linked role.</p>
401    NoManagementAccountSlrExistsException(crate::types::error::NoManagementAccountSlrExistsException),
402    /// <p>This exception is thrown when the Amazon Web Services account making the request to create or update an organization trail or event data store is not the management account for an organization in Organizations. For more information, see <a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/creating-an-organizational-trail-prepare.html">Prepare For Creating a Trail For Your Organization</a> or <a href="https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake-organizations.html">Organization event data stores</a>.</p>
403    NotOrganizationMasterAccountException(crate::types::error::NotOrganizationMasterAccountException),
404    /// <p>This exception is thrown when the requested operation is not permitted.</p>
405    OperationNotPermittedException(crate::types::error::OperationNotPermittedException),
406    /// <p>This exception is thrown when Organizations is not configured to support all features. All features must be enabled in Organizations to support creating an organization trail or event data store.</p>
407    OrganizationNotInAllFeaturesModeException(crate::types::error::OrganizationNotInAllFeaturesModeException),
408    /// <p>This exception is thrown when the request is made from an Amazon Web Services account that is not a member of an organization. To make this request, sign in using the credentials of an account that belongs to an organization.</p>
409    OrganizationsNotInUseException(crate::types::error::OrganizationsNotInUseException),
410    /// <p>This exception is thrown when the specified S3 bucket does not exist.</p>
411    S3BucketDoesNotExistException(crate::types::error::S3BucketDoesNotExistException),
412    /// <p>The number of tags per trail, event data store, dashboard, or channel has exceeded the permitted amount. Currently, the limit is 50.</p>
413    TagsLimitExceededException(crate::types::error::TagsLimitExceededException),
414    /// <p>This exception is thrown when the request rate exceeds the limit.</p>
415    ThrottlingException(crate::types::error::ThrottlingException),
416    /// <p>This exception is thrown when the specified trail already exists.</p>
417    TrailAlreadyExistsException(crate::types::error::TrailAlreadyExistsException),
418    /// <p>This exception is no longer in use.</p>
419    TrailNotProvidedException(crate::types::error::TrailNotProvidedException),
420    /// <p>This exception is thrown when the requested operation is not supported.</p>
421    UnsupportedOperationException(crate::types::error::UnsupportedOperationException),
422    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
423    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
424    variable wildcard pattern and check `.code()`:
425     \
426    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
427     \
428    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-CreateTrailError) for what information is available for the error.")]
429    Unhandled(crate::error::sealed_unhandled::Unhandled),
430}
431impl CreateTrailError {
432    /// Creates the `CreateTrailError::Unhandled` variant from any error type.
433    pub fn unhandled(
434        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
435    ) -> Self {
436        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
437            source: err.into(),
438            meta: ::std::default::Default::default(),
439        })
440    }
441
442    /// Creates the `CreateTrailError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
443    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
444        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
445            source: err.clone().into(),
446            meta: err,
447        })
448    }
449    ///
450    /// Returns error metadata, which includes the error code, message,
451    /// request ID, and potentially additional information.
452    ///
453    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
454        match self {
455            Self::CloudTrailAccessNotEnabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
456            Self::CloudTrailInvalidClientTokenIdException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
457            Self::CloudWatchLogsDeliveryUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
458            Self::ConflictException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
459            Self::InsufficientDependencyServiceAccessPermissionException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
460            Self::InsufficientEncryptionPolicyException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
461            Self::InsufficientS3BucketPolicyException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
462            Self::InsufficientSnsTopicPolicyException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
463            Self::InvalidCloudWatchLogsLogGroupArnException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
464            Self::InvalidCloudWatchLogsRoleArnException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
465            Self::InvalidKmsKeyIdException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
466            Self::InvalidParameterCombinationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
467            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
468            Self::InvalidS3BucketNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
469            Self::InvalidS3PrefixException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
470            Self::InvalidSnsTopicNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
471            Self::InvalidTagParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
472            Self::InvalidTrailNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
473            Self::KmsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
474            Self::KmsKeyDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
475            Self::KmsKeyNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
476            Self::MaximumNumberOfTrailsExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
477            Self::NoManagementAccountSlrExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
478            Self::NotOrganizationMasterAccountException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
479            Self::OperationNotPermittedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
480            Self::OrganizationNotInAllFeaturesModeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
481            Self::OrganizationsNotInUseException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
482            Self::S3BucketDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
483            Self::TagsLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
484            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
485            Self::TrailAlreadyExistsException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
486            Self::TrailNotProvidedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
487            Self::UnsupportedOperationException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
488            Self::Unhandled(e) => &e.meta,
489        }
490    }
491    /// Returns `true` if the error kind is `CreateTrailError::CloudTrailAccessNotEnabledException`.
492    pub fn is_cloud_trail_access_not_enabled_exception(&self) -> bool {
493        matches!(self, Self::CloudTrailAccessNotEnabledException(_))
494    }
495    /// Returns `true` if the error kind is `CreateTrailError::CloudTrailInvalidClientTokenIdException`.
496    pub fn is_cloud_trail_invalid_client_token_id_exception(&self) -> bool {
497        matches!(self, Self::CloudTrailInvalidClientTokenIdException(_))
498    }
499    /// Returns `true` if the error kind is `CreateTrailError::CloudWatchLogsDeliveryUnavailableException`.
500    pub fn is_cloud_watch_logs_delivery_unavailable_exception(&self) -> bool {
501        matches!(self, Self::CloudWatchLogsDeliveryUnavailableException(_))
502    }
503    /// Returns `true` if the error kind is `CreateTrailError::ConflictException`.
504    pub fn is_conflict_exception(&self) -> bool {
505        matches!(self, Self::ConflictException(_))
506    }
507    /// Returns `true` if the error kind is `CreateTrailError::InsufficientDependencyServiceAccessPermissionException`.
508    pub fn is_insufficient_dependency_service_access_permission_exception(&self) -> bool {
509        matches!(self, Self::InsufficientDependencyServiceAccessPermissionException(_))
510    }
511    /// Returns `true` if the error kind is `CreateTrailError::InsufficientEncryptionPolicyException`.
512    pub fn is_insufficient_encryption_policy_exception(&self) -> bool {
513        matches!(self, Self::InsufficientEncryptionPolicyException(_))
514    }
515    /// Returns `true` if the error kind is `CreateTrailError::InsufficientS3BucketPolicyException`.
516    pub fn is_insufficient_s3_bucket_policy_exception(&self) -> bool {
517        matches!(self, Self::InsufficientS3BucketPolicyException(_))
518    }
519    /// Returns `true` if the error kind is `CreateTrailError::InsufficientSnsTopicPolicyException`.
520    pub fn is_insufficient_sns_topic_policy_exception(&self) -> bool {
521        matches!(self, Self::InsufficientSnsTopicPolicyException(_))
522    }
523    /// Returns `true` if the error kind is `CreateTrailError::InvalidCloudWatchLogsLogGroupArnException`.
524    pub fn is_invalid_cloud_watch_logs_log_group_arn_exception(&self) -> bool {
525        matches!(self, Self::InvalidCloudWatchLogsLogGroupArnException(_))
526    }
527    /// Returns `true` if the error kind is `CreateTrailError::InvalidCloudWatchLogsRoleArnException`.
528    pub fn is_invalid_cloud_watch_logs_role_arn_exception(&self) -> bool {
529        matches!(self, Self::InvalidCloudWatchLogsRoleArnException(_))
530    }
531    /// Returns `true` if the error kind is `CreateTrailError::InvalidKmsKeyIdException`.
532    pub fn is_invalid_kms_key_id_exception(&self) -> bool {
533        matches!(self, Self::InvalidKmsKeyIdException(_))
534    }
535    /// Returns `true` if the error kind is `CreateTrailError::InvalidParameterCombinationException`.
536    pub fn is_invalid_parameter_combination_exception(&self) -> bool {
537        matches!(self, Self::InvalidParameterCombinationException(_))
538    }
539    /// Returns `true` if the error kind is `CreateTrailError::InvalidParameterException`.
540    pub fn is_invalid_parameter_exception(&self) -> bool {
541        matches!(self, Self::InvalidParameterException(_))
542    }
543    /// Returns `true` if the error kind is `CreateTrailError::InvalidS3BucketNameException`.
544    pub fn is_invalid_s3_bucket_name_exception(&self) -> bool {
545        matches!(self, Self::InvalidS3BucketNameException(_))
546    }
547    /// Returns `true` if the error kind is `CreateTrailError::InvalidS3PrefixException`.
548    pub fn is_invalid_s3_prefix_exception(&self) -> bool {
549        matches!(self, Self::InvalidS3PrefixException(_))
550    }
551    /// Returns `true` if the error kind is `CreateTrailError::InvalidSnsTopicNameException`.
552    pub fn is_invalid_sns_topic_name_exception(&self) -> bool {
553        matches!(self, Self::InvalidSnsTopicNameException(_))
554    }
555    /// Returns `true` if the error kind is `CreateTrailError::InvalidTagParameterException`.
556    pub fn is_invalid_tag_parameter_exception(&self) -> bool {
557        matches!(self, Self::InvalidTagParameterException(_))
558    }
559    /// Returns `true` if the error kind is `CreateTrailError::InvalidTrailNameException`.
560    pub fn is_invalid_trail_name_exception(&self) -> bool {
561        matches!(self, Self::InvalidTrailNameException(_))
562    }
563    /// Returns `true` if the error kind is `CreateTrailError::KmsException`.
564    pub fn is_kms_exception(&self) -> bool {
565        matches!(self, Self::KmsException(_))
566    }
567    /// Returns `true` if the error kind is `CreateTrailError::KmsKeyDisabledException`.
568    pub fn is_kms_key_disabled_exception(&self) -> bool {
569        matches!(self, Self::KmsKeyDisabledException(_))
570    }
571    /// Returns `true` if the error kind is `CreateTrailError::KmsKeyNotFoundException`.
572    pub fn is_kms_key_not_found_exception(&self) -> bool {
573        matches!(self, Self::KmsKeyNotFoundException(_))
574    }
575    /// Returns `true` if the error kind is `CreateTrailError::MaximumNumberOfTrailsExceededException`.
576    pub fn is_maximum_number_of_trails_exceeded_exception(&self) -> bool {
577        matches!(self, Self::MaximumNumberOfTrailsExceededException(_))
578    }
579    /// Returns `true` if the error kind is `CreateTrailError::NoManagementAccountSlrExistsException`.
580    pub fn is_no_management_account_slr_exists_exception(&self) -> bool {
581        matches!(self, Self::NoManagementAccountSlrExistsException(_))
582    }
583    /// Returns `true` if the error kind is `CreateTrailError::NotOrganizationMasterAccountException`.
584    pub fn is_not_organization_master_account_exception(&self) -> bool {
585        matches!(self, Self::NotOrganizationMasterAccountException(_))
586    }
587    /// Returns `true` if the error kind is `CreateTrailError::OperationNotPermittedException`.
588    pub fn is_operation_not_permitted_exception(&self) -> bool {
589        matches!(self, Self::OperationNotPermittedException(_))
590    }
591    /// Returns `true` if the error kind is `CreateTrailError::OrganizationNotInAllFeaturesModeException`.
592    pub fn is_organization_not_in_all_features_mode_exception(&self) -> bool {
593        matches!(self, Self::OrganizationNotInAllFeaturesModeException(_))
594    }
595    /// Returns `true` if the error kind is `CreateTrailError::OrganizationsNotInUseException`.
596    pub fn is_organizations_not_in_use_exception(&self) -> bool {
597        matches!(self, Self::OrganizationsNotInUseException(_))
598    }
599    /// Returns `true` if the error kind is `CreateTrailError::S3BucketDoesNotExistException`.
600    pub fn is_s3_bucket_does_not_exist_exception(&self) -> bool {
601        matches!(self, Self::S3BucketDoesNotExistException(_))
602    }
603    /// Returns `true` if the error kind is `CreateTrailError::TagsLimitExceededException`.
604    pub fn is_tags_limit_exceeded_exception(&self) -> bool {
605        matches!(self, Self::TagsLimitExceededException(_))
606    }
607    /// Returns `true` if the error kind is `CreateTrailError::ThrottlingException`.
608    pub fn is_throttling_exception(&self) -> bool {
609        matches!(self, Self::ThrottlingException(_))
610    }
611    /// Returns `true` if the error kind is `CreateTrailError::TrailAlreadyExistsException`.
612    pub fn is_trail_already_exists_exception(&self) -> bool {
613        matches!(self, Self::TrailAlreadyExistsException(_))
614    }
615    /// Returns `true` if the error kind is `CreateTrailError::TrailNotProvidedException`.
616    pub fn is_trail_not_provided_exception(&self) -> bool {
617        matches!(self, Self::TrailNotProvidedException(_))
618    }
619    /// Returns `true` if the error kind is `CreateTrailError::UnsupportedOperationException`.
620    pub fn is_unsupported_operation_exception(&self) -> bool {
621        matches!(self, Self::UnsupportedOperationException(_))
622    }
623}
624impl ::std::error::Error for CreateTrailError {
625    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
626        match self {
627            Self::CloudTrailAccessNotEnabledException(_inner) => ::std::option::Option::Some(_inner),
628            Self::CloudTrailInvalidClientTokenIdException(_inner) => ::std::option::Option::Some(_inner),
629            Self::CloudWatchLogsDeliveryUnavailableException(_inner) => ::std::option::Option::Some(_inner),
630            Self::ConflictException(_inner) => ::std::option::Option::Some(_inner),
631            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => ::std::option::Option::Some(_inner),
632            Self::InsufficientEncryptionPolicyException(_inner) => ::std::option::Option::Some(_inner),
633            Self::InsufficientS3BucketPolicyException(_inner) => ::std::option::Option::Some(_inner),
634            Self::InsufficientSnsTopicPolicyException(_inner) => ::std::option::Option::Some(_inner),
635            Self::InvalidCloudWatchLogsLogGroupArnException(_inner) => ::std::option::Option::Some(_inner),
636            Self::InvalidCloudWatchLogsRoleArnException(_inner) => ::std::option::Option::Some(_inner),
637            Self::InvalidKmsKeyIdException(_inner) => ::std::option::Option::Some(_inner),
638            Self::InvalidParameterCombinationException(_inner) => ::std::option::Option::Some(_inner),
639            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
640            Self::InvalidS3BucketNameException(_inner) => ::std::option::Option::Some(_inner),
641            Self::InvalidS3PrefixException(_inner) => ::std::option::Option::Some(_inner),
642            Self::InvalidSnsTopicNameException(_inner) => ::std::option::Option::Some(_inner),
643            Self::InvalidTagParameterException(_inner) => ::std::option::Option::Some(_inner),
644            Self::InvalidTrailNameException(_inner) => ::std::option::Option::Some(_inner),
645            Self::KmsException(_inner) => ::std::option::Option::Some(_inner),
646            Self::KmsKeyDisabledException(_inner) => ::std::option::Option::Some(_inner),
647            Self::KmsKeyNotFoundException(_inner) => ::std::option::Option::Some(_inner),
648            Self::MaximumNumberOfTrailsExceededException(_inner) => ::std::option::Option::Some(_inner),
649            Self::NoManagementAccountSlrExistsException(_inner) => ::std::option::Option::Some(_inner),
650            Self::NotOrganizationMasterAccountException(_inner) => ::std::option::Option::Some(_inner),
651            Self::OperationNotPermittedException(_inner) => ::std::option::Option::Some(_inner),
652            Self::OrganizationNotInAllFeaturesModeException(_inner) => ::std::option::Option::Some(_inner),
653            Self::OrganizationsNotInUseException(_inner) => ::std::option::Option::Some(_inner),
654            Self::S3BucketDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
655            Self::TagsLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
656            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
657            Self::TrailAlreadyExistsException(_inner) => ::std::option::Option::Some(_inner),
658            Self::TrailNotProvidedException(_inner) => ::std::option::Option::Some(_inner),
659            Self::UnsupportedOperationException(_inner) => ::std::option::Option::Some(_inner),
660            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
661        }
662    }
663}
664impl ::std::fmt::Display for CreateTrailError {
665    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
666        match self {
667            Self::CloudTrailAccessNotEnabledException(_inner) => _inner.fmt(f),
668            Self::CloudTrailInvalidClientTokenIdException(_inner) => _inner.fmt(f),
669            Self::CloudWatchLogsDeliveryUnavailableException(_inner) => _inner.fmt(f),
670            Self::ConflictException(_inner) => _inner.fmt(f),
671            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => _inner.fmt(f),
672            Self::InsufficientEncryptionPolicyException(_inner) => _inner.fmt(f),
673            Self::InsufficientS3BucketPolicyException(_inner) => _inner.fmt(f),
674            Self::InsufficientSnsTopicPolicyException(_inner) => _inner.fmt(f),
675            Self::InvalidCloudWatchLogsLogGroupArnException(_inner) => _inner.fmt(f),
676            Self::InvalidCloudWatchLogsRoleArnException(_inner) => _inner.fmt(f),
677            Self::InvalidKmsKeyIdException(_inner) => _inner.fmt(f),
678            Self::InvalidParameterCombinationException(_inner) => _inner.fmt(f),
679            Self::InvalidParameterException(_inner) => _inner.fmt(f),
680            Self::InvalidS3BucketNameException(_inner) => _inner.fmt(f),
681            Self::InvalidS3PrefixException(_inner) => _inner.fmt(f),
682            Self::InvalidSnsTopicNameException(_inner) => _inner.fmt(f),
683            Self::InvalidTagParameterException(_inner) => _inner.fmt(f),
684            Self::InvalidTrailNameException(_inner) => _inner.fmt(f),
685            Self::KmsException(_inner) => _inner.fmt(f),
686            Self::KmsKeyDisabledException(_inner) => _inner.fmt(f),
687            Self::KmsKeyNotFoundException(_inner) => _inner.fmt(f),
688            Self::MaximumNumberOfTrailsExceededException(_inner) => _inner.fmt(f),
689            Self::NoManagementAccountSlrExistsException(_inner) => _inner.fmt(f),
690            Self::NotOrganizationMasterAccountException(_inner) => _inner.fmt(f),
691            Self::OperationNotPermittedException(_inner) => _inner.fmt(f),
692            Self::OrganizationNotInAllFeaturesModeException(_inner) => _inner.fmt(f),
693            Self::OrganizationsNotInUseException(_inner) => _inner.fmt(f),
694            Self::S3BucketDoesNotExistException(_inner) => _inner.fmt(f),
695            Self::TagsLimitExceededException(_inner) => _inner.fmt(f),
696            Self::ThrottlingException(_inner) => _inner.fmt(f),
697            Self::TrailAlreadyExistsException(_inner) => _inner.fmt(f),
698            Self::TrailNotProvidedException(_inner) => _inner.fmt(f),
699            Self::UnsupportedOperationException(_inner) => _inner.fmt(f),
700            Self::Unhandled(_inner) => {
701                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
702                    write!(f, "unhandled error ({code})")
703                } else {
704                    f.write_str("unhandled error")
705                }
706            }
707        }
708    }
709}
710impl ::aws_smithy_types::retry::ProvideErrorKind for CreateTrailError {
711    fn code(&self) -> ::std::option::Option<&str> {
712        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
713    }
714    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
715        ::std::option::Option::None
716    }
717}
718impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for CreateTrailError {
719    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
720        match self {
721            Self::CloudTrailAccessNotEnabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
722            Self::CloudTrailInvalidClientTokenIdException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
723            Self::CloudWatchLogsDeliveryUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
724            Self::ConflictException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
725            Self::InsufficientDependencyServiceAccessPermissionException(_inner) => {
726                ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner)
727            }
728            Self::InsufficientEncryptionPolicyException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
729            Self::InsufficientS3BucketPolicyException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
730            Self::InsufficientSnsTopicPolicyException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
731            Self::InvalidCloudWatchLogsLogGroupArnException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
732            Self::InvalidCloudWatchLogsRoleArnException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
733            Self::InvalidKmsKeyIdException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
734            Self::InvalidParameterCombinationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
735            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
736            Self::InvalidS3BucketNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
737            Self::InvalidS3PrefixException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
738            Self::InvalidSnsTopicNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
739            Self::InvalidTagParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
740            Self::InvalidTrailNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
741            Self::KmsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
742            Self::KmsKeyDisabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
743            Self::KmsKeyNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
744            Self::MaximumNumberOfTrailsExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
745            Self::NoManagementAccountSlrExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
746            Self::NotOrganizationMasterAccountException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
747            Self::OperationNotPermittedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
748            Self::OrganizationNotInAllFeaturesModeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
749            Self::OrganizationsNotInUseException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
750            Self::S3BucketDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
751            Self::TagsLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
752            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
753            Self::TrailAlreadyExistsException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
754            Self::TrailNotProvidedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
755            Self::UnsupportedOperationException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
756            Self::Unhandled(_inner) => &_inner.meta,
757        }
758    }
759}
760impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for CreateTrailError {
761    fn create_unhandled_error(
762        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
763        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
764    ) -> Self {
765        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
766            source,
767            meta: meta.unwrap_or_default(),
768        })
769    }
770}
771impl ::aws_types::request_id::RequestId for crate::operation::create_trail::CreateTrailError {
772    fn request_id(&self) -> Option<&str> {
773        self.meta().request_id()
774    }
775}
776
777pub use crate::operation::create_trail::_create_trail_input::CreateTrailInput;
778
779pub use crate::operation::create_trail::_create_trail_output::CreateTrailOutput;
780
781mod _create_trail_input;
782
783mod _create_trail_output;
784
785/// Builders
786pub mod builders;