使用 CloudFormation 从 WAFv2 创建 WebACL

Create a WebACL from WAFv2 with CloudFormation

我正在尝试使用 cloudformation 创建一个 WebACL 以保护应用程序 API 免受滥用,我的想法是限制 API 在 5 分钟内最多 100 个 ip 请求的访问.

为此,我必须使用 WAFv2,因为第一个版本似乎只支持:

WAFv2 文档: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html

我写这个作为例子:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  WebACL:
    Type: 'AWS::WAFv2::WebACL'
    Properties:
      Name: WebAclLimit100
      Scope: "REGIONAL"
      DefaultAction:
        Type: ALLOW
      VisibilityConfig:
        SampledRequestsEnabled: true
        CloudWatchMetricsEnabled: true
        MetricName: WebAcLimit100

但是当我尝试将其上传到 CloudFormation 时,创建失败并显示以下消息:

Model validation failed (#: extraneous key [Type] is not permitted)

我认为问题出在这些方面:

      DefaultAction:
        Type: ALLOW

但我不知道如何在不在 CloudFormation 上失败的情况下分配 DefaultAction,我尝试了很多次(当然不同),但找不到正确的方法。互联网上没有 WAFv2 的示例,而且 WAF 第一版的语法似乎不兼容:(

嗨新手以下对我有用

  AWSTemplateFormatVersion: 2010-09-09
  Resources:
    WebACL:
      Type: 'AWS::WAFv2::WebACL'
      Properties:
        Name: WebAclLimit100
        Scope: "REGIONAL"
        DefaultAction:
          Allow:
            Type: ALLOW
        VisibilityConfig:
          SampledRequestsEnabled: true
          CloudWatchMetricsEnabled: true
          MetricName: WebAcLimit100

您需要更改 'DefaultAction',因为这需要 JSON 值: 请按照此处的示例部分 WAFv2 template

AWSTemplateFormatVersion: 2010-09-09
 Resources:
   WebACL:
    Type: 'AWS::WAFv2::WebACL'
    Properties:
     Name: WebAclLimit100
     Scope: "REGIONAL"
     DefaultAction:
      Allow: {}
     VisibilityConfig:
      SampledRequestsEnabled: true
      CloudWatchMetricsEnabled: true
      MetricName: WebAcLimit100