【发布时间】:2011-10-02 01:36:21
【问题描述】:
我正在寻找创建一个 PHP 脚本来回显 Amazon EC2 实例的唯一 ID。有人知道怎么做吗?
通过命令行找到方法:http://af-design.com/blog/2010/07/27/testing-your-aws-elastic-load-balancer/
我可以只使用带有 CURL 的 PHP 来提交查询吗?
【问题讨论】:
标签: php curl get amazon-ec2
我正在寻找创建一个 PHP 脚本来回显 Amazon EC2 实例的唯一 ID。有人知道怎么做吗?
通过命令行找到方法:http://af-design.com/blog/2010/07/27/testing-your-aws-elastic-load-balancer/
我可以只使用带有 CURL 的 PHP 来提交查询吗?
【问题讨论】:
标签: php curl get amazon-ec2
如果您的 PHP 脚本的全部目标是运行另一个命令,为什么不直接运行另一个命令呢?为什么要用 PHP 封装?
如果您出于某种原因需要使用 PHP(例如,对实例 id 做一些事情而不是回显它,您可以通过使用 PHP 的内置 HTTP 功能而不是运行另一个进程来提高性能:
#!/usr/bin/php
<?php
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id");
echo $instance_id, "\n";
?>
【讨论】:
如果您使用的是 Amazon Linux AMI,则可以使用 shell_exec 获取实例 ID。
$instance_id = shell_exec('ec2-metadata --instance-id 2> /dev/null | cut -d " " -f 2');
// if its not set make it 0
if (empty($instance_id)) {
$instance_id = 0;
}
echo $instance_id;
【讨论】:
如果您可以通过命令行获取实例 id,则可以使用 PHP 的 exec 函数在 PHP 中获取后者的结果。当你得到结果时,只需回显它。
$instance_id = exec([your command here]);
echo $instance_id;
或者,在阅读您链接到的帖子后,您也可以这样做:
$instance_id = file_get_contents(
"http://169.254.169.254/latest/meta-data/instance-id");
echo $instance_id;
【讨论】: