2016-12-24 11 views
0

私はuniqid()の接頭辞のためのAWS上で私のスケーリンググループの各EC2インスタンスの一意の識別子を必要としています。

私はこのため$_SERVER['SERVER_ADDR']を使用することはできますか?

答えて

2

次のコードは、あなたのEC2インスタンスのインスタンスIDを取得することができます

#!/usr/bin/php 
<?php 
$instance_id = file_get_contents("http://instance-data/latest/meta-data/instance-id"); 
echo $instance_id; 
?> 
+0

私は、メタデータについて考えたが、制限され、このレートではないでしょうか? –

+0

は、「我々はインスタンスごとに、インスタンスのメタデータサービスへのクエリを絞る、と私たちは、インスタンスのメタデータサービスへのインスタンスからの同時接続数の制限を配置します。」だから私は何とかインスタンスの起動時に私のスクリプトで実装するPHPファイルにIDを書くことができますか? –

+0

私はこのアマゾンのサービスには本当に新しいですが、ここに私の提案です。データファイルやデータベースを作成し、まだ追加されていない場合は、このIDを追加してください。そして、必要なときにデータソースからそれを取り出しますか? – Manikiran

2

EC2メタデータからインスタンスIDは、良い答えですが、環境の中で、その値をスタッシュすることはクリーナーソリューションのように思えます。

セットアップで環境変数を設定する場合は、Webサーバー自体の起動スクリプト(例:普遍的な適用ではない、/etc/init.d/apache2)で、値をフェッチして環境に格納します。

export EC2_INSTANCE_ID=$(ec2metadata --instance-id) 

$_ENV["EC2_INSTANCE_ID"]はその後はるかに少ないファイルにキャッシュより退屈、およびレート制限を受けない(課されるものとして記載されているが、しかし、特定のしきい値を言及することなく)、値を含まなければなりません。


インスタンスIDを取得するための次の3つの例は、機能的に同等であることに注意してください:

ec2metadata --instance-id 
curl http://instance-data/latest/meta-data/instance-id 
curl http://169.254.169.254/latest/meta-data/instance-id 
+0

私はこのソリューションが本当に好きです。私は決して環境変数を使用していませんが、私はこれを間違いなく試みます。 http://php.net/manual/en/reserved.variables.environment.php:あなたはすでに今ではそれを見つけていない場合 –

+0

あなたは、それから、これは便利かもしれません。 (PHPは私の専門ではないので、自分でそれを調べなければなりませんでした)。明らかに 'getenv()'もあります。 –

+0

私のポストを参照してください、私は環境変数を使用しようとしたが、それは不可能であることを思わ:http://stackoverflow.com/questions/41331993/retrieving-an-environment-variable-in-php/41332070#41332070 –

関連する問題