AWS認定資格 WEB問題集&徹底解説
AIプラクティショナー
AWSサービスの一つであるAmazon CloudFrontはどんな内容なのでしょうか?また、AWS認定資格のAIプラクティショナー(AIF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
1. サービス概要
Amazon CloudFrontは、世界中に分散配置されたエッジロケーションからコンテンツを低遅延で配信する、AWSのフルマネージドCDN(Content Delivery Network)サービスです。 静的コンテンツ(HTML/CSS/JS/画像/動画)だけでなく、API などの動的コンテンツもキャッシュ・高速配信でき、エッジでの TLS 終端により安全な通信を実現します。
CloudFront はAWS Shield Standard による DDoS 緩和を標準で無料提供し、AWS WAF と統合してエッジでアプリケーション層の攻撃を防御できます。 また HTTP/2・HTTP/3(QUIC)・gRPC に対応し、オリジン障害時のフェイルオーバー(オリジングループ)や、リリースを段階移行する継続的デプロイ(Continuous Deployment)も備えます。
主なユースケースは、静的ウェブサイト配信(S3 オリジン)、動的コンテンツ/API アクセラレーション(ALB/EC2 オリジン)、メディアストリーミング(HLS/DASH)、ソフトウェア配布、セキュアなプライベートコンテンツ配信などです。
2. 主な特徴と機能
2.1 グローバルエッジネットワークとキャッシュ階層
- エッジロケーション: 世界中の多数の拠点。ユーザーに最も近いエッジで TLS 終端・キャッシュ応答し、遅延を最小化。
- リージョナルエッジキャッシュ: エッジロケーションとオリジンの間に位置する大容量キャッシュ層。キャッシュヒット率を高めオリジン負荷を低減。
- Origin Shield: さらにオリジン手前に置く集約キャッシュ層(オプション)。オリジンへのリクエストを集約し、ヒット率向上・オリジン保護に有効。
2.2 オリジンとビヘイビア(キャッシュ動作)
- 多様なオリジン: S3、S3 静的ウェブサイト、ALB、EC2、MediaPackage/MediaStore、オンプレミスや他クラウドのカスタム HTTP オリジンを設定可能。
- VPC オリジン: パブリック IP を持たないプライベート ALB/EC2 を直接オリジンにできる(オリジンを非公開のまま CloudFront 配信)。
- ビヘイビア(Cache Behavior): パスパターン(例
/api/*)ごとにオリジン・キャッシュ可否・許可メソッド・ポリシーを切り替え。パスパターンの優先順位(precedence)で評価される。 - オリジングループ/オリジンフェイルオーバー: プライマリ障害時にセカンダリオリジンへ自動切替し可用性を確保。
2.3 キャッシュ制御(ポリシーと TTL)
- キャッシュポリシー: キャッシュキーに含める要素(ヘッダー・Cookie・クエリ文字列)と TTL を定義。旧来の「Forward Headers/Cookies/Query Strings(レガシー設定)」の後継。
- オリジンリクエストポリシー: キャッシュキーには含めないがオリジンへは転送する値を定義(認証ヘッダーなど)。
- レスポンスヘッダーポリシー: CORS・セキュリティヘッダー(HSTS 等)をオリジン改修なしで付与。
- TTL: Minimum/Default/Maximum TTL と、オリジンの
Cache-Control/Expiresヘッダーでキャッシュ期間を制御。 - 無効化(Invalidation): パス指定でキャッシュを即時失効。バージョン付きファイル名(例
app.v2.js)での運用も推奨。
2.4 エッジコンピューティング
- CloudFront Functions: JavaScript の超軽量関数をビューアリクエスト/レスポンスで実行。サブミリ秒・超高スループット・低コスト。ヘッダー操作・URL 書き換え・リダイレクト・簡易認証向け。
- Lambda@Edge: Node.js/Python を4 トリガー(ビューアリクエスト/レスポンス、オリジンリクエスト/レスポンス)で実行。ネットワークアクセスや長い処理、より複雑なロジックに対応。
2.5 セキュリティ機能
- OAC(Origin Access Control): S3 等オリジンを非公開にし CloudFront 経由のみ許可。旧 OAI の後継で推奨。SSE-KMS 暗号化・全リージョン・動的リクエスト(PUT/POST)に対応。
- 署名付き URL/署名付き Cookie: 有効期限・IP 制限付きでプライベートコンテンツへのアクセスを限定。複数ファイルには署名付き Cookie が便利。
- HTTPS/TLS: ビューア⇔エッジ、エッジ⇔オリジンの双方を暗号化。
Redirect HTTP to HTTPSやHTTPS Onlyを設定可能。 - Geo Restriction: 国単位の許可リスト/拒否リストでアクセス制御。
- WAF / Shield: AWS WAF をディストリビューションにアタッチ、Shield Standard(無料)/Advanced で DDoS 防御。
- フィールドレベル暗号化: 特定フォームフィールドをエッジで公開鍵暗号化し、対象サービスのみ復号可能にする。
2.6 可観測性とログ
- 標準アクセスログ: S3/CloudWatch Logs/Data Firehose へ出力(拡張ログ機能)。Athena 等で解析。
- リアルタイムログ: Kinesis Data Streams へ秒単位で配信し、迅速な分析・監視が可能。
- CloudWatch メトリクス: リクエスト数・エラー率・キャッシュヒット率・データ転送量などを可視化。
3. アーキテクチャおよび技術要素
- ユーザーがディストリビューションのドメイン(例
d111111abcdef8.cloudfront.netや独自ドメイン)にアクセスし、Anycast により最寄りのエッジロケーションへルーティングされる。 - エッジで CloudFront Functions(ビューアリクエスト)や WAF・Geo Restriction を評価。キャッシュにヒットすれば即時応答。
- ミスの場合はリージョナルエッジキャッシュ(さらに Origin Shield)を経由し、最終的にオリジンへリクエスト(Lambda@Edge のオリジンリクエストを適用可能)。
- オリジンの応答は TTL/
Cache-Controlに従い各キャッシュ層に保存され、レスポンスヘッダーポリシーや Lambda@Edge(オリジン/ビューアレスポンス)を適用して返却。 - 以降の同一キャッシュキーのリクエストはエッジから高速配信され、オリジン負荷とデータ転送コストを削減。
キャッシュキーはキャッシュポリシーで定義した値の組み合わせで決まり、これを最小化するほどヒット率が向上します。オリジングループによりフェイルオーバーも実現します。
4. セキュリティと認証・認可
- OAC(Origin Access Control): S3/ALB/EC2 等のオリジンを非公開のまま CloudFront 経由のみ許可する推奨方式。旧 OAI を置き換える後継で、SSE-KMS 暗号化や動的リクエストにも対応。新規構築では OAC を使う。
- HTTPS/TLS: 独自ドメインには ACM 発行の証明書(CloudFront では必ず us-east-1 リージョンに作成)を関連付ける。ビューア⇔エッジ、エッジ⇔オリジンともに暗号化可能。
- SNI と専用 IP: SNI 対応クライアント向けの SNI カスタム SSL は無料。SNI 非対応の古いクライアントには専用 IP カスタム SSL(有料・月額)を使用。
- 署名付き URL/署名付き Cookie: プライベートコンテンツへ期限・IP 制限付きでアクセス許可。信頼されたキーグループ(trusted key groups)の利用が推奨(旧来の信頼された署名者アカウントより柔軟)。
- AWS WAF: SQLi/XSS、レートベース、地理・IP ルール等をエッジで適用し OWASP Top 10 系の攻撃を防御。
- AWS Shield: Standard は無料で常時 DDoS 緩和。大規模・高度な攻撃対策や費用保護には Shield Advanced。
- Geo Restriction: 国単位の許可/拒否リストで配信を制御。
- フィールドレベル暗号化: 機微なフォーム項目をエッジで暗号化し、エンドツーエンドで保護。
5. 料金形態
Amazon CloudFront は従量課金で、主に以下の要素で構成されます:
- データ転送(アウト): エッジからインターネットへ転送した量に課金。地域(エッジの所在地)ごとに単価が異なる。
- リクエスト数: HTTP/HTTPS リクエスト数に課金。
- 無効化(Invalidation): 毎月 1,000 パスまで無料、超過分は有料。バージョン付きファイル名運用で無効化を減らせる。
- 専用 IP カスタム SSL: 月額固定の有料。SNI カスタム SSL は無料。ACM 証明書自体の発行は無料。
- エッジコンピューティング: CloudFront Functions は呼び出し回数で安価に課金。Lambda@Edge は呼び出し回数+実行時間(GB-秒)で課金。
- Origin Shield/リアルタイムログ: 利用時に追加料金。
- 価格クラス(Price Class): All/200/100 を選び、配信に使うエッジの地理範囲を絞ることでコストを最適化(遠隔地のエッジを除外)。
- 無料利用枠: 毎月 1TB のデータ転送(アウト)と 1,000 万リクエスト、200 万回の CloudFront Functions 呼び出しなどが無料(恒久)。AWS オリジン(S3/EC2 等)からエッジへのデータ転送(オリジンフェッチ)は無料。
6. よくあるアーキテクチャ・設計パターン
- 静的ウェブホスティング+CDN: S3 に静的サイトを置き、OACで S3 を非公開にしたまま CloudFront から配信。ACM(us-east-1)で独自ドメイン HTTPS 化。
- 動的コンテンツ/API アクセラレーション: ALB/EC2 をオリジンにし、必要なヘッダー・Cookie のみオリジンリクエストポリシーで転送。WAF を併用。
- プライベートコンテンツ配信: 署名付き URL/Cookie(信頼されたキーグループ)で有料会員・限定配信を制御。
- メディアストリーミング: MediaPackage/MediaStore や S3 を背後に HLS/DASH をグローバル配信。
- エッジロジック: 軽量なヘッダー操作・URL 書き換え・リダイレクト・簡易認証は CloudFront Functions、複雑処理や外部アクセスは Lambda@Edge。A/B テストや GeoIP 振り分けにも活用。
- 高可用化: オリジングループでフェイルオーバー、Origin Shield でオリジン保護とヒット率向上。継続的デプロイで安全に段階リリース。
7. 設定・デプロイ手順(ハンズオン例)
- CloudFront コンソールで「ディストリビューションを作成」を選択。
- オリジンに S3 バケット(または ALB/EC2/カスタム HTTP)を指定し、S3 の場合は OAC を作成・適用してバケットを非公開に保つ(生成されたバケットポリシーを適用)。
- デフォルトビヘイビアで Viewer Protocol Policy を
Redirect HTTP to HTTPSに設定し、許可メソッド・キャッシュポリシー/オリジンリクエストポリシーを選択。 - 必要に応じてパスパターン(例
/api/*)ごとに追加ビヘイビアを定義。 - 独自ドメインを使う場合は代替ドメイン名(CNAME)を設定し、us-east-1 の ACM 証明書を関連付け。Route 53 で Alias レコードを向ける。
- 必要に応じて Geo Restriction、WAF、ログ出力、価格クラスを設定して作成。ステータスが「Deployed」になったら動作確認。
8. 試験で問われやすいポイント
8.1 OAC と S3 オリジン保護(最頻出)
- Q: S3 バケットを非公開のまま CloudFront からのみ配信するには?
A: OAC(Origin Access Control)を作成し、生成されるバケットポリシーで CloudFront のみ許可。新規は OAC を使う。 - Q: OAI と OAC の違いは?
A: OAC は OAI の後継で推奨。SSE-KMS 暗号化・全リージョン・動的リクエスト(PUT/POST)に対応。OAI はレガシー。
8.2 Lambda@Edge と CloudFront Functions の使い分け(最頻出)
- Q: 軽量なヘッダー操作・URL 書き換え・リダイレクト・簡易認証を最安・最速で行うには?
A: CloudFront Functions(JavaScript、ビューアリクエスト/レスポンスのみ、サブミリ秒)。 - Q: 外部ネットワークアクセスや複雑処理、オリジンリクエスト/レスポンスでの処理が必要な場合は?
A: Lambda@Edge(Node.js/Python、4 トリガー対応)。
8.3 HTTPS と証明書
- Q: 独自ドメインで HTTPS 配信する際の証明書の注意点は?
A: ACM 証明書は必ず us-east-1(バージニア北部)に作成して関連付ける。 - Q: HTTP を HTTPS に強制するには?
A: ビューアプロトコルポリシーをRedirect HTTP to HTTPS(またはHTTPS Only)に設定。 - Q: SNI と専用 IP の違いは?
A: SNI カスタム SSL は無料、専用 IP カスタム SSL は月額有料(SNI 非対応の古いクライアント向け)。
8.4 キャッシュ制御とポリシー
- Q: ヘッダー/Cookie/クエリ文字列に応じてキャッシュを分けるには?
A: キャッシュポリシーでキャッシュキーに含める値を定義(旧 Forward 設定の後継)。 - Q: キャッシュキーには含めずオリジンへ値を渡したい場合は?
A: オリジンリクエストポリシーを使う。 - Q: キャッシュヒット率を上げるには?
A: キャッシュキーを最小化し、必要な値だけを含める。Origin Shield も有効。 - Q: 配信ファイルを即時更新するには?
A: 無効化(Invalidation)を実行。ただしバージョン付きファイル名(app.v2.js)運用で無効化を減らすのが定石。
8.5 プライベートコンテンツ
- Q: 期限・IP 制限付きで限定コンテンツを配信するには?
A: 署名付き URL(単一ファイル)/署名付き Cookie(複数ファイル)。信頼されたキーグループの利用が推奨。
8.6 セキュリティ・DDoS
- Q: Web アプリ層の攻撃を防ぐには?
A: AWS WAF をディストリビューションにアタッチ。 - Q: DDoS 対策は?
A: Shield Standard が無料で常時適用。大規模対策は Shield Advanced。 - Q: 特定の国だけに配信を制限するには?
A: Geo Restriction(国単位の許可/拒否リスト)。
8.7 可用性・デプロイ
- Q: オリジン障害時に別オリジンへ切り替えるには?
A: オリジングループ(オリジンフェイルオーバー)。 - Q: 設定変更を一部トラフィックで検証してから本番へ移行するには?
A: 継続的デプロイ(Continuous Deployment)でトラフィックを分割。
8.8 コスト最適化
- Q: 配信コストを抑えるには?
A: キャッシュヒット率を高めオリジンフェッチを削減、価格クラス(200/100)で遠隔エッジを除外、無効化の多用を避ける。 - Q: S3 と CloudFront 間の転送料は?
A: AWS オリジンからエッジへのデータ転送(オリジンフェッチ)は無料。