3

我想创建一个json格式的云形成模板,在WAF中创建一个ACL和规则,只允许美国用户访问API网关。到目前为止,我有以下代码,但它在 AWS 中给出了一个错误(“遇到不支持的属性操作”):

        "Type":"AWS::WAF::Rule",
        "Properties":{
            "Name":"APIGeoBlockRule",
            "Priority":0,
            "Action":{
                "Block":{}
            },
            "VisibilityConfig":{
                "SampledRequestsEnabled":true,
                "CloudWatchMetricsEnabled":true,
                "MetricName": "APIGeoBlockRule"
            },
            "Statement":{
                "NotStatement":{
                    "Statement":{
                        "GeoMatchStatement":{
                            "CountryCodes":[
                                "US"
                            ]
                        }
                    }
                }
            }
        }
    } 
4

2 回答 2

2

查看文档后,您正在尝试在经典 WAF 资源下执行 WAFv2 规则。您的资源类型AWS::WAF::Rule是经典的 WAF 规则,而结构是 WAFv2。

我自己还没有使用过 WAFv2,但是查看文档,这应该是您想要的 yaml 格式:

Description: Create WebACL example
Resources:
  ExampleWebACL:
    Type: AWS::WAFv2::WebACL
    Properties:
      Name: ExampleWebACL
      Scope: REGIONAL
      Description: This is an example WebACL
      DefaultAction:
        Allow: {}
      Rules:
        - Name: GeoRestrictExample
          Priority: 0
          Action:
            Block: {}
          Statement:
            NotStatement:
              Statement:
                GeoMatchStatement:
                    CountryCodes:
                      - US

自 2020 年 1 月 13 日起,您无法使用 cloudformation 将 api gateway stage 等资源与 WAFv2 ACL 相关联。您可以使用控制台、sdk、自定义资源和cli来执行此操作。

于 2020-01-10T01:14:10.877 回答
0

当 Cloudformation 实现 WAFv2(他们建议您现在使用)时,该问题将得到解决。最终,我们需要 Cloudformation 来支持创建和关联(即到 API 网关或负载均衡器),这样其他变通方法就不会到位,因为它们不是很可转移。

GitHub 票是:https ://github.com/aws-cloudformation/aws-cloudformation-coverage-roadmap/issues/344

于 2020-01-17T15:04:03.167 回答