AWS PrivateLink를 통한 AWS 서비스 액세스
AWS 서비스에 액세스하려면 엔드포인트를 사용합니다. 기본 서비스 엔드포인트는 퍼블릭 인터페이스이므로 트래픽이 VPC에서 AWS 서비스로 이동할 수 있도록 VPC에 인터넷 게이트웨이를 추가해야 합니다. 이 구성이 네트워크 보안 요구 사항에 맞지 않는 경우 AWS PrivateLink를 사용하여 VPC를 AWS 서비스에 연결할 수 있습니다. 이 경우 인터넷 게이트웨이를 사용하지 않고 서비스를 VPC에 있는 것처럼 이용할 수 있습니다.
VPC 엔드포인트를 사용하면 AWS PrivateLink와 통합된 AWS 서비스에 비공개로 액세스할 수 있습니다. 이 경우 인터넷 게이트웨이를 사용하지 않고도 애플리케이션 스택의 모든 계층을 구축하고 관리할 수 있습니다.
요금
인터페이스 VPC 엔드포인트가 각 가용 영역에 프로비저닝되는 시간에 대해 시간당 요금이 청구됩니다. 또한 처리된 데이터의 GB당 요금이 청구됩니다. 자세한 내용은 AWS PrivateLink 요금
내용
개요
AWS 서비스에 해당 퍼블릭 서비스 엔드포인트를 통해 액세스하거나 AWS PrivateLink를 사용하여 지원되는 AWS 서비스에 연결할 수 있습니다. 이 개요에서는 두 방법을 비교합니다.
퍼플릭 서비스 엔드포인트를 통한 액세스
다음 다이어그램은 인스턴스에서 퍼블릭 서비스 엔드포인트를 통해 AWS 서비스에 액세스하는 방법을 보여줍니다. 퍼블릭 서브넷의 인스턴스에서 AWS 서비스로의 트래픽은 VPC의 인터넷 게이트웨이를 거쳐 AWS 서비스로 라우팅됩니다. 프라이빗 서브넷의 인스턴스에서 AWS 서비스로의 트래픽은 차례로 NAT 게이트웨이, VPC의 인터넷 게이트웨이, AWS 서비스로 라우팅됩니다. 이 트래픽은 인터넷 게이트웨이를 통과하지만 AWS 네트워크를 벗어나지 않습니다.
AWS PrivateLink를 통한 연결
다음 다이어그램은 인스턴스에서 AWS PrivateLink를 통해 AWS 서비스에 액세스하는 방법을 보여줍니다. 먼저 인터페이스 VPC 엔드포인트를 생성합니다. 이 엔드포인트는 네트워크 인터페이스를 사용하여 VPC의 서브넷과 AWS 서비스 간의 연결을 설정합니다. AWS 서비스로 전달되는 트래픽은 DNS를 사용하여 엔드포인트 네트워크 인터페이스의 프라이빗 IP 주소로 확인된 후 VPC 엔드포인트와 AWS 서비스 간 연결을 통해 AWS 서비스로 전송됩니다.
AWS 서비스에서는 연결 요청을 자동으로 수락합니다. 서비스에서는 VPC 엔드포인트를 통해 리소스에 대한 요청을 시작할 수 없습니다.
DNS 호스트 이름
대부분 AWS 서비스는 구문이 다음과 같은 퍼블릭 리전 엔드포인트를 제공합니다.
protocol
://service_code
.region_code
.amazonaws.com
예를 들어 us-east-2에서 Amazon CloudWatch의 퍼블릭 엔드포인트는 다음과 같습니다.
https://monitoring.us-east-2.amazonaws.com
AWS PrivateLink에서는 프라이빗 엔드포인트를 사용하여 트래픽을 서비스로 보냅니다. 인터페이스 VPC 엔드포인트를 생성하면 VPC에서 AWS 서비스와 통신하는 데 사용할 수 있는 리전 및 영역 DNS 이름이 생성됩니다.
인터페이스 VPC 엔드포인트의 리전 DNS 이름은 구문이 다음과 같습니다.
endpoint_id
.service_id
.region
.vpce.amazonaws.com
영역 DNS 이름의 구문은 다음과 같습니다.
endpoint_id
-az_name
.service_id
.region
.vpce.amazonaws.com
AWS 서비스에 대한 인터페이스 VPC 엔드포인트를 생성할 때 프라이빗 DNS를 사용할 수 있습니다. 프라이빗 DNS를 사용하면 인터페이스 VPC 엔드포인트를 통한 프라이빗 연결을 활용하면서 퍼블릭 엔드포인트의 DNS 이름을 사용하여 서비스에 계속 요청할 수 있습니다. 자세한 내용은 DNS 확인 단원을 참조하십시오.
다음 describe-vpc-endpoints 명령은 인터페이스 엔드포인트의 DNS 항목을 표시합니다.
aws ec2 describe-vpc-endpoints --vpc-endpoint-id
vpce-099deb00b40f00e22
--query VpcEndpoints[*].DnsEntries
다음은 프라이빗 DNS 이름이 활성화된 Amazon CloudWatch의 인터페이스 엔드포인트에 대한 출력 예입니다. 첫 번째 항목은 프라이빗 리전 엔드포인트입니다. 다음 세 개 항목은 프라이빗 영역 엔드포인트입니다. 마지막 항목은 숨겨진 프라이빗 호스팅 영역의 엔드포인트로, 퍼블릭 엔드포인트에 대한 요청을 엔드포인트 네트워크 인터페이스의 프라이빗 IP 주소로 확인합니다.
[ [ { "DnsName": "vpce-099deb00b40f00e22-lj2wisx3.monitoring.us-east-2.vpce.amazonaws.com", "HostedZoneId": "ZC8PG0KIFKBRI" }, { "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2c.monitoring.us-east-2.vpce.amazonaws.com", "HostedZoneId": "ZC8PG0KIFKBRI" }, { "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2a.monitoring.us-east-2.vpce.amazonaws.com", "HostedZoneId": "ZC8PG0KIFKBRI" }, { "DnsName": "vpce-099deb00b40f00e22-lj2wisx3-us-east-2b.monitoring.us-east-2.vpce.amazonaws.com", "HostedZoneId": "ZC8PG0KIFKBRI" }, { "DnsName": "monitoring.us-east-2.amazonaws.com", "HostedZoneId": "Z06320943MMOWYG6MAVL9" } ] ]
DNS 확인
인터페이스 VPC 엔드포인트에 대해 생성되는 DNS 레코드는 퍼블릭입니다. 따라서 해당 DNS 이름은 공개적으로 확인할 수 있습니다. 하지만 VPC 외부의 DNS 요청은 여전히 엔드포인트 네트워크 인터페이스의 프라이빗 IP 주소를 반환하므로 VPC에 액세스할 수 없는 경우 이러한 IP 주소를 사용하여 엔드포인트 서비스에 액세스할 수 없습니다.
프라이빗 DNS
인터페이스 VPC 엔드포인트에 프라이빗 DNS를 활성화하고 VPC에서 DNS hostname과 DNS 해상도가 모두 활성화되어 있는 경우, 숨겨진 AWS 관리형 프라이빗 호스팅 영역이 자동으로 생성됩니다. 호스팅 영역에는 VPC에 있는 엔드포인트 네트워크 인터페이스의 프라이빗 IP 주소로 확인되는 서비스에 대한 기본 DNS 이름의 레코드 세트가 포함됩니다. 따라서 퍼블릭 리전별 엔드포인트를 사용하여 AWS 서비스에 요청을 보내는 기존 애플리케이션이 있는 경우 이제 해당 애플리케이션을 변경하지 않아도 이러한 요청이 엔드포인트 네트워크 인터페이스를 통과합니다.
AWS 서비스용 VPC 엔드포인트에 프라이빗 DNS 이름을 사용하는 것이 좋습니다. 이렇게 하면 AWS SDK를 통해 이루어진 요청과 같이 퍼블릭 서비스 엔드포인트를 사용하는 요청이 VPC 엔드포인트로 확인됩니다.
Amazon은 Route 53 Resolver라고 하는 VPC용 DNS 서버를 제공합니다. Route 53 Resolver는 프라이빗 호스팅 영역의 로컬 VPC 도메인 이름 및 레코드를 자동으로 확인합니다. 하지만 VPC 외부에서는 Route 53 Resolver를 사용할 수 없습니다. 온프레미스 네트워크에서 VPC 엔드포인트에 액세스하려는 경우 Route 53 Resolver 엔드포인트 및 Resolver 규칙을 사용할 수 있습니다. 자세한 내용은 AWS PrivateLink와 AWS Transit Gateway 통합 및 Amazon Route 53 Resolver
서브넷 및 가용 영역
가용 영역당 1개의 서브넷으로 VPC 엔드포인트를 구성할 수 있습니다. 서브넷의 VPC 엔드포인트에 대한 엔드포인트 네트워크 인터페이스가 생성됩니다. VPC 엔드포인트의 IP 주소 유형에 따라 서브넷의 각 엔드포인트 네트워크 인터페이스에 IP 주소가 할당됩니다. 엔드포인트 네트워크 인터페이스의 IP 주소는 VPC 엔드포인트의 수명 기간 동안 변경되지 않습니다.
프로덕션 환경에서는 고가용성 및 복원력을 위해 다음과 같이 진행하는 것이 좋습니다.
-
VPC 엔드포인트당 2개 이상의 가용 영역을 구성하고 이러한 가용 영역의 AWS 서비스에 액세스해야 하는 AWS 리소스를 배포합니다.
-
VPC 엔드포인트의 프라이빗 DNS 이름을 구성합니다.
-
퍼블릭 엔드포인트라고도 하는 리전별 DNS 이름을 사용하여 AWS 서비스에 액세스합니다.
다음 다이어그램에서는 1개의 가용 영역에 엔드포인트 네트워크 인터페이스가 있는 Amazon CloudWatch용 VPC 엔드포인트를 보여줍니다. VPC의 서브넷에 있는 리소스에서 퍼블릭 엔드포인트를 사용하여 Amazon CloudWatch에 액세스하면 엔드포인트 네트워크 인터페이스의 IP 주소로 트래픽이 확인됩니다. 여기에는 다른 가용 영역에 있는 서브넷의 트래픽도 포함됩니다. 그러나 가용 영역 1이 손상되면 가용 영역 2의 리소스의 Amazon CloudWatch 액세스 권한이 손실됩니다.
다음 다이어그램에서는 2개의 가용 영역에 엔드포인트 네트워크 인터페이스가 있는 Amazon CloudWatch용 VPC 엔드포인트를 보여줍니다. VPC의 서브넷에 있는 리소스에서 퍼블릭 엔드포인트를 사용하여 Amazon CloudWatch에 액세스하면 두 가지를 번갈아 사용하는 라운드 로빈 알고리즘을 통해 정상 엔드포인트 네트워크 인터페이스가 선택됩니다. 그런 다음에 선택된 엔드포인트 네트워크 인터페이스의 IP 주소로 트래픽이 확인됩니다.
사용 사례에 더 적합한 경우 동일한 가용 영역의 엔드포인트 네트워크 인터페이스를 사용하여 리소스에서 AWS 서비스로 트래픽을 보낼 수 있습니다. 이렇게 하려면 엔드포인트 네트워크 인터페이스의 프라이빗 영역별 엔드포인트 또는 IP 주소를 사용하세요.
IP 주소 유형
AWS 서비스는 퍼블릭 엔드포인트를 통해 IPv6를 지원하지 않더라도 프라이빗 엔드포인트를 통해 IPv6를 지원할 수 있습니다. IPv6를 지원하는 엔드포인트는 AAAA 레코드를 사용하여 DNS 쿼리에 응답할 수 있습니다.
인터페이스 엔드포인트에 대해 IPv6를 활성화하기 위한 요구 사항
-
AWS 서비스는 IPv6를 통해 서비스 엔드포인트를 사용할 수 있도록 해야 합니다. 자세한 내용은 IPv6 지원 보기 단원을 참조하십시오.
-
인터페이스 엔드포인트의 IP 주소 유형이 여기에 설명된 대로 인터페이스 엔드포인트의 서브넷과 호환되어야 합니다.
-
IPv4 - 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 주소 범위가 있는 경우에만 지원됩니다.
-
IPv6 - 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷이 IPv6 전용 서브넷인 경우에만 지원됩니다.
-
듀얼 스택 - 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있는 경우에만 지원됩니다.
-
인터페이스 VPC 엔드포인트가 IPv4를 지원하는 경우 엔드포인트 네트워크 인터페이스에 IPv4 주소가 있습니다. 인터페이스 VPC 엔드포인트가 IPv6를 지원하는 경우 엔드포인트 네트워크 인터페이스에 IPv6 주소가 있습니다. 엔드포인트 네트워크 인터페이스의 IPv6 주소는 인터넷을 통해 연결할 수 없습니다. 엔드포인트 네트워크 인터페이스를 IPv6 주소를 사용하여 설명하는 경우 denyAllIgwTraffic
이 활성화됩니다.