为现有实例修改实例元数据选项 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为现有实例修改实例元数据选项

您可以修改现有实例的实例元数据选项。

您还可以创建 IAM policy,以阻止用户修改现有实例上的实例元数据选项。要控制哪些用户可以修改实例元数据选项,请指定一个策略,阻止除具有指定角色的用户以外的所有用户使用 ModifyInstanceMetadataOptions API。有关示例 IAM policy,请参阅 使用实例元数据

查询现有实例的实例元数据选项

您可以使用以下方法之一查询现有实例的实例元数据选项。

Console
使用控制台查询现有实例的实例元数据选项
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 依次选择操作实例设置修改实例元数据选项

  5. 修改实例元数据选项对话框中查看当前实例元数据选项。

Amazon CLI
使用 Amazon CLI 查询现有实例的实例元数据选项

使用 describe-instances CLI 命令。

aws ec2 describe-instances \ --instance-id i-1234567898abcdef0 \ --query 'Reservations[].Instances[].MetadataOptions'
PowerShell
使用 Tools for PowerShell 查询现有实例的实例元数据选项

使用 Get-EC2Instance Cmdlet。

(Get-EC2Instance ` -InstanceId i-1234567898abcdef0).Instances.MetadataOptions

要求使用 IMDSv2

使用以下方法之一修改现有实例上的实例元数据选项,以要求在请求实例元数据时使用 IMDSv2。如果 IMDSv2 是必需的,则无法使用 IMDSv1。

注意

在要求必须使用 IMDSv2 之前,请确保该实例没有进行 IMDSv1 调用。MetadataNoToken CloudWatch 指标会跟踪 IMDSv1 调用。当 MetadataNoToken 记录某个实例的 IMDSv2 使用量为零时,就可以要求该实例必须使用 IMDSv2。

Console
要求在现有实例上使用 IMDSv2
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 依次选择操作实例设置修改实例元数据选项

  5. 修改实例元数据选项对话框中,执行以下操作:

    1. 对于实例元数据服务,选择启用

    2. 对于IMDSv2,选择必需

    3. 选择保存

Amazon CLI
要求在现有实例上使用 IMDSv2

请使用 modify-instance-metadata-options CLI 命令,并将 http-tokens 参数设置为 required。在为 http-tokens 指定值时,还必须将 http-endpoint 设置为 enabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-tokens required \ --http-endpoint enabled
PowerShell
要求在现有实例上使用 IMDSv2

使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpTokens 参数设置为 required。在为 HttpTokens 指定值时,还必须将 HttpEndpoint 设置为 enabled

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpTokens required ` -HttpEndpoint enabled).InstanceMetadataOptions

恢复使用 imdsv1

如果 IMDSv2 是必需的,则 IMDSv1 在请求实例元数据时无法正常工作。如果 IMDSv2 是可选的,则 IMDSv2 和 IMDSv1 都将正常工作。因此,要恢复 IMDSv1,请使用以下方法之一将 IMDSv2 设为可选。

Console
恢复在实例上使用 IMDSv1
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 依次选择操作实例设置修改实例元数据选项

  5. 修改实例元数据选项对话框中,执行以下操作:

    1. 对于实例元数据服务,请确保选择启用

    2. 对于 IMDSv2,选择可选

    3. 选择保存

Amazon CLI
恢复在实例上使用 IMDSv1

您可以使用 modify-instance-metadata-options CLI 命令并将 http-tokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-tokens optional \ --http-endpoint enabled
PowerShell
恢复在实例上使用 IMDSv1

您可以使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpTokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpTokens optional ` -HttpEndpoint enabled).InstanceMetadataOptions

更改 PUT 响应跃点限制

对于现有的实例,您可以更改 PUT 响应跃点数限制设置。

目前仅 Amazon CLI 和 Amazon SDK 支持更改 PUT 响应跃点限制。

Amazon CLI
更改 PUT 响应跃点限制

请使用 modify-instance-metadata-options CLI 命令,并将 http-put-response-hop-limit 参数设置为所需的跃点数。在以下示例中,跃点数限制设置为 3。请注意,在为 http-put-response-hop-limit 指定值时,还必须将 http-endpoint 设置为 enabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-put-response-hop-limit 3 \ --http-endpoint enabled
PowerShell
更改 PUT 响应跃点限制

使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpPutResponseHopLimit 参数设置为所需的跃点数。在以下示例中,跃点数限制设置为 3。请注意,在为 HttpPutResponseHopLimit 指定值时,还必须将 HttpEndpoint 设置为 enabled

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpPutResponseHopLimit 3 ` -HttpEndpoint enabled).InstanceMetadataOptions

为实例启用 IPv6 端点

默认禁用 IPv6 端点。即使您已在仅 IPv6 子网中启动了实例,也是如此。IMDS 的 IPv6 端点只能在基于 Amazon Nitro System 构建的实例上访问。

目前,仅 Amazon CLI 和 Amazon SDK 支持为实例启用 IPv6 端点。

Amazon CLI
为实例启用 IPv6 端点

请使用 modify-instance-metadata-options CLI 命令,并将 http-protocol-ipv6 参数设置为 enabled。请注意,在为 http-protocol-ipv6 指定值时,还必须将 http-endpoint 设置为 enabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-protocol-ipv6 enabled \ --http-endpoint enabled
PowerShell
为实例启用 IPv6 端点

使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpProtocolIpv6 参数设置为 enabled。请注意,在为 HttpProtocolIpv6 指定值时,还必须将 HttpEndpoint 设置为 enabled

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpProtocolIpv6 enabled ` -HttpEndpoint enabled).InstanceMetadataOptions

开启对实例元数据的访问权限

您可以通过启用实例上 IMDS 的 HTTP 端点来开启对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以随时通过禁用 HTTP 端点来撤消该更改。

使用以下方法之一,即可开启对实例上实例元数据的访问权限。

Console
开启对实例元数据的访问权限
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 依次选择操作实例设置修改实例元数据选项

  5. 修改实例元数据选项对话框中,执行以下操作:

    1. 对于实例元数据服务,选择启用

    2. 选择保存

Amazon CLI
开启对实例元数据的访问权限

请使用 modify-instance-metadata-options CLI 命令,并将 http-endpoint 参数设置为 enabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-endpoint enabled
PowerShell
开启对实例元数据的访问权限

使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpEndpoint 参数设置为 enabled

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpEndpoint enabled).InstanceMetadataOptions

关闭对实例元数据的访问

您可以通过禁用实例上 IMDS 的 HTTP 端点来关闭对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以随时启用 HTTP 终端节点以撤消该更改。

使用以下方法之一,即可关闭对实例上实例元数据的访问权限。

Console
关闭对实例元数据的访问
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例。

  4. 依次选择操作实例设置修改实例元数据选项

  5. 修改实例元数据选项对话框中,执行以下操作:

    1. 对于实例元数据服务,清除启用

    2. 选择保存

Amazon CLI
关闭对实例元数据的访问

请使用 modify-instance-metadata-options CLI 命令,并将 http-endpoint 参数设置为 disabled

aws ec2 modify-instance-metadata-options \ --instance-id i-1234567898abcdef0 \ --http-endpoint disabled
PowerShell
关闭对实例元数据的访问

使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpEndpoint 参数设置为 disabled

(Edit-EC2InstanceMetadataOption ` -InstanceId i-1234567898abcdef0 ` -HttpEndpoint disabled).InstanceMetadataOptions