使用实例元数据来查看实例的标签
您可以从实例元数据访问实例的标签。通过从实例元数据访问标签,您无需再使用 DescribeInstances
或 DescribeTags
API 调用来检索标签信息,这可以减少每秒的 API 事务量,并允许您的标签检索随您控制的实例数量扩展。此外,在实例上运行的本地进程可以直接从实例元数据中查看实例的标签信息。
默认情况下,实例元数据中不提供标签;您必须明确允许访问。您可以在实例启动时或启动后在正在运行或停止的实例上允许访问。您还可以通过在启动模板中指定标签来允许访问标签。使用模板启动的实例允许访问实例元数据中的标签。
如果您添加或移除实例标签,则实例元数据将在实例运行期间更新,无需停止后再启动实例。
允许访问实例元数据中的标签
默认情况下,无法访问实例元数据中的实例标签。对于每个实例,您必须使用以下方法之一明确允许访问。
要允许使用控制台访问实例元数据中的标签
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,然后依次选择 Actions(操作)、Instance settings(实例设置)、Allow tags in instance metadata(允许实例元数据中的标签)。
-
要允许访问实例元数据中的标签,请选择 Allow(允许)复选框。
-
选择保存。
要允许使用 AWS CLI 在启动时访问实例元数据中的标签
使用 run-instances 命令并将 InstanceMetadataTags
设置为 enabled
。
aws ec2 run-instances \ --image-id
ami-0abcdef1234567890
\ --instance-typec3.large
\ ... --metadata-options "InstanceMetadataTags=enabled"
要允许使用 AWS CLI 访问正在运行或已停止的实例上的实例元数据中的标签
请使用 modify-instance-metadata-options 命令,并将 --instance-metadata-tags
设置为 enabled
。
aws ec2 modify-instance-metadata-options \ --instance-id
i-123456789example
\ --instance-metadata-tags enabled
从实例元数据中检索标签
在允许访问实例元数据中的实例标签后,您可以从实例元数据访问 tags/instance
类别。有关更多信息,请参阅 检索实例元数据。
实例元数据服务版本 2
在您的 Amazon EC2 实例上运行以下示例,以检索 IMDSv2 的实例元数据。
实例元数据服务版本 1
在您的 Amazon EC2 实例上运行以下示例,以检索 IMDSv1 的实例元数据。
关闭对实例元数据中的标签的访问
要关闭对实例元数据中的实例标签的访问,请使用以下方法之一。您无需在启动时关闭对实例元数据上的实例标签的访问,因它处于关闭状态。
要使用控制台关闭对实例元数据中的标签的访问
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,然后依次选择 Actions(操作)、Instance settings(实例设置)、Allow tags in instance metadata(允许实例元数据中的标签)。
-
要关闭对实例元数据中的标签的访问,请清除 Allow(允许)复选框。
-
选择保存。
要使用 AWS CLI 关闭对实例元数据中的标签的访问
请使用 modify-instance-metadata-options 命令,并将 --instance-metadata-tags
设置为 disabled
。
aws ec2 modify-instance-metadata-options \ --instance-id
i-123456789example
\ --instance-metadata-tags disabled
查看是否允许使用 AWS CLI 访问实例元数据中的标签
使用 describe-instances 命令并指定实例 ID。使用 --query
参数在结果中仅显示实例元数据选项。
aws ec2 describe-instances \ --instance-ids
i-1234567890abcdef0
\ --query "Reservations[*].Instances[*].MetadataOptions"
下面是示例输出。InstanceMetadataTags
的值表明是否允许访问实例元数据中的标签。如果值为 enabled
,表示允许。如果值为 disabled
,表示不允许。
[
[
{
"State": "applied",
"HttpTokens": "required",
"HttpPutResponseHopLimit": 2,
"HttpEndpoint": "enabled",
"HttpProtocolIpv6": "disabled",
"InstanceMetadataTags": "enabled"
}
]
]