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