Amazon ANS-C01: Contentlevering en Edge Networking — Studiegids
Onderdeel van de AWS Advanced Networking Specialty ANS-C01 — Studiegids. Oefen met geverifieerde antwoorden in het Amazon-examencentrum, of doe getimede oefentests op ExamRoll.io.
Kernconcepten
Content delivery en edge networking scheiden twee gerelateerde verantwoordelijkheden: het transporteren van clientverkeer met lage latentie en het fungeren als een gedistribueerde cache/compute-laag dicht bij eindgebruikers. CloudFront is een HTTP(S) CDN en edge compute-platform dat HTTP-responses cachet, TLS aan de edge beëindigt en code kan uitvoeren op edge-locaties met behulp van Lambda@Edge (volledige Lambda-runtime gerepliceerd naar regio’s) of CloudFront Functions voor lichtgewicht JavaScript bij viewer request/response. Het gedrag van CloudFront wordt gestuurd door distributieconfiguratieobjecten die worden aangemaakt met
undefined
en worden afgestemd met behulp van CachePolicy- en OriginRequestPolicy-objecten. Velden in het cachebeleid, zoals DefaultTTL, MinTTL en MaxTTL, en de set headers, cookies en query strings die in de cachesleutel zijn opgenomen, bepalen de cache hit ratio en de belasting van de origin. Controles aan de origin-zijde omvatten S3 OAC/OAI voor private S3-origins (CreateCloudFrontOriginAccessControl) en signed URL’s of signed cookies (CreateKeyGroup, CreatePublicKey en het ondertekeningsproces voor signed URL’s) om private content te beschermen.
Global Accelerator en Anycast opereren onder de HTTP-laag. Global Accelerator kondigt twee statische anycast IP-adressen aan vanaf het AWS edge-netwerk en routeert TCP/UDP-flows naar gezonde regionale endpoints (Network Load Balancers, Application Load Balancers, EC2-instances of Elastic IP’s). Omdat Global Accelerator op L3/L4 werkt, behoudt het end-to-end TLS wanneer het is geconfigureerd voor TCP pass-through en verbetert het de wereldwijde routering door de interne backbone van AWS te gebruiken voor de “last mile” naar de regionale endpoints. Voor niet-HTTP-protocollen of wanneer echte end-to-end-encryptie en mutual TLS (mTLS) behouden moeten blijven tussen de client en de backend, is een TCP pass-through-pad met Global Accelerator voor een Network Load Balancer (NLB) het canonieke patroon: NLB’s werken op L4, schalen naar miljoenen verbindingen en kunnen IP-targets registreren voor pods of nodes in Amazon EKS.
Lambda@Edge-functies zijn gekoppeld aan CloudFront-behaviors en moeten worden gedeployd (CreateFunction met Publish) en gekoppeld worden in de LambdaFunctionAssociations van de distributie voor viewer-request, origin-request, origin-response en viewer-response triggers. Omdat Lambda@Edge repliceert naar meerdere edge-regio’s, zijn versies en de semantiek van publiceren belangrijk; gebruik geversioneerde Lambda-objecten en beheer implementaties zorgvuldig om inconsistent gedrag tijdens updates te voorkomen.
Belangrijkste services en configuratie
De configuratie van een CloudFront-distributie is afhankelijk van drie nauw verbonden objecten: de distributie zelf (CreateDistribution / UpdateDistribution), CachePolicy-objecten die de cachesleutel en TTL’s bepalen (CreateCachePolicy), en OriginRequestPolicy-objecten die bepalen welke headers/cookies/query strings naar de origin worden gestuurd (CreateOriginRequestPolicy). Gebruik voor private S3-content CreateCloudFrontOriginAccessControl of de verouderde origin access identity, en beveilig de toegang verder met signed URL’s / signed cookies met behulp van CreateKeyGroup en CreatePublicKey; de SDK of cloudfront-signing-utilities genereren de signed URL of het policy-document en de RSA-handtekening. Invalidatie-operaties worden uitgevoerd met CreateInvalidation om gecachete objecten selectief te verwijderen.
De configuratie van Global Accelerator wordt aangemaakt via de API-calls create-accelerator, create-listener en create-endpoint-group. De listener kan TCP:443 zijn voor gRPC of elke andere TCP-poort en zal flows doorsturen naar endpoint groups die verwijzen naar een regionale NLB of ALB. Wanneer Global Accelerator wordt gebruikt voor TCP pass-through om end-to-end TLS en mTLS te behouden, koppel het dan aan een Network Load Balancer met TCP-listeners op 443 en target groups die pod-IP’s (target type ip) of node ports registreren. In Kubernetes EKS wordt dit doorgaans bereikt door een Service van het type LoadBalancer aan te maken met annotaties zoals service.beta.kubernetes.io/aws-load-balancer-type: “nlb” en service.beta.kubernetes.io/aws-load-balancer-target-type: “ip”, of door de AWS Load Balancer Controller te gebruiken om een NLB met target type ip aan te maken. Behoud het bron-IP-adres van de client voor logging door externalTrafficPolicy: Local in te stellen op de Service of door NLB-passthrough te gebruiken, die het oorspronkelijke bron-IP behoudt.
Handhaving op netwerkniveau tussen Global Accelerator en regionale endpoints maakt gebruik van door AWS beheerde prefixlijsten om de administratieve overhead te verminderen. De AWS CLI-call aws ec2 describe-managed-prefix-lists geeft een lijst van beheerde prefixlijsten; degene met de naam com.amazonaws.globalaccelerator kan worden gebruikt in security group-regels (AuthorizeSecurityGroupIngress met –source-prefix-list) om alleen verkeer afkomstig van de accelerator toe te staan naar een ALB/NLB. Waar een ALB TLS beëindigt, gebruik je X-Forwarded-For-headers voor het loggen van het client-IP; bij gebruik van NLB-passthrough met Global Accelerator worden client-IP’s native behouden en moeten de backends de TLS-beëindiging/mTLS afhandelen.
Ontwerppatronen en afwegingen
Wanneer de vereiste contentcaching plus edge compute en HTTP-responsen met lage latentie is, is CloudFront de juiste tool. CloudFront zou TLS aan de edge moeten beëindigen wanneer vertrouwelijkheid van de origin niet vereist is; gebruik CachePolicy en OriginRequestPolicy om origin-requests te minimaliseren door headers en cookies uit te sluiten van de cache key waar dit veilig is. Voor dynamische personalisatie die nog steeds profiteert van caching, gebruik cache key-normalisatie (variëren op een minimale set van headers of ondertekende cookies) en ontwerp voor cache-invalidatie via object keys met versies in plaats van frequente CreateInvalidation-aanroepen.
Voor protocollen die end-to-end TLS vereisen, en voor HTTP/2- en gRPC-stromen die niet mogen worden ontsleuteld tot aan de backend (voor mTLS), plaats een TCP/L4-pad ervoor met behulp van Global Accelerator + NLB met TLS-passthrough. De afweging is het verlies van CloudFront’s HTTP-caching en edge compute-mogelijkheden; Global Accelerator biedt echter anycast statische IP’s, verbeterde routing en regionale failover. ALB ondersteunt HTTP/2 en gRPC wanneer de ALB de TLS-verbinding beëindigt, wat routing op de applicatielaag (host/path-based) en WAF-integratie mogelijk maakt, maar beëindiging op de ALB doorbreekt end-to-end mTLS en legt het certificaatbeheer bij de load balancer. Voor een massaal aantal gelijktijdige verbindingen schalen NLB’s beter op L4 — NLB’s zijn geoptimaliseerd voor verbindingssnelheid en behouden het bron-IP, terwijl ALB’s zijn ontworpen voor routing op HTTP-niveau en functies zoals listener rules voor routing op host/path-niveau en integratie met Cognito/OIDC.
Beveiligingsmaatregelen en regionale isolatiepatronen vereisen een zorgvuldige selectie tussen gedeelde VPC-peering, Transit Gateway, PrivateLink en Load Balancer-endpoints. PrivateLink biedt granulaire toegangscontroles op serviceniveau en schaalt goed voor veel consumenten, omdat elke consument een interface-endpoint in zijn eigen VPC aanmaakt. Transit Gateway is geschikt voor centralisatie met hoge bandbreedte, maar mist de granulaire controles per service en de zichtbaarheid op SNI/host-niveau die een PrivateLink-endpoint biedt. Het ontwerp moet rekening houden met routeringslimieten, cross-account permissies en de mogelijkheid om security groups toe te passen op de servicegrens.
Veelvoorkomende valkuilen en beslissingscriteria
Een veelgemaakte fout is het onjuist combineren van cache controls: het laten sturen van edge caching door door de origin ingestelde Cache-Control-headers terwijl ook CloudFront cache policies van toepassing zijn, kan onverwachte TTL’s creëren; geef de voorkeur aan expliciete CachePolicy-objecten en vertrouw niet uitsluitend op origin-headers, tenzij dit bewust gebeurt. Een andere valkuil is het selecteren van een ALB wanneer end-to-end TLS of miljoenen gelijktijdige TCP-verbindingen nodig zijn; door ALB beëindigde TLS verhindert mTLS en kan de bottleneck worden bij een zeer hoge gelijktijdigheid van verbindingen. Beveiligingsconfiguraties die proberen de toegang tot een internet-facing ALB te beperken, vergeten vaak de toegang te vergrendelen met behulp van de Global Accelerator prefix list of een WAF-regel; zonder expliciete allow-regels blijft de ALB bereikbaar via zijn publieke DNS. Tot slot kunnen Lambda@Edge-implementaties die geen gebruikmaken van Lambda-functies met versies, inconsistent gedrag veroorzaken tijdens rollouts, omdat de associatie in de distributie gekoppeld is aan een specifieke gepubliceerde versie.
Praktijkprobleem: Gebruiksscenario
Bedrijf: AcmeTelemetrics — uitdaging: een wereldwijde vloot van IoT-verkoopautomaten gebruikt gRPC over TCP:443 naar een backend in us-east-1 die draait op Amazon EKS; de vereiste is end-to-end mutual TLS (mTLS) zodat verkeer nooit onderweg wordt ontsleuteld, ondersteuning voor duizenden gelijktijdige verbindingen, en statische IP’s moeten in de machines worden geprogrammeerd.
Aanpak:
- Maak een Global Accelerator (aws globalaccelerator create-accelerator) met twee statische anycast IP’s en een TCP-listener op poort 443 (create-listener). Configureer een endpoint group die gericht is op een regionale Network Load Balancer in us-east-1 (create-endpoint-group).
- Provisioneer een NLB in us-east-1 met een TCP-listener op 443 en een target group van het type ip. Maak in Kubernetes een Service van het type LoadBalancer met de annotaties service.beta.kubernetes.io/aws-load-balancer-type: “nlb” en service.beta.kubernetes.io/aws-load-balancer-target-type: “ip”, stel externalTrafficPolicy: Local in, en registreer pod-IP’s als targets zodat TLS rechtstreeks wordt doorgelaten naar de pods.
- Implementeer de gRPC-servers in EKS en beëindig TLS/mTLS in de pod-processen. Sla certificaten en trust-materiaal op in Kubernetes Secrets; configureer de server om clientcertificaatverificatie te vereisen voor mutual TLS.
- Vergrendel directe toegang tot de NLB zodat alleen Global Accelerator deze kan bereiken door de security group van de NLB bij te werken om alleen ingress toe te staan vanaf de door AWS beheerde Global Accelerator prefix list (te vinden via aws ec2 describe-managed-prefix-lists en verwijs naar die prefix list in de security group-regels), waardoor wordt voorkomen dat machines de accelerator omzeilen en de NLB rechtstreeks benaderen.
- Monitor de gelijktijdigheid van verbindingen en de schaalvergroting door de Kubernetes HorizontalPodAutoscaler en Cluster Autoscaler te configureren, en zorg ervoor dat de slow start en deregistration delay van de NLB-target-group zijn afgestemd op een graceful scale-in (modify-target-group-attributes). Gebruik CloudWatch-metrics van Global Accelerator, NLB en EKS om het aantal verbindingen en de status te bewaken.
AWS-redenering: Global Accelerator levert de statische anycast IP’s die vereist zijn voor de verkoopautomaten en routeert TCP-stromen over de AWS-backbone naar de regionale NLB, wat de betrouwbaarheid en latentie verbetert. NLB behoudt de oorspronkelijke TCP-verbinding en het bron-IP van de client en ondersteunt een massaal aantal gelijktijdige verbindingen, waardoor pods mTLS-beëindiging kunnen uitvoeren zonder tussenliggende TLS-beëindiging. Het gebruik van de door Global Accelerator beheerde prefix list in security group-regels voorkomt een directe bypass van de accelerator en dwingt af dat verkeer alleen via de anycast IP’s binnenkomt. Deze combinatie voldoet aan de eisen voor end-to-end-encryptie, mTLS, een groot aantal gelijktijdige verbindingen, statische IP’s en autoscaling in EKS.
← Netwerkbeveiliging en Compliance · Alle domeinen · Netwerkprestaties en Monitoring →
Oefen deze vragen → · Getimede oefening op 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.
Slaag voor je examen →