説明
CloudFront のキャッシュと配信の最適化は、Web コンテンツの配信を改善できます。CDN を利用する設計のサービスで、ディストリビューションが無効だったりオリジン設定が誤っていたりすると、その機能を利用できません。すべてのサービスに CDN が必要なわけではなく、有効にするだけでオリジンへの直接アクセスが遮断されるわけでもありません。
想定される影響
- キャッシュや配信の最適化を利用できず、応答時間やオリジンの負荷が増える場合があります。
- オリジンへ直接アクセスされると、CloudFront に適用したアクセス制御やセキュリティポリシーを迂回される可能性があります。
対処方法
- CDN が必要なサービスでは
originsとdefault_cache_behaviorを設定し、enabled: trueで有効にしてください。DNS と実際のサービス経路も確認してください。 - オリジンへの直接アクセス制限、クライアント側とオリジン側の HTTPS、認証、必要なエッジのセキュリティポリシーを別途設定してください。キャッシュでユーザー別の非公開応答が共有されないことを確認し、ログの配信を試してください。
例
実際のオリジン、ログ用バケット、アクセス権限を用意する必要がある抜粋です。変更前は必須のオリジンがなく、新規作成の例としては不完全です。
変更前
yaml
- name: CloudFront 배포 생성
community.aws.cloudfront_distribution:
state: present
caller_reference: unique test distribution ID
default_cache_behavior:
target_origin_id: "my test origin-000111"
forwarded_values:
query_string: true
cookies:
forward: all
headers:
- "*"
viewer_protocol_policy: allow-all
smooth_streaming: true
compress: true
allowed_methods:
items:
- GET
- HEAD
cached_methods:
- GET
- HEAD
enabled: false
logging:
enabled: true
include_cookies: false
bucket: mylogbucket.s3.amazonaws.com
prefix: myprefix/
オリジンが定義されておらず、ディストリビューションも無効なため、意図したコンテンツを配信できません。
変更後
yaml
- name: CloudFront 배포 생성
community.aws.cloudfront_distribution:
state: present
caller_reference: unique test distribution ID
origins:
- id: "my test origin-000111"
domain_name: www.example.com
origin_path: /production
custom_origin_config:
http_port: 80
https_port: 443
origin_protocol_policy: https-only
origin_ssl_protocols:
- TLSv1.2
default_cache_behavior:
target_origin_id: "my test origin-000111"
forwarded_values:
query_string: true
cookies:
forward: all
headers:
- "*"
viewer_protocol_policy: allow-all
compress: true
allowed_methods:
items:
- GET
- HEAD
cached_methods:
- GET
- HEAD
logging:
enabled: true
include_cookies: false
bucket: mylogbucket.s3.amazonaws.com
prefix: myprefix/
enabled: true
HTTPS に対応するカスタムオリジンを接続し、ディストリビューションを有効にします。viewer_protocol_policy: allow-all はクライアントの HTTP も許可するため、経路全体で HTTPS を強制する例ではありません。