两个 EC2 实例可以有相同的 $_SERVER['SERVER_ADDR'] 吗?或者如何在 EC2 中唯一标识每个?
Can two EC2 instances have the same $_SERVER['SERVER_ADDR']? Or how to uniquely identify each, in EC2?
我需要为我在 AWS 上的扩展组的每个 EC2 实例提供一个唯一标识符作为 uniqid()
的前缀。
我可以使用 $_SERVER['SERVER_ADDR']
吗?
以下代码可以获取您的 ec2 实例的实例 ID:
#!/usr/bin/php
<?php
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id");
echo $instance_id;
?>
来自 ec2 元数据的实例 ID 是一个很好的答案,但将其值存储在环境中似乎是一个更干净的解决方案。
无论您在设置中的什么地方设置环境变量——在网络服务器本身的启动脚本中(一个例子,不是普遍适用的,/etc/init.d/apache2
),获取值并将其存储在环境中.
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
我需要为我在 AWS 上的扩展组的每个 EC2 实例提供一个唯一标识符作为 uniqid()
的前缀。
我可以使用 $_SERVER['SERVER_ADDR']
吗?
以下代码可以获取您的 ec2 实例的实例 ID:
#!/usr/bin/php
<?php
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id");
echo $instance_id;
?>
来自 ec2 元数据的实例 ID 是一个很好的答案,但将其值存储在环境中似乎是一个更干净的解决方案。
无论您在设置中的什么地方设置环境变量——在网络服务器本身的启动脚本中(一个例子,不是普遍适用的,/etc/init.d/apache2
),获取值并将其存储在环境中.
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