AWS, EC2 - CreateTags после RunInstances - PullRequest
2 голосов
/ 21 ноября 2011

Я использую .NET SDK и пытаюсь пометить новый экземпляр сразу после его создания - CreateTags сразу после RunInstances.

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

Я понимаю, что с SQS, SDB и т. Д. Они «в конечном итоге согласованы», и может потребоваться повторить вызовы (хотя я считаю, что SDK сделает это за вас в любом случае) - но с общими вызовами для создания экземпляров я не думал это было необходимо. Более того, я не думаю, что это хорошая вещь; искать конкретное исключение и повторять попытки почти бесконечно, пока оно не заработает.

Если процесс создания экземпляра и его пометки необходимо ввести в распределенный рабочий процесс с избыточной централизованной системой для опроса и повторного запуска, я думаю, что это плохая ситуация!

Кажется, я не могу найти что-либо релевантное в документации по этому поводу. Я подумал, что если я вызову RunInstances и получу ответ с идентификатором экземпляра, этот идентификатор экземпляра должен быть немедленно действителен для тегирования.

Мои мысли о возможных решениях:

  • Исправлена ​​задержка в несколько секунд после RunInstances (плохая, произвольная задержка)
  • Попробуйте немедленно, иначе задержите 5сек и повторите попытку до 'n' раз (ОК, но произвольно)
  • Создание распределенного рабочего процесса для обработки любых связанных вызовов API, таких как эта, потребует, чтобы центральная избыточная ферма экземпляров EC2 была надежной (плохой, с большим перегрузом)
  • Найдите другое объяснение, где я могу вызвать другой метод API или задать что-то в запросе для вызова, чтобы он работал

Кто-нибудь еще испытывал это, имел какие-либо знания в этой области и т. Д.?

(У меня есть ветка на форумах сообщества AWS, но пока ничего: https://forums.aws.amazon.com/thread.jspa?threadID=80489&tstart=0)

Ответы [ 2 ]

2 голосов
/ 21 ноября 2011

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

Мое управляющее программное обеспечение просто спит в течение 5-секундных интервалов в потоке средства запуска, пока экземпляр не перейдет в состояние 'Running', после чего я могу начать выполнять другие вызовы.

1 голос
/ 21 декабря 2011

API тегов реализован поверх возможностей тегов API Xen Hypervisor, т. Е. см. Поле тегов виртуальной машины в XenAPI . Напротив, идентификатор экземпляра соответствует записи в базе данных инфраструктуры управления AWS. Таким образом, экземпляр может ставить в очередь создание виртуальной машины после того, как идентификатор экземпляра был возвращен вызывающей стороне. Побочным эффектом этого подхода является невозможность создания некоторых тегов, поскольку они зарезервированы для инфраструктуры AWS.

Как отмечает @Jonners, тегирование - это не единственный API, который зависит от виртуальной машины. Например. остановка экземпляра Тем не менее, «гипервизор», скорее всего, избежит споров о товарных знаках, поскольку термин принят NIST, например, Руководство по безопасности для технологий полной виртуализации , тогда как "hipervisor" относится только к документам IBM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...