Проблема проверки отладочной облачной информации

#validation #debugging #amazon-cloudformation

Вопрос:

Я использую линтер, и мой шаблон выглядит допустимым, однако мое развертывание завершается ошибкой с «исключением проверки AWS::ElasticLoadBalancingV2::ListenerRule». Похоже, что в консоли формирования облака нет места для дальнейшей детализации этого исключения. Как определить, почему мое развертывание недопустимо?


Шаблон формирования облака

 Parameters:  Env:  Type: String  Mappings:  EnvMap:  sandbox:  ...  Resources:  HttpsListener:  Type: AWS::ElasticLoadBalancingV2::Listener  Properties:  Certificates:  - CertificateArn: !FindInMap [EnvMap, !Ref Env, CertificateArn]  DefaultActions:  - Type: forward  ForwardConfig:  # TODO: read all this stuff off HTTP listener  TargetGroupStickinessConfig:  Enabled: false  TargetGroups:  - TargetGroupArn:  !FindInMap [EnvMap, !Ref Env, LoadBalancerDefaultTargetArn]  Weight: 1  TargetGroupArn:  !FindInMap [EnvMap, !Ref Env, LoadBalancerDefaultTargetArn]  LoadBalancerArn: !FindInMap [EnvMap, !Ref Env, LoadBalancerArn]  Port: 443  Protocol: HTTPS   HttpsListenerRule:  Type: AWS::ElasticLoadBalancingV2::ListenerRule  Properties:  Actions:  - Type: forward  ForwardConfig:  TargetGroupStickinessConfig:  Enabled: false  TargetGroups:  - TargetGroupArn:  !FindInMap [EnvMap, !Ref Env, LoadBalancerRouteTargetArn]  Weight: 1  TargetGroupArn:  !FindInMap [EnvMap, !Ref Env, LoadBalancerRouteTargetArn]  Conditions:  - Field: path-pattern  PathPatternConfig:  Values:  - /*  Values:  - /*  ListenerArn: !Ref HttpsListener  Priority: 50000  

Ошибка

«Причина статуса» из события.

 Resource handler returned message: "Invalid request provided: AWS::ElasticLoadBalancingV2::ListenerRule Validation exception" (RequestToken: 16bd4239-0d41-b16f-2963-b0a774009dfd, HandlerErrorCode: InvalidRequest)  

Комментарии:

1. Каков фактический шаблон и полное сообщение об ошибке?

2. Только что обновлено… Может быть, это потому, что я ссылаюсь на ARNS ресурсов, управляемых за пределами моего стека?

3. попробуйте запустить cfn-lint против вашего шаблона

4. была ли ваша проблема решена? попробуйте решение, приведенное ниже 😉

Ответ №1:

Попробуйте удалить PathConfigPattern из Conditions ключа:

 HttpsListenerRule:  Type: AWS::ElasticLoadBalancingV2::ListenerRule  Properties:  Actions:  - Type: "forward"  ForwardConfig:  TargetGroupStickinessConfig:  Enabled: false  TargetGroups:  - TargetGroupArn: !FindInMap [ EnvMap, !Ref Env, LoadBalancerRouteTargetArn ]  Weight: 1  TargetGroupArn: !FindInMap [ EnvMap, !Ref Env, LoadBalancerRouteTargetArn ]  Order: 1  Conditions:  - Field: path-pattern  Values:  - "/*"  ListenerArn: !Ref HttpsListener  Priority: 50000  

Кроме того, убедитесь, что ваша EnvMap карта выглядит следующим образом:

 Parameters:  Env:  Type: String  Default: sandbox  Mappings:  EnvMap:  sandbox:  LoadBalancerRouteTargetArn: "arn:aws:elasticloadbalancing:eu-west-1:111111111111:targetgroup/my-tg-1/222222222222"  prod:  LoadBalancerRouteTargetArn: "arn:aws:elasticloadbalancing:eu-west-1:333333333333:targetgroup/my-tg-2/444444444444"