有没有办法使用PHP亚马逊SDK(或Amazon的API命令行工具)来获取EC2实例的公共DNS?
我想这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
显然,你想找回您的亚马逊EC2的区域例如eu-west-1
这是不是“可用性区”顺便说一句正确的值)。 但是,你不指定任何区域和所有服务默认为美东地区 ,看到AWS团队应对相关的问题describeInstances()只让我在实例美国东西 :
虽然你不能在一个单一的通话抓住所有地区的数据,可以调用每个地区的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