에서 클라이언트 엔드포인트 구성 AWS SDK for Java 2.x - AWS SDK for Java 2.x

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 클라이언트 엔드포인트 구성 AWS SDK for Java 2.x

Java 2.x용 SDK는 서비스 엔드포인트를 구성하는 다양한 방법을 제공합니다. 엔드포인트는 SDK가 API를 호출하는 데 사용하는 URL입니다 AWS 서비스. 기본적으로 SDK는 구성한에 따라 각 서비스에 적합한 엔드포인트를 AWS 리전 자동으로 결정합니다. 그러나 이러한 엔드포인트를 사용자 지정하거나 재정의해야 하는 시나리오가 있습니다.

  • 로컬 또는 타사 서비스 구현 작업(예: LocalStack)

  • 프록시 또는 VPC 엔드포인트를 AWS 서비스 통해에 연결

  • 베타 또는 시험판 서비스 엔드포인트에 대한 테스트

엔드포인트 구성 옵션

는 엔드포인트를 구성하는 몇 가지 방법을 AWS SDK for Java 2.x 제공합니다.

  • 서비스 클라이언트 빌더를 사용한 코드 내 구성

  • 환경 변수를 사용한 외부 구성

  • JVM 시스템 속성을 사용한 외부 구성

  • 공유 구성 파일을 사용한 외부 AWS 구성

코드 내 엔드포인트 구성

endpointOverride 사용하기

엔드포인트를 구성하는 가장 직접적인 방법은 서비스 클라이언트 빌더에서 endpointOverride 메서드를 사용하는 것입니다. 이 메서드는 사용자 지정 엔드포인트 URL을 나타내는 URI 객체를 허용합니다.

예 Amazon S3 클라이언트에 대한 사용자 지정 엔드포인트 설정
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import java.net.URI; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .endpointOverride(URI.create("https://my-custom-s3-endpoint.example.com")) .build();

를 사용하는 경우 엔드포인트가 명시적으로 설정되더라도 클라이언트의 리전을 지정해야 endpointOverride합니다. 리전은 요청에 서명하는 데 사용됩니다.

엔드포인트 검색

일부는 SDK가 사용할 최적의 엔드포인트를 자동으로 검색할 수 있는 엔드포인트 검색을 AWS 서비스 지원합니다. 서비스 클라이언트 빌더에서 endpointDiscoveryEnabled 메서드를 사용하여이 기능을 활성화하거나 비활성화할 수 있습니다.

예 DynamoDB 클라이언트에 대한 엔드포인트 검색 활성화
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; DynamoDbClient dynamoDb = DynamoDbClient.builder() .region(Region.US_WEST_2) .endpointDiscoveryEnabled(true) .build();

요청 수준 엔드포인트 구성

경우에 따라 기본 엔드포인트가 있는 다른 요청에 동일한 클라이언트를 사용하는 동안 특정 요청에 대해 엔드포인트를 재정의해야 할 수 있습니다. 는 요청 재정의를 통해 이를 AWS SDK for Java 2.x 지원합니다.

예 특정 요청에 대한 엔드포인트 재정의
import software.amazon.awssdk.core.SdkRequest; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.http.SdkHttpRequest; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .build(); // Create a request GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket("my-bucket") .key("my-key") .overrideConfiguration(c -> c.putHeader("Host", "custom-endpoint.example.com")) .build(); // Execute the request with the custom endpoint s3.getObject(getObjectRequest);

요청 수준 엔드포인트 재정의는 제한되며 일부 서비스 또는 시나리오에서는 작동하지 않을 수 있습니다. 대부분의 경우 클라이언트 수준 엔드포인트 구성을 사용하는 것이 좋습니다.

외부 엔드포인트 구성

환경 변수 사용

환경 변수를 사용하여 엔드포인트를 구성할 수 있습니다. SDK는 형식의 환경 변수를 통해 서비스별 엔드포인트 구성을 지원합니다. AWS_ENDPOINT_URL_[SERVICE]여기서는 대문자 서비스 식별자[SERVICE]입니다.

예 환경 변수를 사용하여 S3 엔드포인트 설정
# For Linux/macOS export AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com # For Windows set AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com

다음 환경 변수를 사용하여 글로벌 엔드포인트 URL 접두사 또는 접미사를 설정할 수도 있습니다.

  • AWS_ENDPOINT_URL - 모든 서비스에 대한 글로벌 엔드포인트를 설정합니다.

  • AWS_ENDPOINT_URL_PREFIX - 모든 서비스 엔드포인트에 접두사를 추가합니다.

  • AWS_ENDPOINT_URL_SUFFIX - 모든 서비스 엔드포인트에 접미사 추가

JVM 시스템 속성 사용

JVM 시스템 속성을 사용하여 엔드포인트를 구성할 수도 있습니다. 형식은 환경 변수와 비슷하지만 다른 이름 지정 규칙을 사용합니다.

예 JVM 시스템 속성을 사용하여 S3 엔드포인트 설정
java -Daws.endpointUrl.s3=https://my-custom-s3-endpoint.example.com -jar your-application.jar

글로벌 엔드포인트 구성은 시스템 속성을 통해서도 사용할 수 있습니다.

  • aws.endpointUrl - 모든 서비스에 대한 글로벌 엔드포인트를 설정합니다.

  • aws.endpointUrl.prefix - 모든 서비스 엔드포인트에 접두사를 추가합니다.

  • aws.endpointUrl.suffix - 모든 서비스 엔드포인트에 접미사 추가

공유 AWS 구성 파일 사용

AWS SDK for Java 2.x 또한는 일반적으로 ~/.aws/config (Linux/macOS) 또는 %USERPROFILE%\.aws\config (Windows)에 있는 공유 AWS 구성 파일을 통해 엔드포인트 구성을 지원합니다. 자세한 내용과 예제는 AWS SDKs 및 도구 참조 가이드를 참조하세요.

구성 우선 순위

여러 엔드포인트 구성이 있는 경우 SDK는 다음 우선 순위(가장 높음에서 가장 낮음)를 따릅니다.

  1. 요청 수준 재정의(해당하는 경우)

  2. 를 통한 클라이언트 수준 구성 endpointOverride

  3. 환경 변수

  4. JVM 시스템 속성

  5. 공유 AWS 구성 파일

  6. 구성된를 기반으로 하는 기본 엔드포인트 AWS 리전

서비스별 엔드포인트 구성

일부 AWS 서비스 에는 해당 서비스와 관련된 추가 엔드포인트 구성 옵션이 있습니다. 다음은 몇 가지 예입니다.

Amazon S3 엔드포인트 구성

Amazon S3는 S3Configuration 클래스를 통해 여러 엔드포인트 구성을 지원합니다.

  • dualstackEnabled - IPv6 지원 활성화

  • accelerateModeEnabled - S3 Transfer Acceleration을 활성화합니다.

  • pathStyleAccessEnabled - 가상 호스팅 스타일 대신 경로 스타일 액세스를 사용합니다.

  • useArnRegionEnabled - 리전 간 요청에 ARN의 리전을 사용합니다.

  • fipsModeEnabled - 요청을 FIPS 준수 엔드포인트로 라우팅합니다.

예 S3-specific 엔드포인트 옵션 구성
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3Configuration; S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .serviceConfiguration(S3Configuration.builder() .accelerateModeEnabled(true) .dualstackEnabled(true) .pathStyleAccessEnabled(false) .fipsModeEnabled(true) .build()) .build();

DynamoDB 엔드포인트 구성

DynamoDB의 경우 엔드포인트 검색을 사용하거나 DynamoDB 로컬에 연결하여 테스트할 수 있습니다.

예 DynamoDB 로컬에 연결
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import java.net.URI; DynamoDbClient dynamoDb = DynamoDbClient.builder() .endpointOverride(URI.create("http://localhost:8000")) // The region is meaningless for DynamoDB local but required for the client builder. .region(Region.US_WEST_2) .build();

DynamoDB는 코드에서 구성하거나 외부 설정을 사용하여 구성할 수 있는 계정 기반 엔드포인트의 사용도 지원합니다. 다음 예제에서는 클라이언트를 생성할 때 코드에서 계정 기반 엔드포인트 사용을 비활성화하는 방법을 보여줍니다(기본 설정이 선호됨).

DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .region(Region.US_EAST_1) .accountIdEndpointMode(AccountIdEndpointMode.DISABLED) .build();

모범 사례

에서 엔드포인트를 구성할 때는 다음 모범 사례를 AWS SDK for Java 2.x고려하세요.

  • 환경별 엔드포인트에 외부 구성 사용 - 환경 변수, 시스템 속성 또는 환경(개발, 테스트, 프로덕션)마다 다른 엔드포인트에 구성 파일을 사용합니다. AWS

  • 애플리케이션별 엔드포인트에 코드 내 구성 사용 - 애플리케이션 설계에 고유한 엔드포인트에 클라이언트 빌더의 endpointOverride 메서드를 사용합니다.

  • 항상 리전 지정 - 엔드포인트를 재정의할 때에도 항상 요청 서명에 사용되는 리전을 지정합니다.

  • 글로벌 엔드포인트 재정의에 주의 - 글로벌 엔드포인트 재정의는 모든 서비스에 영향을 미칠 수 있으며, 이는 의도한 것과 다를 수 있습니다.

  • 보안 영향 고려 - 사용자 지정 엔드포인트를 사용할 때는 특히 프로덕션 워크로드에 적합한 보안 조치가 있는지 확인합니다.