5

我很难找到错误。我正在尝试将 WafACL 连接到 API Gateway 部署,并且我正在使用这样的命令:

aws wafv2 associate-web-acl --web-acl-arn  d3b11jj1-30c6-46ae-8e58-6a90ae69eeaf --resource-arn 'arn:aws:apigateway:us-east-1::/restapis/*api-id*/stages/dev'

调用 AssociateWebACL 操作时发生错误 (WAFInvalidParameterException):错误原因:ARN 无效。有效的 ARN 以 arn: 开头,并包括其他信息,以冒号或斜杠分隔。,字段:RESOURCE_ARN,参数:d3b11jj1-30c6-46ae-8e58-6a90ae69eeaf

我也尝试使用 CloudFormation:

AWSTemplateFormatVersion: "2010-09-09"
Description: "DB Management Service"
Resources: 
  WebACLAssociation:
    Type: AWS::WAFv2::WebACLAssociation
    Properties:
      ResourceArn: 'arn:aws:apigateway:us-east-1::/restapis/*api-id*/stages/dev'
      WebACLArn:
        Ref: WebACL
  WebACL:
    Type: AWS::WAFv2::WebACL
    Properties:
      DefaultAction:
        Allow: {}
      Rules:
        - Name: WebACLRule
          Action:
            Block: {}
          Priority: 0
          Statement:
            RateBasedStatement:
              AggregateKeyType: IP
              Limit: 2048
          VisibilityConfig:
            CloudWatchMetricsEnabled: true
            MetricName: Requests
            SampledRequestsEnabled: false
      Scope: REGIONAL
      VisibilityConfig:
        CloudWatchMetricsEnabled: true
        MetricName: WafACL
        SampledRequestsEnabled: true

但在这里我也得到:

错误原因:ARN 无效。一个有效的 ARN 以 arn: 开头,并包括用冒号或斜杠分隔的其他信息。,字段:RESOURCE_ARN

我不认为 Arn 是不正确的。我尝试在各种组合中使用它。

4

1 回答 1

4

Wafv2 对 arn 有不同的方案。Waf v1 使用看起来像 UUID 的东西,而 Wafv2 使用完全限定的 ARN。

aws wafv2 associate-web-acl \
    --web-acl-arn arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \
    --resource-arn arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/waf-cli-alb/1ea17125f8b25a2a \
    --region us-west-2

所以在你的情况下,它可能看起来像

aws wafv2 associate-web-acl --web-acl-arn  arn:aws:wafv2:<region>:<account>:regional/webacl/<webacl name>/d3b11jj1-30c6-46ae-8e58-6a90ae69eeaf --resource-arn 'arn:aws:apigateway:us-east-1::/restapis/*api-id*/stages/dev'

同样在 CFN 中,Wafv2 有多个返回属性,所以你不能做好 ol

WebACLArn: !Ref <webacl>

但是你将不得不做类似的事情

WebACLArn: !GetAtt <webacl>.Arn

参考 https://docs.aws.amazon.com/cli/latest/reference/wafv2/associate-web-acl.html

于 2020-04-09T17:36:37.527 回答