AWS SDK

AWS SDK

rev. e9e7d4cbd8eea651d87d4342fafbfe566feb544b

Files changed:

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/endpoint_override.rs

@@ -0,1 +0,35 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
//! Endpoint override detection for business metrics tracking
           7  +
           8  +
use aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
           9  +
use aws_smithy_types::config_bag::{FrozenLayer, Layer};
          10  +
          11  +
use crate::sdk_feature::AwsSdkFeature;
          12  +
          13  +
/// Runtime plugin that tracks when a custom endpoint URL has been configured.
          14  +
#[derive(Debug, Default)]
          15  +
#[non_exhaustive]
          16  +
pub struct EndpointOverrideRuntimePlugin {
          17  +
    config: Option<FrozenLayer>,
          18  +
}
          19  +
          20  +
impl EndpointOverrideRuntimePlugin {
          21  +
    /// Creates a new `EndpointOverrideRuntimePlugin` with the endpoint override feature flag set
          22  +
    pub fn new_with_feature_flag() -> Self {
          23  +
        let mut layer = Layer::new("endpoint_override");
          24  +
        layer.store_append(AwsSdkFeature::EndpointOverride);
          25  +
        Self {
          26  +
            config: Some(layer.freeze()),
          27  +
        }
          28  +
    }
          29  +
}
          30  +
          31  +
impl RuntimePlugin for EndpointOverrideRuntimePlugin {
          32  +
    fn config(&self) -> Option<FrozenLayer> {
          33  +
        self.config.clone()
          34  +
    }
          35  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/lib.rs

@@ -1,1 +53,56 @@
   19     19   
/// Supporting code for authentication in the AWS SDK.
   20     20   
pub mod auth;
   21     21   
   22     22   
/// AWS-specific content-encoding tools
   23     23   
#[cfg(feature = "http-02x")]
   24     24   
pub mod content_encoding;
   25     25   
   26     26   
/// Supporting code for recursion detection in the AWS SDK.
   27     27   
pub mod recursion_detection;
   28     28   
          29  +
/// Supporting code for endpoint override detection in the AWS SDK.
          30  +
pub mod endpoint_override;
          31  +
   29     32   
/// Supporting code for user agent headers in the AWS SDK.
   30     33   
pub mod user_agent;
   31     34   
   32     35   
/// Supporting code for retry behavior specific to the AWS SDK.
   33     36   
pub mod retries;
   34     37   
   35     38   
/// Supporting code for invocation ID headers in the AWS SDK.
   36     39   
pub mod invocation_id;
   37     40   
   38     41   
/// Supporting code for request metadata headers in the AWS SDK.

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/sdk_feature.rs

@@ -1,1 +31,33 @@
   17     17   
    /// An operation called with account ID mode set to disabled
   18     18   
    AccountIdModeDisabled,
   19     19   
    /// An operation called with account ID mode set to required
   20     20   
    AccountIdModeRequired,
   21     21   
    /// Indicates that an operation was called by the S3 Transfer Manager
   22     22   
    S3Transfer,
   23     23   
    /// Calling an SSO-OIDC operation as part of the SSO login flow, when using the OAuth2.0 device code grant
   24     24   
    SsoLoginDevice,
   25     25   
    /// Calling an SSO-OIDC operation as part of the SSO login flow, when using the OAuth2.0 authorization code grant
   26     26   
    SsoLoginAuth,
          27  +
    /// Indicates that a custom endpoint URL was configured
          28  +
    EndpointOverride,
   27     29   
}
   28     30   
   29     31   
impl Storable for AwsSdkFeature {
   30     32   
    type Storer = StoreAppend<Self>;
   31     33   
}

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/src/user_agent/metrics.rs

@@ -207,207 +266,267 @@
  227    227   
impl ProvideBusinessMetric for AwsSdkFeature {
  228    228   
    fn provide_business_metric(&self) -> Option<BusinessMetric> {
  229    229   
        use AwsSdkFeature::*;
  230    230   
        match self {
  231    231   
            AccountIdModePreferred => Some(BusinessMetric::AccountIdModePreferred),
  232    232   
            AccountIdModeDisabled => Some(BusinessMetric::AccountIdModeDisabled),
  233    233   
            AccountIdModeRequired => Some(BusinessMetric::AccountIdModeRequired),
  234    234   
            S3Transfer => Some(BusinessMetric::S3Transfer),
  235    235   
            SsoLoginDevice => Some(BusinessMetric::SsoLoginDevice),
  236    236   
            SsoLoginAuth => Some(BusinessMetric::SsoLoginAuth),
         237  +
            EndpointOverride => Some(BusinessMetric::EndpointOverride),
  237    238   
        }
  238    239   
    }
  239    240   
}
  240    241   
  241    242   
impl ProvideBusinessMetric for AwsCredentialFeature {
  242    243   
    fn provide_business_metric(&self) -> Option<BusinessMetric> {
  243    244   
        use AwsCredentialFeature::*;
  244    245   
        match self {
  245    246   
            ResolvedAccountId => Some(BusinessMetric::ResolvedAccountId),
  246    247   
            CredentialsCode => Some(BusinessMetric::CredentialsCode),

tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/src/config.rs

@@ -1430,1430 +1489,1501 @@
 1450   1450   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1451   1451   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1452   1452   
 1453   1453   
pub use ::aws_credential_types::Credentials;
 1454   1454   
 1455   1455   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1456   1456   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1457   1457   
        let mut builder = Builder::default();
 1458   1458   
        builder.set_credentials_provider(input.credentials_provider());
 1459   1459   
        builder = builder.region(input.region().cloned());
        1460  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1461  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1462  +
        let has_service_specific_endpoint = input
        1463  +
            .service_config()
        1464  +
            .and_then(|conf| conf.load_config(service_config_key("Bedrock Runtime", "AWS_ENDPOINT_URL", "endpoint_url")))
        1465  +
            .is_some();
        1466  +
        1467  +
        if has_global_endpoint || has_service_specific_endpoint {
        1468  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1469  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1470  +
            ));
        1471  +
        }
 1460   1472   
        builder.set_use_fips(input.use_fips());
 1461   1473   
        builder.set_use_dual_stack(input.use_dual_stack());
 1462   1474   
        if input.get_origin("endpoint_url").is_client_config() {
 1463   1475   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1464   1476   
        } else {
 1465   1477   
            builder.set_endpoint_url(
 1466   1478   
                input
 1467   1479   
                    .service_config()
 1468   1480   
                    .and_then(|conf| {
 1469   1481   
                        conf.load_config(service_config_key("Bedrock Runtime", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/src/config.rs

@@ -1381,1381 +1440,1452 @@
 1401   1401   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1402   1402   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1403   1403   
 1404   1404   
pub use ::aws_credential_types::Credentials;
 1405   1405   
 1406   1406   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1407   1407   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1408   1408   
        let mut builder = Builder::default();
 1409   1409   
        builder.set_credentials_provider(input.credentials_provider());
 1410   1410   
        builder = builder.region(input.region().cloned());
        1411  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1412  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1413  +
        let has_service_specific_endpoint = input
        1414  +
            .service_config()
        1415  +
            .and_then(|conf| conf.load_config(service_config_key("CloudWatch Logs", "AWS_ENDPOINT_URL", "endpoint_url")))
        1416  +
            .is_some();
        1417  +
        1418  +
        if has_global_endpoint || has_service_specific_endpoint {
        1419  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1420  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1421  +
            ));
        1422  +
        }
 1411   1423   
        builder.set_use_fips(input.use_fips());
 1412   1424   
        builder.set_use_dual_stack(input.use_dual_stack());
 1413   1425   
        if input.get_origin("endpoint_url").is_client_config() {
 1414   1426   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1415   1427   
        } else {
 1416   1428   
            builder.set_endpoint_url(
 1417   1429   
                input
 1418   1430   
                    .service_config()
 1419   1431   
                    .and_then(|conf| {
 1420   1432   
                        conf.load_config(service_config_key("CloudWatch Logs", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/codecatalyst/src/config.rs

@@ -1370,1370 +1429,1441 @@
 1390   1390   
}
 1391   1391   
 1392   1392   
pub use ::aws_smithy_runtime::client::identity::IdentityCache;
 1393   1393   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1394   1394   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1395   1395   
 1396   1396   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1397   1397   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1398   1398   
        let mut builder = Builder::default();
 1399   1399   
        builder = builder.region(input.region().cloned());
        1400  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1401  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1402  +
        let has_service_specific_endpoint = input
        1403  +
            .service_config()
        1404  +
            .and_then(|conf| conf.load_config(service_config_key("CodeCatalyst", "AWS_ENDPOINT_URL", "endpoint_url")))
        1405  +
            .is_some();
        1406  +
        1407  +
        if has_global_endpoint || has_service_specific_endpoint {
        1408  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1409  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1410  +
            ));
        1411  +
        }
 1400   1412   
        builder.set_use_fips(input.use_fips());
 1401   1413   
        if input.get_origin("endpoint_url").is_client_config() {
 1402   1414   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1403   1415   
        } else {
 1404   1416   
            builder.set_endpoint_url(
 1405   1417   
                input
 1406   1418   
                    .service_config()
 1407   1419   
                    .and_then(|conf| {
 1408   1420   
                        conf.load_config(service_config_key("CodeCatalyst", "AWS_ENDPOINT_URL", "endpoint_url"))
 1409   1421   
                            .map(|it| it.parse().unwrap())

tmp-codegen-diff/aws-sdk/sdk/config/src/config.rs

@@ -1363,1363 +1422,1434 @@
 1383   1383   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1384   1384   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1385   1385   
 1386   1386   
pub use ::aws_credential_types::Credentials;
 1387   1387   
 1388   1388   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1389   1389   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1390   1390   
        let mut builder = Builder::default();
 1391   1391   
        builder.set_credentials_provider(input.credentials_provider());
 1392   1392   
        builder = builder.region(input.region().cloned());
        1393  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1394  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1395  +
        let has_service_specific_endpoint = input
        1396  +
            .service_config()
        1397  +
            .and_then(|conf| conf.load_config(service_config_key("Config Service", "AWS_ENDPOINT_URL", "endpoint_url")))
        1398  +
            .is_some();
        1399  +
        1400  +
        if has_global_endpoint || has_service_specific_endpoint {
        1401  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1402  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1403  +
            ));
        1404  +
        }
 1393   1405   
        builder.set_use_fips(input.use_fips());
 1394   1406   
        builder.set_use_dual_stack(input.use_dual_stack());
 1395   1407   
        if input.get_origin("endpoint_url").is_client_config() {
 1396   1408   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1397   1409   
        } else {
 1398   1410   
            builder.set_endpoint_url(
 1399   1411   
                input
 1400   1412   
                    .service_config()
 1401   1413   
                    .and_then(|conf| {
 1402   1414   
                        conf.load_config(service_config_key("Config Service", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/dynamodb/src/config.rs

@@ -1396,1396 +1455,1467 @@
 1416   1416   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1417   1417   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1418   1418   
 1419   1419   
pub use ::aws_credential_types::Credentials;
 1420   1420   
 1421   1421   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1422   1422   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1423   1423   
        let mut builder = Builder::default();
 1424   1424   
        builder.set_credentials_provider(input.credentials_provider());
 1425   1425   
        builder = builder.region(input.region().cloned());
        1426  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1427  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1428  +
        let has_service_specific_endpoint = input
        1429  +
            .service_config()
        1430  +
            .and_then(|conf| conf.load_config(service_config_key("DynamoDB", "AWS_ENDPOINT_URL", "endpoint_url")))
        1431  +
            .is_some();
        1432  +
        1433  +
        if has_global_endpoint || has_service_specific_endpoint {
        1434  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1435  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1436  +
            ));
        1437  +
        }
 1426   1438   
        builder.set_use_fips(input.use_fips());
 1427   1439   
        builder.set_use_dual_stack(input.use_dual_stack());
 1428   1440   
        if input.get_origin("endpoint_url").is_client_config() {
 1429   1441   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1430   1442   
        } else {
 1431   1443   
            builder.set_endpoint_url(
 1432   1444   
                input
 1433   1445   
                    .service_config()
 1434   1446   
                    .and_then(|conf| {
 1435   1447   
                        conf.load_config(service_config_key("DynamoDB", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/ec2/src/config.rs

@@ -1381,1381 +1440,1452 @@
 1401   1401   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1402   1402   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1403   1403   
 1404   1404   
pub use ::aws_credential_types::Credentials;
 1405   1405   
 1406   1406   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1407   1407   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1408   1408   
        let mut builder = Builder::default();
 1409   1409   
        builder.set_credentials_provider(input.credentials_provider());
 1410   1410   
        builder = builder.region(input.region().cloned());
        1411  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1412  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1413  +
        let has_service_specific_endpoint = input
        1414  +
            .service_config()
        1415  +
            .and_then(|conf| conf.load_config(service_config_key("EC2", "AWS_ENDPOINT_URL", "endpoint_url")))
        1416  +
            .is_some();
        1417  +
        1418  +
        if has_global_endpoint || has_service_specific_endpoint {
        1419  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1420  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1421  +
            ));
        1422  +
        }
 1411   1423   
        builder.set_use_fips(input.use_fips());
 1412   1424   
        builder.set_use_dual_stack(input.use_dual_stack());
 1413   1425   
        if input.get_origin("endpoint_url").is_client_config() {
 1414   1426   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1415   1427   
        } else {
 1416   1428   
            builder.set_endpoint_url(
 1417   1429   
                input
 1418   1430   
                    .service_config()
 1419   1431   
                    .and_then(|conf| {
 1420   1432   
                        conf.load_config(service_config_key("EC2", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/ecs/src/config.rs

@@ -1381,1381 +1440,1452 @@
 1401   1401   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1402   1402   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1403   1403   
 1404   1404   
pub use ::aws_credential_types::Credentials;
 1405   1405   
 1406   1406   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1407   1407   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1408   1408   
        let mut builder = Builder::default();
 1409   1409   
        builder.set_credentials_provider(input.credentials_provider());
 1410   1410   
        builder = builder.region(input.region().cloned());
        1411  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1412  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1413  +
        let has_service_specific_endpoint = input
        1414  +
            .service_config()
        1415  +
            .and_then(|conf| conf.load_config(service_config_key("ECS", "AWS_ENDPOINT_URL", "endpoint_url")))
        1416  +
            .is_some();
        1417  +
        1418  +
        if has_global_endpoint || has_service_specific_endpoint {
        1419  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1420  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1421  +
            ));
        1422  +
        }
 1411   1423   
        builder.set_use_fips(input.use_fips());
 1412   1424   
        builder.set_use_dual_stack(input.use_dual_stack());
 1413   1425   
        if input.get_origin("endpoint_url").is_client_config() {
 1414   1426   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1415   1427   
        } else {
 1416   1428   
            builder.set_endpoint_url(
 1417   1429   
                input
 1418   1430   
                    .service_config()
 1419   1431   
                    .and_then(|conf| {
 1420   1432   
                        conf.load_config(service_config_key("ECS", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/glacier/src/config.rs

@@ -1364,1364 +1423,1435 @@
 1384   1384   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1385   1385   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1386   1386   
 1387   1387   
pub use ::aws_credential_types::Credentials;
 1388   1388   
 1389   1389   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1390   1390   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1391   1391   
        let mut builder = Builder::default();
 1392   1392   
        builder.set_credentials_provider(input.credentials_provider());
 1393   1393   
        builder = builder.region(input.region().cloned());
        1394  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1395  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1396  +
        let has_service_specific_endpoint = input
        1397  +
            .service_config()
        1398  +
            .and_then(|conf| conf.load_config(service_config_key("Glacier", "AWS_ENDPOINT_URL", "endpoint_url")))
        1399  +
            .is_some();
        1400  +
        1401  +
        if has_global_endpoint || has_service_specific_endpoint {
        1402  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1403  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1404  +
            ));
        1405  +
        }
 1394   1406   
        builder.set_use_fips(input.use_fips());
 1395   1407   
        builder.set_use_dual_stack(input.use_dual_stack());
 1396   1408   
        if input.get_origin("endpoint_url").is_client_config() {
 1397   1409   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1398   1410   
        } else {
 1399   1411   
            builder.set_endpoint_url(
 1400   1412   
                input
 1401   1413   
                    .service_config()
 1402   1414   
                    .and_then(|conf| {
 1403   1415   
                        conf.load_config(service_config_key("Glacier", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/iam/src/config.rs

@@ -1363,1363 +1422,1434 @@
 1383   1383   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1384   1384   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1385   1385   
 1386   1386   
pub use ::aws_credential_types::Credentials;
 1387   1387   
 1388   1388   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1389   1389   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1390   1390   
        let mut builder = Builder::default();
 1391   1391   
        builder.set_credentials_provider(input.credentials_provider());
 1392   1392   
        builder = builder.region(input.region().cloned());
        1393  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1394  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1395  +
        let has_service_specific_endpoint = input
        1396  +
            .service_config()
        1397  +
            .and_then(|conf| conf.load_config(service_config_key("IAM", "AWS_ENDPOINT_URL", "endpoint_url")))
        1398  +
            .is_some();
        1399  +
        1400  +
        if has_global_endpoint || has_service_specific_endpoint {
        1401  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1402  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1403  +
            ));
        1404  +
        }
 1393   1405   
        builder.set_use_fips(input.use_fips());
 1394   1406   
        builder.set_use_dual_stack(input.use_dual_stack());
 1395   1407   
        if input.get_origin("endpoint_url").is_client_config() {
 1396   1408   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1397   1409   
        } else {
 1398   1410   
            builder.set_endpoint_url(
 1399   1411   
                input
 1400   1412   
                    .service_config()
 1401   1413   
                    .and_then(|conf| {
 1402   1414   
                        conf.load_config(service_config_key("IAM", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/kms/src/config.rs

@@ -1363,1363 +1422,1434 @@
 1383   1383   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1384   1384   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1385   1385   
 1386   1386   
pub use ::aws_credential_types::Credentials;
 1387   1387   
 1388   1388   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1389   1389   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1390   1390   
        let mut builder = Builder::default();
 1391   1391   
        builder.set_credentials_provider(input.credentials_provider());
 1392   1392   
        builder = builder.region(input.region().cloned());
        1393  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1394  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1395  +
        let has_service_specific_endpoint = input
        1396  +
            .service_config()
        1397  +
            .and_then(|conf| conf.load_config(service_config_key("KMS", "AWS_ENDPOINT_URL", "endpoint_url")))
        1398  +
            .is_some();
        1399  +
        1400  +
        if has_global_endpoint || has_service_specific_endpoint {
        1401  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1402  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1403  +
            ));
        1404  +
        }
 1393   1405   
        builder.set_use_fips(input.use_fips());
 1394   1406   
        builder.set_use_dual_stack(input.use_dual_stack());
 1395   1407   
        if input.get_origin("endpoint_url").is_client_config() {
 1396   1408   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1397   1409   
        } else {
 1398   1410   
            builder.set_endpoint_url(
 1399   1411   
                input
 1400   1412   
                    .service_config()
 1401   1413   
                    .and_then(|conf| {
 1402   1414   
                        conf.load_config(service_config_key("KMS", "AWS_ENDPOINT_URL", "endpoint_url"))

tmp-codegen-diff/aws-sdk/sdk/lambda/src/config.rs

@@ -1363,1363 +1422,1434 @@
 1383   1383   
pub use ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponents;
 1384   1384   
pub use ::aws_smithy_types::config_bag::ConfigBag;
 1385   1385   
 1386   1386   
pub use ::aws_credential_types::Credentials;
 1387   1387   
 1388   1388   
impl From<&::aws_types::sdk_config::SdkConfig> for Builder {
 1389   1389   
    fn from(input: &::aws_types::sdk_config::SdkConfig) -> Self {
 1390   1390   
        let mut builder = Builder::default();
 1391   1391   
        builder.set_credentials_provider(input.credentials_provider());
 1392   1392   
        builder = builder.region(input.region().cloned());
        1393  +
        // Track endpoint override metric if endpoint URL is configured from any source
        1394  +
        let has_global_endpoint = input.endpoint_url().is_some();
        1395  +
        let has_service_specific_endpoint = input
        1396  +
            .service_config()
        1397  +
            .and_then(|conf| conf.load_config(service_config_key("Lambda", "AWS_ENDPOINT_URL", "endpoint_url")))
        1398  +
            .is_some();
        1399  +
        1400  +
        if has_global_endpoint || has_service_specific_endpoint {
        1401  +
            builder.push_runtime_plugin(::aws_smithy_runtime_api::client::runtime_plugin::SharedRuntimePlugin::new(
        1402  +
                ::aws_runtime::endpoint_override::EndpointOverrideRuntimePlugin::new_with_feature_flag(),
        1403  +
            ));
        1404  +
        }
 1393   1405   
        builder.set_use_fips(input.use_fips());
 1394   1406   
        builder.set_use_dual_stack(input.use_dual_stack());
 1395   1407   
        if input.get_origin("endpoint_url").is_client_config() {
 1396   1408   
            builder.set_endpoint_url(input.endpoint_url().map(|s| s.to_string()));
 1397   1409   
        } else {
 1398   1410   
            builder.set_endpoint_url(
 1399   1411   
                input
 1400   1412   
                    .service_config()
 1401   1413   
                    .and_then(|conf| {
 1402   1414   
                        conf.load_config(service_config_key("Lambda", "AWS_ENDPOINT_URL", "endpoint_url"))