中的登入資料快取 AWS SDK for Java 2.x - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

中的登入資料快取 AWS SDK for Java 2.x

AWS SDK for Java 2.x 實作登入資料快取,以改善效能並減少對登入資料來源的呼叫。本節說明登入資料快取的運作方式,以及如何為您的應用程式進行設定。

了解登入資料提供者快取

適用於 Java 的 SDK 2.x 中的登入資料提供者使用不同的快取策略:

  • 內部登入資料快取:許多供應商會快取他們擷取的登入資料。

  • 自動重新整理:具有快取登入資料的提供者會實作重新整理機制。

具有內部登入資料快取的提供者

即使您建立新執行個體,下列登入資料供應商也會在內部快取登入資料:

  • 執行個體描述檔登入資料提供者:從 Amazon EC2 中繼資料服務快取登入資料。

  • 容器憑證提供者:從容器中繼資料端點快取憑證。

  • STS 型供應商:從 AWS Security Token Service (STS) 快取臨時憑證。

  • Web 身分字符提供者:快取從 Web 身分字符取得的憑證。

  • 程序登入資料提供者:從外部程序快取登入資料。

沒有內部快取的提供者

下列提供者不會實作內部快取:

  • 環境變數登入資料提供者

  • 系統屬性登入資料提供者

  • 靜態登入資料提供者

設定登入資料快取

您可以在建置登入資料提供者時自訂快取行為:

過時時間

控制何時將登入資料視為過時且需要重新整理:

.staleTime(Duration.ofMinutes(2)) // Consider stale 2 minutes before expiration.

預先擷取時間

決定何時在憑證過期前開始重新整理憑證:

.prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration.

非同步更新

啟用背景登入資料重新整理:

.asyncCredentialUpdateEnabled(true) // Refresh credentials in background thread.

工作階段持續時間

對於 STS 型供應商, 會控制暫時登入資料保持有效的時間長度:

.refreshRequest(r -> r.durationSeconds(3600)) // 1 hour session.

快取登入資料組態範例

作為為登入資料提供者實作設定快取的範例,您可能希望 SDK 使用背景執行緒在登入資料過期之前預先擷取 (事先擷取)。如此一來,您可以避免擷取新登入資料的封鎖呼叫。

以下範例會建立 StsAssumeRoleCredentialsProvider,該 使用背景執行緒,透過將 asyncCredentialUpdateEnabled 屬性設定為建置器true上的 來預先擷取登入資料:

StsAssumeRoleCredentialsProvider provider = StsAssumeRoleCredentialsProvider.builder() .refreshRequest(r -> r .roleArn("arn:aws:iam::111122223333:role/example-role") .roleSessionName("example-session") .durationSeconds(3600)) // 1 hour session .staleTime(Duration.ofMinutes(5)) // Consider stale 5 minutes before expiration .prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration .asyncCredentialUpdateEnabled(true) // Refresh in background .build(); S3Client s3 = S3Client.builder() .credentialsProvider(provider) .build();

當您s3Client第一次在 上叫用 操作時, AssumeRoleRequest 會傳送到 AWS Security Token Service (STS)。STS 會傳回有效 15 分鐘 (900 秒) 的臨時登入資料。s3Client 執行個體會使用快取的登入資料,直到在 15 分鐘之前重新整理它們為止。根據預設,軟體開發套件會嘗試擷取目前工作階段過期時間前 5 分鐘到 1 分鐘之間新工作階段的新登入資料。您可以使用 prefetchTimestaleTime 屬性來設定預先擷取時段。

您可以使用類似的方式設定下列工作階段型登入資料提供者:

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider (委派給使用工作階段的登入資料提供者時)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider

了解登入資料快取可協助您在使用 時最佳化應用程式的效能和可靠性 AWS 服務。