Amazon ANS-C01: コンテンツ配信とエッジネットワーキング — 学習ガイド
こちらの一部です: AWS Advanced Networking Specialty ANS-C01 — 学習ガイド. 検証済みの解答で練習: Amazon試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
コアコンセプト
コンテンツ配信とエッジネットワーキングは、関連する2つの責務を分離します。それは、クライアントトラフィックを低レイテンシーで転送することと、エンドユーザーの近くで分散キャッシュ/コンピューティングレイヤーとして機能することです。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または署名付きCookie(CreateKeyGroup、CreatePublicKey、および署名付きURLの署名プロセス)が含まれます。
Global AcceleratorとAnycastは、HTTPレイヤーより下で動作します。Global Acceleratorは、AWSエッジネットワークから2つの静的なエニーキャストIPアドレスを広報し、TCP/UDPフローを正常なリージョンエンドポイント(Network Load Balancer、Application Load Balancer、EC2インスタンス、またはElastic IP)にルーティングします。Global AcceleratorはL3/L4で動作するため、TCPパススルー用に設定されている場合、エンドツーエンドのTLSを維持し、リージョンエンドポイントへの「ラストマイル」にAWSの内部バックボーンを使用することでグローバルなルーティングを改善します。非HTTPプロトコルや、クライアントとバックエンド間で真のエンドツーエンド暗号化と相互TLS(mTLS)を維持する必要がある場合、Global AcceleratorをNetwork Load Balancer(NLB)の前面に配置するTCPパススルーパスが標準的なパターンです。NLBはL4で動作し、数百万の接続にスケールし、Amazon EKSのPodやノードのIPターゲットを登録できます。
Lambda@Edge関数はCloudFrontのビヘイビアに関連付けられ、デプロイ(CreateFunctionとPublish)され、ディストリビューションのLambdaFunctionAssociationsでviewer-request、origin-request、origin-response、viewer-responseのトリガーに関連付ける必要があります。Lambda@Edgeは複数のエッジリージョンに複製されるため、バージョンと発行のセマンティクスが重要です。バージョン管理されたLambdaオブジェクトを使用し、更新中に一貫性のない動作を避けるためにデプロイを慎重に管理してください。
主要なサービスと設定
CloudFrontのディストリビューション設定は、密接に結合した3つのオブジェクトに依存します。ディストリビューション自体(CreateDistribution / UpdateDistribution)、キャッシュキーとTTLを決定するCachePolicyオブジェクト(CreateCachePolicy)、そしてオリジンに送信されるヘッダー/クッキー/クエリ文字列を決定するOriginRequestPolicyオブジェクト(CreateOriginRequestPolicy)です。プライベートなS3コンテンツには、CreateCloudFrontOriginAccessControlまたは従来のオリジンアクセスアイデンティティを使用し、CreateKeyGroupとCreatePublicKeyを使用して署名付きURL/署名付きCookieでアクセスをさらに保護します。SDKまたはcloudfront-signingユーティリティが、署名付きURLまたはポリシードキュメントとRSA署名を生成します。キャッシュされたオブジェクトを選択的にパージするための無効化オペレーションは、CreateInvalidationで実行されます。
Global Acceleratorの設定は、create-accelerator、create-listener、およびcreate-endpoint-group APIコールを介して作成されます。リスナーは、gRPC用のTCP:443や任意のTCPポートに設定でき、リージョンのNLBやALBを指すエンドポイントグループにフローを転送します。エンドツーエンドのTLSとmTLSを維持するためにGlobal AcceleratorをTCPパススルーで使用する場合、443番ポートにTCPリスナーを持ち、Podの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タイプのServiceを作成するか、AWS Load Balancer Controllerを使用してターゲットタイプがipのNLBを作成することで実現されます。ロギングのためにクライアントのソースIPを保持するには、ServiceでexternalTrafficPolicy: Localを設定するか、元のソースIPを維持するNLBパススルーを使用します。
Global Acceleratorとリージョンエンドポイント間のネットワークレベルの強制には、AWSマネージドプレフィックスリストを使用して管理オーバーヘッドを削減します。AWS CLIのaws ec2 describe-managed-prefix-listsコールは、マネージドプレフィックスリストを一覧表示します。com.amazonaws.globalacceleratorという名前のものをセキュリティグループのルール(AuthorizeSecurityGroupIngressで--source-prefix-listを使用)で参照して、アクセラレーターから発信されたトラフィックのみをALB/NLBに許可することができます。ALBがTLSを終端する場合、クライアントIPのロギングにはX-Forwarded-Forヘッダーを使用します。Global AcceleratorでNLBパススルーを使用する場合、クライアントIPはネイティブに保持され、バックエンドがTLS終端/mTLSを処理する必要があります。
設計パターンとトレードオフ
コンテンツのキャッシュ、エッジコンピューティング、低レイテンシーのHTTPレスポンスが要件である場合、CloudFrontが適切なツールです。オリジンの機密性が要求されない場合は、CloudFrontがエッジでTLSを終端すべきです。安全な場合はヘッダーとクッキーをキャッシュキーから除外することで、CachePolicyとOriginRequestPolicyを使用してオリジンへのリクエストを最小化します。キャッシュの恩恵を受けつつ動的なパーソナライゼーションを行うには、キャッシュキーの正規化(最小限のヘッダーまたは署名付きクッキーでVaryさせる)を使用し、頻繁なCreateInvalidation呼び出しではなく、バージョニングされたオブジェクトキーによるキャッシュの無効化を設計します。
エンドツーエンドのTLSを必要とするプロトコル、バックエンドまで復号してはならないHTTP/2やgRPCのフロー(mTLS用)には、Global Accelerator + NLBとTLSパススルーを使用して、前面にTCP/L4パスを配置します。トレードオフとして、CloudFrontのHTTPキャッシュとエッジコンピューティング能力を失いますが、Global Acceleratorはエニーキャストの静的IP、改善されたルーティング、リージョン間のフェイルオーバーを提供します。ALBは、ALBがTLSを終端する場合にHTTP/2とgRPCをサポートし、これによりアプリケーションレイヤーのルーティング(ホスト/パスベース)とWAF統合が可能になりますが、ALBでの終端はエンドツーエンドのmTLSを破壊し、証明書管理をロードバランサーに配置することになります。大規模な同時接続には、NLBがL4でより良くスケールします — NLBは接続レートに最適化され、送信元IPを保持しますが、ALBはHTTPレベルのルーティングと、ホスト/パスレベルのルーティングのためのリスナールールやCognito/OIDCとの統合といった機能のために設計されています。
セキュリティ制御とリージョン分離のパターンでは、共有VPCピアリング、Transit Gateway、PrivateLink、およびLoad Balancerエンドポイントの中から慎重に選択する必要があります。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のデプロイメントは、ディストリビューション内の関連付けが特定の公開バージョンに結びついているため、ロールアウト中に一貫性のない動作を引き起こす可能性があります。
実践的な問題:ユースケースシナリオ
企業:AcmeTelemetrics — 課題:グローバルに展開されたIoT自動販売機のフリートが、us-east-1のAmazon EKS上で稼働するバックエンドに対し、TCP:443経由でgRPCを使用しています。要件は、トラフィックが転送中に決して復号されないようにするためのエンドツーエンドの相互TLS(mTLS)、数千の同時接続のサポート、そしてマシンにプログラムする必要がある静的IPです。
アプローチ:
- 2つの静的エニーキャストIPを持つGlobal Accelerator(
undefined
)を作成し、ポート443にTCPリスナー(
undefined
)を設定します。us-east-1のリージョナルNetwork Load Balancerをターゲットとするエンドポイントグループを設定します(
undefined
)。 2) us-east-1にNLBをプロビジョニングし、443にTCPリスナーとタイプがipのターゲットグループを設定します。Kubernetesで、アノテーション
undefined
と
undefined
を持つLoadBalancerタイプのServiceを作成し、
undefined
を設定し、PodのIPをターゲットとして登録してTLSがPodに直接パススルーされるようにします。 3) EKSにgRPCサーバーをデプロイし、Podのプロセス内でTLS/mTLSを終端します。証明書と信頼情報をKubernetes Secretsに保存し、サーバーが相互TLSのためにクライアント証明書の検証を要求するように設定します。 4) NLBのセキュリティグループを更新して、AWSが管理するGlobal Acceleratorのプレフィックスリスト(
undefined
で検出し、そのプレフィックスリストをセキュリティグループのルールで参照)からのイングレスのみを許可することで、NLBへの直接アクセスをロックダウンし、Global Acceleratorのみが到達できるようにします。これにより、マシンがアクセラレーターをバイパスして直接NLBにアクセスするのを防ぎます。 5) KubernetesのHorizontalPodAutoscalerとCluster Autoscalerを設定して接続の同時実行性とスケーリングを監視し、NLBターゲットグループのスロースタートと登録解除の遅延が正常なスケールインのために調整されていることを確認します(
undefined
)。Global Accelerator、NLB、EKSからのCloudWatchメトリクスを使用して、接続数とヘルス状態を監視します。
AWSの論理的根拠: Global Acceleratorは、自動販売機が必要とする静的なエニーキャストIPを提供し、TCPフローをAWSバックボーン経由でリージョナルNLBにルーティングすることで、信頼性とレイテンシーを向上させます。NLBは、元のクライアントTCP接続と送信元IPを維持し、大規模な同時接続をサポートするため、Podが中間での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.
試験に合格する →