Restrict access with VPC origins - Amazon CloudFront

VPC Origin 기능을 사용하면 Private Subnet에 위치한 Private Resoure를 CloudFront의 Origin으로 연결하여 사용할 수 있습니다.
외부에서 EC2에 접근하기 위해서는 Public Subnet에 배치하고 Public IP를 할당해야 합니다. 이전까지는 보안을 위해서 EC2를 Private Subnet에 배치하고 Public Load Balancer를 연결하는 형태로 많이 사용하였습니다.하지만 VPC Orgin 기능의 등장으로 하나의 선택지가 생겼습니다.
VPC Origin을 사용하기 위해서 필수 조건이 있습니다.
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html#vpc-origin-prerequisites
Private Resource와 CloudFront 동일한 AWS 계정내에 있어야 합니다.
Private Resource가 속한 VPC에는 Internet Gateway가 연결된 상태여야 합니다.
VPC OrIgin 사용 시, 실제로는 Internet Gateway를 사용하지 않습니다(Routing X, Traffic X). 하지만 VPC에 연결된 상태여야 합니다.
지원 불가능한 Region 또는 Availability Zone이 있습니다
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html#vpc-origins-supported-regions
서울 리전(ap-northeast-2)의 경우 apne2-az1 Availability Zone에서는 사용이 불가능합니다.
Private Resource로 Internet ALB 또는 NLB, Private EC2를 등록 가능합니다.
Private Resource의 Security Group에는 CloudFront를 허용하는 규칙이 필요합니다.
VPC Origin 생성 명령어
aws cloudfront create-vpc-origin \
--vpc-origin-endpoint-config '{
"Name": "<VPC Origin Name>",
"Arn": "<Prviate Resource ARN>",
"HTTPPort": <HTTP port number of private resource>,
"HTTPSPort": <HTTPS port number of private resource>,
"OriginProtocolPolicy": "<http-only | match-viewer | https-only>",
"OriginSslProtocols": {
"Quantity": <Number of SSL/TLS Protocol to use>
"Items": [<"SSLv3"|"TLSv1"|"TLSv1.1"|"TLSv1.2">]
}
}'
[샘플]
aws cloudfront create-vpc-origin \
--vpc-origin-endpoint-config '{
"Name": "2test-web-origin1",
"Arn": "arn:aws:ec2:ap-northeast-2:123456789:instance/i-0da7146320f88b683",
"HTTPPort": 80,
"HTTPSPort": 443,
"OriginProtocolPolicy": "http-only",
"OriginSslProtocols": {
"Quantity": 1,
"Items": ["TLSv1.2"]
}
}' \
--tags "Items=[{Key=Env,Value=2test},{Key=Team,Value=Ducku}]"
서울리전의 경우 apne2-az1 존이 맞겠죠?
흔히 알고 있는 a, b, c, d 존과는 다른 개념입니다.