AWS 기술 블로그
Amazon API Gateway 프라이빗 통합에서의 VPC 링크 이해
이 글은 AWS Compute Blog에 게시된 Understanding VPC links in Amazon API Gateway private integrations by Eric Johnson을 한국어 번역 및 편집하였습니다.
VPC 링크는 API 경로를 VPC 내부의 프라이빗 리소스에 연결할 수 있게 해주는 Amazon API Gateway의 리소스입니다. VPC 링크는 API의 다른 통합 엔드포인트와 마찬가지로 작동하며 다른 네트워킹 리소스 위에 있는 추상화 계층입니다. 이렇게 하면 프라이빗 통합 구성을 단순화할 수 있습니다.
이 게시물에서는 VPC 연결을 가능하게 하는 기본 기술을 살펴봅니다. REST API와 HTTP API 모두에 대해 VPC 링크가 생성될 때 내부적으로 어떤 일이 발생하는지 자세히 설명합니다. 이러한 세부 정보를 이해하면 각 유형에서 제공하는 기능과 이점을 더 잘 평가하는 데 도움이 될 수 있습니다. 또한 API Gateway API를 설계할 때 더 나은 아키텍처 결정을 내리는 데도 도움이 됩니다.
이 문서에서는 사용자가 API Gateway에서 API를 생성한 경험이 있다고 가정합니다. 주요 목적은 프라이빗 통합을 가능하게 하는 기술에 대한 심층적인 설명을 제공하는 것입니다. 프라이빗 통합을 통한 API Gateway API 생성에 대한 자세한 내용은 Amazon API Gateway 설명서를 참조하십시오.
개요
AWS Hyperplane 및 AWS PrivateLink
VPC 링크에는 REST API용 VPC 링크와 HTTP API용 VPC 링크라는 두 가지 유형이 있습니다. 둘 다 VPC 내부의 리소스에 대한 액세스를 제공합니다. AWS Hyperplane이라는 내부 AWS 서비스를 기반으로 구축되었습니다. VPC 간 연결 및 VPC 간 라우팅을 지원하는 내부 네트워크 가상화 플랫폼입니다. 내부적으로 Hyperplane은 AWS 서비스가 고객 VPC의 리소스와 연결하는 데 사용하는 다중 네트워크 구조를 지원합니다.이러한 구성 중 하나는 AWS PrivateLink이며, 이는 API Gateway에서 프라이빗 API와 프라이빗 통합을 지원하는 데 사용됩니다.
AWS PrivateLink를 사용하면 AWS 네트워크 내에서 네트워크 트래픽을 유지하면서 다른 AWS 고객이 호스팅하는 AWS 서비스 및 서비스에 액세스할 수 있습니다. 서비스는 사설 IP 주소를 통해 노출되므로 모든 통신은 사실상 로컬 및 비공개로 이루어집니다. 이렇게 하면 공용 인터넷에 대한 데이터 노출을 줄일 수 있습니다.
AWS PrivateLink에서 VPC 엔드포인트 서비스는 다른 AWS 계정이 자신의 VPC에서 노출된 서비스에 액세스할 수 있도록 하는 서비스 공급자 측의 네트워킹 리소스입니다. VPC 엔드포인트 서비스를 사용하면 소비자 VPC의 엘라스틱 네트워크 인터페이스를 통해 가상 연결을 확장하여 제공자의 VPC 내에 있는 특정 서비스를 공유할 수 있습니다.
인터페이스 VPC 엔드포인트는 하나 이상의 엘라스틱 네트워크 인터페이스 모음을 나타내는 서비스 소비자 측의 네트워킹 리소스입니다. 이를 통해 AWS PrivateLink에서 제공하는 서비스에 연결할 수 있습니다.
프라이빗 API와 프라이빗 통합 비교
프라이빗 API는 프라이빗 통합과 다릅니다. 둘 다 AWS PrivateLink를 사용하지만 사용되는 방식은 다릅니다.
프라이빗 API는 VPC를 통해서만 API 엔드포인트에 도달할 수 있음을 의미합니다. 프라이빗 API는 VPC 내 클라이언트 또는 VPC에 네트워크로 연결된 클라이언트에서만 액세스할 수 있습니다. AWS Direct Connect를 통해 온 프레미스 클라이언트에서 사용하는 경우를 예로 들 수 있습니다. 프라이빗 API를 활성화하기 위해 고객의 VPC와 API 게이트웨이의 VPC 간에 AWS PrivateLink 연결이 설정됩니다.
클라이언트는 요청을 API Gateway 서비스에 비공개로 라우팅하는 인터페이스 VPC 엔드포인트를 통해 프라이빗 API에 연결합니다. 트래픽은 고객의 VPC에서 시작되어 AWS 프라이빗링크를 통해 API 게이트웨이의 AWS 계정으로 전달됩니다.
프라이빗링크를 통해 공급자와 연결된 소비자
API Gateway에 대한 VPC 엔드포인트가 활성화되면 VPC 내부에서 API Gateway API에 대한 모든 요청이 VPC 엔드포인트를 통과합니다. 이는 프라이빗 API와 퍼블릭 API에 해당됩니다. 퍼블릭 API는 여전히 인터넷에서 액세스할 수 있으며 프라이빗 API는 인터페이스 VPC 엔드포인트에서만 액세스할 수 있습니다. 현재는 REST API만 비공개로 구성할 수 있습니다.
프라이빗 통합이란 백엔드 엔드포인트가 VPC 내에 있고 공개적으로 액세스할 수 없음을 의미합니다. 프라이빗 통합을 통해 API Gateway 서비스는 리소스를 퍼블릭 인터넷에 노출하지 않고도 VPC의 백엔드 엔드포인트에 액세스할 수 있습니다.
프라이빗 통합은 VPC 링크를 사용하여 API Gateway와 대상 VPC 리소스 간의 연결을 캡슐화합니다. VPC 링크를 사용하면 고급 네트워크 구성을 처리할 필요 없이 VPC 내의 HTTP/HTTPS 리소스에 액세스할 수 있습니다. REST API와 HTTP API 모두 프라이빗 통합을 제공하지만 내부적으로 AWS 프라이빗링크를 사용하는 것은 REST API용 VPC 링크뿐입니다.
REST API를 위한 VPC 링크
REST API용 VPC 링크를 생성하면 VPC 엔드포인트 서비스도 생성되어 AWS 계정이 서비스 공급자가 됩니다. 이 경우 서비스 소비자는 API Gateway의 계정입니다. API Gateway 서비스는 VPC 링크가 생성되는 지역의 계정에 인터페이스 VPC 엔드포인트를 생성합니다. 이렇게 하면 API 게이트웨이 VPC에서 VPC로 연결되는 AWS 프라이빗링크가 설정됩니다. VPC 엔드포인트 서비스와 VPC 링크의 대상은 대상 엔드포인트에 요청을 전달하는 네트워크 로드 밸런서입니다.
REST API를 위한 VPC 링크
AWS PrivateLink 연결을 설정하기 전에 서비스 공급자가 연결 요청을 승인해야 합니다. API Gateway 계정의 요청은 VPC 링크 생성 프로세스에서 자동으로 승인됩니다. 각 리전의 API Gateway를 제공하는 AWS 계정이 VPC 엔드포인트 서비스에서 허용 목록에 올랐기 때문입니다.
네트워크 로드 밸런서가 엔드포인트 서비스에 연결되면 대상으로 향하는 트래픽은 NLB에서 소싱됩니다. 대상은 서비스 소비자의 IP 주소가 아닌 NLB의 사설 IP 주소를 수신합니다.
이는 두 가지 이유로 NLB 뒤에 있는 인스턴스의 보안 그룹을 구성할 때 유용합니다. 먼저, 서비스에 연결하는 VPC의 IP 주소 범위를 알 수 없습니다. 둘째, NLB의 엘라스틱 네트워크 인터페이스에는 연결된 보안 그룹이 없습니다. 즉, 대상의 보안 그룹에서 소스로 사용할 수 없습니다. 자세히 알아보려면 NLB에 할당된 내부 IP 주소를 찾는 방법을 읽어보세요.
프라이빗 통합을 통해 프라이빗 API를 생성하기 위해 두 개의 AWS PrivateLink 연결이 설정됩니다. 첫 번째는 고객 VPC에서 API Gateway의 VPC로 이동하여 VPC의 클라이언트가 API Gateway 서비스 엔드포인트에 도달할 수 있도록 하는 것입니다. 다른 하나는 API Gateway의 VPC에서 고객 VPC로 전송하여 API Gateway가 백엔드 엔드포인트에 도달할 수 있도록 하는 것입니다. 다음은 예제 아키텍처입니다.
프라이빗 통합이 포함된 프라이빗 API
HTTP API를 위한 VPC 링크
HTTP API는 REST API보다 저렴하고 빠른 최신 유형의 API 게이트웨이 API입니다. HTTP API용 VPC 링크는 VPC 엔드포인트 서비스를 생성할 필요가 없으므로 네트워크 로드 밸런서가 필요하지 않습니다. HTTP API용 VPC 링크를 사용하면 이제 ALB 또는 AWS 클라우드 맵 서비스를 사용하여 프라이빗 리소스를 타겟팅할 수 있습니다. 이를 통해 양쪽에 필요한 구성의 유연성과 확장성이 향상됩니다.
HTTP API용 VPC 링크를 사용하면 여러 통합 대상을 더 쉽게 구성할 수 있습니다. 예를 들어 REST API용 VPC 링크는 단일 NLB에만 연결할 수 있습니다. 여러 백엔드 엔드포인트를 구성하려면 NLB에서 여러 대상 그룹과 연결된 다중 리스너를 사용하는 등 몇 가지 해결 방법이 필요합니다.
반면 HTTP API용 단일 VPC 링크는 추가 구성 없이 여러 백엔드 엔드포인트와 연결할 수 있습니다. 또한 새 VPC 링크를 통해 컨테이너화된 애플리케이션을 보유한 고객은 NLB 대신 ALB를 사용하고 계층 7 로드 밸런싱 기능과 인증 및 권한 부여와 같은 기타 기능을 활용할 수 있습니다.
AWS Hyperplane은 AWS PrivateLink를 비롯한 여러 유형의 네트워크 가상화 구조를 지원합니다. REST API용 VPC 링크는 AWS 프라이빗링크를 사용합니다. 하지만 HTTP API용 VPC 링크는 더 높은 수준의 추상화를 제공하는 VPC-VPC NAT를 사용합니다.
새로운 구조는 개념적으로 두 VPC 간의 터널과 유사합니다. 이는 AWS Hyperplane에서 관리하는 공급자 측과 소비자 측의 엘라스틱 네트워크 인터페이스 연결을 통해 생성됩니다. 이 터널을 통해 제공자의 VPC (API Gateway) 에서 호스팅되는 서비스가 소비자 VPC의 리소스와의 통신을 시작할 수 있습니다. API Gateway는 이러한 엘라스틱 네트워크 인터페이스에 직접 연결되며 자체 VPC에서 직접 VPC의 리소스에 도달할 수 있습니다. 고객 측의 엘라스틱 네트워크 인터페이스에 연결된 보안 그룹의 구성에 따라 연결이 허용됩니다.
AWS PrivateLink와 동일한 기능을 제공하는 것처럼 보이지만 이러한 구조는 구현 세부 사항에서 다릅니다. AWS PrivateLink의 서비스 엔드포인트는 단일 엔드포인트 (NLB) 에 대한 다중 연결을 허용하는 반면, 새로운 접근 방식에서는 소스 VPC를 여러 대상 엔드포인트에 연결할 수 있습니다. 따라서 단일 VPC 링크를 여러 애플리케이션 로드 밸런서, 네트워크 로드 밸런서 또는 고객 측의 AWS Cloud Map 서비스에 등록된 리소스와 통합할 수 있습니다:
HTTP API를 위한 VPC 링크
이 접근 방식은 Lambda와 같은 다른 서비스가 고객 VPC 내의 리소스에 액세스하는 방식과 유사합니다.
결론
이 게시물에서는 VPC 링크가 프라이빗 통합을 통해 API Gateway API를 설정하는 방법을 살펴봅니다. REST API용 VPC 링크는 인터페이스 VPC 엔드포인트 및 VPC 엔드포인트 서비스와 같은 AWS PrivateLink 리소스를 캡슐화하여 프라이빗 백엔드 엔드포인트에 액세스하도록 API Gateway의 VPC에서 고객의 VPC로의 연결을 구성합니다.
HTTP API용 VPC 링크는 AWS Hyperplane 서비스의 다른 구조를 사용하여 API Gateway에 VPC 프라이빗 리소스에 대한 직접적인 네트워크 액세스를 제공합니다. API 아키텍처 설계의 일부로 프라이빗 통합을 추가할 때는 이 둘의 차이점을 이해하는 것이 중요합니다.
더 많은 서버리스 학습 리소스를 보려면 서버리스 랜드를 방문하십시오.