如何通过 ec2 api 获取 InstanceID?

how to get InstanceID via ec2 api?

我需要一个告诉我实例 ID 的函数,我正在搜索 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);
});

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

如果您的脚本在您想要 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:// 和主机部分。只是最后的路径。

如果您从 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 它非常完整 return 所有关于实例的信息都包括 InstanceId