

# 자습서: 프라이빗 통합을 통해 REST API 생성
<a name="getting-started-with-private-integration"></a>

이 자습서에서는 Amazon VPC에서 실행되는 Amazon ECS 서비스에 연결하는 REST API를 생성합니다. Amazon VPC 외부의 클라이언트는 API를 사용하여 Amazon ECS 서비스에 액세스할 수 있습니다.

이 자습서는 완료하는데 약 1시간이 걸립니다. 먼저 CloudFormation 템플릿을 사용하여 Amazon VPC 및 Amazon ECS 서비스를 생성합니다. 그런 다음 API Gateway 콘솔을 사용하여 VPC 링크 V2를 생성합니다. VPC 링크를 통해 API Gateway는 Amazon VPC에서 실행되는 Amazon ECS 서비스에 액세스할 수 있습니다. 그런 다음 VPC 링크 V2를 사용하여 Amazon ECS 서비스에 연결하는 REST API를 생성합니다. 마지막으로 API를 테스트합니다.

REST API를 간접적으로 호출하면 API Gateway는 VPC 링크 V2를 통해 요청을 Amazon ECS 서비스로 라우팅한 다음 서비스에서 응답을 반환합니다.

**참고**  
이 자습서는 이전에 HTTP API에 대해 지원되었으며, 이제 VPC 링크 V2를 사용하는 REST API에 대해 지원됩니다.

![\[이 튜토리얼에서 생성하는 REST API의 개요입니다.\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/private-integration-rest.png)


이 자습서를 완료하려면 AWS 계정과 콘솔 액세스 권한이 있는 AWS Identity and Access Management 사용자가 있어야 합니다. 자세한 내용은 [API Gateway를 사용하도록 설정](setting-up.md) 섹션을 참조하세요.

**Topics**
+ [1단계: Amazon ECS 서비스 생성](#rest-api-private-integration-create-ecs-service)
+ [2단계: VPC 링크 생성](#http-api-private-integration-vpc-link)
+ [3단계: REST API 생성](#http-api-private-integration-create-api)
+ [4단계: API 테스트](#rest-api-private-integration-test-api)
+ [5 단계: API 배포](#rest-api-private-integration-deploy-api)
+ [6단계: API 직접 호출](#rest-api-private-integration-call)
+ [7단계: 정리](#rest-api-private-integration-cleanup)

## 1단계: Amazon ECS 서비스 생성
<a name="rest-api-private-integration-create-ecs-service"></a>

Amazon ECS는 클러스터에서 Docker 컨테이너를 손쉽게 실행, 중지 및 관리할 수 있게 해 주는 컨테이너 관리 서비스입니다. 이 자습서에서는 Amazon ECS에서 관리하는 서버리스 인프라에서 클러스터를 실행합니다.

Amazon VPC를 포함하여 서비스에 대한 모든 종속성을 생성하는 [이 CloudFormation 템플릿](samples/rest-private-integration-tutorial.zip)을 다운로드하고 압축을 풉니다. 이 템플릿을 사용하여 Application Load Balancer를 사용하는 Amazon ECS 서비스를 생성합니다.

**CloudFormation 스택을 생성하려면**

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. **스택 생성**을 선택한 다음 **새 리소스 사용(표준)**을 선택합니다.

1. **템플릿 지정**에서 **템플릿 파일 업로드**를 선택합니다.

1. 다운로드한 템플릿을 선택합니다.

1. **다음**을 선택합니다.

1. **스택 이름**에 **rest-api-private-integrations-tutorial**을 입력하고 **다음**을 선택합니다.

1. **스택 옵션 구성**에서 **다음**을 선택합니다.

1. **기능**의 경우 CloudFormation이 계정에 IAM 리소스를 생성할 수 있음을 확인합니다.

1. **다음**을 선택한 후 **제출**을 선택합니다.

CloudFormation는 ECS 서비스를 프로비저닝하며 이 작업은 몇 분 정도 걸릴 수 있습니다. CloudFormation 스택 상태가 **CREATE\$1COMPLETE**인 경우 다음 단계로 넘어갈 준비가 된 것입니다.

## 2단계: VPC 링크 생성
<a name="http-api-private-integration-vpc-link"></a>

VPC 링크를 사용하면 API Gateway가 Amazon VPC의 프라이빗 리소스에 액세스할 수 있습니다. VPC 링크를 사용하면 클라이언트가 REST API를 통해 Amazon ECS 서비스에 액세스할 수 있습니다.

**VPC 링크 생성**

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

1. 주요 탐색 창에서 **VPC 링크**를 선택한 후 **생성**을 선택합니다.

   메뉴 아이콘을 선택하여 기본 탐색 창을 열어야 할 수도 있습니다.

1. **VPC 링크 버전 선택**에서 **VPC 링크 V2**를 선택합니다.

1. **이름**에 **private-integrations-tutorial**를 입력합니다.

1. **VPC**에서 1단계에서 생성한 VPC를 선택합니다. 이름은 **RestApiStack**으로 시작해야 합니다.

1. **서브넷**(Subnets)의 경우 VPC에 있는 두 개의 프라이빗 서브넷을 선택합니다. 이름은 `PrivateSubnet`(으)롤 끝납니다.

1. **보안 그룹**의 경우 `private-integrations-tutorial`로 시작하고 `RestApiStack/RestApiTutorialService/Service/SecurityGroup`의 설명이 있는 그룹 ID를 선택합니다.

1. **생성(Create)**을 선택합니다.

VPC 링크 V2를 생성한 후 API Gateway는 탄력적 네트워크 인터페이스를 프로비저닝하여 VPC에 액세스합니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. 그동안 API를 생성할 수 있습니다.

## 3단계: REST API 생성
<a name="http-api-private-integration-create-api"></a>

REST API는 Amazon ECS 서비스에 대한 HTTP 엔드포인트를 제공합니다.



**REST API를 생성하려면**

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

1. **API 생성**(Create API)을 선택한 다음 **REST API**에 대해 **빌드**(Build)를 선택합니다.

1. **이름**에 **private-integration-api**를 입력합니다.

1. **IP 주소 유형**에서 **IPv4**를 선택합니다.

1. **API 생성**을 선택합니다.

   API를 생성한 후 메서드를 생성합니다.

1. **메서드 생성**을 선택하고 다음을 수행합니다.

   1. **메서드 유형**에서 `GET`를 선택합니다.

   1. **통합 유형**에서 **VPC 링크**를 선택합니다.

   1. **VPC 프록시 통합**을 켭니다.

   1. **HTTP 메서드**에서 `GET`을 선택합니다.

   1. **VPC 링크**의 경우 이전 단계에서 생성한 VPC 링크 V2를 선택합니다.

   1. **통합 대상**에 1단계에서 CloudFormation 템플릿으로 생성한 로드 밸런서를 입력합니다. 이름은 **rest-**로 시작해야 합니다.

   1. **엔드포인트 URL**에 `http://private-integrations-tutorial.com`를 입력합니다.

      URL은 통합 요청의 `Host` 헤더를 설정하는 데 사용됩니다. 이 경우 호스트 헤더는 **private-integrations-tutorial**입니다.

   1. **메서드 생성**을 선택합니다.

      프록시 통합이 있으면 API를 테스트할 준비가 된 것입니다.

## 4단계: API 테스트
<a name="rest-api-private-integration-test-api"></a>

다음으로 API 메서드 간접 호출을 테스트합니다.

**API 테스트하기**

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

1. API를 선택합니다.

1. **테스트** 탭을 선택합니다. 탭을 표시하려면 오른쪽 화살표 버튼을 선택해야 할 수도 있습니다.

1. **테스트** 선택

   API의 응답이 앱이 Amazon ECS에서 실행 중임을 알려주는 시작 메시지인지 확인합니다.

## 5 단계: API 배포
<a name="rest-api-private-integration-deploy-api"></a>

다음으로 API를 배포합니다.

**API를 배포하려면**

1. **Deploy API(API 배포)**를 선택합니다.

1. **스테이지**에서 **새 스테이지**를 선택합니다.

1. **단계 이름**에 **Prod**를 입력합니다.

1. (선택 사항) **설명**에 설명을 입력합니다.

1. **배포(Deploy)**를 선택합니다.

## 6단계: API 직접 호출
<a name="rest-api-private-integration-call"></a>

API를 배포한 후 직접적으로 호출할 수 있습니다.

**API 직접 호출**

1. 웹 브라우저에 호출 URL을 입력합니다.

   전체 URL은 `https://abcd123.execute-api.us-east-2.amazonaws.com/Prod`와(과) 같아야 합니다.

   브라우저가 API에 `GET` 요청을 보냅니다.

1. API의 응답이 앱이 Amazon ECS에서 실행 중임을 알려주는 시작 메시지인지 확인합니다.

   시작 메시지가 표시되면 Amazon VPC에서 실행되는 Amazon ECS 서비스를 성공적으로 생성하고, VPC 링크 V2와 함께 API Gateway REST API를 사용하여 Amazon ECS 서비스에 액세스한 것입니다.

## 7단계: 정리
<a name="rest-api-private-integration-cleanup"></a>

불필요한 비용을 방지하려면 이 자습서의 일부로 생성한 리소스를 삭제합니다. 다음 단계에서는 VPC 링크 V2, CloudFormation 스택 및 REST API를 삭제합니다.

**REST API 삭제**

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

1. **API** 페이지에서 API를 선택합니다. **작업**(Actions)을 선택하고 **삭제**(Delete)를 선택한 다음 선택을 확인합니다.

**VPC 링크 삭제**

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

1. **VPC 링크**(VPC link)를 선택합니다.

1. VPC 링크를 선택하고 **삭제**(Delete)를 선택한 다음, 해당 선택을 확인합니다.

**CloudFormation 스택을 삭제하려면**

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. CloudFormation 스택을 선택합니다.

1. **삭제**를 선택한 다음 해당 선택을 확인합니다.