本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中使用 AWS 共用組態描述檔 AWS SDK for Java 2.x
您可以使用共用 config和 credentials 檔案來設定多個設定檔。這可讓您的應用程式使用多組登入資料組態。先前提到了[default]設定檔。SDK 使用 ProfileCredentialsProvidercredentials檔案中定義的設定檔載入設定。
下列程式碼片段示範如何建置服務用戶端,使用在名為 的設定檔中定義的設定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()方法的任何登入資料提供者,以重新載入設定檔登入資料。這些登入資料設定檔類別包括:ProfileCredentialsProvider、InstanceProfileCredentialsProvider、 DefaultCredentialsProvider和 ProfileTokenProvider.
注意
設定檔登入資料重新載入僅適用於設定檔 aws_access_key_id、 aws_secret_access_key和 中的下列設定aws_session_token。
source_profile 會忽略 region、sso_account_id、 sso_session和 等設定。
若要設定支援的登入資料提供者重新載入設定檔設定,ProfileFileSupplierprofileFile()建置器方法。下列程式碼範例示範從 [default] 設定檔ProfileCredentialsProvider重新載入登入資料設定的 。
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() 呼叫 時,適用於 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()時,重新載入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. */