从实例ID确定公共Amazon EC2实例IP地址

时间:2011-09-06 12:23:39

标签: php amazon-ec2

我们正在编写一个PHP脚本,用于创建和启动Amazone EC2实例。我们想确定我们从PHP创建的实例的公共IP地址。有这样的API函数吗?我能够找到Instance.getPublicIpAdress() for Java,但无法为PHP找到类似的功能。

4 个答案:

答案 0 :(得分:4)

您使用的是AWS SDK for PHP吗?如果是这样,我认为您可以执行以下操作:

$response = $ec2_account->describe_instances();

foreach ($response->body->reservationSet->item as $item)
{
  $ipAddress = (string) $item->instancesSet->item->ipAddress;
}

这显然会返回每个 EC2实例,而不仅仅是你想要的那个,所以你需要稍微改进一下。不幸的是,我不是一个真正的PHP人,因此留给读者练习: - )。

您可以找到describe_instances() here的文档。

编辑:认为这看起来像是:

$response = $ec2_account->describe_instances(array("InstanceId"->"i-123456"));

但同样,不是一个PHP人。

答案 1 :(得分:4)

curl http://169.254.169.254/latest/meta-data/public-ipv4

答案 2 :(得分:3)

您的意思是$_SERVER['SERVER_ADDR']吗?


修改:http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?concepts.html

  

确定实例的公共和私有IP地址

     

构造以下查询请求。

     

https://ec2.amazonaws.com/?Action=DescribeInstances&InstanceId.1=实例的编号&安培;的 ... authparameters ...

这将提供XML响应。要确定公共IP地址,请使用该响应中ipAddress内指定的IP地址。

你可以用CURL做这样的事情。

答案 3 :(得分:1)

以下内容应为您提供ID为' instance-id'

的实例的完整实例说明
$response = $ec2Client->describeInstances(array('InstanceIds' => array('instance-id')));

以下将从实例中获取公共IP

echo $response->get('Reservations')[0]['Instances'][0]['PublicIpAddress']