Amazon EC2 - Как выполнить «запуск» части кросс-учетной записи AMI Copy? - PullRequest
0 голосов
/ 27 августа 2018

Context

Я хотел бы выполнить кросс-аккаунт AMI Copy (я действительно пытаюсь сделать это в C #, используя Amazon SDK, но мне нужно понять это и с точки зрения консоли EC2). Цель состоит в том, чтобы создать резервную копию экземпляра и его томов в одной учетной записи (первая AMI), а затем сделать копию этой AMI в другой учетной записи (так что теперь два разных AMI находятся в двух разных областях хранения S3).

В настоящее время мой код выполняет следующие действия:

  1. Находит экземпляр для создания изображения (на основе пользовательского ввода).
  2. Создает образ (AMI) этого экземпляра.
  3. После успешного завершения образа я делю AMI с другой учетной записью (используя LaunchPermissions для изображения. В данный момент мне не ясно, нужно ли мне также совместно использовать тома с помощью CreateVolumePermission).

Там я хочу выполнить Копирование. Проблема в том, что когда я пытаюсь скопировать его, я получаю следующее сообщение:

Изображения с кодами EC2 BillingProduct нельзя скопировать в другую учетную запись AWS.

Но я немного почитал, и мне сказали, что я могу сделать следующее:

Запустите экземпляр EC2 этого общего образа, а затем создайте AMI из этого экземпляра. Отлично!

Вот моя проблема

Только что через консоль (веб-сайт) я вошел во 2-ую учетную запись, выбрал общее изображение и нажал большую кнопку запуска.

Затем я перешел к экрану, на котором мне нужно было выбрать тип экземпляра (по умолчанию это t2.micro). Кроме того, существуют другие шаги, такие как «Настройка экземпляра», «Добавление хранилища», «Настройка группы безопасности» и т. Д.

Для моих целей я просто хочу создать резервную копию Экземпляра и его томов (для этого используется AMI). Вместо того, чтобы по умолчанию использовать такие вещи, как t2.micro, не все мои шаги по настройке должны совпадать с экземпляром, из которого я взял образ (хотя у меня просто есть AMI, общий для этой 2-й учетной записи, и я не могу видеть исходный экземпляр просто AMI, который ему поделился)?

Когда я смотрю на исходный экземпляр (из первой учетной записи), я вижу t2.medium и вижу группы безопасности, такие как: RDP (3389) -HTTP (80) -HTTPS (443) -SSH (22)

Другими словами, я просто хочу, чтобы мой «Запуск» приобрел свойства Экземпляра, из которого я взял AMI. Разве это не должно по умолчанию для этих свойств? Или, как я могу по умолчанию это для этих свойств?

Больше контекста: После того, как я закончу с этим запуском, где цель состоит в том, чтобы создать его AMI (или «копию»), я подумаю, что мне больше не нужен Экземпляр и я могу его удалить. Я только запускаю, чтобы создать "копию".

1 Ответ

0 голосов
/ 28 августа 2018

AMI является отдельным от экземпляра. У AMI просто есть копия томов диска , которые были связаны в экземпляре. Ни одно из других свойств экземпляра не сохраняется с AMI.

Внутри своей учетной записи и региона вы можете использовать Запустить еще как * в консоли управления EC2, которая будет копировать такие атрибуты, как тип экземпляра, теги, пользовательские данные и т. Д., В новый экземпляр. Это особенность консоли, и она не отражается фактическими вызовами API в AWS.

Группы безопасности - это совершенно разные объекты. Экземпляр может быть связан с несколькими группами безопасности, но группы безопасности не копируются как часть экземпляра.

Итог: Нет вызова API для "клонирования" экземпляра и всех его свойств. Вам нужно будет указать эти свойства при запуске.

Вот тип информации, хранящейся об AMI:

{
    "Images": [
        {
            "VirtualizationType": "paravirtual",
            "Name": "My server",
            "Hypervisor": "xen",
            "ImageId": "ami-5731123e",
            "RootDeviceType": "ebs",
            "State": "available",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sda1",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "SnapshotId": "snap-1234567890abcdef0",
                        "VolumeSize": 8,
                        "VolumeType": "standard"
                    }
                }
            ],
            "Architecture": "x86_64",
            "ImageLocation": "123456789012/My server",
            "KernelId": "aki-88aa75e1",
            "OwnerId": "123456789012",
            "RootDeviceName": "/dev/sda1",
            "Public": false,
            "ImageType": "machine",
            "Description": "An AMI for my server"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...