Назад | Перейти на главную страницу

Можно ли указать ту же зону доступности, что и мое хранилище EBS, при создании нового экземпляра EC2?

Прямо сейчас у меня есть объем хранилища EBS в us-east-2b зона доступности. Однако у меня есть код, который автоматизирует процесс создания экземпляра и использует us-east-2 как зона его доступности. Проблема в том, что экземпляр создается в любой зоне доступности, которую он хочет - us-east-2a, us-east-2b, us-east-2c... и поэтому, когда я пытаюсь прикрепить том к экземпляру, появляется следующая ошибка:

Aws::EC2::Errors::InvalidVolumeZoneMismatch (The volume 'vol-XXXX' is not in the same availability zone as instance 'i-XXXX')

Чтобы обеспечить некоторую согласованность и избежать этой проблемы, я просто хотел бы создать экземпляр в определенной зоне доступности, например us-east-2b чтобы он совпадал с объемом хранилища EBS.

Я тоже использую рубин aws-sdk для этого. Есть идеи, возможно ли это?

Если я попробую указать us-east-2b, то я получаю следующую ошибку:

2.5.1 :080 > @ec2 = Aws::EC2::Resource.new(region: 'us-east-2b')
Traceback (most recent call last):
        2: from (irb):80
        1: from (irb):80:in `new'
ArgumentError (:region option must a region name, not an availability zone name; try `us-east-2' instead of `us-east-2b')

поэтому я не понимаю, как можно решить эту проблему. Нужно ли мне просто продолжать воссоздавать экземпляры в xxx-2 зона доступности, пока я волшебным образом не окажусь в xxx-2b? Или мне нужно найти другой способ продолжать репликацию моментальных снимков взад и вперед, чтобы объем хранилища EBS был согласован во всех 3 зонах доступности в us-east-2a/b/c?

Пропустил шаг в документации и понял, что могу указать конкретный зона доступности (например, 2a, 2b, 2c), предоставив subnet_id когда используешь .create_instance

Например:

        instances = @ec2.create_instances({
            min_count: 1, 
            max_count: 1,
            image_id: @ec2_config[:image_id],
            key_name: @ec2_config[:key_name],
            security_group_ids: [@ec2_config[:security_group_id]],
            instance_type: @ec2_config[:instance_type],
            subnet_id: "subnet-xxxx" # availability zone us-east-2b (same as ebs volume)
        })