Struct aws_types::sdk_config::Builder
source · pub struct Builder { /* private fields */ }
Expand description
Builder for AWS Shared Configuration
Important: Using the aws-config
crate to configure the SDK is preferred to invoking this
builder directly. Using this builder directly won’t pull in any AWS recommended default
configuration values.
Implementations§
source§impl Builder
impl Builder
sourcepub fn region(self, region: impl Into<Option<Region>>) -> Self
pub fn region(self, region: impl Into<Option<Region>>) -> Self
Set the region for the builder
Examples
use aws_types::SdkConfig;
use aws_types::region::Region;
let config = SdkConfig::builder().region(Region::new("us-east-1")).build();
sourcepub fn set_region(&mut self, region: impl Into<Option<Region>>) -> &mut Self
pub fn set_region(&mut self, region: impl Into<Option<Region>>) -> &mut Self
Set the region for the builder
Examples
fn region_override() -> Option<Region> {
// ...
}
use aws_types::SdkConfig;
use aws_types::region::Region;
let mut builder = SdkConfig::builder();
if let Some(region) = region_override() {
builder.set_region(region);
}
let config = builder.build();
sourcepub fn endpoint_resolver(
self,
endpoint_resolver: impl ResolveAwsEndpoint + 'static
) -> Self
👎Deprecated: use endpoint_url
instead
pub fn endpoint_resolver( self, endpoint_resolver: impl ResolveAwsEndpoint + 'static ) -> Self
endpoint_url
insteadSet the endpoint resolver to use when making requests
This method is deprecated. Use Self::endpoint_url
instead.
Examples
use std::sync::Arc;
use aws_types::SdkConfig;
use aws_smithy_http::endpoint::Endpoint;
let config = SdkConfig::builder().endpoint_resolver(
Endpoint::immutable("http://localhost:8080")?
).build();
sourcepub fn endpoint_url(self, endpoint_url: impl Into<String>) -> Self
pub fn endpoint_url(self, endpoint_url: impl Into<String>) -> Self
Set the endpoint url to use when making requests.
Examples
use aws_types::SdkConfig;
let config = SdkConfig::builder().endpoint_url("http://localhost:8080").build();
sourcepub fn set_endpoint_url(&mut self, endpoint_url: Option<String>) -> &mut Self
pub fn set_endpoint_url(&mut self, endpoint_url: Option<String>) -> &mut Self
Set the endpoint url to use when making requests.
sourcepub fn set_endpoint_resolver(
&mut self,
endpoint_resolver: Option<Arc<dyn ResolveAwsEndpoint>>
) -> &mut Self
pub fn set_endpoint_resolver( &mut self, endpoint_resolver: Option<Arc<dyn ResolveAwsEndpoint>> ) -> &mut Self
Set the endpoint resolver to use when making requests
Examples
use std::sync::Arc;
use aws_types::SdkConfig;
use aws_types::endpoint::ResolveAwsEndpoint;
fn endpoint_resolver_override() -> Option<Arc<dyn ResolveAwsEndpoint>> {
// ...
}
let mut config = SdkConfig::builder();
config.set_endpoint_resolver(endpoint_resolver_override());
config.build();
sourcepub fn retry_config(self, retry_config: RetryConfig) -> Self
pub fn retry_config(self, retry_config: RetryConfig) -> Self
Set the retry_config for the builder
Note: Retries require a sleep implementation in order to work. When enabling retry, make sure to set one with Self::sleep_impl or Self::set_sleep_impl.
Examples
use aws_types::SdkConfig;
use aws_smithy_types::retry::RetryConfig;
let retry_config = RetryConfig::standard().with_max_attempts(5);
let config = SdkConfig::builder().retry_config(retry_config).build();
sourcepub fn set_retry_config(
&mut self,
retry_config: Option<RetryConfig>
) -> &mut Self
pub fn set_retry_config( &mut self, retry_config: Option<RetryConfig> ) -> &mut Self
Set the retry_config for the builder
Note: Retries require a sleep implementation in order to work. When enabling retry, make sure to set one with Self::sleep_impl or Self::set_sleep_impl.
Examples
use aws_types::sdk_config::{SdkConfig, Builder};
use aws_smithy_types::retry::RetryConfig;
fn disable_retries(builder: &mut Builder) {
let retry_config = RetryConfig::standard().with_max_attempts(1);
builder.set_retry_config(Some(retry_config));
}
let mut builder = SdkConfig::builder();
disable_retries(&mut builder);
sourcepub fn timeout_config(self, timeout_config: TimeoutConfig) -> Self
pub fn timeout_config(self, timeout_config: TimeoutConfig) -> Self
Set the TimeoutConfig
for the builder
Note: Timeouts require a sleep implementation in order to work. When enabling timeouts, be sure to set one with Self::sleep_impl or Self::set_sleep_impl.
Examples
use aws_types::SdkConfig;
use aws_smithy_types::timeout::TimeoutConfig;
let timeout_config = TimeoutConfig::builder()
.operation_attempt_timeout(Duration::from_secs(2))
.operation_timeout(Duration::from_secs(5))
.build();
let config = SdkConfig::builder()
.timeout_config(timeout_config)
.build();
sourcepub fn set_timeout_config(
&mut self,
timeout_config: Option<TimeoutConfig>
) -> &mut Self
pub fn set_timeout_config( &mut self, timeout_config: Option<TimeoutConfig> ) -> &mut Self
Set the TimeoutConfig
for the builder
Note: Timeouts require a sleep implementation in order to work. When enabling timeouts, be sure to set one with Self::sleep_impl or Self::set_sleep_impl.
Examples
use aws_types::sdk_config::{SdkConfig, Builder};
use aws_smithy_types::timeout::TimeoutConfig;
fn set_preferred_timeouts(builder: &mut Builder) {
let timeout_config = TimeoutConfig::builder()
.operation_attempt_timeout(Duration::from_secs(2))
.operation_timeout(Duration::from_secs(5))
.build();
builder.set_timeout_config(Some(timeout_config));
}
let mut builder = SdkConfig::builder();
set_preferred_timeouts(&mut builder);
let config = builder.build();
sourcepub fn sleep_impl(self, sleep_impl: Arc<dyn AsyncSleep>) -> Self
pub fn sleep_impl(self, sleep_impl: Arc<dyn AsyncSleep>) -> Self
Set the sleep implementation for the builder. The sleep implementation is used to create timeout futures.
Note: If you’re using the Tokio runtime, a TokioSleep
implementation is available in
the aws-smithy-async
crate.
Examples
use std::sync::Arc;
use aws_smithy_async::rt::sleep::{AsyncSleep, Sleep};
use aws_types::SdkConfig;
#[derive(Debug)]
pub struct ForeverSleep;
impl AsyncSleep for ForeverSleep {
fn sleep(&self, duration: std::time::Duration) -> Sleep {
Sleep::new(std::future::pending())
}
}
let sleep_impl = Arc::new(ForeverSleep);
let config = SdkConfig::builder().sleep_impl(sleep_impl).build();
sourcepub fn set_sleep_impl(
&mut self,
sleep_impl: Option<Arc<dyn AsyncSleep>>
) -> &mut Self
pub fn set_sleep_impl( &mut self, sleep_impl: Option<Arc<dyn AsyncSleep>> ) -> &mut Self
Set the sleep implementation for the builder. The sleep implementation is used to create timeout futures.
Note: If you’re using the Tokio runtime, a TokioSleep
implementation is available in
the aws-smithy-async
crate.
Examples
#[derive(Debug)]
pub struct ForeverSleep;
impl AsyncSleep for ForeverSleep {
fn sleep(&self, duration: std::time::Duration) -> Sleep {
Sleep::new(std::future::pending())
}
}
fn set_never_ending_sleep_impl(builder: &mut Builder) {
let sleep_impl = std::sync::Arc::new(ForeverSleep);
builder.set_sleep_impl(Some(sleep_impl));
}
let mut builder = SdkConfig::builder();
set_never_ending_sleep_impl(&mut builder);
let config = builder.build();
sourcepub fn credentials_provider(self, provider: SharedCredentialsProvider) -> Self
pub fn credentials_provider(self, provider: SharedCredentialsProvider) -> Self
Set the credentials provider for the builder
Examples
use aws_credential_types::provider::{ProvideCredentials, SharedCredentialsProvider};
use aws_types::SdkConfig;
fn make_provider() -> impl ProvideCredentials {
// ...
}
let config = SdkConfig::builder()
.credentials_provider(SharedCredentialsProvider::new(make_provider()))
.build();
sourcepub fn set_credentials_provider(
&mut self,
provider: Option<SharedCredentialsProvider>
) -> &mut Self
pub fn set_credentials_provider( &mut self, provider: Option<SharedCredentialsProvider> ) -> &mut Self
Set the credentials provider for the builder
Examples
use aws_credential_types::provider::{ProvideCredentials, SharedCredentialsProvider};
use aws_types::SdkConfig;
fn make_provider() -> impl ProvideCredentials {
// ...
}
fn override_provider() -> bool {
// ...
}
let mut builder = SdkConfig::builder();
if override_provider() {
builder.set_credentials_provider(Some(SharedCredentialsProvider::new(make_provider())));
}
let config = builder.build();
sourcepub fn app_name(self, app_name: AppName) -> Self
pub fn app_name(self, app_name: AppName) -> Self
Sets the name of the app that is using the client.
This optional name is used to identify the application in the user agent that gets sent along with requests.
sourcepub fn set_app_name(&mut self, app_name: Option<AppName>) -> &mut Self
pub fn set_app_name(&mut self, app_name: Option<AppName>) -> &mut Self
Sets the name of the app that is using the client.
This optional name is used to identify the application in the user agent that gets sent along with requests.
sourcepub fn http_connector(self, http_connector: impl Into<HttpConnector>) -> Self
pub fn http_connector(self, http_connector: impl Into<HttpConnector>) -> Self
Sets the HTTP connector to use when making requests.
Examples
use std::time::Duration;
use aws_smithy_client::{Client, hyper_ext};
use aws_smithy_client::erase::DynConnector;
use aws_smithy_client::http_connector::ConnectorSettings;
use aws_types::SdkConfig;
let https_connector = hyper_rustls::HttpsConnectorBuilder::new()
.with_webpki_roots()
.https_only()
.enable_http1()
.enable_http2()
.build();
let smithy_connector = hyper_ext::Adapter::builder()
// Optionally set things like timeouts as well
.connector_settings(
ConnectorSettings::builder()
.connect_timeout(Duration::from_secs(5))
.build()
)
.build(https_connector);
let sdk_config = SdkConfig::builder()
.http_connector(smithy_connector)
.build();
sourcepub fn set_http_connector(
&mut self,
http_connector: Option<impl Into<HttpConnector>>
) -> &mut Self
pub fn set_http_connector( &mut self, http_connector: Option<impl Into<HttpConnector>> ) -> &mut Self
Sets the HTTP connector to use when making requests.
Examples
use std::time::Duration;
use aws_smithy_client::hyper_ext;
use aws_smithy_client::http_connector::ConnectorSettings;
use aws_types::sdk_config::{SdkConfig, Builder};
fn override_http_connector(builder: &mut Builder) {
let https_connector = hyper_rustls::HttpsConnectorBuilder::new()
.with_webpki_roots()
.https_only()
.enable_http1()
.enable_http2()
.build();
let smithy_connector = hyper_ext::Adapter::builder()
// Optionally set things like timeouts as well
.connector_settings(
ConnectorSettings::builder()
.connect_timeout(Duration::from_secs(5))
.build()
)
.build(https_connector);
builder.set_http_connector(Some(smithy_connector));
}
let mut builder = SdkConfig::builder();
override_http_connector(&mut builder);
let config = builder.build();
sourcepub fn use_fips(self, use_fips: bool) -> Self
pub fn use_fips(self, use_fips: bool) -> Self
When true, send this request to the FIPS-compliant regional endpoint.
If no FIPS-compliant endpoint can be determined, dispatching the request will return an error.
sourcepub fn set_use_fips(&mut self, use_fips: Option<bool>) -> &mut Self
pub fn set_use_fips(&mut self, use_fips: Option<bool>) -> &mut Self
When true, send this request to the FIPS-compliant regional endpoint.
If no FIPS-compliant endpoint can be determined, dispatching the request will return an error.
sourcepub fn use_dual_stack(self, use_dual_stack: bool) -> Self
pub fn use_dual_stack(self, use_dual_stack: bool) -> Self
When true, send this request to the dual-stack endpoint.
If no dual-stack endpoint is available the request MAY return an error.
Note: Some services do not offer dual-stack as a configurable parameter (e.g. Code Catalyst). For these services, this setting has no effect
sourcepub fn set_use_dual_stack(&mut self, use_dual_stack: Option<bool>) -> &mut Self
pub fn set_use_dual_stack(&mut self, use_dual_stack: Option<bool>) -> &mut Self
When true, send this request to the dual-stack endpoint.
If no dual-stack endpoint is available the request MAY return an error.
Note: Some services do not offer dual-stack as a configurable parameter (e.g. Code Catalyst). For these services, this setting has no effect