使用配置文件 - AWS SDK for Java 2.x

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

使用配置文件

使用共享configcredentials文件,您可以设置多个配置文件。这使您的应用程序可以使用多组证书配置。前面提到了[default]个人资料。SDK 使用该ProfileCredentialsProvider类从共享credentials文件中定义的配置文件加载设置。

以下代码片段演示了如何使用名my_profile为的配置文件的一部分定义的设置来构建服务客户端。

Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("my_profile")) .build();

将不同的配置文件设置为默认设置

要将配置文件以外的[default]配置文件设置为应用程序的默认配置,请将AWS_PROFILE环境变量设置为自定义配置文件的名称。

要在 Linux、macOS 或 Unix 上设置此变量,请使用:export

export AWS_PROFILE="other_profile"

要在 Windows 上设置这些变量,请使用 set

set AWS_PROFILE="other_profile"

或者,将 aws.profile Java 系统属性设置为配置文件的名称。

重新加载配置文件凭证

您可以配置任何在其生成器中具有重新加载配置文件凭证的profileFile()方法的证书提供商。这些证书配置文件类为:ProfileCredentialsProviderDefaultCredentialsProviderInstanceProfileCredentialsProvider、和 ProfileTokenProvider.

注意

配置文件凭据重新加载仅适用于配置文件中的以下设置:aws_access_key_idaws_secret_access_key、和。aws_session_token

regionsso_sessionsso_account_id、和等设置将被source_profile忽略。

要将支持的凭证提供程序配置为重新加载配置文件设置,请ProfileFileSupplierprofileFile()生成器方法提供一个实例。以下代码示例演示了从配置ProfileCredentialsProvider文件中重新加载凭证设置的。[default]

ProfileCredentialsProvider provider = ProfileCredentialsProvider .builder() .profileFile(ProfileFileSupplier.defaultSupplier()) .build(); // Set up a service client with the provider instance. DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .region(Region.US_EAST_1) .credentialsProvider(provider) .build(); /* Before dynamoDbClient makes a request, it reloads the credentials settings by calling provider.resolveCredentials(). */

调用时ProfileCredentialsProvider.resolveCredentials(),适用于 SDK for Java 会重新加载设置。 ProfileFileSupplier.defaultSupplier()是 SDK ProfileFileSupplier 提供的几种便捷实现之一。如果你的用例需要,你可以提供自己的实现。

以下示例演示了ProfileFileSupplier.reloadWhenModified()便捷方法的使用。 reloadWhenModified()采用一个Path参数,这使您可以灵活地为配置指定源文件而不是标准~/.aws/credentials(或config)位置。

只有当 SDK 确定文件内容已被修改时resolveCredentials(),才会在调用时重新加载设置。

Path credentialsFilePath = ... ProfileCredentialsProvider provider = ProfileCredentialsProvider .builder() .profileFile(ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS)) .profileName("my-profile") .build(); /* A service client configured with the provider instance calls provider.resolveCredential() before each request. */

ProfileFileSupplier.aggregate()方法合并了多个配置文件的内容。您可以决定是每次调用文件时重新加载文件,resolveCredentials()还是文件设置在首次读取时是固定的。

以下示例显示了DefaultCredentialsProvider合并两个包含配置文件设置的文件的设置。每次resolveCredentials()调用变量时,SDK 都会重新加载credentialsFilePath变量指向的文件中的设置,并且设置已更改。来自该profileFile对象的设置保持不变。

Path credentialsFilePath = ...; ProfileFile profileFile = ...; DefaultCredentialsProvider provider = DefaultCredentialsProvider .builder() .profileFile(ProfileFileSupplier.aggregate( ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS), ProfileFileSupplier.fixedProfileFile(profileFile))) .profileName("my-profile") .build(); /* A service client configured with the provider instance calls provider.resolveCredential() before each request. */