기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
의 자격 증명 캐싱 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)에서 임시 자격 증명을 캐시합니다.
-
웹 자격 증명 토큰 공급자: 웹 자격 증명 토큰에서 얻은 자격 증명을 캐시합니다.
-
프로세스 자격 증명 공급자: 외부 프로세스에서 자격 증명을 캐싱합니다.
내부 캐싱이 없는 공급자
다음 공급자는 내부 캐싱을 구현하지 않습니다.
-
환경 변수 자격 증명 공급자
-
시스템 속성 자격 증명 공급자
-
정적 자격 증명 공급자
자격 증명 캐싱 구성
자격 증명 공급자를 빌드할 때 캐싱 동작을 사용자 지정할 수 있습니다.
기한 경과 시간
자격 증명이 오래된 것으로 간주되어 새로 고침이 필요한 경우를 제어합니다.
.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가 백그라운드 스레드를 사용하여 자격 증명이 만료되기 전에 미리 가져오도록(사전 검색) 할 수 있습니다. 이렇게 하면 새 자격 증명을 검색하는 차단 호출을 방지할 수 있습니다.
다음은 빌더true
에서 asyncCredentialUpdateEnabled
속성을 로 설정하여 백그라운드 스레드를 StsAssumeRoleCredentialsProvider
사용하여 자격 증명을 미리 가져오는를 생성하는 예제입니다.
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 서비스.