VPC 오리진으로 액세스 제한
CloudFront를 사용하여 가상 프라이빗 클라우드(VPC) 프라이빗 서브넷에 호스팅되는 애플리케이션에서 콘텐츠를 제공할 수 있습니다. 프라이빗 서브넷의 Application Load Balancer(ALB), Network Load Balancer(NLB), EC2 인스턴스를 VPC 오리진으로 사용할 수 있습니다.
다음은 VPC 오리진을 사용하려는 몇 가지 이유입니다.
-
보안 - VPC 오리진은 프라이빗 서브넷에 로드 밸런서와 EC2 인스턴스를 배치하여 애플리케이션의 보안 태세를 강화하도록 설계되어 CloudFront를 단일 진입점으로 만듭니다. 사용자 요청은 프라이빗 보안 연결을 통해 CloudFront에서 VPC 오리진으로 이동하므로 애플리케이션의 보안을 강화합니다.
-
관리 - VPC 오리진은 CloudFront와 오리진 간의 보안 연결에 필요한 운영 오버헤드를 줄입니다. 퍼블릭 액세스 권한이 없는 프라이빗 서브넷으로 오리진을 이동할 수 있으며, 오리진에 대한 액세스를 제한하기 위해 액세스 제어 목록(ACL) 또는 기타 메커니즘을 구현할 필요가 없습니다. 이렇게 하면 CloudFront로 웹 애플리케이션을 보호하기 위해 차별화되지 않은 개발 작업에 투자할 필요가 없습니다.
-
확장성 및 성능 - VPC 오리진을 사용하면 웹 애플리케이션을 보호할 수 있으므로 CloudFront를 통해 보안을 개선하고 고성능 및 글로벌 확장성을 유지하면서 중요한 비즈니스 애플리케이션을 성장시키는 데 집중할 시간을 확보할 수 있습니다. VPC 오리진은 보안 관리를 간소화하고 운영 복잡성을 줄여주므로 CloudFront를 애플리케이션의 단일 진입점으로 사용할 수 있습니다.
사전 조건
CloudFront 배포에 대한 VPC 오리진을 만들기 전에 다음을 완료해야 합니다.
-
Amazon VPC에 가상 프라이빗 클라우드(VPC)를 만듭니다.
-
VPC는 CloudFront 배포와 동일한 AWS 계정에 있어야 합니다.
-
VPC는 VPC 오리진에 대해 지원되는 AWS 리전 중 하나에 있어야 합니다. 자세한 내용은 VPC 오리진에서 지원되는 AWS 리전 섹션을 참조하세요.
VPC 서브넷과 연결된 네트워크 ACL은 VPC 오리진에서 클라이언트 IP 주소 보존이 활성화된 경우, 송신(아웃바운드) 트래픽에 적용됩니다. 하지만 트래픽이 VPC 오리진을 통해 종료되도록 허용하려면 ACL을 인바운드 규칙과 아웃바운드 규칙 모두로 구성해야 합니다.
예를 들어, 임시 소스 포트를 사용하는 TCP 및 UDP 클라이언트가 VPC 오리진을 통해 엔드포인트에 연결되도록 허용하려면 엔드포인트의 서브넷을 임시 TCP 또는 UDP 포트(포트 범위 1024~65535, 대상 0.0.0.0/0)로 향하는 아웃바운드 트래픽을 허용하는 네트워크 ACL과 연결합니다. 또한 일치하는 인바운드 규칙(포트 범위 1024-65535, 소스 0.0.0.0/0)을 생성합니다.
VPC 생성에 대한 자세한 내용은 Amazon VPC 사용 설명서의 VPC 및 기타 VPC 리소스 생성을 참조하시기 바랍니다.
-
-
요청에서 다음 내용을 포함합니다.
-
인터넷 게이트웨이 - VPC 오리진 리소스가 있는 VPC에 인터넷 게이트웨이를 추가해야 합니다. 인터넷 게이트웨이는 VPC가 인터넷에서 트래픽을 수신할 수 있음을 나타내는 데 필요합니다. 인터넷 게이트웨이는 서브넷 내의 오리진으로 트래픽을 라우팅하는 데 사용되지 않으므로 라우팅 정책을 업데이트할 필요가 없습니다.
-
사용 가능한 IPv4 주소가 최소 하나 이상인 프라이빗 서브넷 - CloudFront는 사용자가 CloudFront에서 VPC 오리진 리소스를 정의한 후 CloudFront가 생성하는 서비스 관리형 탄력적 네트워크 인터페이스(ENI)를 사용하여 서브넷으로 라우팅합니다. ENI 생성 프로세스에 성공하려면 프라이빗 서브넷에 사용 가능한 IPv4 주소가 하나 이상 있어야 합니다. IPv4 주소는 프라이빗 주소일 수 있으며 추가 비용은 없습니다.
참고
IPv6 전용 서브넷은 지원되지 않습니다.
-
-
프라이빗 서브넷에서 Application Load Balancer, Network Load Balancer, 오리진으로 사용할 EC2 인스턴스를 시작합니다.
-
시작하는 리소스는 완전히 배포되고 활성 상태여야 VPC 오리진에 사용할 수 있습니다.
-
Gateway Load Balancer, 듀얼 스택 Network Load Balancer 및 TLS 리스너가 있는 Network Load Balancer는 오리진으로 추가할 수 없습니다.
-
VPC 오리진으로 사용하려면 Network Load Balancer에 보안 그룹이 연결되어 있어야 합니다.
CloudFront 관리형 접두사 목록을 명시적으로 허용하도록 VPC 프라이빗 오리진의 보안 그룹을 업데이트합니다. 자세한 내용은 CloudFront 관리형 접두사 목록 사용 섹션을 참조하세요.
-
VPC 오리진이 생성된 후 VPC 오리진에서의 트래픽만 허용하도록 보안 그룹을 추가로 제한할 수 있습니다. 이렇게 하려면 관리형 접두사 목록에서 허용된 트래픽 소스를 CloudFront 보안 그룹으로 업데이트합니다.
참고
CloudFront에서 Lambda@Edge를 사용한 WebSockets, gRPC 트래픽 및 오리진 재작성은 VPC 오리진에서 지원되지 않습니다. 자세한 내용은 Lambda@Edge 설명서의 요청 및 응답 작업 수행 페이지를 참고하시기 바랍니다.
-
-
VPC 오리진 생성(새 배포)
다음 절차에서는 CloudFront 콘솔에서 새 CloudFront 배포에 대한 VPC 오리진을 만드는 방법을 보여줍니다. 또는 AWS CLI나 AWS SDK에서 CreateVpcOrigin 및 CreateDistribution API 작업을 사용할 수 있습니다.
새 CloudFront 배포에 대한 VPC 오리진을 만들려면 다음과 같이 합니다.
https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
VPC 오리진, VPC 오리진 생성을 선택합니다.
-
필수 필드를 입력합니다. 오리진 ARN에서 Application Load Balancer, Network Load Balancer 또는 EC2 인스턴스의 ARN을 선택합니다. ARN이 표시되지 않으면 특정 리소스 ARN을 복사하여 여기에 붙여넣을 수 있습니다.
-
VPC 오리진 생성을 선택합니다.
-
VPC 오리진 상태가 배포됨으로 변경될 때까지 기다립니다. 이 프로세스는 최대 15분이 걸릴 수 있습니다.
-
배포, 배포 생성을 선택합니다.
-
원본 도메인의 드롭다운 목록에서 VPC 오리진 리소스를 선택합니다.
VPC 오리진이 EC2 인스턴스인 경우 인스턴스의 프라이빗 IP DNS 이름을 복사하여 원본 도메인 필드에 붙여넣습니다.
-
배포 생성을 완료합니다. 자세한 내용은 콘솔에서 CloudFront 배포 생성 섹션을 참조하세요.
VPC 오리진 생성(기존 배포)
다음 절차에서는 CloudFront 콘솔에서 기존 CloudFront 배포에 대한 VPC 오리진을 만드는 방법을 보여줍니다. 이를 통해 애플리케이션의 지속적인 가용성을 보장할 수 있습니다. 또는 AWS CLI나 AWS SDK와 함께 CreateVpcOrigin 및 UpdateDistributionWithStagingConfig API 작업을 사용할 수 있습니다.
필요에 따라 스테이징 배포를 만들지 않고 기존 배포에 VPC 오리진을 추가하도록 선택할 수 있습니다.
기존 CloudFront 배포에 대한 VPC 오리진을 만들려면 다음과 같이 합니다.
https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
VPC 오리진, VPC 오리진 생성을 선택합니다.
-
필수 필드를 입력합니다. 오리진 ARN에서 Application Load Balancer, Network Load Balancer 또는 EC2 인스턴스의 ARN을 선택합니다. ARN이 표시되지 않으면 특정 리소스 ARN을 복사하여 여기에 붙여넣을 수 있습니다.
-
VPC 오리진 생성을 선택합니다.
-
VPC 오리진 상태가 배포됨으로 변경될 때까지 기다립니다. 이 프로세스는 최대 15분이 걸릴 수 있습니다.
-
탐색 창에서 Distributions(배포)를 선택합니다.
-
배포 ID를 선택합니다.
-
일반 탭의 지속적 배포에서 스테이징 배포 생성을 선택합니다. 자세한 내용은 CloudFront 지속적 배포를 사용하여 CDN 구성 변경을 안전하게 테스트 섹션을 참조하세요.
-
스테이징 배포 생성 마법사의 단계에 따라 스테이징 배포를 만듭니다. 다음 단계를 포함합니다.
-
오리진에서 원본 생성을 선택합니다.
-
원본 도메인의 드롭다운 메뉴에서 VPC 오리진 리소스를 선택합니다.
VPC 오리진이 EC2 인스턴스인 경우 인스턴스의 프라이빗 IP DNS 이름을 복사하여 원본 도메인 필드에 붙여넣습니다.
-
오리진 생성(Create Origin)을 선택합니다.
-
-
스테이징 배포에서 VPC 오리진을 테스트합니다.
-
스테이징 배포 구성을 기본 배포로 승격합니다. 자세한 내용은 스테이징 배포 구성 승격 섹션을 참조하세요.
-
서브넷을 프라이빗으로 설정하여 VPC 오리진에 대한 퍼블릭 액세스를 제거합니다. 이렇게 하면 인터넷을 통해 VPC 오리진을 검색할 수 없지만 CloudFront는 여전히 프라이빗 액세스 권한을 갖습니다. 자세한 내용은 Amazon VPC 사용 설명서의 서브넷을 라우팅 테이블과 연결 또는 연결 해제를 참조하시기 바랍니다.
VPC 오리진 업데이트
다음 절차에서는 CloudFront 콘솔에서 CloudFront 배포의 VPC 오리진을 업데이트하는 방법을 보여줍니다. 또는 AWS CLI나 AWS SDK와 함께 UpdateDistribution 및 UpdateVpcOrigin API 작업을 사용할 수 있습니다.
CloudFront 배포의 기존 VPC 오리진을 업데이트하려면 다음과 같이 합니다.
https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 Distributions(배포)를 선택합니다.
-
배포 ID를 선택합니다.
-
동작 탭을 선택합니다.
-
VPC 오리진이 캐시 동작의 기본 오리진인지 여부를 확인합니다.
-
오리진 탭을 선택합니다.
-
업데이트할 VPC 오리진을 선택하고 삭제를 선택합니다. 이렇게 하면 배포에서 VPC 오리진의 연결이 해제됩니다. 2~7단계를 반복하여 VPC 오리진을 다른 배포에서 연결 해제합니다.
-
VPC 오리진을 선택합니다.
-
VPC 오리진을 선택하고 편집을 선택합니다.
-
업데이트를 수행하고 VPC 오리진 업데이트를 선택합니다.
-
VPC 오리진 상태가 배포됨으로 변경될 때까지 기다립니다. 이 프로세스는 최대 15분이 걸릴 수 있습니다.
-
탐색 창에서 Distributions(배포)를 선택합니다.
-
배포 ID를 선택합니다.
-
오리진 탭을 선택합니다.
-
오리진 생성(Create Origin)을 선택합니다.
-
원본 도메인의 드롭다운 메뉴에서 VPC 오리진 리소스를 선택합니다.
VPC 오리진이 EC2 인스턴스인 경우 인스턴스의 프라이빗 IP DNS 이름을 복사하여 원본 도메인 필드에 붙여넣습니다.
-
오리진 생성(Create Origin)을 선택합니다. 이렇게 하면 VPC 오리진이 배포와 다시 연결됩니다. 12~17단계를 반복하여 업데이트된 VPC 오리진을 다른 배포와 연결합니다.
VPC 오리진에서 지원되는 AWS 리전
VPC 오리진은 현재 다음 상업용 AWS 리전에서 지원됩니다. 가용 영역(AZ) 예외가 기록됩니다.
리전 이름 | 리전 |
---|---|
미국 동부(오하이오) | us-east-2 |
미국 동부(버지니아 북부) | us-east-1 (except AZ
use1-az3) |
미국 서부(캘리포니아 북부) | us-west-1 (except AZ
usw1-az2) |
미국 서부(오리건) | us-west-2 |
아프리카(케이프타운) | af-south-1 |
아시아 태평양(홍콩) | ap-east-1 |
아시아 태평양(뭄바이) | ap-south-1 |
아시아 태평양(하이데라바드) | ap-south-2 |
아시아 태평양(자카르타) | ap-southeast-3 |
아시아 태평양(멜버른) | ap-southeast-4 |
아시아 태평양(오사카) | ap-northeast-3 |
아시아 태평양(싱가포르) | ap-southeast-1 |
아시아 태평양(시드니) | ap-southeast-2 |
아시아 태평양(도쿄) | ap-northeast-1 (except AZ
apne1-az3) |
아시아 태평양(서울) | ap-northeast-2 (except AZ
apne2-az1) |
캐나다(중부) | ca-central-1 (except AZ
cac1-az3) |
캐나다 서부(캘거리) | ca-west-1 |
유럽(프랑크푸르트) | eu-central-1 |
유럽(아일랜드) | eu-west-1 |
유럽(런던) | eu-west-2 |
유럽(밀라노) | eu-south-1 |
유럽(파리) | eu-west-3 |
유럽(스페인) | eu-south-2 |
유럽(스톡홀름) | eu-north-1 |
유럽(취리히) | eu-central-2 |
이스라엘(텔아비브) | il-central-1 |
중동(바레인) | me-south-1 |
중동(UAE) | me-central-1 |
남아메리카(상파울루) | sa-east-1 |