1. 简介

AWS SDK for Java 提供适用于 Amazon Web Services 的 Java API。利用此开发工具包,您可以轻松构建使用 Amazon S3、Amazon EC2、DynamoDB 等的 Java 应用程序。AWS 会定期向 AWS SDK for Java 添加对新服务的支持。

AWS SDK for Java 2.0 基于 Java 8+ 构建;

有以下适用于 AWS SDK for Java 开发人员的有价值的在线资源:

使用 AWS SDK for Java 2 的 前置条件

  • 创建 IAM 账户,并获取安全凭证;
  • 安装 JAVA 开发环境,需要 Java 8.0 或更高版本,也可以 OpenJDK 和 Amazon Correto (OpenJDK的一个发行版本) 结合使用;
  • 设置用于开发的 AWS 安全凭证和区域;
    • 可以通过安装 AWS CLI 执行 aws configure 命令在本地系统上设置凭证;
    • 文件位于 Linux 系统上的 ~/.aws/credenttials
    • 文件位于 Windows 上的 C:\Users\USERNAME\.aws\credentials
  • 通过 Maven 来管理开发工具包的依赖项


2. 使用 SDK

2.1 创建所需 AWS 服务的客户端

每个 AWS 服务都有一个服务接口,提供与服务 API 中各项操作对应的方法。例如,Amazon DynamoDB 的服务接口命名为 DynamoDbClient

2.1.1 builder 方法 (推荐)

通过 DynamoDbClient.builder() 构建方法可以自定义配置客户端的属性,比较灵活。

  1. DynamoDbClient client = DynamoDbClient.builder()
  2. .region(Region.US_WEST_2)
  3. .credentialsProvider(ProfileCredentialsProvider.builder()
  4. .profileName("myProfile")
  5. .build())
  6. .build();

2.1.2 create 方法

DynamoDbClient.create() 将使用默认配置创建服务客户端。该客户端使用默认提供程序链加载凭证和 AWS 区域。如果不能根据运行应用程序的环境确定凭证或区域,则对 create 的调用失败。

  1. DynamoDbClient client = DynamoDbClient.create();

2.2 提供和检索 AWS 凭证

要向 Amazon Web Services (AWS) 提交请求,您必须为 AWS SDK for Java 提供 AWS 凭证。您可以使用以下方法实现这一点:

  • 使用默认凭证提供程序链(推荐)。
  • 使用特定的凭证提供程序或提供程序链。
  • 明确提供凭证。

    2.2.1 使用默认 CredentialsProvider

    在初始化新服务客户端而未提供任何参数时,AWS SDK for Java 尝试查找 AWS 凭证,并且会按照一定的顺序检索凭据。

    1. S3Client s3 = S3Client.builder()
    2. .region(Region.US_WEST_2)
    3. .build();
  • 凭据检索顺序:

    • Java 系统属性:aws.accessKeyIdaws.secretAccessKey。AWS SDK for Java使用 SystemPropertyCredentialsProvider 加载这些凭证。
    • 环境变量:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY。AWS SDK for Java使用 EnvironmentVariableCredentialsProvider 类加载这些凭证。
    • 默认凭证配置文件:此文件的具体位置因平台而异,但通常位于 ~/.aws/credentials。此文件由多个 AWS 开发工具包以及 AWS CLI 共享。AWS SDK for Java 使用 ProfileCredentialsProvider 加载这些凭证。您可以使用由 AWS CLI 提供的 aws configure 命令创建凭证文件。
    • Amazon ECS 容器凭证:如果设置了环境变量 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,则从 Amazon ECS 加载凭证。AWS SDK for Java 使用 ContainerCredentialsProvider 加载这些凭证。
    • 实例配置文件凭证:此项在 Amazon EC2 实例上使用,并通过 Amazon EC2 元数据服务传送。AWS SDK for Java 使用 InstanceProfileCredentialsProvider 加载这些凭证。



2.2.2 使用特定的 CredentialsProvider

可以使用上面凭据检索技术中的一个来提供凭据,以下示例创建一个新的服务客户端,使用提供的环境 凭证,名为 EnvironmentVariableCredentialsProvider:

  1. S3Client s3 = S3Client.builder()
  2. .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
  3. .build();

2.2.3 明确提供凭证

  1. 实例化一个提供 AwsCredentials 接口的类,例如 AwsSessionCredentials。为该类提供您用于连接的 AWS 访问密钥和私有密钥。
  2. 使用 AwsCredentials 对象创建 StaticCredentialsProvider
  3. 使用 StaticCredentialsProvider 配置客户端生成器并构建客户端。 ```java AwsSessionCredentials awsCreds = AwsSessionCredentials.create( “your_access_key_id_here”, “your_secret_key_id_here”, “your_session_token_here”);

S3Client s32 = S3Client.builder() .credentialsProvider(StaticCredentialsProvider.create(awsCreds)) .build(); ```