Тайм-аут при попытке получить метаданные идентификатора экземпляра 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