如何通过ec2 api获取InstanceID?

时间:2016-05-20 15:31:14

标签: node.js amazon-web-services amazon-ec2 instanceid

我需要一个告诉我instanceID的函数,我正在搜索here函数,但是你总是需要id ...是的,这就是问题所在。

我不允许使用控制台,需要通过脚本找到它。

我看到了AWS.MetadataService documentation,但我无法处理它。我只能看到单件,但我不知道如何正确匹配它们,以及我想要的东西。目前我有这个

var meta  = new AWS.MetadataService();

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

但是,这不起作用......路径参数需要什么?

2 个答案:

答案 0 :(得分:10)

如果您的脚本在您想要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

<强>更新

对于Node中的内容,请尝试以下方法:

var meta  = new AWS.MetadataService();

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

不要包含http://和主机部分。只是最后的道路。

答案 1 :(得分:0)

如果你从ec2 api看,你可以使用aws ec2 describe-XXX命令,例如

[xxx@IP-xxxx ~]# 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