向提供临时证书 Amazon SDK for Java - Amazon SDK for Java 1.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们宣布了即将推出 end-of-support 的 Amazon SDK for Java (v1)。建议您迁移到 Amazon SDK for Java v2。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向提供临时证书 Amazon SDK for Java

要向发出请求 Amazon Web Services,您必须提供 Amazon 临时证书, Amazon SDK for Java 以供其在调用服务时使用。您可以通过下列方式来执行此操作:

  • 使用默认凭证提供程序链(推荐)

  • 使用特定的凭证提供程序或提供程序链(或创建您自己的)。

  • 在代码中自行提供临时凭证。

使用默认凭证提供程序链

当您在不提供任何参数的情况下初始化新的服务客户端时,会 Amazon SDK for Java 尝试使用 Default AWSCredentialsProviderChain 类实现的默认凭证提供程序链来查找临时证书。默认凭证提供程序链将按此顺序查找凭证:

  1. 环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN。 Amazon SDK for Java 使用EnvironmentVariableCredentialsProvider类来加载这些证书。

  2. Java 系统属性aws.accessKeyIdaws.secretKeyaws.sessionToken。 Amazon SDK for Java 使用加载SystemPropertiesCredentialsProvider这些凭证。

  3. 来自环境或容器的 Web 身份令牌凭证

  4. 默认凭证配置文件 ——通常位于~/.aws/credentials(位置可能因平台而异),由许多 Amazon SDK 和由共享。 Amazon CLI Amazon SDK for Java 使用加载ProfileCredentialsProvider这些凭证。

    您可以使用提供的aws configure命令创建凭据文件 Amazon CLI,也可以使用文本编辑器编辑该文件来创建凭证文件。有关凭证文件格式的信息,请参阅 Amazon 凭证文件格式

  5. Amazon ECS 容器凭证 – 如果设置了环境变量 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,则从 Amazon ECS 加载该凭证。 Amazon SDK for Java 使用加载ContainerCredentialsProvider这些凭证。可以指定此值的 IP 地址。

  6. 实例配置文件证书-用于 EC2 实例,并通过 Amazon EC2 元数据服务提供。 Amazon SDK for Java 使用加载InstanceProfileCredentialsProvider这些凭证。可以指定此值的 IP 地址。

    注意

    仅在未设置 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 时使用实例配置文件凭证。有关更多信息ContainerCredentialsProviderWrapper,请参阅 EC2

设置临时凭证

为了能够使用 Amazon 临时证书,必须至少在前面的一个位置设置临时证书。有关设置凭证的信息,请参阅以下主题:

设置备用凭证配置文件

默认 Amazon SDK for Java 使用默认配置文件,但也有一些方法可以自定义哪个配置文件来自凭据文件。

您可以使用 P Amazon rofile 环境变量来更改 SDK 加载的配置文件。

例如,在 Linux、macOS 或 Unix 上,您可运行以下命令来将配置文件更改为 myProfile

export AWS_PROFILE="myProfile"

在 Windows 上,您将使用以下配置文件。

set AWS_PROFILE="myProfile"

设置AWS_PROFILE环境变量会影响所有官方支持的 Amazon SDK 和工具(包括和)的 Amazon CLI 凭据加载。 Amazon Tools for Windows PowerShell如果只需要更改 Java 应用程序的配置文件,则可改用系统属性 aws.profile

注意

环境变量优先于系统属性。

设置备用凭证文件位置

会自动从默认凭证文件位置 Amazon SDK for Java 加载 Amazon 临时证书。但是,您也可以通过在 AWS_CREDENTIAL_PROFILES_FILE 环境变量中设置凭证文件的完整路径来指定位置。

您可以使用此功能临时更改证书文件所在的位置(例如,通过使用命令行设置此变量)。 Amazon SDK for Java 或者,您也可以在您的用户环境或系统环境中设置该环境变量,在用户范围或系统范围内对其进行更改。

覆盖默认凭证文件位置

  • AWS_CREDENTIAL_PROFILES_FILE环境变量设置为 Amazon 凭据文件的位置。

    • 在 Linux、macOS 或 Unix 上,请使用:

      export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
    • 在 Windows 上,请使用:

      set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file

Credentials 文件格式

根据本指南中的基本设置说明,您的凭证文件应采用以下基本格式。

[default] aws_access_key_id=<value from Amazon access portal> aws_secret_access_key=<value from Amazon access portal> aws_session_token=<value from Amazon access portal> [profile2] aws_access_key_id=<value from Amazon access portal> aws_secret_access_key=<value from Amazon access portal> aws_session_token=<value from Amazon access portal>

在方括号中指定配置文件名(例如:[default]),后跟该配置文件中的可配置字段作为键值对。您的 credentials 文件可包含多个配置文件,可使用 aws configure --profile PROFILE_NAME 选择要配置的配置文件来添加或编辑这些配置文件。

您可以指定其他字段,例如 metadata_service_timeoutmetadata_service_num_attempts。无法使用 CLI 配置这些文件 – 如果您想使用这些文件,则必须手动编辑它们。有关配置文件及其可用字段的更多信息,请参阅 Amazon Command Line Interface 用户指南Amazon Command Line Interface中的配置

加载凭证

在设置临时凭证后,SDK 使用默认凭证提供程序链来加载这些凭证。

为此,您需要实例化 Amazon Web Service 客户端,而无需向生成器明确提供证书,如下所示。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

指定凭证提供程序或提供程序链

您可以通过客户端生成器来指定一个不同于默认凭证提供程序链的凭证提供程序。

您可以向以AWSCredentialsProvider接口作为输入的客户端生成器提供凭证提供程序或提供程序链的实例。以下示例演示使用环境 凭证的具体情况。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new EnvironmentVariableCredentialsProvider()) .build();

有关 Amazon SDK for Java提供的凭证提供者和提供者链的完整列表,请参阅中的所有已知实现类AWSCredentialsProvider

注意

您可以使用此技术来提供凭证提供程序或提供者链,这些证书提供程序或通过使用自己实现AWSCredentialsProvider接口的凭证提供程序或对类进行子类来创建。AWSCredentialsProviderChain

明确指定临时凭证

如果默认凭证链和特定的或自定义的提供程序或提供程序链都不适用于您的代码,您可以通过自行提供来明确设置这些凭证。如果您使用检索了临时证书 Amazon STS,请使用此方法指定 Amazon 访问凭证。

  1. 实例化该BasicSessionCredentials类,并为其提供 SDK 用于连接的 Amazon 访问 Amazon 密钥、密钥和会 Amazon 话令牌。

  2. AWSStaticCredentialsProviderAWSCredentials对象创建。

  3. 使用 AWSStaticCredentialsProvider 配置客户端生成器并构建客户端。

以下是示例。

BasicSessionCredentials awsCreds = new BasicSessionCredentials("access_key_id", "secret_key_id", "session_token"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();

更多信息