如何使用 CloudFormation 将 CloudFront 分发集成到 AWS WAF?

How to integrate CloudFront distribution to AWS WAF by using CloudFormation?

我正在尝试使用 CloudFormation 将 CloudFront 分发添加到 AWS WAF 并尝试过这个,

"Type": "AWS::WAFRegional::WebACLAssociation",
            "Properties": {
                "ResourceArn": "arn:aws:cloudfront::AccountID:distribution/CloudFrontID",
                "WebACLId": {
                    "Ref": "WebACLName"
                }

但我最终遇到了这个错误: 引用的项目不存在。 (服务:AWSWAFRegional;状态代码:400;错误代码:WAFNonexistentItemException;请求 ID:149453cd-1606-11e8-86b2-a3efdb49d9d1)

AWS::WAFRegional::* 实际上是为了与 Application Load Balancer 关联。您需要使用 AWS::WAF::* 类型(没有 "Regional")。

那么对于关联,您必须从 CloudFront 分发本身进行。像这样:

"myDistribution": {
  "Type": "AWS::CloudFront::Distribution",
  "Properties": {
    "DistributionConfig": {    
      "WebACLId": { "Ref" : "MyWebACL" },

该部分在 CloudFormation documentation 中有解释。