# 046 API Reference 6b39bd3f

> AWS SDK for Java 2.x API Reference

- Skill: `tools-only/046-api-reference-6b39bd3f` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/046-api-reference-6b39bd3f`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/046-api-reference-6b39bd3f/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tools-only/046-api-reference-6b39bd3f

---

# AWS SDK for Java 2.x API Reference

## Core Client Classes

### AwsClient
Base interface for all AWS service clients.

```java
public interface AwsClient extends AutoCloseable {
    // Base client interface
}
```

### SdkClient
Enhanced client interface with SDK-specific features.

```java
public interface SdkClient extends AwsClient {
    // Enhanced client methods
}
```

## Client Builders

### ClientBuilder
Base builder interface for all AWS service clients.

**Key Methods:**
- `region(Region region)` - Set AWS region
- `credentialsProvider(CredentialsProvider credentialsProvider)` - Configure authentication
- `overrideConfiguration(ClientOverrideConfiguration overrideConfiguration)` - Override default settings
- `httpClient(HttpClient httpClient)` - Specify HTTP client implementation
- `build()` - Create client instance

## Configuration Classes

### ClientOverrideConfiguration
Controls client-level configuration including timeouts and metrics.

**Key Properties:**
- `apiCallTimeout(Duration)` - Total timeout for all retry attempts
- `apiCallAttemptTimeout(Duration)` - Timeout per individual attempt
- `retryPolicy(RetryPolicy)` - Retry behavior configuration
- `metricPublishers(MetricPublisher...)` - Enable metrics collection

### Builder Example

```java
ClientOverrideConfiguration config = ClientOverrideConfiguration.builder()
    .apiCallTimeout(Duration.ofSeconds(30))
    .apiCallAttemptTimeout(Duration.ofSeconds(10))
    .addMetricPublisher(CloudWatchMetricPublisher.create())
    .build();
```

## HTTP Client Implementations

### ApacheHttpClient
Synchronous HTTP client with advanced features.

**Builder Configuration:**
- `maxConnections(Integer)` - Maximum concurrent connections
- `connectionTimeout(Duration)` - Connection establishment timeout
- `socketTimeout(Duration)` - Socket read/write timeout
- `connectionTimeToLive(Duration)` - Connection lifetime
- `proxyConfiguration(ProxyConfiguration)` - Proxy settings

### NettyNioAsyncHttpClient
Asynchronous HTTP client for high-performance applications.

**Builder Configuration:**
- `maxConcurrency(Integer)` - Maximum concurrent operations
- `connectionTimeout(Duration)` - Connection timeout
- `readTimeout(Duration)` - Read operation timeout
- `writeTimeout(Duration)` - Write operation timeout
- `sslProvider(SslProvider)` - SSL/TLS implementation

### UrlConnectionHttpClient
Lightweight HTTP client using Java's URLConnection.

**Builder Configuration:**
- `socketTimeout(Duration)` - Socket timeout
- `connectTimeout(Duration)` - Connection timeout

## Authentication and Credentials

### Credential Providers

#### EnvironmentVariableCredentialsProvider
Reads credentials from environment variables.

```java
CredentialsProvider provider = EnvironmentVariableCredentialsProvider.create();
```

#### SystemPropertyCredentialsProvider
Reads credentials from Java system properties.

```java
CredentialsProvider provider = SystemPropertyCredentialsProvider.create();
```

#### ProfileCredentialsProvider
Reads credentials from AWS configuration files.

```java
CredentialsProvider provider = ProfileCredentialsProvider.create("profile-name");
```

#### StaticCredentialsProvider
Provides static credentials (not recommended for production).

```java
AwsBasicCredentials credentials = AwsBasicCredentials.create("key", "secret");
CredentialsProvider provider = StaticCredentialsProvider.create(credentials);
```

#### DefaultCredentialsProvider
Implements the default credential provider chain.

```java
CredentialsProvider provider = DefaultCredentialsProvider.create();
```

### SSO Authentication

#### AwsSsoCredentialsProvider
Enables SSO-based authentication.

```java
AwsSsoCredentialsProvider ssoProvider = AwsSsoCredentialsProvider.builder()
    .ssoProfile("my-sso-profile")
    .build();
```

## Error Handling Classes

### SdkClientException
Client-side exceptions (network, timeout, configuration issues).

```java
try {
    awsOperation();
} catch (SdkClientException e) {
    // Handle client-side errors
}
```

### SdkServiceException
Service-side exceptions (AWS service errors).

```java
try {
    awsOperation();
} catch (SdkServiceException e) {
    // Handle service-side errors
    System.err.println("Error Code: " + e.awsErrorDetails().errorCode());
    System.err.println("Request ID: " + e.requestId());
}
```

### S3Exception
S3-specific exceptions.

```java
try {
    s3Operation();
} catch (S3Exception e) {
    // Handle S3-specific errors
    System.err.println("S3 Error: " + e.awsErrorDetails().errorMessage());
}
```

## Metrics and Monitoring

### CloudWatchMetricPublisher
Publishes metrics to AWS CloudWatch.

```java
CloudWatchMetricPublisher publisher = CloudWatchMetricPublisher.create();
```

### MetricPublisher
Base interface for custom metrics publishers.

```java
public interface MetricPublisher {
    void publish(MetricCollection metricCollection);
}
```

## Utility Classes

### Duration and Time
Configure timeouts using Java Duration.

```java
Duration apiTimeout = Duration.ofSeconds(30);
Duration attemptTimeout = Duration.ofSeconds(10);
```

### Region
AWS regions for service endpoints.

```java
Region region = Region.US_EAST_1;
Region regionEU = Region.EU_WEST_1;
```

### URI
Endpoint configuration and proxy settings.

```java
URI proxyUri = URI.create("http://proxy:8080");
URI endpointOverride = URI.create("http://localhost:4566");
```

## Configuration Best Practices

### Resource Management
Always close clients when no longer needed.

```java
try (S3Client s3 = S3Client.builder().build()) {
    // Use client
} // Auto-closed
```

### Connection Pooling
Reuse clients to avoid connection pool overhead.

```java
@Service
public class AwsService {
    private final S3Client s3Client;

    public AwsService() {
        this.s3Client = S3Client.builder().build();
    }

    // Reuse s3Client throughout application
}
```

### Error Handling
Implement comprehensive error handling for robust applications.

```java
try {
    // AWS operation
} catch (SdkServiceException e) {
    // Handle service errors
} catch (SdkClientException e) {
    // Handle client errors
} catch (Exception e) {
    // Handle other errors
}
```
