AWS 리전 선택 - AWS SDK for Java 1.x

다음 버전 AWS SDK for Java (v1) end-of-support 을 발표했습니다. AWS SDK for Java V2로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

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

AWS 리전 선택

리전을 통해 특정 지리적 영역에 물리적으로 상주하는 AWS 서비스에 액세스할 수 있습니다. 이는 중복성은 물론, 데이터와 애플리케이션을 고객과 고객의 사용자가 액세스할 위치에 가까운 곳에서 실행 상태로 유지하는 데도 유용할 수 있습니다.

리전에서 서비스 가용성 확인

리전에서 특정 AWS 서비스를 사용할 수 있는지 알아보려면 사용할 리전에 대해 isServiceSupported 메서드를 사용합니다.

Region.getRegion(Regions.US_WEST_2) .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX);

지정할 수 있는 리전에 대한 Regions 클래스 설명서를 참조하고, 쿼리할 서비스의 엔드포인트 접두사를 사용합니다. 각 서비스의 엔드포인트 접두사는 서비스 인터페이스에 정의되어 있습니다. 예를 들어, DynamoDB 엔드포인트 접두사는 AmazonDynamoDB에 정의되어 있습니다.

리전 선택

AWS SDK for Java 버전 1.4부터는 리전 이름을 지정하면 SDK에서 적당한 엔드포인트가 자동으로 선택됩니다. 엔드포인트를 직접 선택하려면 Choosing a Specific Endpoint 단원을 참조하십시오.

리전을 명시적으로 설정하려면 Regions 열거형을 사용하는 것이 좋습니다. 이 열거형은 공개적으로 사용 가능한 모든 리전의 열거 값입니다. 열거형의 리전을 사용하여 클라이언트를 생성하려면 다음 코드를 사용합니다.

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

사용할 리전이 Regions 열거형에 없으면 리전 이름을 나타내는 문자열을 사용하여 리전을 설정할 수 있습니다.

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion("{region_api_default}") .build();
참고

빌더를 사용하여 클라이언트를 빌드한 후에는 클라이언트가 변경 불가능하며 리전을 변경할 수 없습니다. 동일한 서비스를 위해 여러 AWS 리전를 사용하는 경우 리전당 하나씩 여러 클라이언트를 생성해야 합니다.

특정 엔드포인트 선택

클라이언트를 만들 때 withEndpointConfiguration 메서드를 호출하여 리전 내의 특정 엔드포인트를 사용하도록 각 AWS 클라이언트를 구성할 수 있습니다.

예를 들어 유럽 리전(아일랜드)을 사용하도록 Amazon S3 클라이언트를 구성하려면 다음 코드를 사용합니다.

AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withEndpointConfiguration(new EndpointConfiguration( "https://s3.eu-west-1.amazonaws.com", "eu-west-1")) .withCredentials(CREDENTIALS_PROVIDER) .build();

모든 AWS 서비스에 대한 리전 및 해당 엔드포인트 현재 목록은 리전 및 엔드포인트를 참조하세요.

환경에서 리전을 자동으로 결정

중요

이 섹션은 클라이언트 생성자를 사용하여 AWS 서비스에 액세스하는 경우에만 적용됩니다. AWS 클라이언트 생성자를 사용하여 생성된 클라이언트는 환경에서 지역을 자동으로 결정하지 않고 대신 기본 SDK 지역(USEast1)을 사용합니다.

Amazon EC2 또는 Lambda에서 실행 중인 경우 코드를 실행 중인 동일한 지역을 사용하도록 클라이언트를 구성할 수 있습니다. 이렇게 하면 실행 중인 환경에서 코드가 분리되므로 낮은 지연 시간과 중복성을 위해 손쉽게 애플리케이션을 여러 리전에 배포할 수 있습니다.

코드를 실행 중인 리전을 SDK에서 자동으로 검색하도록 하려면 클라이언트 빌더를 사용해야 합니다.

기본 자격 증명/리전 공급자 체인을 사용하여 환경에서 리전을 결정하려면 클라이언트 빌더의 defaultClient 메서드를 사용합니다.

AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

이렇게 하면 standard 뒤에 build를 사용할 때와 똑같이 작동합니다.

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .build();

withRegion 메서드를 사용하여 리전을 명시적으로 설정하지 않는 경우 SDK에서는 기본 리전 공급자 체인을 조회하여 사용할 리전을 시도 및 결정합니다.

기본 리전 공급자 체인

다음은 리전 조회 프로세스입니다.

  1. 빌더 자체에 대해 withRegion 또는 setRegion을 사용하여 설정한 명시적 리전을 다른 어떤 것보다 우선합니다.

  2. AWS_REGION 환경 변수를 확인합니다. 설정한 경우 클라이언트를 구성하는 데 해당 리전이 사용됩니다.

    참고

    이 환경 변수는 Lambda 컨테이너에 의해 설정됩니다.

  3. SDK는 AWS 공유 구성 파일(일반적으로 ~/.aws/config에 있음)을 확인합니다. region 속성이 있으면 SDK가 이 속성을 사용합니다.

    • AWS_CONFIG_FILE 환경 변수는 공유 구성 파일의 위치를 사용자 지정하는 데 사용할 수 있습니다.

    • AWS_PROFILE 환경 변수 또는 aws.profile 시스템 속성을 사용하여 SDK에서 로드하는 프로필을 사용자 지정할 수 있습니다.

  4. SDK는 Amazon EC2 인스턴스 메타데이터 서비스를 사용하여 현재 실행 중인 Amazon EC2 인스턴스의 리전을 결정합니다.

  5. 이때까지도 SDK에서 여전히 리전을 찾지 못한 경우 클라이언트 생성이 실패하고 예외가 발생합니다.

AWS 애플리케이션을 개발할 때 일반적인 접근 방법은 공유 구성 파일(기본 자격 증명 공급자 체인 사용에 설명됨)을 사용하여 리전을 로컬 개발용으로 설정하고, 기본 리전 공급자 체인에 의존하여 AWS 인프라에서 실행 중인 리전을 결정하는 것입니다. 이렇게 하면 클라이언트 생성 작업이 크게 간소화되며 애플리케이션을 이식 가능한 형태로 유지됩니다.