Php 根据实例ID确定公共Amazon EC2实例IP地址

Php 根据实例ID确定公共Amazon EC2实例IP地址,php,amazon-ec2,Php,Amazon Ec2,我们正在编写一个PHP脚本,创建并启动一个AmazonEC2实例。我们想确定从PHP创建的实例的公共IP地址。是否有API函数用于执行此操作?我可以找到,但一直找不到类似的PHP函数。你是说$\u SERVER['SERVER\u ADDR'] 编辑: 确定实例的公用和专用IP地址 构造以下查询请求 实例id&…authparameters… 这将给出一个XML响应。要确定公共IP地址,请在该响应中使用ipAddress中指定的IP地址 你可以用CURL做类似的事情。你是说$\u SERVER

我们正在编写一个PHP脚本,创建并启动一个AmazonEC2实例。我们想确定从PHP创建的实例的公共IP地址。是否有API函数用于执行此操作?我可以找到,但一直找不到类似的PHP函数。

你是说
$\u SERVER['SERVER\u ADDR']


编辑:

确定实例的公用和专用IP地址

构造以下查询请求

实例id&…authparameters…

这将给出一个XML响应。要确定公共IP地址,请在该响应中使用
ipAddress
中指定的IP地址


你可以用CURL做类似的事情。

你是说
$\u SERVER['SERVER\u ADDR']


编辑:

确定实例的公用和专用IP地址

构造以下查询请求

实例id&…authparameters…

这将给出一个XML响应。要确定公共IP地址,请在该响应中使用
ipAddress
中指定的IP地址

您可以使用CURL执行类似的操作。

您使用的是?如果是这样的话,我想你可以做如下事情:

$response = $ec2_account->describe_instances();

foreach ($response->body->reservationSet->item as $item)
{
  $ipAddress = (string) $item->instancesSet->item->ipAddress;
}
这显然会返回每个EC2实例,而不仅仅是您想要的实例,因此您需要对其进行一些改进。不幸的是,我不是一个真正的PHP爱好者,所以这留给读者作为练习:-)

您可以找到
description\u instances()
的文档

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

$response = $ec2_account->describe_instances(array("InstanceId"->"i-123456"));
但同样,不是一个PHP的家伙。

你在使用PHP吗?如果是这样的话,我想你可以做如下事情:

$response = $ec2_account->describe_instances();

foreach ($response->body->reservationSet->item as $item)
{
  $ipAddress = (string) $item->instancesSet->item->ipAddress;
}
curl http://169.254.169.254/latest/meta-data/public-ipv4
这显然会返回每个EC2实例,而不仅仅是您想要的实例,因此您需要对其进行一些改进。不幸的是,我不是一个真正的PHP爱好者,所以这留给读者作为练习:-)

您可以找到
description\u instances()
的文档

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

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

但同样,不是PHP专家。

下面应该为您提供一个id为“instance id”的实例的完整实例描述

curl http://169.254.169.254/latest/meta-data/public-ipv4
$response = $ec2Client->describeInstances(array('InstanceIds' => array('instance-id')));
下面将从实例中获取公共ip

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

下面应该为id为“instance id”的实例提供完整的实例描述

$response = $ec2Client->describeInstances(array('InstanceIds' => array('instance-id')));
下面将从实例中获取公共ip

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

不,这会给我web服务器的IP地址,我想要web服务器启动的EC2实例的IP地址。我认为如果没有有效的签名,这将无法工作(请参阅)。这就是为什么我建议使用Amazon SDK或类似的东西。不,这会给我web服务器的IP地址,我想要web服务器启动的EC2实例的IP地址。我认为如果没有有效的签名,这将无法工作(请参阅)。这就是为什么我建议使用Amazon SDK或类似的工具。我刚刚测试了这段代码,调用中缺少PublicIpAddress字段,但这可能是因为在控制台中,我的实例没有公共IP地址,因此您的里程数可能会有所不同。我刚刚测试了这段代码,调用中缺少PublicIpAddress字段,但这可能是因为在控制台中,我的实例没有公共IP地址,所以您的里程数可能会有所不同。介意解释一下吗?或者至少链接到某个可以解释的东西?介意解释一下吗?或者至少链接到某个可以解释的东西?