2016-12-24 3 views
0

Мне нужен уникальный идентификатор для каждого экземпляра EC2 моей группы масштабирования на AWS для префикса для uniqid().

Могу ли я использовать $_SERVER['SERVER_ADDR']?

ответ

2

Следующий код может принести идентификатор экземпляра экземпляра ec2:

#!/usr/bin/php 
<?php 
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id"); 
echo $instance_id; 
?> 
+0

Я думал о метаданных, но не эта скорость ограничена? –

+0

«Мы обрабатываем запросы к службе метаданных экземпляра для каждого экземпляра, и мы устанавливаем ограничения на количество одновременных подключений от экземпляра к службе метаданных экземпляра». Могу ли я как-то записать идентификатор при запуске экземпляра в php-файл, который я реализую в своем скрипте? –

+0

Я действительно новичок в этом сервисе amazon, но вот мое предложение. Как создать файл данных или базу данных и добавить к нему этот идентификатор, если он еще не добавлен? А затем извлекать его из источника данных, когда это необходимо? – Manikiran

2

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

Везде, где вы устанавливаете переменные среды в своей настройке - в сценарии запуска для самого веб-сервера (например, не универсально, будет /etc/init.d/apache2), выберите значение и сохраните его в среде.

export EC2_INSTANCE_ID=$(ec2metadata --instance-id) 

$_ENV["EC2_INSTANCE_ID"] должен тогда содержать значение, намного меньше, чем утомительное кэширование его в файл, и не подлежит ограничению скорости (которая описана в налагаются, но без конкретных порогов упоминаются).


Обратите внимание, что следующие три примера для извлечения идентификатора экземпляра функционально эквивалентен:

ec2metadata --instance-id 
curl http://instance-data/latest/meta-data/instance-id 
curl http://169.254.169.254/latest/meta-data/instance-id 
+0

Мне очень нравится это решение. Я никогда не использовал переменные окружающей среды, но я обязательно попробую это. –

+0

Возможно, вам это станет полезно, если вы еще не нашли его сейчас: http://php.net/manual/en/reserved.variables.environment.php. (PHP - это не моя специальность, поэтому мне пришлось самому это посмотреть). По-видимому, есть также 'getenv()'. –

+0

Я пытался использовать переменные среды, но кажется, что это невозможно, см. Мой пост: http://stackoverflow.com/questions/41331993/retrieving-an-environment-variable-in-php/41332070#41332070 –

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