The Amazon Web Services SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. This comprehensive SDK enables developers to code against APIs for all of Amazon's infrastructure web services including S3, EC2, DynamoDB, Lambda, and 381+ other services.
Package Name: aws-java-sdk
Package Type: maven
Language: Java
Installation:
BOM (recommended):
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.12.791</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-ec2</artifactId>
</dependency>
<!-- Add other service dependencies as needed -->
</dependencies>Full SDK (not recommended):
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.12.791</version>
</dependency>// Core SDK framework
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.regions.*;
import com.amazonaws.client.builder.*;
// Service-specific imports
import com.amazonaws.services.s3.*;
import com.amazonaws.services.s3.model.*;
import com.amazonaws.services.ec2.*;
import com.amazonaws.services.ec2.model.*;
import com.amazonaws.services.dynamodbv2.*;
import com.amazonaws.services.dynamodbv2.model.*;import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.PutObjectRequest;
// Create S3 client using builder pattern
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain())
.withRegion(Regions.US_EAST_1)
.build();
// Upload an object
s3Client.putObject(new PutObjectRequest("my-bucket", "my-key", "Hello World!"));
// Clean up resources
s3Client.shutdown();The AWS Java SDK follows a modular, service-oriented architecture:
Core framework for creating and configuring AWS service clients with credential management, regional configuration, and HTTP settings.
// Abstract base for all service builders
public abstract class AwsClientBuilder<Subclass extends AwsClientBuilder, TypeToBuild> {
public final Subclass withCredentials(AWSCredentialsProvider credentialsProvider);
public final Subclass withRegion(Regions region);
public final Subclass withRegion(String region);
public final Subclass withClientConfiguration(ClientConfiguration clientConfiguration);
public abstract TypeToBuild build();
}
// Client configuration container
public class ClientConfiguration {
public ClientConfiguration();
public void setConnectionTimeout(int connectionTimeout);
public void setSocketTimeout(int socketTimeout);
public void setMaxConnections(int maxConnections);
public void setRetryPolicy(RetryPolicy retryPolicy);
public void setProxyHost(String proxyHost);
public void setProxyPort(int proxyPort);
}Credential management system supporting multiple authentication methods including environment variables, credential files, IAM roles, and federation.
// Main credential provider interface
public interface AWSCredentialsProvider {
AWSCredentials getCredentials();
void refresh();
}
// Default credential provider chain
public class DefaultAWSCredentialsProviderChain implements AWSCredentialsProvider {
public DefaultAWSCredentialsProviderChain();
public AWSCredentials getCredentials();
public void refresh();
}
// Static credentials provider
public class AWSStaticCredentialsProvider implements AWSCredentialsProvider {
public AWSStaticCredentialsProvider(AWSCredentials credentials);
public AWSCredentials getCredentials();
public void refresh();
}Object storage service for storing and retrieving any amount of data from anywhere on the web. Provides bucket management, object operations, and advanced features like versioning and lifecycle management.
public interface AmazonS3 {
// Object operations
PutObjectResult putObject(PutObjectRequest putObjectRequest);
PutObjectResult putObject(String bucketName, String key, String content);
PutObjectResult putObject(String bucketName, String key, File file);
S3Object getObject(GetObjectRequest getObjectRequest);
S3Object getObject(String bucketName, String key);
void deleteObject(DeleteObjectRequest deleteObjectRequest);
void deleteObject(String bucketName, String key);
// Bucket operations
Bucket createBucket(CreateBucketRequest createBucketRequest);
Bucket createBucket(String bucketName);
void deleteBucket(DeleteBucketRequest deleteBucketRequest);
void deleteBucket(String bucketName);
List<Bucket> listBuckets();
// Listing operations
ObjectListing listObjects(ListObjectsRequest listObjectsRequest);
ObjectListing listObjects(String bucketName);
}Elastic Compute Cloud providing resizable compute capacity with virtual server instances, security groups, key pairs, and network management.
public interface AmazonEC2 {
// Instance management
RunInstancesResult runInstances(RunInstancesRequest runInstancesRequest);
TerminateInstancesResult terminateInstances(TerminateInstancesRequest terminateInstancesRequest);
DescribeInstancesResult describeInstances(DescribeInstancesRequest describeInstancesRequest);
DescribeInstancesResult describeInstances();
StartInstancesResult startInstances(StartInstancesRequest startInstancesRequest);
StopInstancesResult stopInstances(StopInstancesRequest stopInstancesRequest);
// Security groups
CreateSecurityGroupResult createSecurityGroup(CreateSecurityGroupRequest createSecurityGroupRequest);
DescribeSecurityGroupsResult describeSecurityGroups(DescribeSecurityGroupsRequest describeSecurityGroupsRequest);
AuthorizeSecurityGroupIngressResult authorizeSecurityGroupIngress(AuthorizeSecurityGroupIngressRequest request);
}Fast and flexible NoSQL database service with seamless scaling, consistent performance, and built-in security features.
public interface AmazonDynamoDB {
// Item operations
PutItemResult putItem(PutItemRequest putItemRequest);
PutItemResult putItem(String tableName, Map<String, AttributeValue> item);
GetItemResult getItem(GetItemRequest getItemRequest);
GetItemResult getItem(String tableName, Map<String, AttributeValue> key);
DeleteItemResult deleteItem(DeleteItemRequest deleteItemRequest);
UpdateItemResult updateItem(UpdateItemRequest updateItemRequest);
// Query and scan operations
QueryResult query(QueryRequest queryRequest);
ScanResult scan(ScanRequest scanRequest);
ScanResult scan(String tableName, List<String> attributesToGet);
// Table management
CreateTableResult createTable(CreateTableRequest createTableRequest);
DeleteTableResult deleteTable(DeleteTableRequest deleteTableRequest);
DescribeTableResult describeTable(DescribeTableRequest describeTableRequest);
DescribeTableResult describeTable(String tableName);
}Serverless compute service for running code without provisioning or managing servers, with automatic scaling and pay-per-request billing.
public interface AWSLambda {
// Function management
CreateFunctionResult createFunction(CreateFunctionRequest createFunctionRequest);
GetFunctionResult getFunction(GetFunctionRequest getFunctionRequest);
UpdateFunctionCodeResult updateFunctionCode(UpdateFunctionCodeRequest updateFunctionCodeRequest);
DeleteFunctionResult deleteFunction(DeleteFunctionRequest deleteFunctionRequest);
ListFunctionsResult listFunctions(ListFunctionsRequest listFunctionsRequest);
// Function invocation
InvokeResult invoke(InvokeRequest invokeRequest);
// Event source mappings
CreateEventSourceMappingResult createEventSourceMapping(CreateEventSourceMappingRequest request);
ListEventSourceMappingsResult listEventSourceMappings(ListEventSourceMappingsRequest request);
}Monitoring and observability service providing metrics, logs, and alarms for AWS resources and applications.
public interface AmazonCloudWatch {
// Metrics operations
PutMetricDataResult putMetricData(PutMetricDataRequest putMetricDataRequest);
GetMetricStatisticsResult getMetricStatistics(GetMetricStatisticsRequest getMetricStatisticsRequest);
ListMetricsResult listMetrics(ListMetricsRequest listMetricsRequest);
// Alarm management
PutMetricAlarmResult putMetricAlarm(PutMetricAlarmRequest putMetricAlarmRequest);
DeleteAlarmsResult deleteAlarms(DeleteAlarmsRequest deleteAlarmsRequest);
DescribeAlarmsResult describeAlarms(DescribeAlarmsRequest describeAlarmsRequest);
DescribeAlarmsResult describeAlarms();
}Identity and access management service for securely controlling access to AWS services and resources through users, groups, roles, and policies.
public interface AmazonIdentityManagement {
// User management
CreateUserResult createUser(CreateUserRequest createUserRequest);
GetUserResult getUser(GetUserRequest getUserRequest);
ListUsersResult listUsers(ListUsersRequest listUsersRequest);
DeleteUserResult deleteUser(DeleteUserRequest deleteUserRequest);
// Role management
CreateRoleResult createRole(CreateRoleRequest createRoleRequest);
GetRoleResult getRole(GetRoleRequest getRoleRequest);
ListRolesResult listRoles(ListRolesRequest listRolesRequest);
// Policy management
CreatePolicyResult createPolicy(CreatePolicyRequest createPolicyRequest);
GetPolicyResult getPolicy(GetPolicyRequest getPolicyRequest);
AttachUserPolicyResult attachUserPolicy(AttachUserPolicyRequest attachUserPolicyRequest);
}Structured exception hierarchy for handling AWS service errors, client-side errors, and network issues with detailed error information.
// Base exception for all SDK exceptions
public class SdkBaseException extends RuntimeException {
public SdkBaseException(String message);
public SdkBaseException(String message, Throwable cause);
}
// Base client exception for AWS SDK operations
public class AmazonClientException extends SdkBaseException {
public AmazonClientException(String message);
public AmazonClientException(String message, Throwable cause);
}
// Client-side exceptions (local errors)
public class SdkClientException extends AmazonClientException {
public SdkClientException(String message);
public SdkClientException(String message, Throwable cause);
}
// Service-side exceptions (AWS errors)
public class AmazonServiceException extends AmazonClientException {
public String getErrorCode();
public String getRequestId();
public int getStatusCode();
public ErrorType getErrorType();
public String getServiceName();
public enum ErrorType {
Client, Service, Unknown
}
}// Base request class
public abstract class AmazonWebServiceRequest {
public void setRequestCredentials(AWSCredentials credentials);
public AWSCredentials getRequestCredentials();
public void setGeneralProgressListener(ProgressListener progressListener);
public ProgressListener getGeneralProgressListener();
}
// Response metadata
public class ResponseMetadata {
public String getRequestId();
public Map<String, String> getMetadata();
}
// AWS credentials
public interface AWSCredentials {
String getAWSAccessKeyId();
String getAWSSecretKey();
}
// Region enumeration
public enum Regions {
US_EAST_1("us-east-1"),
US_WEST_1("us-west-1"),
US_WEST_2("us-west-2"),
EU_WEST_1("eu-west-1"),
EU_CENTRAL_1("eu-central-1"),
AP_SOUTHEAST_1("ap-southeast-1"),
AP_NORTHEAST_1("ap-northeast-1");
public String getName();
public static Regions fromName(String regionName);
public static Regions getCurrentRegion();
}