CloudFront ディストリビューション構成の確認

CDN が必要なサービスで、オリジンと実際の配信経路を正しく設定してください。

説明

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 を強制する例ではありません。

参考資料