2016-05-20 55 views
3

我需要一個函數,告訴我instanceID,我正在尋找here作爲函數,但你總是需要id ...是的,這是問題所在。如何通過ec2 api獲取InstanceID?

我不允許使用控制檯,需要通過腳本找出它。

我看到了AWS.MetadataService documentation,但我無法處理它。我只能看到單件,但我不知道如何正確匹配它們,以達到我想要的效果。目前我有這

var meta = new AWS.MetadataService(); 

meta.request("http://169.254.169.254/latest/meta-data/", function(err, data){ 
    console.log(data); 
}); 

但是,這個不工作......什麼需要在路徑參數?

+1

是您運行在你需要該ID的實例上的腳本?如果是這樣,我認爲你正在尋找'AWS.MetadataService' –

+1

[找出ec2機器內的實例id]可能的重複(http://stackoverflow.com/questions/625644/find-out-the- example-id-from-within-an-ec2-machine) –

+0

是的,我看到了AWS MetadataService,但我不知道如何使用它,我將編輯我的問題向你展示我的奮鬥 – nova

回答

6

如果您的腳本正在您想要的ID的EC2實例上運行,您可以從實例元數據中獲取EC2實例ID。這個命令會給你的EC2實例ID(例如I-12345678):

curl http://169.254.169.254/latest/meta-data/instance-id 

的元數據全部文檔可以在這裏找到:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

更新:

對於節點的東西,試試這個:

var meta = new AWS.MetadataService(); 

meta.request("/latest/meta-data/instance-id", function(err, data){ 
    console.log(data); 
}); 

不包括http://和主機部件。只是最後的道路。

+0

這是一個命令行工具,我問了一些腳本:/ – nova

+0

我已經更新了我的答案。 –

0

如果你從EC2 API尋找可以使用aws ec2 describe-XXX命令例如

[[email protected] ~]# aws ec2 describe-addresses 
{ 
    "Addresses": [ 
     { 
      "Domain": "vpc", 
      "InstanceId": "i-YOUR INSTANCE ID", 
      "NetworkInterfaceId": "eni-xxxx", 
      "AssociationId": "eipassoc-xxxx", 
      "NetworkInterfaceOwnerId": "xxxx", 
      "PublicIp": "xxxx", 
      "AllocationId": "eipalloc-xxxx", 
      "PrivateIpAddress": "xxxx" 
     } 
    ] 
} 

你也可以用它aws ec2 describe-instances相當完整,返回有關實例的所有信息包括InstanceId

+0

已經試過了,但是我得到了'{[MissingParameter:請求必須包含參數實例ID] message:'請求必須包含參數實例ID','因此,正如我所說的,始終需要instanceId – nova

+0

如果您運行它來自實例,它的工作原理 - 我已經使用過很多次了,我從一個正在運行的實例中加入了一個例子 –

相關問題