Тайм-аут при попытке получить метаданные идентификатора экземпляра EC2 изнутри

Я запускаю экземпляр Windows 10 EC2 и пытаюсь получить его идентификатор экземпляра из CMD с помощью команды:

curl http://169.254.169.254/latest/meta-data/instance-id

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

curl: (7) Failed to connect to 169.254.169.254 port 80: Timed out

Я просмотрел документацию aws по извлечению метаданных EC2 и не нашел ничего относительно срока действия попытки извлечения. Кроме того, я попытался создать AMI из своего экземпляра и запустить новый экземпляр на основе этого AMI, чтобы попробовать какое-то "обновление" возможного срока действия, но это не сработало.

Я искал в ролях IAM что-то, связанное с разрешением на получение метаданных, но, похоже, ничего не подходило к моей проблеме.

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

Что могло случиться? Это работало около двух месяцев подряд, и вдруг перестало работать.

Обходной путь для исправления

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

Я просто побежал C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1и сценарий применил спецификации по умолчанию для новорожденного экземпляра Windows EC2. Я до сих пор не знаю, почему возникла эта проблема, но это решение работает для тех, кому нечего терять в спецификациях конфигурации.

1 ответ

Решение

Судя по обходному пути, которым вы поделились, похоже, что причина, по которой вы не смогли получить идентификатор экземпляра, заключалась в том, что маршруты для вашего экземпляра были неправильно настроены. Чтобы получить идентификатор экземпляра из метаданных, маршрут 169.254.169.254 должен указывать на правильный шлюз экземпляра. Эта проблема обычно возникает с Windows Server 2016 или более поздней версии, когда вы пытаетесь запустить экземпляр из настраиваемого AMI в подсети, которая отличается от родительского экземпляра, из которого был создан AMI.

Когда вы запускали команду, она планировала сценарий InitializeInstance.ps1, а во время следующей загрузки повторно настраивала маршруты.

В будущем, если вы увидите какую-либо такую ​​проблему, убедитесь, что IP-адрес 169.254.169.254 указывает на правильный шлюз, который вы можете проверить с помощью команды ipconfig /all и команд печати маршрута, если вы обнаружите, что маршруты неправильно настроены, вы можете использовать команды удаления маршрута и добавления маршрута с соответствующими параметрами для исправления маршрутов или просто запланировать сценарий InitializeInstance.ps1, который исправит маршруты при следующей загрузке экземпляра.

См. Ссылку: https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html

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