2013-05-22 1 views
2

Какой самый быстрый способ с точки зрения времени выполнения для Java JVM определить, работает ли он на экземпляре AWS EC2?Как Java может определить, работает ли на AWS

Мой текущий метод заключается в том, чтобы сделать http fetch до http://169.254.169.254/latest/instance-id, но это занимает несколько секунд, чтобы отключить время, когда я не работаю на AWS.

Update:

Мое решение было смотреть на Java системное свойство "user.name" и посмотреть, если в нем содержится "EC2". Мы всегда запускаем наше приложение под именем пользователя «ec2-user», поэтому этот метод является быстрым и надежным.

+1

, что это ваша установка в AWS? Вы можете легко добавить некоторую переменную среды в экземпляр AWS и запросить это. – Farlan

+0

Yup, это может сработать. Было бы неплохо, если бы такая вещь уже существовала, потому что я, вероятно, забуду добавить сценарий запуска в следующий раз, когда создам AMI. – ccleve

ответ

0

Возможно, вы сможете изменить тайм-аут DNS и повторить попытку, чтобы сократить время. Добавьте в файл /etc/resolv.conf следующее и посмотрите, помогает ли это. В manpage на resolv.conf будут указаны детали.

options timeout:1 attempts:1 rotate 

Это не является прямым исправлением, но может решить проблему с помощью текущего метода. Также изменения в resolv.conf должны вступить в силу немедленно.

Меня заинтересовала эта же вещь в моих системах.

2

AWS имеет документацию для: Determining an Application’s Current Region.

Что касается их API «Новый метод Regions.getCurrentRegion() делает это намного проще. Например, если вы запустите экземпляр Amazon EC2 в us-west-1 и запустите приложение на этом экземпляре, он будет знать, что это работая в us-west-1, и вы можете использовать эту информацию, чтобы легко настроить приложение для общения с другими службами в us-west-1 ».

.. и вот фрагмент кода с ключевыми словами, которые вы ищете:

// When running on an Amazon EC2 instance, this method 
// will tell you what region your application is in 
Region region = Regions.getCurrentRegion(); 
+0

Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, [добавьте контекст вокруг ссылки] (// meta.stackoverflow.com/a/8259/169503), чтобы у ваших коллег было некоторое представление о том, что это такое и почему оно есть , Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. Примите во внимание, что быть более чем ссылкой на внешний сайт_ является возможной причиной [Почему и как удаляются некоторые ответы?] (// stackoverflow.com/help/deleted-answers). –

+0

@ АндрейБеньковский Добавлен контекст. –

+0

в основном, проверьте, является ли 'region' нулем, это полный ответ. – Matt

Смежные вопросы