での認証情報キャッシュ AWS SDK for Java 2.x - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での認証情報キャッシュ AWS SDK for Java 2.x

は、認証情報キャッシュ AWS SDK for Java 2.x を実装してパフォーマンスを向上させ、認証情報ソースへの呼び出しを減らします。このセクションでは、認証情報キャッシュの仕組みと、アプリケーション用に認証情報キャッシュを設定する方法について説明します。

認証情報プロバイダーのキャッシュについて

SDK for Java 2.x の認証情報プロバイダーは、さまざまなキャッシュ戦略を使用します。

  • 内部認証情報キャッシュ: 多くのプロバイダーは、取得した認証情報をキャッシュします。

  • 自動更新: キャッシュされた認証情報を持つプロバイダーは、更新メカニズムを実装します。

内部認証情報キャッシュを持つプロバイダー

次の認証情報プロバイダーは、新しいインスタンスを作成する場合でも、認証情報を内部でキャッシュします。

  • インスタンスプロファイル認証情報プロバイダー: Amazon EC2 メタデータサービスから認証情報をキャッシュします。

  • コンテナ認証情報プロバイダー: コンテナメタデータエンドポイントから認証情報をキャッシュします。

  • STS ベースのプロバイダー: AWS Security Token Service (STS) から一時的な認証情報をキャッシュします。

  • ウェブ ID トークンプロバイダー: ウェブ ID トークンから取得した認証情報をキャッシュします。

  • プロセス認証情報プロバイダー: 外部プロセスから認証情報をキャッシュします。

内部キャッシュを使用しないプロバイダー

以下のプロバイダーは内部キャッシュを実装していません。

  • 環境変数認証情報プロバイダー

  • システムプロパティ認証情報プロバイダー

  • 静的認証情報プロバイダー

認証情報キャッシュの設定

認証情報プロバイダーを構築するときにキャッシュ動作をカスタマイズできます。

古い時間

認証情報が古く、更新が必要なタイミングを制御します。

.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 にバックグラウンドスレッドを使用して、有効期限が切れる前に認証情報をプリフェッチ (事前に取得) させたい場合があります。これにより、新しい認証情報を取得するブロック呼び出しを回避できます。

ビルダーで asyncCredentialUpdateEnabledプロパティを に設定することで、バックグラウンドスレッドを使用して認証情報をプリフェッチStsAssumeRoleCredentialsProviderする を作成する例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 分経過する前に更新するまで使用します。デフォルトでは、SDK は現在のセッションの有効期限の 5 分から 1 分前に新しいセッションの新しい認証情報を取得しようとします。プリフェッチウィンドウは、 prefetchTimeおよび staleTimeプロパティを使用して設定できます。

次のセッションベースの認証情報プロバイダーも同様に設定できます。

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider (セッションを使用する認証情報プロバイダーに委任する場合)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider

認証情報キャッシュを理解すると、 を使用する際のアプリケーションのパフォーマンスと信頼性を最適化できます AWS のサービス。