기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에 대한 코드로 서비스 클라이언트 구성 AWS SDK for Java 2.x
서비스 클라이언트를 외부에서 구성하는 대신 코드로 프로그래밍 방식으로 구성할 수 있습니다.
코드로 서비스 클라이언트를 구성하면 사용 가능한 여러 옵션을 세밀하게 제어할 수 있습니다. 외부에서 설정할 수 있는 대부분의 구성도 코드에서 설정할 수 있습니다.
코드의 기본 구성
예를 들어 다음 코드 조각은 코드의 Amazon S3 서비스 클라이언트에 AWS 리전 EU_SOUTH_2
대해를 로 설정합니다.
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();
이전 코드 조각은 정적 팩토리 메서드를 보여줍니다builder()
. 이 builder()
메서드는 서비스 클라이언트를 사용자 지정할 수 있는 builder
객체를 반환합니다. 유창한 설정자 메서드는 builder
객체, 즉이 경우 S3ClientBuilder
build()
메서드를 호출하여 클라이언트를 생성할 수 있습니다.
코드의 고급 구성
다음 코드 조각은 추가 구성 옵션을 보여줍니다.
ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();
이전 코드 조각에서는 서비스 클라이언트를 구성하기 위한 몇 가지 진입점을 볼 수 있습니다.
-
모든 서비스 클라이언트에서 공통적인 구성 옵션을 제공하는
ClientOverrideConfiguration.Builder
객체입니다. 이러한 설정은 HTTP 구현과 무관 AWS한 특정 동작입니다. -
별도의 HTTP 클라이언트 빌더 구현을 통한 HTTP 클라이언트 구성.
는 예제입니다. 서비스 클라이언트는 구성된 HTTP 클라이언트를 서비스 클라이언트에 연결하는ApacheHttpClient.Builder
httpClientBuilder()
메서드를 제공합니다. -
region()
및와 같은 클라이언트 빌더자체의 메서드 credentialsProvider()
별도의 객체를 생성한 다음 서비스 클라이언트 메서드에 전달하는 대신는 Lambda 표현식을 수락하여 이러한 객체를 인라인으로 빌드하는 메서드를 AWS SDK for Java 2.x 제공합니다. 빌더의 구성 메서드 이름은 동일하지만 서명은 다릅니다. 예시:
이 접근 방식을 사용하여 앞서 보여준 S3 클라이언트의 구성은 하나의 코드 블록에서 수행할 수 있습니다.
S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();
코드에서 사용할 수 없는 구성 옵션
다음 설정은 SDK의 기본 초기화 프로세스에 영향을 미치므로 다음 구성 설정은 코드에서가 아닌 외부에서만 설정할 수 있습니다.
파일 위치 설정
이러한 설정은 공유 구성 및 자격 증명 파일의 위치를 제어하며 SDK가 파일을 로드한 후에는 프로그래밍 방식으로 재정의할 수 없습니다.
-
AWS_CONFIG_FILE(환경 변수)/aws.configFile(JVM 시스템 속성)
-
AWS_SHARED_CREDENTIALS_FILE(환경 변수)/aws.sharedCredentialsFile(JVM 시스템 속성)
이러한 설정은 SDK가 구성을 찾는 위치를 결정하므로 SDK가 구성 파일을 로드하기 전에 설정해야 합니다. SDK가 초기화되면 이러한 값을 변경해도 아무런 효과가 없습니다.
인스턴스 메타데이터 서비스 비활성화
-
AWS_EC2_METADATA_DISABLED(환경 변수)/aws.disableEc2Metadata(JVM 시스템 속성)
이 설정은 SDK가 EC2 인스턴스 메타데이터 서비스를 사용하려고 시도하는지 여부를 제어합니다. SDK가 초기화되면이 설정을 프로그래밍 방식으로 변경할 수 없습니다.
프로필 선택
-
AWS_PROFILE(환경 변수)/aws.profile(JVM 시스템 속성)
이 설정은 공유 구성 및 자격 증명 파일에서 로드할 프로필을 SDK에 알려줍니다. 로드된 후에는이 값을 변경해도 아무런 효과가 없습니다.
컨테이너 자격 증명 경로
-
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
AWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
이러한 환경 변수를 사용하여 SDK에 컨테이너 서비스에서 자격 증명을 가져오는 방법을 알려줍니다. 서비스 클라이언트 초기화 중에 자격 증명 공급자 체인이 설정된 후에는 이러한 설정을 변경할 수 없습니다.
기본 HTTP 구현 선택
-
SYNC_HTTP_SERVICE_IMPL(환경 변수) / software.amazon.awssdk.http.service.impl(JVM 시스템 속성)
-
ASYNC_HTTP_SERVICE_IMPL(환경 변수) / software.amazon.awssdk.http.async.service.impl(JVM 시스템 속성)
이러한 전역 설정은 개별 서비스 클라이언트의 코드에서 재정의되지 않는 한 SDK가 모든 서비스 클라이언트에 대해 사용하는 HTTP 클라이언트 구현을 결정합니다. SDK가 HTTP 클라이언트를 초기화하기 전에 이를 설정해야 하며 나중에 변경할 수 없습니다.