如何从ec2实例中找到ec2实例的实例id ?


当前回答

在你提到用户作为根用户的问题中,我应该提到的一件事是实例ID不依赖于用户。

对于Node开发者来说,

var meta  = new AWS.MetadataService();

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

其他回答

动机:用户想检索aws实例元数据。

解决方案: IP地址169.254.169.254是一个链接本地地址(仅对实例有效)aws为我们提供了用于检索运行实例的元数据的专用Restful API的链接(注意,用于检索实例元数据和用户数据的HTTP请求不会收费)。其他文件

例子:

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

//Response
ami-123abc

你可以使用这个链接http://169.254.169.254/latest/meta-data/<metadata-field>获得你实例的额外元数据标签,只需选择正确的标签:

ami id ami-launch-index ami-manifest-path 块设备 映射 事件 冬眠 主机名 我 身份凭证 instance-action 实例id 实例类型 local-hostname local-ipv4 mac 指标 网络 放置 配置文件 预订标识 安全组 服务

对于powershell用户:

(New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")

对于Windows实例:

(wget http://169.254.169.254/latest/meta-data/instance-id).Content

or

(ConvertFrom-Json (wget http://169.254.169.254/latest/dynamic/instance-identity/document).Content).instanceId

如果您还需要查询实例ID以外的其他信息,请使用/dynamic/instance-identity/document URL。

wget -q - o - http://169.254.169.254/latest/dynamic/instance-identity/document

这将为您提供这样的JSON数据——只需要一个请求。

{
    "devpayProductCodes" : null,
    "privateIp" : "10.1.2.3",
    "region" : "us-east-1",
    "kernelId" : "aki-12345678",
    "ramdiskId" : null,
    "availabilityZone" : "us-east-1a",
    "accountId" : "123456789abc",
    "version" : "2010-08-31",
    "instanceId" : "i-12345678",
    "billingProducts" : null,
    "architecture" : "x86_64",
    "imageId" : "ami-12345678",
    "pendingTime" : "2014-01-23T45:01:23Z",
    "instanceType" : "m1.small"
}

获取实例元数据使用

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id