Amazon ANS-C01: 콘텐츠 전송 및 엣지 네트워킹 — 학습 가이드
다음의 일부입니다: AWS Advanced Networking Specialty ANS-C01 — 학습 가이드. 검증된 답안으로 연습하기: Amazon 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
핵심 개념
콘텐츠 전송과 엣지 네트워킹은 서로 관련된 두 가지 책임을 분리합니다. 즉, 클라이언트 트래픽을 낮은 지연 시간으로 전송하는 것과 최종 사용자 가까이에 분산된 캐시/컴퓨팅 계층 역할을 하는 것입니다. CloudFront는 HTTP(S) CDN이자 엣지 컴퓨팅 플랫폼으로, HTTP 응답을 캐싱하고, 엣지에서 TLS를 종료하며, Lambda@Edge(리전에 복제된 전체 Lambda 런타임) 또는 CloudFront Functions(뷰어 요청/응답 시 경량 JavaScript 실행)를 사용하여 엣지 로케이션에서 코드를 실행할 수 있습니다. CloudFront의 동작은 CreateDistribution으로 생성된 배포 구성 객체에 의해 결정되며, CachePolicy 및 OriginRequestPolicy 객체를 사용하여 세부적으로 조정됩니다. DefaultTTL, MinTTL, MaxTTL과 같은 캐시 정책 필드와 캐시 키에 포함되는 헤더, 쿠키, 쿼리 문자열 집합은 캐시 적중률과 오리진 부하를 결정합니다. 오리진 제어에는 프라이빗 S3 오리진을 위한 S3 OAC/OAI(CreateCloudFrontOriginAccessControl)와 프라이빗 콘텐츠를 보호하기 위한 서명된 URL 또는 서명된 쿠키(CreateKeyGroup, CreatePublicKey 및 서명된 URL 서명 프로세스)가 포함됩니다.
Global Accelerator와 Anycast는 HTTP 계층 아래에서 작동합니다. Global Accelerator는 AWS 엣지 네트워크에서 두 개의 고정 애니캐스트 IP 주소를 알리고, 정상 상태인 리전 엔드포인트(Network Load Balancer, Application Load Balancer, EC2 인스턴스 또는 Elastic IP)로 TCP/UDP 플로우를 라우팅합니다. Global Accelerator는 L3/L4에서 작동하므로, TCP 통과(pass-through)로 구성될 때 종단 간 TLS를 보존하며, 리전 엔드포인트까지의 “라스트 마일"에 AWS 내부 백본을 사용하여 글로벌 라우팅을 개선합니다. 비-HTTP 프로토콜을 사용하거나 클라이언트와 백엔드 간에 진정한 종단 간 암호화 및 상호 TLS(mTLS)를 보존해야 하는 경우, Global Accelerator를 Network Load Balancer(NLB) 앞에 두는 TCP 통과 경로가 표준적인 패턴입니다. NLB는 L4에서 작동하고, 수백만 개의 연결로 확장 가능하며, Amazon EKS의 파드 또는 노드에 대한 IP 대상을 등록할 수 있습니다.
Lambda@Edge 함수는 CloudFront 동작(behavior)과 연결되며, 배포(CreateFunction 후 Publish)된 후 배포의 LambdaFunctionAssociations에 viewer-request, origin-request, origin-response, viewer-response 트리거용으로 연결되어야 합니다. Lambda@Edge는 여러 엣지 리전으로 복제되므로 버전 및 게시 시맨틱이 중요합니다. 업데이트 중 일관성 없는 동작을 피하려면 버전이 지정된 Lambda 객체를 사용하고 배포를 신중하게 관리해야 합니다.
주요 서비스 및 구성
CloudFront 배포 구성은 서로 긴밀하게 연결된 세 가지 객체에 의존합니다. 즉, 배포 자체(CreateDistribution / UpdateDistribution), 캐시 키와 TTL을 결정하는 CachePolicy 객체(CreateCachePolicy), 그리고 오리진으로 전송될 헤더/쿠키/쿼리 문자열을 결정하는 OriginRequestPolicy 객체(CreateOriginRequestPolicy)입니다. 프라이빗 S3 콘텐츠의 경우 CreateCloudFrontOriginAccessControl 또는 레거시 오리진 액세스 아이덴티티(OAI)를 사용하고, CreateKeyGroup 및 CreatePublicKey를 사용하여 서명된 URL/서명된 쿠키로 액세스를 추가로 보호합니다. SDK 또는 cloudfront-signing 유틸리티는 서명된 URL 또는 정책 문서와 RSA 서명을 생성합니다. 무효화 작업은 CreateInvalidation을 사용하여 캐시된 객체를 선택적으로 제거(purge)하는 방식으로 수행됩니다.
Global Accelerator 구성은 create-accelerator, create-listener, create-endpoint-group API 호출을 통해 생성됩니다. 리스너는 gRPC를 위한 TCP:443 또는 임의의 TCP 포트가 될 수 있으며, 리전의 NLB 또는 ALB를 가리키는 엔드포인트 그룹으로 플로우를 전달합니다. 종단 간 TLS 및 mTLS를 보존하기 위해 Global Accelerator를 TCP 통과용으로 사용하는 경우, 443 포트에 TCP 리스너가 있고 파드 IP(대상 유형: ip) 또는 노드 포트를 등록하는 대상 그룹을 가진 Network Load Balancer와 페어링합니다. Kubernetes EKS에서는 일반적으로 service.beta.kubernetes.io/aws-load-balancer-type: "nlb" 및 service.beta.kubernetes.io/aws-load-balancer-target-type: "ip"와 같은 어노테이션을 사용하여 LoadBalancer 타입의 서비스를 생성하거나, AWS Load Balancer Controller를 사용하여 대상 유형이 ip인 NLB를 생성함으로써 이를 달성합니다. 로깅을 위해 클라이언트 소스 IP를 보존하려면 서비스에 externalTrafficPolicy: Local을 설정하거나, 원래 소스 IP를 유지하는 NLB 통과(passthrough)를 사용합니다.
Global Accelerator와 리전 엔드포인트 간의 네트워크 수준 적용은 AWS 관리형 접두사 목록(prefix list)을 사용하여 관리 오버헤드를 줄입니다. AWS CLI 호출 aws ec2 describe-managed-prefix-lists는 관리형 접두사 목록을 나열합니다. 이 중 com.amazonaws.globalaccelerator라는 이름의 목록을 보안 그룹 규칙(--source-prefix-list와 함께 AuthorizeSecurityGroupIngress 사용)에서 참조하여 가속기에서 시작된 트래픽만 ALB/NLB로 허용할 수 있습니다. ALB가 TLS를 종료하는 경우, 클라이언트 IP 로깅을 위해 X-Forwarded-For 헤더를 사용합니다. Global Accelerator와 함께 NLB 통과를 사용하는 경우, 클라이언트 IP는 기본적으로 보존되며 백엔드가 TLS 종료/mTLS를 처리해야 합니다.
설계 패턴과 트레이드오프
콘텐츠 캐싱, 엣지 컴퓨팅, 그리고 짧은 지연 시간의 HTTP 응답이 요구사항일 때 CloudFront가 적합한 도구입니다. 오리진의 기밀성이 요구되지 않는 경우, CloudFront는 엣지에서 TLS를 종료해야 합니다. 안전한 경우 캐시 키에서 헤더와 쿠키를 제외하여 오리진 요청을 최소화하기 위해 CachePolicy와 OriginRequestPolicy를 사용하세요. 캐싱의 이점을 누리면서 동적 개인화를 구현하려면, 캐시 키 정규화(최소한의 헤더 또는 서명된 쿠키 집합을 기준으로 다양화)를 사용하고, 빈번한 CreateInvalidation 호출 대신 버전이 지정된 객체 키를 통해 캐시 무효화를 설계하세요.
엔드 투 엔드 TLS가 필요한 프로토콜, 백엔드에 도달할 때까지(mTLS의 경우) 복호화되어서는 안 되는 HTTP/2 및 gRPC 흐름의 경우, Global Accelerator + NLB와 TLS passthrough를 사용하여 전면에 TCP/L4 경로를 배치하세요. 트레이드오프로는 CloudFront의 HTTP 캐싱 및 엣지 컴퓨팅 능력을 잃게 되지만, Global Accelerator는 애니캐스트 고정 IP, 개선된 라우팅 및 리전 장애 조치를 제공합니다. ALB는 TLS를 종료할 때 HTTP/2와 gRPC를 지원하며, 이를 통해 애플리케이션 계층 라우팅(호스트/경로 기반) 및 WAF 통합이 가능해집니다. 하지만 ALB에서의 TLS 종료는 엔드 투 엔드 mTLS를 깨뜨리고 인증서 관리를 로드 밸런서에 두게 됩니다. 대규모 동시 연결의 경우, L4에서 NLB의 확장성이 더 좋습니다. NLB는 연결 속도에 최적화되어 있고 소스 IP를 보존하는 반면, ALB는 HTTP 수준 라우팅과 호스트/경로 수준 라우팅을 위한 리스너 규칙 및 Cognito/OIDC와의 통합 같은 기능에 맞게 설계되었습니다.
보안 제어 및 리전 격리 패턴을 구현하려면 공유 VPC 피어링, Transit Gateway, PrivateLink, 로드 밸런서 엔드포인트 중에서 신중하게 선택해야 합니다. PrivateLink는 각 소비자가 자신의 VPC에 인터페이스 엔드포인트를 생성하므로, 세분화된 서비스 수준 액세스 제어를 제공하고 다수의 소비자 환경에서도 잘 확장됩니다. Transit Gateway는 고대역폭 중앙 집중화에 적합하지만, PrivateLink 엔드포인트가 제공하는 서비스별 세분화된 제어 및 SNI/호스트 수준 가시성이 부족합니다. 설계 시 라우팅 제한, 교차 계정 권한, 서비스 경계에서 보안 그룹을 적용하는 능력을 고려해야 합니다.
일반적인 함정과 의사결정 기준
자주 발생하는 오류는 캐시 제어를 잘못 혼합하는 것입니다. 오리진이 설정한 Cache-Control 헤더가 엣지 캐싱을 제어하도록 허용하면서 CloudFront 캐시 정책도 적용하면 예상치 못한 TTL이 발생할 수 있습니다. 명시적인 CachePolicy 객체를 사용하는 것을 선호하고, 의도적인 경우가 아니라면 오리진 헤더에만 의존하지 마세요. 또 다른 함정은 엔드 투 엔드 TLS나 수백만 개의 동시 TCP 연결이 필요할 때 ALB를 선택하는 것입니다. ALB에서 종료된 TLS는 mTLS를 방해하며, 매우 높은 연결 동시성에서 병목 현상을 일으킬 수 있습니다. 인터넷 연결 ALB에 대한 액세스를 제한하려는 보안 구성에서 Global Accelerator 접두사 목록이나 WAF 규칙을 사용하여 액세스를 차단하는 것을 잊는 경우가 많습니다. 명시적인 허용 규칙이 없으면 ALB는 공개 DNS를 통해 계속 접근할 수 있습니다. 마지막으로, 버전이 지정된 Lambda 함수를 사용하지 않는 Lambda@Edge 배포는 배포(distribution)의 연결이 특정 게시 버전에 묶이기 때문에 롤아웃 중에 일관되지 않은 동작을 유발할 수 있습니다.
실용적인 문제: 사용 사례 시나리오
회사: AcmeTelemetrics — 과제: 전 세계에 분산된 IoT 자판기 플릿이 TCP:443을 통해 gRPC를 사용하여 us-east-1의 Amazon EKS에서 실행되는 백엔드와 통신합니다. 요구사항은 전송 중 트래픽이 절대 복호화되지 않도록 엔드 투 엔드 상호 TLS(mTLS)를 구현하고, 수천 개의 동시 연결을 지원하며, 고정 IP가 기기에 프로그래밍되어야 합니다.
접근 방식:
- 2개의 애니캐스트 고정 IP와 443 포트의 TCP 리스너(create-listener)를 가진 Global Accelerator를 생성합니다(aws globalaccelerator create-accelerator). us-east-1 리전의 Network Load Balancer를 대상으로 하는 엔드포인트 그룹을 구성합니다(create-endpoint-group).
- us-east-1에 443 포트의 TCP 리스너와 ip 유형의 대상 그룹을 가진 NLB를 프로비저닝합니다. Kubernetes에서
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"및service.beta.kubernetes.io/aws-load-balancer-target-type: "ip"어노테이션을 사용하여 LoadBalancer 타입의 서비스를 생성하고,externalTrafficPolicy: Local로 설정한 후, 파드 IP를 대상으로 등록하여 TLS가 파드로 직접 전달되도록 합니다. - EKS에 gRPC 서버를 배포하고 파드 프로세스 내에서 TLS/mTLS를 종료합니다. 인증서와 신뢰 자료는 Kubernetes Secrets에 저장하고, 상호 TLS를 위해 클라이언트 인증서 확인을 요구하도록 서버를 구성합니다.
- NLB의 보안 그룹을 업데이트하여 AWS 관리형 Global Accelerator 접두사 목록(aws ec2 describe-managed-prefix-lists를 통해 확인하고 보안 그룹 규칙에서 해당 접두사 목록을 참조)에서의 인그레스만 허용하도록 설정하여 NLB로의 직접적인 액세스를 차단합니다. 이를 통해 기기들이 액셀러레이터를 우회하여 NLB에 직접 접속하는 것을 방지합니다.
- Kubernetes HorizontalPodAutoscaler와 Cluster Autoscaler를 구성하여 연결 동시성 및 스케일링을 모니터링하고, NLB 대상 그룹의 slow start와 등록 취소 지연이 정상적인 스케일인(scale-in)에 맞게 조정되도록 보장합니다(modify-target-group-attributes). Global Accelerator, NLB, EKS의 CloudWatch 지표를 사용하여 연결 수와 상태를 관찰합니다.
AWS의 논리적 근거: Global Accelerator는 자판기에서 요구하는 애니캐스트 고정 IP를 제공하고, AWS 백본을 통해 TCP 흐름을 리전의 NLB로 라우팅하여 안정성과 지연 시간을 개선합니다. NLB는 원본 클라이언트 TCP 연결과 소스 IP를 보존하고 대규모 동시 연결을 지원하여, 중간 TLS 종료 없이 파드가 mTLS 종료를 수행할 수 있게 합니다. 보안 그룹 규칙에서 Global Accelerator 관리형 접두사 목록을 사용하면 액셀러레이터를 직접 우회하는 것을 방지하고 트래픽이 애니캐스트 IP를 통해서만 도착하도록 강제할 수 있습니다. 이 조합은 엔드 투 엔드 암호화, mTLS, 대규모 동시성, 고정 IP, 그리고 EKS에서의 오토스케일링 요구사항을 모두 만족시킵니다.
← 네트워크 보안 및 규정 준수 · 모든 도메인 · 네트워크 성능 및 모니터링 →
이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
시험 합격하기 →