Есть ли способ получить общедоступный DNS экземпляра EC2, используя PHP amazon SDK (или инструменты командной строки API Amazon)?
Я пробовал этот PHP-код (среди прочего), но он не будет работать:
require_once '/full/path/sdk.class.php'; $ec2 = new AmazonEC2(); $response = $ec2->describe_regions(); print_r($response);
а также
require_once '/full/path/sdk.class.php'; $ec2 = new AmazonEC2(); $response = $ec2->describe_instances(array( 'Filter' => array( array('Name' => 'availability-zone', 'Value' => 'eu-west-1') ) )); print_r($response);
но я не могу видеть публичные DNS в ответе
Очевидно, вы хотели бы получить экземпляр Amazon EC2 в регионе eu-west-1
(что не является правильным значением для «зоны доступности-доступности»). Тем не менее, вы не указываете ни один регион, а все сервисы по умолчанию для региона США и Востока , см. Ответ команды AWS на связанный с ним вопрос. ОписанияInstances () только дают мне примеры в us-east :
Хотя вы не можете захватить данные для всех регионов за один вызов, вы можете вызвать метод describe_instances () в каждом регионе.
$ec2 = new AmazonEC2(); $ec2->set_region(AmazonEC2::REGION_US_W1); // US-West 1 $response = $ec2->describe_instances();
Использование этого кода с соответствующей константой для выбранного вами региона (например, AmazonEC2::REGION_EU_W1
) даст желаемый результат.
Если вы запускаете это в самом экземпляре, вы можете удалить конечную точку внутренней метаданных AWS:
$hostname = file_get_contents('http://169.254.169.254/latest/meta-data/public-hostname');
http://169.254.169.254/latest/meta-data/
предоставит вам список различных доступных вам метаданных. В данный момент:
ami-id ami-launch-index ami-manifest-path block-device-mapping/ hostname instance-action instance-id instance-type kernel-id local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups