

# 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 엔드포인트 유형을 업데이트하는 데는 적용할 수 없습니다.