跳至内容

如何在 EC2 实例上配置实例元数据并激活标签?

2 分钟阅读
0

我想在我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上设置实例元数据服务 (IMDS)。

简短描述

您可以为所有 AWS 区域的 AWS 账户中的新实例设置默认 IMDS 功能。默认情况下,最新的实例类型使用实例元数据服务版本 2 (IMDSv2)。要在这些实例类型上使用实例元数据服务版本 1 (IMDSv1),必须在实例中手动激活 IMDSv1。除非必须使用 IMDSv1,否则最佳做法是使用 IMDSv2 以保证安全。

**重要事项:**如果您在实例上配置 IMDSv2,则 IMDSv1 将不再运行,使用 IMDSv1 的应用程序可能无法正常运行。在强制使用 IMDSv2 之前,请将使用 Amazon EC2 元数据的应用程序升级到支持 IMDSv2 的版本。有关 IMDSv1 与 IMDSv2 之间的区别的详细信息,请参阅使用实例元数据服务访问实例元数据

默认情况下,Amazon EC2 不提供对实例元数据中的实例标签的访问权限。您必须在实例启动时允许访问,或在启动后在正在运行或已停止的实例上允许访问。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

您可以组合使用以下方法来配置实例元数据。但是,您需要在实例启动时设置元数据选项的层级优先顺序

在 AMI 级别配置实例元数据

您可以将现有或新的亚马逊机器映像 (AMI) 配置为使用 IMDSv2。当使用已配置的 AMI 启动实例时,Amazon EC2 会自动将实例元数据版本设置为 IMDSv2,将跃点限制设置为 2

**重要事项:**请务必验证您的 AMI 软件是否支持 IMDSv2。将 imds-support 值设置为 v2.0 后,将无法恢复。重置 AMI 的唯一方法是使用底层快照创建新的 AMI。

要将新的 AMI 配置为使用 IMDSv2,请运行以下 register-image AWS CLI 命令:

aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
    --architecture x86_64 \
    --imds-support v2.0

**注意:**请将 my-image 替换为您的 AMI 名称,将 /dev/xvda 替换为您的根卷设备名称,将 snap-0123456789example 替换为您的快照 ID,将 x86_64 替换为您的架构。

要将现有 AMI 配置为使用 IMDSv2,请运行以下 modify-image-attribute 命令:

aws ec2 modify-image-attribute \
    --image-id ami-0123456789example \
    --imds-support v2.0

**注意:**请将 ami-0123456789example 替换为您的现有 AMI ID。

在启动模板中允许访问元数据中的标签

无法直接为 AMI 配置标签访问权限。必须创建 Amazon EC2 启动模板。在 Advanced details(高级详细信息)下,将 Allow tags in metadata(允许在元数据中使用标签)设置为 -。通过此启动模板启动的实例允许访问实例元数据中的所有实例标签。

在账户级别配置实例元数据

为账户中的所有实例设置 IMDSv2。或者,要允许 IMDSv1,则对于 Metadata version(元数据版本),请选择 V1 and V2 (token optional)(V1 和 V2(令牌可选))。要允许在账户级别访问实例元数据中的标签,请在 IMDS defaults(IMDS 默认值)下,将 Access to tags in metadata(访问元数据中的标签)设置为 Enabled(启用)。

**重要事项:**您必须为账户中的每个区域分别配置实例元数据。

在实例级别配置实例元数据

**注意:**AWS Identity and Access Management (IAM) 策略或服务控制策略 (SCP) 可能会限制您可以对实例设置所做的更改。

要在新实例上配置对 IMDS 和元数据中标签的访问权限,请在启动实例时展开 Advanced details(高级详细信息)。然后,配置以下设置:

  • 对于 Metadata accessible(元数据访问),选择 Enabled(启用)。
  • 对于 Metadata version(元数据版本),选择 V2 only (token required)(仅 V2(需要令牌))或 V1 and V2 (token optional)(V1 和 V2(令牌可选))。
    **注意:**如果您使用容器环境(例如 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Kubernetes Service (Amazon EKS)),则对于 Metadata response hop limit(元数据响应跃点限制),请选择 2
  • 对于 Access to tags in metadata(访问元数据中的标签),选择 Enabled(启用)。

要修改现有实例,请修改设置。要使用 IMDSv1 或 IMDSv2,对于 IMDSv2,请选择 Optional(可选)。要强制使用 IMDSv2,请选择 Required(必需)。然后,在 Instance settings(实例设置)下,选择 Allow tags in instance metadata(允许实例元数据中的标签)。

相关信息

Amazon EC2 Instance Metadata Service IMDSv2 by default(Amazon EC2 默认使用实例元数据服务 IMDSv2)

Get the full benefits of IMDSv2 and deactivate IMDSv1 across your AWS infrastructure(充分利用 IMDSv2 的全部优势,并在您的 AWS 基础架构中停用 IMDSv1)

AWS 官方已更新 10 个月前