将多个目标组附加到AutoscalingGroup

时间:2019-05-03 10:59:32

标签: amazon-web-services amazon-cloudformation amazon-elb

我正在设计一个基础架构解决方案,以平衡流量到2个不同Web应用的流量,这些Web应用由不同的路径和端口托管在同一实例中。

我正在尝试执行Cloudformation来创建ALB,1个侦听器,2个指向Autoscaling Group创建的实例的目标组以及两个目标组具有2个不同的侦听器规则。

在阅读AWS文档时,我必须在AutoSG属性中定义目标组,但是在定义它时遇到了问题。

我也不确定,我做对了。

我在使用此代码时收到错误消息(当我在自动伸缩组创建中引用目标组时,我认为这是错误的部分)

       "TargetGroupARNs": [
                    {
                        "Ref": "DefaultTG"
                    },
                    {
                        "Ref": "SecondTG"
                    }
        ],

这些目标组的定义如下:

 "DefaultTG" : {
          "Type" : "AWS::ElasticLoadBalancingV2::TargetGroup",
          "Properties" : {
          "HealthCheckIntervalSeconds": 30,
          "HealthCheckProtocol": "HTTPS",
          "HealthCheckPath": "/home",
          "HealthCheckTimeoutSeconds": 10,
          "HealthyThresholdCount": 4,
          "Matcher" : {
          "HttpCode" : "200"
          },
          "Name": "Default",
          "Port": 4443,
          "Protocol": "HTTPS",
          "UnhealthyThresholdCount": 3,
          "VpcId": {"Ref" : "VpcID"}
    },

侦听器的代码和一个侦听器规则:

   "ALBListener": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Properties": {
        "DefaultActions": [{
        "Type": "redirect",
            "RedirectConfig" : {
            "TargetGroupArn": { "Ref": "DefaultTG" }
            }
        }],
        "LoadBalancerArn": { "Ref": "APIServerELB" },
        "Port": "443",
        "Protocol": "TCP"
       }
    },
    "DefListenerRule": {
      "Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
      "Properties": {
          "Actions": [
                    {
                     "Type": "forward",
                     "TargetGroupArn": {
                     "Ref": "DefaultTG"
                    }
            }
            ],
          "Conditions" : [
                {
                  "Field" : "path-pattern",
                  "Values" : [ "/home" ]
                }
              ],
                "ListenerArn": {
                    "Ref": "ALBListener"
                }
          }
    },

错误是:

Template validation error: Invalid template resource property 'DefaultTG'

我希望Cloudformation使用指向两个由Autoscaling组创建的实例的目标组来创建一个包含侦听器和2个侦听器规则的ALB。

1 个答案:

答案 0 :(得分:0)

我无法复制此内容。我的Type: 'AWS::AutoScaling::AutoScalingGroup'中包含以下内容,并且可以正常工作。

我无法用一个ALB弄清楚,所以我有两个ALB。

"TargetGroupARNs": [
    {
        "Ref": "DefaultTG"
    },
    {
        "Ref": "APIServerELB"
    }
],