Применение WebACL к шлюзу API - PullRequest
1 голос
/ 31 марта 2020

У меня проблема с поиском ошибки. Я пытаюсь подключить WafACL к развертыванию шлюза API и использую такую ​​команду:

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'

Произошла ошибка (WAFInvalidParameterException) при вызове операции AssociateWebACL: Причина ошибки: ARN isn ' т действительный. Действительный 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 неверен. Я пытался использовать его в различных комбинациях.

1 Ответ

0 голосов
/ 09 апреля 2020

Wafv2 имеет другую схему для арн. 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 имеет множественный возврат, так что вы не можете делать добро

WebACLArn: !Ref <webacl>

Но вам придется сделать что-то вроде

WebACLArn: !GetAtt <webacl>.Arn

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

...