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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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.

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