

# Configure the AWS SDK for Kotlin
<a name="configuration"></a>

This section explains how to configure a service client using the AWS SDK for Kotlin. For more information, see the [SDK and Tools Reference Guide](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html), which includes an overview of configuration that applies to all AWS SDKs.

**Contents**
+ [Create a service client](creating-clients.md)
  + [Configure a client in code](creating-clients.md#programmatic-config)
  + [Configure a client from the environment](creating-clients.md#loading-from-the-environment)
  + [Close the client](creating-clients.md#closing-the-client)
+ [AWS Region selection](region-selection.md)
  + [Default Region provider chain](region-selection.md#default-region-provider-chain)
+ [Credentials providers](credential-providers.md)
  + [The default credentials provider chain](credential-providers.md#default-credential-provider-chain)
    + [Learn about the default credentials provider chain](credential-providers.md#default-credentials-retrieval-order)
  + [Specify a credentials provider](credential-providers.md#explicit-credential-provider)
    + [Cache credentials with a standalone provider](credential-providers.md#credentials-caching)
+ [Configure client endpoints](config-endpoint.md)
  + [Custom configuration](config-endpoint.md#config-endpoint-custom-config)
    + [Set `endpointUrl`](config-endpoint.md#config-endpoint-custom-config-endpointurl)
    + [Set `endpointProvider`](config-endpoint.md#config-endpoint-custom-config-endpointprovider)
      + [`EndpointProvider` properties](config-endpoint.md#config-endpoint-custom-config-endpointprovider-params)
    + [`endpointUrl` or `endpointProvider`](config-endpoint.md#config-endpoint-custom-config-which)
    + [A note about Amazon S3](config-endpoint.md#config-endpoint-custom-config-s3)
  + [Examples](config-endpoint.md#config-endpoint-examples)
    + [`endpointUrl` example](config-endpoint.md#config-endpoint-examples-endpointurl)
    + [`endpointProvider` example](config-endpoint.md#config-endpoint-examples-endpointprovider)
    + [`endpointUrl` and `endpointProvider`](config-endpoint.md#config-endpoint-examples-both)
+ [HTTP](http.md)
  + [HTTP client configuration](http-client-config.md)
    + [Basic configuration](http-client-config.md#basic-http-confg)
      + [Imports](http-client-config.md#basic-config-ex-imports)
      + [Code](http-client-config.md#basic-config-ex-code)
    + [Advanced configuration](http-client-config.md#advanced-http-config)
      + [Specify an HTTP engine type](http-client-config.md#http-config-engine)
        + [Imports](http-client-config.md#http-config-specify-engine-imports)
        + [Code](http-client-config.md#http-config-specify-engine-code)
        + [Use the `OkHttp4Engine`](http-client-config.md#http-config-okhttp4engine)
        + [Use an explicit HTTP client](http-client-config.md#http-client-explicit-usage)
          + [Imports](http-client-config.md#http-client-explicit-usage-ex-imports)
          + [Code](http-client-config.md#http-client-explicit-usage-ex-code)
      + [Idle connection monitoring](http-client-config.md#http-idle-connection-monitoring)
        + [Imports](http-client-config.md#http-idle-connection-ex-imports)
        + [Code](http-client-config.md#http-idle-connection-ex-code)
  + [Use an HTTP proxy](using-http-proxy.md)
    + [Use JVM system properties](using-http-proxy.md#http-proxy-jvm-properties)
    + [Use environment variables](using-http-proxy.md#http-proxy-environment-variables)
    + [Use a proxy on EC2 instances](using-http-proxy.md#http-proxy-ec2)
  + [HTTP interceptors](interceptors.md)
    + [Interceptor registration](interceptors.md#interceptor-registration)
      + [Interceptor for all service client operations](interceptors.md#interceptor-all-ops)
      + [Interceptor for only specific operations](interceptors.md#interceptor-specific-ops)
  + [Enforce a minimum TLS version](configure-http-tls.md)
    + [Configure the HTTP engine](configure-http-tls.md#configure-http-tls-engine)
    + [Set the `sdk.minTls` JVM system property](configure-http-tls.md#configure-http-tls-sysprop)
    + [Set the `SDK_MIN_TLS` environment variable](configure-http-tls.md#configure-http-tls-envvar)
+ [Retries in the AWS SDK for Kotlin](retries.md)
  + [Understanding retry behavior](retries.md#retries-understanding)
    + [Default retry configuration](retries.md#retries-default)
    + [Which exceptions are retryable?](retries.md#retries-default-policy-details)
      + [Retryable by error code](retries.md#retries-retryable-by-error-code)
      + [Retryable by HTTP status code](retries.md#retries-retryable-by-status-code)
      + [Retryable by error type](retries.md#retries-retryable-by-error-type)
      + [Retryable by SDK metadata](retries.md#retries-retryable-by-metadata)
    + [Check if an exception is retryable](retries.md#retries-check-exception-retryable)
    + [What exceptions reach your code when retries fail](retries.md#retries-exception-types-during-retries)
  + [Customizing retry behavior](retries.md#retries-customizing)
    + [Configure maximum attempts](retries.md#retires-max-attempts)
    + [Configure delays and backoff](retries.md#retries-delays-backoff)
    + [Configure retry token bucket](retries.md#retries-token-bucket)
    + [Configure adaptive retries](retries.md#retries-adaptive-retries)
+ [Observability](observability.md)
  + [Configure a `TelemetryProvider`](observability.md#observability-conf-telemetry-provider)
    + [Configure the default global telemetry provider](observability.md#observability-conf-telemetry-provider-global)
    + [Configure a telemetry provider for a specific service client](observability.md#observability-conf-telemetry-provider-client)
  + [Metrics](observability-telemetry-metrics.md)
  + [Logging](logging.md)
    + [Specify log mode for wire-level messages](logging.md#sdk-log-mode)
      + [Set log mode in code](logging.md#set-log-mode-programmatically)
      + [Set log mode from the environment](logging.md#set-log-mode-from-enviironment)
  + [Telemetry providers](observability-telemetry-providers.md)
    + [Configure the OpenTelemetry-based telemetry provider](observability-telemetry-providers-otel.md)
      + [Prerequisites](observability-telemetry-providers-otel.md#observability-telemetry-providers-otel-prereqs)
      + [Configure the SDK](observability-telemetry-providers-otel.md#observability-telemetry-providers-otel-conf)
      + [Resources](observability-telemetry-providers-otel.md#observability-telemetry-providers-otel-res)
+ [Override service client configuration](override-client-config.md)
  + [Lifecycle of an overridden client](override-client-config.md#override-client-lifecycle)
  + [Resources shared between clients](override-client-config.md#override-client-shared-res)