AWS Cloudfromation和自动缩放:当前不支持请求的配置。启动EC2实例失败

时间:2018-10-31 11:52:36

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

我想将基础结构从一个区域(us-east-1)复制到另一个区域(us-east-2)。因此,我借助cloudformer工具生成了现有基础架构的cloudfromation模板。

    "asgamazonecsclisetupapijoulebugprodEcsInstanceAsg1EIBNOXSXJ7HD": {
  "Type": "AWS::AutoScaling::AutoScalingGroup",
  "Properties": {
    "AvailabilityZones": [
      "us-east-2b",
      "us-east-2c"
    ],
    "Cooldown": "300",
    "DesiredCapacity": "3",
    "HealthCheckGracePeriod": "300",
    "HealthCheckType": "ELB",
    "MaxSize": "16",
    "MinSize": "3",
    "VPCZoneIdentifier": [
      {
        "Ref": "subnet81c8ebab"
      },
      {
        "Ref": "subnet5df40214"
      }
    ],
    "LaunchConfigurationName": {
      "Ref": "lcamazonecsclisetupapijoulebugprodAMI2017d"
    },
    "LoadBalancerNames": [
      {

        "Ref": "elbJBAPILiveCleanbit2016"
      }
    ],
    "Tags": [
      {
        "Key": "Name",
        "Value": "Live - Cleanbit2016 - joulebug-api",
        "PropagateAtLaunch": true
      }
    ],
    "TerminationPolicies": [
      "Default"
    ]
  }
},
"lcamazonecsclisetupapijoulebugprodAMI2017d": {
  "Type": "AWS::AutoScaling::LaunchConfiguration",
  "Properties": {
    "AssociatePublicIpAddress": true,
    "ImageId": "ami-0e6d83442546978bc",
    "InstanceType": "c3.large",
    "KeyName": "cleanbit2016_vpc",
    "IamInstanceProfile": "amazon-ecs-cli-setup-api-joulebug-prod-EcsInstanceProfile-1M4GOHBP3FP5L",
    "InstanceMonitoring": "true",
    "SecurityGroups": [
      {
        "Ref": "sgCleanbit2016WebServerSG"
      }
    ],
    "BlockDeviceMappings": [
      {
        "DeviceName": "/dev/xvda",
        "Ebs": {
          "SnapshotId": "snap-0b2477be9c863d014",
          "VolumeSize": 8
        }
      },
      {
        "DeviceName": "/dev/xvdcz",
        "Ebs": {
          "VolumeSize": 22
        }
      }
    ]
  }
},
"elbJBAPILiveCleanbit2016": {
  "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
  "Properties": {
    "Policies": [
      {
        "PolicyName": "AWSConsole-SSLNegotiationPolicy-JB-API-Live-Cleanbit2016-1467998170471",
        "PolicyType": "SSLNegotiationPolicyType",
          }
    ],
    }
    }
    "subnet81c8ebab": {
  "Type": "AWS::EC2::Subnet",
  "Properties": {
    "CidrBlock": "10.0.3.0/24",
    "AvailabilityZone": "us-east-2b",
    "VpcId": {
      "Ref": "vpcdcbd08bb"
    },
    "Tags": [
      {
        "Key": "Name",
        "Value": "Cleanbit2016 - Public 1b"
      }
    ]
  }
},
 "sgCleanbit2016WebServerSG": {
  "Type": "AWS::EC2::SecurityGroup",
  "Properties": {
    "GroupDescription": "Web server security group for public subnet in vpc.",
    "VpcId": {
      "Ref": "vpcdcbd08bb"
    },
    "Tags": [
      {
        "Key": "Name",
        "Value": "Cleanbit2016_ WebServerSG"
      }
    ]
  }
},

在其他地区(us-east-2)启动模板时,它会引发以下错误:

当前不支持请求的配置。请检查文档以了解受支持的配置。 EC2实例启动失败。

4 个答案:

答案 0 :(得分:1)

您没有正在使用的区域的详细信息,但是如果您尝试在us-east-1之外进行此操作,则可用区将无法使用。看起来您还对堆栈中的许多其他部分进行了硬编码,可能无法在其他区域使用。

如果您尝试在us-east-1中进行此操作,则可能是其中一个可用区不可用-有关更多详细信息,请参见this question

答案 1 :(得分:1)

您没有提供足够的信息来诊断情况。

我拿了您的模板,删除了不完整的部分(例如,删除了Load Balancer,因为它缺少侦听器),简化了几件事,并且效果很好:

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "VPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
                "CidrBlock": "10.0.0.0/16",
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": "Lab VPC"
                    }
                ]
            }
        },
        "ASG": {
            "Type": "AWS::AutoScaling::AutoScalingGroup",
            "Properties": {
                "AvailabilityZones": [
                    "us-east-2b",
                    "us-east-2c"
                ],
                "Cooldown": "300",
                "DesiredCapacity": "1",
                "HealthCheckGracePeriod": "300",
                "MaxSize": "16",
                "MinSize": "1",
                "VPCZoneIdentifier": [
                    {
                        "Ref": "Subnet1"
                    },
                    {
                        "Ref": "Subnet2"
                    }
                ],
                "LaunchConfigurationName": {
                    "Ref": "LaunchConfig"
                }
            }
        },
        "LaunchConfig": {
            "Type": "AWS::AutoScaling::LaunchConfiguration",
            "Properties": {
                "AssociatePublicIpAddress": true,
                "ImageId": "ami-0b59bfac6be064b78",
                "InstanceType": "t2.micro",
                "InstanceMonitoring": "true",
                "SecurityGroups": [
                    {
                        "Ref": "WebServerSG"
                    }
                ]
            }
        },
        "Subnet1": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "CidrBlock": "10.0.0.0/24",
                "AvailabilityZone": "us-east-2b",
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": "Public 1"
                    }
                ]
            }
        },
        "Subnet2": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "CidrBlock": "10.0.1.0/24",
                "AvailabilityZone": "us-east-2c",
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": "Public 2"
                    }
                ]
            }
        },
        "WebServerSG": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "Web server security group for public subnet in vpc.",
                "VpcId": {
                    "Ref": "VPC"
                },
                "Tags": [
                    {
                        "Key": "Name",
                        "Value": "WebServerSG"
                    }
                ]
            }
        }
    }
}

因此,您的问题出在您未提供的模板的一部分。

您可以从此版本开始,然后逐步添加模板的各个部分,直到发现导致错误的原因。

答案 2 :(得分:0)

如果您希望创建可以在多个区域中运行的CloudFormation模板,则不应引用特定的可用区(例如us-east-2b)。

您可以使用Fn::GetAZs - AWS CloudFormation获取区域中的可用区列表。

答案 3 :(得分:0)

经过大量调试后,当我开始手动启动这些东西时,我发现了相同的错误,并且我知道c3.large是导致该错误的原因。当我使用c4.large启动模板时,它成功地将模板从us-east-1启动到us-east-2。