

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

# 에 AWS 리전 대한 설정 AWS SDK for Java 2.x
<a name="region-selection"></a>

SDK 클라이언트는 클라이언트를 생성할 때 AWS 리전 지정한 특정 AWS 서비스 의에 연결됩니다. 이 구성을 사용하면 애플리케이션이 해당 지리적 영역의 AWS 리소스와 상호 작용할 수 있습니다. 리전을 명시적으로 설정하지 않고 서비스 클라이언트를 만들면 SDK는 외부 구성의 기본 리전을 사용합니다.

## 명시적으로 구성 AWS 리전
<a name="region-selection-choose-region"></a>

리전을 명시적으로 설정하려면 [Regions](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/regions/Region.html) 클래스에서 정의한 상수를 사용하는 것이 좋습니다. 이 열거형은 공개적으로 사용 가능한 모든 리전의 열거 값입니다.

클래스에서 열거형 리전을 사용하여 클라이언트를 생성하려면 클라이언트 빌더의 `region` 메서드를 사용합니다.

```
Ec2Client ec2 = Ec2Client.builder()
          .region(Region.US_WEST_2)
          .build();
```

사용하려는 리전이 `Region` 클래스의 열거형에 속하지 않는 경우 `of` 메서드를 사용하여 새 리전을 만들 수 있습니다. SDK를 업그레이드하지 않고 새 리전에 액세스 할 수 있는 메서드입니다.

```
Region newRegion = Region.of("us-east-42");
Ec2Client ec2 = Ec2Client.builder()
          .region(newRegion)
          .build();
```

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

## SDK가 환경에서 기본값을 자동으로 결정 AWS 리전 하도록 허용
<a name="automatically-determine-the-aws-region-from-the-environment"></a>

코드가 Amazon EC2 또는에서 실행될 때 코드가 실행 중인 AWS 리전 것과 동일한를 사용하도록 클라이언트를 AWS Lambda구성할 수 있습니다. 이렇게 하면 실행 중인 환경에서 코드를 분리하고 지연 시간이나 중복성을 AWS 리전 줄이기 위해 애플리케이션을 여러에 더 쉽게 배포할 수 있습니다.

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

```
Ec2Client ec2 = Ec2Client.create();
```

다른 방법으로 클라이언트를 구성할 수도 있지만 리전을 설정할 수 없습니다. SDK는 기본 리전 공급자 체인 AWS 리전 을 사용하여를 선택합니다.

```
Ec2Client ec2Client = Ec2Client.builder()
        .credentialsProvider(ProfileCredentialsProvider.builder()
                .profileName("my-profile")
                .build())
        .build();
```

`region` 메 AWS 리전 서드를 사용하여를 명시적으로 설정하지 않으면 SDK는 기본 리전 공급자 체인을 참조하여 사용할 리전을 결정합니다.

### 기본 AWS 리전 공급자 체인 이해
<a name="default-region-provider-chain"></a>

 **SDK는 다음 단계를 수행하여 AWS 리전을 찾습니다.**

1. 빌더 자체에 대해 `region` 메서드를 사용하여 설정한 명시적 리전을 다른 어떤 것보다 우선합니다.

1. SDK는 JVM 시스템 속성(`aws.region`)을 찾고 발견된 경우 해당 값을 사용합니다.

1. `AWS_REGION` 환경 변수를 확인합니다. 설정한 경우 클라이언트를 구성하는 데 해당 리전이 사용됩니다.
**참고**  
 Lambda 컨테이너는이 환경 변수를 설정합니다.

1. SDK는 [AWS 공유 구성 및 자격 증명 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)에서 활성 프로필을 확인합니다. `region` 속성이 있으면 SDK가 이 속성을 사용합니다.

   `default` 프로필은 `AWS_PROFILE` 환경 변수 또는 `aws.profile` JVM 시스템 속성으로 재정의되지 않는 한 활성 프로필입니다. SDK가 동일한 프로필(`default` 프로필 포함)의 두 파일 모두에서 `region` 속성을 찾으면 SDK는 공유 자격 증명 파일의 값을 사용합니다.

1. SDK는 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)를 사용하여 현재 실행 중인 Amazon EC2 인스턴스의 리전을 확인하려고 시도합니다.
   + 보안을 강화하려면 SDK가 IMDS 버전 1을 사용하지 않도록 비활성화해야 합니다. [IAM 역할 자격 증명을 안전하게 획득](ec2-iam-roles.md#securely-read-IAM-role_credentials) 섹션에 설명된 것과 동일한 설정을 사용하여 버전 1을 비활성화합니다.

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

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

## 리전에서 서비스를 사용할 수 있는지 확인합니다.
<a name="region-selection-query-service"></a>

리전에서 특정를 AWS 서비스 사용할 수 있는지 확인하려면 서비스 클라이언트에서 정적 `serviceMetadata` 메서드를 사용합니다.

```
DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);
```

이전 코드 조각은 DynamoDB 서비스가 있는 긴 AWS 리전 코드 목록을 출력합니다.

```
af-south-1
ap-east-1
ap-northeast-1
ap-northeast-2
ap-northeast-3
ap-south-1
ap-south-2
ap-southeast-1
...
```

코드를 사용하여 서비스 클라이언트가 사용해야 하는 리전의 [리전 클래스 열거](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/regions/Region.html)를 조회할 수 있습니다.

예를 들어 코드(`ap-northeast-2`)를 사용하여 리전에서 DynamoDB로 작업하려면 최소한 다음 구성으로 DynamoDB 클라이언트를 만듭니다.

```
DynamoDbClient ddb = DynamoDbClient.builder()
    .region(Region.AP_NORTHEAST_2)
    .build();
```

## 특정 엔드포인트 선택
<a name="choosing-a-specific-endpoint"></a>

특정 상황(예: 기능이 일반 사용 가능성으로 전환되기 전에 서비스의 미리 보기 기능을 테스트하는 경우)에서는 리전에서 특정 엔드포인트를 지정해야 할 수도 있습니다. 이러한 상황에서는 `endpointOverride` 메서드를 호출하여 서비스 클라이언트를 구성할 수 있습니다.

예를 들어 특정 엔드포인트와 함께 유럽(아일랜드) 리전을 사용하도록 Amazon EC2 클라이언트를 구성하려면 다음 코드를 사용합니다.

```
Ec2Client ec2 = Ec2Client.builder()
               .region(Region.EU_WEST_1)
               .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com"))
               .build();
```

현재 [리전 목록과](https://docs.aws.amazon.com/general/latest/gr/rande.html) 모든 AWS 서비스에 해당하는 엔드포인트는 리전 및 엔드포인트를 참조하세요.