实例身份文档
您启动的每个实例都有一个实例身份文档,用于提供有关实例自身的信息。您可以使用实例身份文档验证实例的属性。
实例身份文档在实例停止并启动、重新启动或启动时生成。实例身份文档通过实例元数据服务(IMDS)公开(采用纯文本 JSON 格式)。IPv4 地址 169.254.169.254
是链路本地地址,仅从该实例有效。有关更多信息,请参阅 Wikipedia 上的链路本地地址fd00:ec2::254
是唯一本地地址,仅从该实例有效。有关更多信息,请参阅 Wikipedia 上的 Unique local address
注意
本部分中的示例使用 IMDS 的 IPv4 地址:169.254.169.254
。如果要通过 IPv6 地址检索 EC2 实例的实例元数据,请确保启用并改用 IPv6 地址:fd00:ec2::254
。IMDS 的 IPv6 地址与 IMDSv2 命令兼容。IPv6 地址仅可在 基于 Nitro 系统构建的实例 上访问。
您可以随时从正在运行的实例中检索实例身份文档。实例身份文档 中包括以下信息:
数据 | 描述 |
---|---|
accountId |
启动实例的 Amazon 账户的 ID。 |
architecture |
启动实例所用 AMI 的架构 (i386 | x86_64 | arm64)。 |
availabilityZone |
实例在其中运行的可用区。 |
billingProducts |
实例的计费产品。 |
devpayProductCodes |
已淘汰。 |
imageId |
用于启动实例的 AMI 的 ID。 |
instanceId |
实例的 ID。 |
instanceType |
实例的实例类型。 |
kernelId |
与实例关联的内核的 ID(如果适用)。 |
marketplaceProductCodes |
用于启动实例的 AMI 的 Amazon Web Services Marketplace 产品代码。 |
pendingTime |
启动实例的日期和时间。 |
privateIp |
实例的私有 IPv4 地址。 |
ramdiskId |
与实例关联的 RAM 磁盘的 ID(如果适用)。 |
region |
运行实例的区域。 |
version |
实例身份文档格式的版本。 |
检索明文实例身份文档
检索明文实例身份文档
连接到实例,并根据实例使用的 IMDS 版本运行以下命令之一。
下面是示例输出。
{
"devpayProductCodes" : null,
"marketplaceProductCodes" : [ "1abc2defghijklm3nopqrs4tu" ],
"availabilityZone" : "us-west-2b",
"privateIp" : "10.158.112.84",
"version" : "2017-09-30",
"instanceId" : "i-1234567890abcdef0",
"billingProducts" : null,
"instanceType" : "t2.micro",
"accountId" : "123456789012",
"imageId" : "ami-5fb8c835",
"pendingTime" : "2016-11-19T16:32:11Z",
"architecture" : "x86_64",
"kernelId" : null,
"ramdiskId" : null,
"region" : "us-west-2"
}
验证 实例身份文档
如果您打算将实例身份文档的内容用于重要用途,则应在使用前验证其内容和真实性。
明文实例身份文档附有三个经哈希处理的加密签名。您可以使用这些签名验证实例身份文档的来源和真实性以及其中包含的信息。其中提供以下签名:
-
Base64 编码的签名 — 这是实例身份文档的 Base64 编码 SHA256 哈希值,使用 RSA 密钥对进行加密。
-
PKCS7 签名 — 这是实例身份文档的 SHA1 哈希值,使用 DSA 密钥对进行加密。
-
RSA-2048 签名 — 这是实例身份文档的 SHA256 哈希值,使用 RSA-2048 密钥对进行加密。
每个签名在实例元数据中的不同终端节点上可用。您可以根据哈希和加密要求使用这些签名中的任何一个。要验证签名,您必须使用对应的 Amazon 公有证书。
以下主题提供了使用每个签名验证实例身份文档的详细步骤。