实例身份文档 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

实例身份文档

您启动的每个实例都有一个实例身份文档,用于提供有关实例自身的信息。您可以使用实例身份文档验证实例的属性。

实例身份文档在实例停止并启动、重新启动或启动时生成。实例身份文档通过实例元数据服务(IMDS)公开(采用纯文本 JSON 格式)。IPv4 地址 169.254.169.254 是链路本地地址,仅从该实例有效。有关更多信息,请参阅 Wikipedia 上的链路本地地址。IPv6 地址 [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 版本运行以下命令之一。

IMDSv2
$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/dynamic/instance-identity/document
IMDSv1
$ curl http://169.254.169.254/latest/dynamic/instance-identity/document

下面是示例输出。

{ "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 公有证书。

以下主题提供了使用每个签名验证实例身份文档的详细步骤。