Шаблон cf слушателя AWS выдает ошибку в aws cli, но действителен в консоли (шаблон оформления) - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать 2 прослушивателя для балансировщика нагрузки.

1-й - HTTP для перенаправления и 2-й - HTTPS для переадресации.

Я пытаюсь добиться этого с помощью шаблона cf. Каждый раз, когда я выполняю стек в консоли через шаблон дизайна, он успешно проверяется. Но когда я пробую тот же стек с aws cli, я получаю следующую ошибку.

Произошла ошибка (ValidationError) при вызове операции CreateStack: ошибка формата шаблона: неразрешенные зависимости ресурса [ApplicationLoadBalancer] в блоке ресурсов шаблона

Ниже приведен пример кода для слушателя и LB.

"ApplicationLoadBalancer": {
      "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
      "Condition": "NeedELB",
      "Properties": {
        "Subnets": [
          {
            "Fn::GetAtt": [
              "VpcStack",
              "Outputs.PublicSubnet1"
            ]
          },
          {
            "Fn::GetAtt": [
              "VpcStack",
              "Outputs.PublicSubnet2"
            ]
          }
        ],
        "SecurityGroups": [
          {
            "Fn::GetAtt": [
              "VpcStack",
              "Outputs.ELBSecurityGroup"
            ]
          }
        ],
        "Tags": [
          {
            "Key": "Stack",
            "Value": {
              "Ref": "AWS::StackName"
            }
          },
          {
            "Key": "FargateCluster",
            "Value": {
              "Ref": "FargateECSCluster"
            }
          }
        ]
      }
    },
    "LoadBalancerHTTPListener": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Properties": {
        "DefaultActions": [
          {
            "Type": "redirect",
            "RedirectConfig": {
              "Host": "#{host}",
              "Path": "/#{path}",
              "Port": "443",
              "Protocol": "HTTPS",
              "Query": "#{query}",
              "StatusCode": "HTTP_302"
            }
          }
        ],
        "LoadBalancerArn": {
          "Ref": "ApplicationLoadBalancer"
        },
        "Port": "80",
        "Protocol": "HTTP"
      },
      "DependsOn": [
        "ApplicationLoadBalancer"
      ]
    },
    "LoadBalancerListener": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Condition": "NeedELB",
      "Properties": {
        "DefaultActions": [
          {
            "Type": "forward",
            "TargetGroupArn": {
              "Ref": "DefaultTargetGroup"
            }
          }
        ],
        "LoadBalancerArn": {
          "Ref": "ApplicationLoadBalancer"
        },
        "Port": "443",
        "Protocol": "HTTPS",
        "Certificates": [
          {
            "CertificateArn": {
              "Fn::If": [
                "NeedTLSEndPoint",
                {
                  "Ref": "SSLCertificateArn"
                },
                {
                  "Ref": "AWS::NoValue"
                }
              ]
            }
          }
        ]
      },
      "DependsOn": [
        "DefaultTargetGroup",
        "ApplicationLoadBalancer"
      ]
    }

Пожалуйста, помогите мне с ошибкой проверки. Заранее спасибо.

1 Ответ

0 голосов
/ 14 марта 2019

Есть ли изменение условия NeedELB при создании из CLI? Я вижу, что ресурс LoadBalancerHTTPListener зависит от ApplicationLoadBalancer, который создается условно. Если NeedELB равно false, стек все равно может попытаться создать LoadBalancerHTTPListener. В любом случае вы должны добавить это условие для LoadBalancerHTTPListener.

PS: попробуйте обновить свой CLI. Более старая версия CLI может вызвать это. Показательный пример тип ресурса-ошибка-ошибка-при-использовании-облака

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...