2012-04-17 11 views
6

PHP amazon SDK(またはamazonのAPIコマンドラインツール)を使用してEC2インスタンスのパブリックDNSを取得する方法はありますか?インスタンスのパブリックDNSをプログラムで取得する方法は?

私は(とりわけ)このPHPコードを試みたが、それは動作しません。

require_once '/full/path/sdk.class.php'; 
$ec2  = new AmazonEC2(); 
$response = $ec2->describe_regions(); 
print_r($response); 

とも

require_once '/full/path/sdk.class.php'; 
$ec2  = new AmazonEC2(); 
$response = $ec2->describe_instances(array(
    'Filter' => array(
     array('Name' => 'availability-zone', 'Value' => 'eu-west-1') 
    ) 
)); 

print_r($response); 

を私は応答

でパブリックDNSを参照することはできません

答えて

4

eu-west-1地域のAmazon EC2インスタンスを取得したいようです(これは 'availability-zone'の正しい値ではありません)。あなたはすべての地域のデータをつかむことはできませんが

:しかし、あなたは米国東部地域に、すべてのサービスのデフォルトの任意の領域を指定し、されていない、関連する質問describeInstances() is only giving me instances in us-eastにAWSチームの応答を参照してくださいそれぞれの地域で のdescribe_instances()メソッドを呼び出すことができます。

$ec2 = new AmazonEC2(); 
$ec2->set_region(AmazonEC2::REGION_US_W1); // US-West 1 

$response = $ec2->describe_instances(); 

選択(例えばAmazonEC2::REGION_EU_W1)のあなたの地域に適した定数でこのコードを使用して所望の結果を生じるはずです。

+1

それは、あなたに感謝Steffen! –

6

あなたは、インスタンス自体でこれを実行している場合は、AWSの内部メタデータエンドポイントを打つことができます。

$hostname = file_get_contents('http://169.254.169.254/latest/meta-data/public-hostname'); 

http://169.254.169.254/latest/meta-data/はあなたに利用できる様々なメタデータのリストが表示されます。現在:

ami-id 
ami-launch-index 
ami-manifest-path 
block-device-mapping/ 
hostname 
instance-action 
instance-id 
instance-type 
kernel-id 
local-hostname 
local-ipv4 
mac 
metrics/ 
network/ 
placement/ 
profile 
public-hostname 
public-ipv4 
public-keys/ 
reservation-id 
security-groups 
+0

非常に興味深い...いいえ、私は同じインスタンスではないが、非常に答えceejayozありがとう! –

関連する問題