Loading aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/RegionDecorator.kt +2 −9 Original line number Diff line number Diff line Loading @@ -104,15 +104,8 @@ class RegionDecorator : ClientCodegenDecorator { adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> rust( """ ${section.serviceConfigBuilder}.set_region( ${section.sdkConfig} .service_config() .and_then(|conf| { conf.load_config(service_config_key($envKey, $profileKey)) .map(Region::new) }) .or_else(|| ${section.sdkConfig}.region().cloned()), ); ${section.serviceConfigBuilder} = ${section.serviceConfigBuilder}.region(${section.sdkConfig}.region().cloned()); """, ) } Loading aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SdkConfigDecorator.kt +1 −13 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomizat import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocSection import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization import software.amazon.smithy.rust.codegen.core.smithy.customize.writeCustomizations import software.amazon.smithy.rust.codegen.core.util.dq import software.amazon.smithy.rust.codegen.core.util.toSnakeCase sealed class SdkConfigSection(name: String) : AdHocSection(name) { /** Loading Loading @@ -56,18 +54,8 @@ object SdkConfigCustomization { map: Writable?, ) = adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> val mapBlock = map?.let { writable { rust(".map(#W)", it) } } ?: writable { } val envKey = "AWS_${fieldName.toSnakeCase().uppercase()}".dq() val profileKey = fieldName.toSnakeCase().dq() rustTemplate( """ ${section.serviceConfigBuilder}.set_$fieldName( ${section.sdkConfig} .service_config() .and_then(|conf| conf.load_config(service_config_key($envKey, $profileKey)).map(|it| it.parse().unwrap())) .or_else(|| ${section.sdkConfig}.$fieldName()#{map}) ); """, "${section.serviceConfigBuilder}.set_$fieldName(${section.sdkConfig}.$fieldName()#{map});", "map" to mapBlock, ) } Loading aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/customize/s3/S3Decorator.kt +0 −31 Original line number Diff line number Diff line Loading @@ -28,21 +28,17 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationGen import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationSection import software.amazon.smithy.rust.codegen.client.smithy.protocols.ClientRestXmlFactory import software.amazon.smithy.rust.codegen.core.rustlang.Writable import software.amazon.smithy.rust.codegen.core.rustlang.rust import software.amazon.smithy.rust.codegen.core.rustlang.rustBlockTemplate import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomization import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolFunctions import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolMap import software.amazon.smithy.rust.codegen.core.smithy.protocols.RestXml import software.amazon.smithy.rust.codegen.core.smithy.traits.AllowInvalidXmlRoot import software.amazon.smithy.rust.codegen.core.util.hasTrait import software.amazon.smithy.rust.codegen.core.util.letIf import software.amazon.smithy.rustsdk.SdkConfigSection import software.amazon.smithy.rustsdk.getBuiltIn import software.amazon.smithy.rustsdk.toWritable import java.util.logging.Logger Loading Loading @@ -158,33 +154,6 @@ class S3Decorator : ClientCodegenDecorator { } } override fun extraSections(codegenContext: ClientCodegenContext): List<AdHocCustomization> { return listOf( adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> rust( """ ${section.serviceConfigBuilder}.set_disable_multi_region_access_points( ${section.sdkConfig} .service_config() .and_then(|conf| { let str_config = conf.load_config(service_config_key("AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS", "s3_disable_multi_region_access_points")); str_config.and_then(|it| it.parse::<bool>().ok()) }), ); ${section.serviceConfigBuilder}.set_use_arn_region( ${section.sdkConfig} .service_config() .and_then(|conf| { let str_config = conf.load_config(service_config_key("AWS_S3_USE_ARN_REGION", "s3_use_arn_region")); str_config.and_then(|it| it.parse::<bool>().ok()) }), ); """, ) }, ) } private fun isInInvalidXmlRootAllowList(shape: Shape): Boolean { return shape.isStructureShape && invalidXmlRootAllowList.contains(shape.id) } Loading aws/sdk/integration-tests/dynamodb/Cargo.toml +0 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ publish = false [dependencies] approx = "0.5.1" aws-config = { path = "../../build/aws-sdk/sdk/aws-config" } aws-runtime = { path = "../../build/aws-sdk/sdk/aws-runtime" } aws-credential-types = { path = "../../build/aws-sdk/sdk/aws-credential-types", features = ["test-util"] } aws-sdk-dynamodb = { path = "../../build/aws-sdk/sdk/dynamodb", features = ["behavior-version-latest"] } aws-smithy-async = { path = "../../build/aws-sdk/sdk/aws-smithy-async", features = ["test-util"] } Loading aws/sdk/integration-tests/dynamodb/tests/shared-config.rs +1 −45 Original line number Diff line number Diff line Loading @@ -3,13 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ use aws_runtime::env_config::file::{EnvConfigFileKind, EnvConfigFiles}; use aws_sdk_dynamodb::config::{ BehaviorVersion, Credentials, Region, StalledStreamProtectionConfig, }; use aws_sdk_dynamodb::config::{Credentials, Region, StalledStreamProtectionConfig}; use aws_smithy_runtime::client::http::test_util::capture_request; use http::Uri; use std::env; /// Iterative test of loading clients from shared configuration #[tokio::test] Loading @@ -31,43 +27,3 @@ async fn shared_config_testbed() { &Uri::from_static("http://localhost:8000") ); } #[tokio::test] async fn service_config_from_profile() { let _ = tracing_subscriber::fmt::try_init(); // Remove env vars that could interfere with the test env::remove_var("AWS_DEFAULT_REGION"); env::remove_var("AWS_REGION"); let config = r#" [profile custom] aws_access_key_id = test-access-key-id aws_secret_access_key = test-secret-access-key aws_session_token = test-session-token region = us-east-1 services = custom [services custom] dynamodb = region = us-west-1 "# .trim(); let shared_config = aws_config::ConfigLoader::default() .behavior_version(BehaviorVersion::latest()) .profile_name("custom") .profile_files( EnvConfigFiles::builder() .with_contents(EnvConfigFileKind::Config, config) .build(), ) .load() .await; let service_config = aws_sdk_dynamodb::Config::from(&shared_config); assert_eq!( service_config.region().unwrap(), &Region::from_static("us-west-1") ); } Loading
aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/RegionDecorator.kt +2 −9 Original line number Diff line number Diff line Loading @@ -104,15 +104,8 @@ class RegionDecorator : ClientCodegenDecorator { adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> rust( """ ${section.serviceConfigBuilder}.set_region( ${section.sdkConfig} .service_config() .and_then(|conf| { conf.load_config(service_config_key($envKey, $profileKey)) .map(Region::new) }) .or_else(|| ${section.sdkConfig}.region().cloned()), ); ${section.serviceConfigBuilder} = ${section.serviceConfigBuilder}.region(${section.sdkConfig}.region().cloned()); """, ) } Loading
aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/SdkConfigDecorator.kt +1 −13 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomizat import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocSection import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization import software.amazon.smithy.rust.codegen.core.smithy.customize.writeCustomizations import software.amazon.smithy.rust.codegen.core.util.dq import software.amazon.smithy.rust.codegen.core.util.toSnakeCase sealed class SdkConfigSection(name: String) : AdHocSection(name) { /** Loading Loading @@ -56,18 +54,8 @@ object SdkConfigCustomization { map: Writable?, ) = adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> val mapBlock = map?.let { writable { rust(".map(#W)", it) } } ?: writable { } val envKey = "AWS_${fieldName.toSnakeCase().uppercase()}".dq() val profileKey = fieldName.toSnakeCase().dq() rustTemplate( """ ${section.serviceConfigBuilder}.set_$fieldName( ${section.sdkConfig} .service_config() .and_then(|conf| conf.load_config(service_config_key($envKey, $profileKey)).map(|it| it.parse().unwrap())) .or_else(|| ${section.sdkConfig}.$fieldName()#{map}) ); """, "${section.serviceConfigBuilder}.set_$fieldName(${section.sdkConfig}.$fieldName()#{map});", "map" to mapBlock, ) } Loading
aws/sdk-codegen/src/main/kotlin/software/amazon/smithy/rustsdk/customize/s3/S3Decorator.kt +0 −31 Original line number Diff line number Diff line Loading @@ -28,21 +28,17 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationGen import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationSection import software.amazon.smithy.rust.codegen.client.smithy.protocols.ClientRestXmlFactory import software.amazon.smithy.rust.codegen.core.rustlang.Writable import software.amazon.smithy.rust.codegen.core.rustlang.rust import software.amazon.smithy.rust.codegen.core.rustlang.rustBlockTemplate import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate import software.amazon.smithy.rust.codegen.core.rustlang.writable import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomization import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolFunctions import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolMap import software.amazon.smithy.rust.codegen.core.smithy.protocols.RestXml import software.amazon.smithy.rust.codegen.core.smithy.traits.AllowInvalidXmlRoot import software.amazon.smithy.rust.codegen.core.util.hasTrait import software.amazon.smithy.rust.codegen.core.util.letIf import software.amazon.smithy.rustsdk.SdkConfigSection import software.amazon.smithy.rustsdk.getBuiltIn import software.amazon.smithy.rustsdk.toWritable import java.util.logging.Logger Loading Loading @@ -158,33 +154,6 @@ class S3Decorator : ClientCodegenDecorator { } } override fun extraSections(codegenContext: ClientCodegenContext): List<AdHocCustomization> { return listOf( adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section -> rust( """ ${section.serviceConfigBuilder}.set_disable_multi_region_access_points( ${section.sdkConfig} .service_config() .and_then(|conf| { let str_config = conf.load_config(service_config_key("AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS", "s3_disable_multi_region_access_points")); str_config.and_then(|it| it.parse::<bool>().ok()) }), ); ${section.serviceConfigBuilder}.set_use_arn_region( ${section.sdkConfig} .service_config() .and_then(|conf| { let str_config = conf.load_config(service_config_key("AWS_S3_USE_ARN_REGION", "s3_use_arn_region")); str_config.and_then(|it| it.parse::<bool>().ok()) }), ); """, ) }, ) } private fun isInInvalidXmlRootAllowList(shape: Shape): Boolean { return shape.isStructureShape && invalidXmlRootAllowList.contains(shape.id) } Loading
aws/sdk/integration-tests/dynamodb/Cargo.toml +0 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ publish = false [dependencies] approx = "0.5.1" aws-config = { path = "../../build/aws-sdk/sdk/aws-config" } aws-runtime = { path = "../../build/aws-sdk/sdk/aws-runtime" } aws-credential-types = { path = "../../build/aws-sdk/sdk/aws-credential-types", features = ["test-util"] } aws-sdk-dynamodb = { path = "../../build/aws-sdk/sdk/dynamodb", features = ["behavior-version-latest"] } aws-smithy-async = { path = "../../build/aws-sdk/sdk/aws-smithy-async", features = ["test-util"] } Loading
aws/sdk/integration-tests/dynamodb/tests/shared-config.rs +1 −45 Original line number Diff line number Diff line Loading @@ -3,13 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ use aws_runtime::env_config::file::{EnvConfigFileKind, EnvConfigFiles}; use aws_sdk_dynamodb::config::{ BehaviorVersion, Credentials, Region, StalledStreamProtectionConfig, }; use aws_sdk_dynamodb::config::{Credentials, Region, StalledStreamProtectionConfig}; use aws_smithy_runtime::client::http::test_util::capture_request; use http::Uri; use std::env; /// Iterative test of loading clients from shared configuration #[tokio::test] Loading @@ -31,43 +27,3 @@ async fn shared_config_testbed() { &Uri::from_static("http://localhost:8000") ); } #[tokio::test] async fn service_config_from_profile() { let _ = tracing_subscriber::fmt::try_init(); // Remove env vars that could interfere with the test env::remove_var("AWS_DEFAULT_REGION"); env::remove_var("AWS_REGION"); let config = r#" [profile custom] aws_access_key_id = test-access-key-id aws_secret_access_key = test-secret-access-key aws_session_token = test-session-token region = us-east-1 services = custom [services custom] dynamodb = region = us-west-1 "# .trim(); let shared_config = aws_config::ConfigLoader::default() .behavior_version(BehaviorVersion::latest()) .profile_name("custom") .profile_files( EnvConfigFiles::builder() .with_contents(EnvConfigFileKind::Config, config) .build(), ) .load() .await; let service_config = aws_sdk_dynamodb::Config::from(&shared_config); assert_eq!( service_config.region().unwrap(), &Region::from_static("us-west-1") ); }