本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的登入資料快取 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 分鐘之間新工作階段的新登入資料。您可以使用 prefetchTime
和 staleTime
屬性來設定預先擷取時段。
您可以使用類似的方式設定下列工作階段型登入資料提供者:
-
StsWebIdentityTokenFileCredentialsProvider
-
StsGetSessionTokenCredentialsProvider
-
StsGetFederationTokenCredentialsProvider
-
StsAssumeRoleWithWebIdentityCredentialsProvider
-
StsAssumeRoleWithSamlCredentialsProvider
-
StsAssumeRoleCredentialsProvider
-
DefaultCredentialsProvider
(委派給使用工作階段的登入資料提供者時) -
ProcessCredentialsProvider
-
WebIdentityTokenFileCredentialsProvider
-
ContainerCredentialsProvider
-
InstanceProfileCredentialsProvider
了解登入資料快取可協助您在使用 時最佳化應用程式的效能和可靠性 AWS 服務。