Yuta NakataのBlog

Python / AWS / ITについて役立つ情報を発信します

CloudFormationを用いて、AWS WafをCloudFrontに紐づける方法

この記事について

取り扱う内容

  • AWS WAFをCloudFormationを用いてdeployする
  • deployされたAWS WAFをCloudFrontに紐づける方法

取り扱わない内容

  • CloudFormationの使い方
  • AWS WAFにおけるRule設定

Wafのソースコード

Resources:
  Waf:
    Type: AWS::WAFv2::WebACL
    Properties:
      Name: webacl
      Scope: CLOUDFRONT
      DefaultAction:
        Allow: {}
      VisibilityConfig:
        SampledRequestsEnabled: true
        CloudWatchMetricsEnabled: true
        MetricName: Requests
      Description: WebACL for CloudFront
      # Rules:
      #   - Rule

Outputs:
  Waf:
    Value: !GetAtt Waf.Arn
    Export:
      Name: my-waf

※ 必要な箇所のみ抽出しています

CloudFrontのソースコード

Resources:
  CloudFront:
    Type: AWS::CloudFront::Distribution
    Properties:
      DistributionConfig:
        WebACLId: {'Fn'::ImportValue': 'my-waf'}

※ 必要な箇所のみ抽出しています

注意点

CloudFrontに紐づける場合は、バージニア北部リージョンのみ対応

東京リージョン等、別のリージョンでは対応できません。

Error reason: The scope is not valid., field: SCOPE_VALUE, parameter: CLOUDFRONT

このようなエラーが出た場合は、deployするリージョンを見直してみましょう。

尚、ALB等CloudFront以外のサービスであれば、この制限はありません