两个EC2实例可以具有相同的$ _SERVER ['SERVER_ADDR']吗?或者如何在EC2中唯一地识别每个?

时间:2016-12-24 17:14:15

标签: php amazon-web-services amazon

我需要在AWS上为我的扩展组的每个EC2实例添加唯一标识符,以获取uniqid()的前缀。

我可以使用$_SERVER['SERVER_ADDR']吗?

2 个答案:

答案 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