Aws cloudfromation и автомасштабирование: запрошенная конфигурация в настоящее время не поддерживается. не удалось запустить экземпляр ec2

Я хочу реплицировать инфраструктуру из одного региона (us-east-1) в другой (us-east-2). Итак, я создал шаблон cloudfromation существующей инфраструктуры с помощью инструмента cloudformer.

    "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.

subnet81c8ebab определен где-нибудь в вашем шаблоне? Это похоже на идентификатор подсети, который будет изменяться каждый раз при создании.

John Rotenstein 01.11.2018 06:33

Да, это определено в моем файле шаблона.

Twinkle 01.11.2018 07:30

Тогда я попробовал ваше решение, оно выдает ошибку: группа автомасштабирования и подсети не совпадают.

Twinkle 01.11.2018 08:10

Не могли бы вы обновить свой вопрос, чтобы показать либо полный шаблон, либо, по крайней мере, все элементы, упомянутые выше?

John Rotenstein 01.11.2018 09:34

@JohnRotenstein: Я отредактировал свой вопрос. Пожалуйста, дайте мне знать, если вам нужен еще код.

Twinkle 01.11.2018 10:31

Включите часть, которая определяет группу безопасности sgCleanbit2016WebServerSG.

John Rotenstein 01.11.2018 11:42

@JohnRotenstein: добавлена ​​группа безопасности sgCleanbit2016WebServerSG

Twinkle 01.11.2018 14:00
0
7
583
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

У вас нет сведений о регионах, которые вы используете, но если вы пытаетесь сделать это за пределами us-east-1, зоны доступности не будут работать. Также похоже, что у вас жестко запрограммированы некоторые другие части стека, которые могут не работать в другом регионе.

И если вы пытаетесь сделать это в us-east-1, есть вероятность, что одна из AZ недоступна для вас - см. этот вопрос для получения дополнительной информации.

Я пытаюсь запустить шаблон с us-east-1 на us-east-2, прежде чем жестко запрограммировать это изменение, я также проверил доступные регионы. Это вызывает ошибку при создании групп автомасштабирования. Шаблоны успешно генерируют несколько экземпляров ec2 в этом регионе.

Twinkle 01.11.2018 05:36

Если вы хотите создать шаблон CloudFormation, который может работать в нескольких регионах, вам не следует ссылаться на определенные зоны доступности (например, us-east-2b).

Вы можете использовать Fn :: GetAZs - AWS CloudFormation для получения списка АЗ в регионе.

Мне нужно запустить этот шаблон только в регионе us-east-2.

Twinkle 01.11.2018 06:30

Вы не предоставили достаточно информации для диагностики ситуации.

Я взял ваш шаблон, удалил неполные части (например, удалил 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"
                    }
                ]
            }
        }
    }
}

Следовательно, ваша проблема заключается в части шаблона, который вы предоставили нет.

Вы можете начать с этой версии, а затем постепенно добавлять обратно части вашего шаблона, пока не обнаружите, что вызывает ошибку.

Большое вам спасибо. Позвольте мне проверить это, я свяжусь с вами.

Twinkle 02.11.2018 05:25
Ответ принят как подходящий

После долгой отладки, когда я начал запускать вещи вручную, я обнаружил ту же ошибку, и я узнал, что c3.large вызывает ошибку. Когда я запускаю шаблон с помощью c4.large, он успешно запускает шаблон с us-east-1 на us-east-2.

Другие вопросы по теме