

# API Gateway의 REST API에 대한 API 엔드포인트 유형
<a name="api-gateway-api-endpoint-types"></a>

*[API 엔드포인트](api-gateway-basic-concept.md#apigateway-definition-api-endpoints)* 유형은 API의 호스트 이름을 나타냅니다. API 엔드포인트 유형은 대다수 API 트래픽의 출처에 따라 *엣지 최적화*, *리전* 또는 *프라이빗* 엔드포인트일 수 있습니다.

## 엣지 최적화 API 엔드포인트
<a name="api-gateway-api-endpoint-types-edge-optimized"></a>

*[엣지 최적화 API 엔드포인트](api-gateway-basic-concept.md#apigateway-definition-edge-optimized-api-endpoint)*는 일반적으로 클라이언트가 지리적으로 분산된 경우 도움이 되는 가장 가까운 CloudFront 접속 지점(POP)으로 요청을 라우팅합니다. 이것은 API Gateway REST API의 기본 엔드포인트 유형입니다.

엣지 최적화 API는 [HTTP 헤더](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)의 이름을 대문자로 처리합니다(예: `Cookie`).

CloudFront에서는 요청을 오리진에 전달하기 전에 쿠키 이름을 기준으로 HTTP 쿠키를 일반 순서로 정렬합니다. CloudFront 가 쿠키를 처리하는 방법에 대해서는 [쿠키를 기반으로 콘텐츠 캐싱](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html)을 참조하세요.

엣지 최적화 API를 위해 사용되는 사용자 지정 도메인 이름은 모든 리전에 적용됩니다.

## 리전 API 엔드포인트
<a name="api-gateway-api-endpoint-types-regional"></a>

*[리전 API 엔드포인트](api-gateway-basic-concept.md#apigateway-definition-regional-api-endpoint)*는 동일 리전의 클라이언트를 위한 것입니다. EC2 인스턴스를 실행하는 클라이언트가 동일 리전에서 API를 직접적으로 호출하거나 API가 수요가 큰 소수의 클라이언트에게 서비스를 제공하기 위한 것이라면 리전 API는 연결 오버헤드를 줄입니다.

리전 API에 대해 API가 배포된 리전별로 고유한 사용자 지정 도메인 이름이 사용됩니다. 여러 리전에 배포된 리전 API를 배포하는 경우, 모든 리전에서 동일한 사용자 지정 도메인 이름을 사용할 수 있습니다. Amazon Route 53과 함께 사용자 지정 도메인을 사용하여 [지연 시간 기반 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency) 등의 작업을 수행할 수 있습니다. 자세한 내용은 [API Gateway에서 리전 사용자 지정 도메인 이름 설정](apigateway-regional-api-custom-domain-create.md) 및 [API Gateway API에서 엣지 최적화 사용자 지정 도메인 이름 설정](how-to-edge-optimized-custom-domain-name.md) 단원을 참조하세요.

리전 API 엔드포인트는 모든 헤더 이름을 그대로 전달합니다.

**참고**  
API 클라이언트가 지리적으로 분산되어 있는 경우, API Gateway가 API를 서비스 제어 CloudFront 배포와 연결하지 않도록 하기 위해 리전 API 엔드포인트를 자체 Amazon CloudFront 배포와 함께 사용할 수 있습니다. 이 사용 사례에 대한 자세한 내용은 [고유의 CloudFront 배포를 사용하여 API Gateway를 설정하려면 어떻게 해야 합니까?](https://repost.aws/knowledge-center/api-gateway-cloudfront-distribution)를 참조하세요.

## 프라이빗 API 엔드포인트
<a name="api-gateway-api-endpoint-types-private"></a>

*[프라이빗 API 엔드포인트](api-gateway-basic-concept.md#apigateway-definition-private-api-endpoint)*는 인터페이스 VPC 종단점을 사용해서 Amazon Virtual Private Cloud(VPC)에서만 액세스할 수 있는 API 엔드포인트입니다. 이때 이 엔드포인트는 사용자가 VPC에서 만든 엔드포인트 네트워크 인터페이스(ENI)입니다. 자세한 내용은 [API Gateway의 프라이빗 REST API](apigateway-private-apis.md) 단원을 참조하세요.

프라이빗 API 엔드포인트는 모든 헤더 이름을 그대로 전달합니다.

# API Gateway에서 퍼블릭 또는 프라이빗 API 엔드포인트 유형 변경
<a name="apigateway-api-migration"></a>

API 엔드포인트 유형을 변경하려면 API의 구성을 업데이트해야 합니다. API Gateway 콘솔, AWS CLI 또는 API Gateway용 AWS SDK를 사용하여 기존 API 유형을 변경할 수 있습니다. 이 시간 동안 API를 사용할 수 있지만 현재 변경이 완료될 때까지 엔드포인트 유형을 다시 변경할 수는 없습니다.

다음과 같은 엔드포인트 유형 변경이 지원됩니다.
+ 엣지 최적화에서 리전 또는 프라이빗으로 변경
+ 리전에서 엣지 최적화 또는 프라이빗으로 변경
+ 프라이빗에서 리전으로 변경

프라이빗 API를 엣지 최적화된 API로 바꿀 수는 없습니다.

퍼블릭 API의 유형을 엣지 최적화에서 리전으로, 또는 리전에서 엣지 최적화로 변경할 때는 엣지 최적화된 API가 리전 API와 다르게 동작할 수 있다는 점에 유의해야 합니다. 예를 들어 엣지 최적화 API는 `Content-MD5` 헤더를 제거합니다. 백엔드로 전달되는 모든 MD5 해시 값은 요청 문자열 파라미터 또는 본문 속성으로 표현될 수 있습니다. 그러나 리전 API는 헤더 이름을 다른 이름으로 다시 매핑하기는 하지만 이 헤더를 빠져나갑니다. 그 차이를 이해하면 엣지 최적화 API를 리전 API로 또는 리전 API를 엣지 최적화 API로 업데이트하는 방법을 결정하는 데 도움이 됩니다.

**Topics**
+ [API Gateway 콘솔을 사용하여 API 엔드포인트 유형 변경](#migrate-api-using-console)
+ [AWS CLI를 사용하여 API 엔드포인트 유형 변경](#migrate-api-using-aws-cli)

## API Gateway 콘솔을 사용하여 API 엔드포인트 유형 변경
<a name="migrate-api-using-console"></a>

API의 API 엔드포인트 유형을 변경하려면 다음 단계 세트 중 하나를 수행하세요.

**지역에서 엣지 최적화로 또는 그 반대로 퍼블릭 엔드포인트를 전환하려면**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. REST API를 선택합니다.

1. **API 설정**을 선택합니다.

1. **API 세부 정보** 섹션에서 **편집**을 선택합니다.

1. **API 엔드포인트 유형**으로 **엣지 최적화** 또는 **지역**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. API를 다시 배포하여 변경 사항을 적용합니다.

**프라이빗 엔드포인트를 리전 엔드포인트로 전환하려면**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. REST API를 선택합니다.

1. API의 리소스 정책에서 VPC 또는 VPC 엔드포인트에 대한 언급을 삭제하여 VPC 내부는 물론 VPC 외부에서 오는 API 호출도 성공하도록 합니다.

1. **API 설정**을 선택합니다.

1. **API 세부 정보** 섹션에서 **편집**을 선택합니다.

1. **API 엔드포인트 유형**에서 **지역**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. API에서 리소스 정책을 제거합니다.

1. API를 다시 배포하여 변경 사항을 적용합니다.

   엔드포인트 유형을 프라이빗에서 리전으로 마이그레이션하기 때문에 API Gateway는 IP 주소 유형을 IPv4로 변경합니다. 자세한 내용은 [API Gateway의 REST API에 대한 IP 주소 유형](api-gateway-ip-address-type.md) 섹션을 참조하세요.

**리전 엔드포인트를 프라이빗 엔드포인트로 전환하려면**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. REST API를 선택합니다.

1. VPC 또는 VPC 엔드포인트에 대한 액세스 권한을 부여하는 리소스 정책을 생성합니다. 자세한 내용은 [3단계: 프라이빗 API에 대한 리소스 정책 설정](apigateway-private-api-create.md#apigateway-private-api-set-up-resource-policy) 섹션을 참조하세요.

1. **API 설정**을 선택합니다.

1. **API 세부 정보** 섹션에서 **편집**을 선택합니다.

1. **API 엔드포인트 유형**에서 **프라이빗**을 선택합니다.

1. (옵션) **VPC 엔드포인트 ID**의 경우 프라이빗 API와 연결하려는 VPC 엔드포인트 ID를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. API를 다시 배포하여 변경 사항을 적용합니다.

   엔드포인트 유형을 리전에서 프라이빗으로 마이그레이션하기 때문에 API Gateway는 IP 주소 유형을 듀얼 스택으로 변경합니다. 자세한 내용은 [API Gateway의 REST API에 대한 IP 주소 유형](api-gateway-ip-address-type.md) 섹션을 참조하세요.

## AWS CLI를 사용하여 API 엔드포인트 유형 변경
<a name="migrate-api-using-aws-cli"></a>

다음 [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) 명령은 엣지 최적화 API를 리전 API로 업데이트합니다.

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/EDGE,value=REGIONAL
```

성공적인 응답에는 다음과 같이 `200 OK` 상태 코드와 페이로드가 있습니다.

```
{
    "createdDate": "2017-10-16T04:09:31Z",
    "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints",
    "endpointConfiguration": {
        "types": "REGIONAL"
    },
    "id": "a1b2c3",
    "name": "PetStore imported as edge-optimized"
}
```

다음 [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) 명령은 리전 API를 엣지 최적화 API로 업데이트합니다.

```
aws apigateway update-rest-api \
    --rest-api-id a1b2c3 \
    --patch-operations op=replace,path=/endpointConfiguration/types/REGIONAL,value=EDGE
```

[put-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/put-rest-api.html)는 API 정의를 업데이트하기 위한 것이므로 API 엔드포인트 유형을 업데이트하는 데는 적용할 수 없습니다.