我需要在AWS上为我的扩展组的每个EC2实例添加唯一标识符,以获取uniqid()
的前缀。
我可以使用$_SERVER['SERVER_ADDR']
吗?
答案 0 :(得分:2)
以下代码可以获取ec2实例的实例ID:
#!/usr/bin/php
<?php
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id");
echo $instance_id;
?>
答案 1 :(得分:2)
ec2元数据中的实例ID是一个很好的答案,但在环境中隐藏它的价值似乎是一个更清晰的解决方案。
无论您在设置中设置环境变量 - 在Web服务器本身的启动脚本中(一个示例,不是普遍适用的,都是/etc/init.d/apache2
),请获取值并将其存储在环境中。 / p>
export EC2_INSTANCE_ID=$(ec2metadata --instance-id)
然后 $_ENV["EC2_INSTANCE_ID"]
应该包含该值,远比在文件中缓存它更乏味,并且不受速率限制(记录为强加,但未提及特定阈值)。
请注意,以下三个用于获取实例ID的示例在功能上是等效的:
ec2metadata --instance-id
curl http://instance-data/latest/meta-data/instance-id
curl http://169.254.169.254/latest/meta-data/instance-id