为现有实例修改实例元数据选项
您可以修改现有实例的实例元数据选项。
您还可以创建 IAM policy,以阻止用户修改现有实例上的实例元数据选项。要控制哪些用户可以修改实例元数据选项,请指定一个策略,阻止除具有指定角色的用户以外的所有用户使用 ModifyInstanceMetadataOptions API。有关示例 IAM policy,请参阅 使用实例元数据。
如果使用了声明式策略来配置实例元数据选项,则无法在账户中直接对选项进行修改。有关更多信息,请参阅《AWS Organizations User Guide》中的 Declarative policies。
要求使用 IMDSv2
使用以下方法之一修改现有实例上的实例元数据选项,以要求在请求实例元数据时使用 IMDSv2。如果 IMDSv2 是必需的,则无法使用 IMDSv1。
在要求必须使用 IMDSv2 之前,请确保该实例没有进行 IMDSv1 调用。MetadataNoToken CloudWatch 指标会跟踪 IMDSv1 调用。当 MetadataNoToken 记录某个实例的 IMDSv1 使用量为零时,就可以要求该实例必须使用 IMDSv2。
- Console
-
- AWS CLI
-
要求在现有实例上使用 IMDSv2
请使用 modify-instance-metadata-options CLI 命令,并将 http-tokens 参数设置为 required。在为 http-tokens 指定值时,还必须将 http-endpoint 设置为 enabled。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-tokens required \
--http-endpoint enabled
- PowerShell
-
要求在现有实例上使用 IMDSv2
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpTokens 参数设置为 required。在为 HttpTokens 指定值时,还必须将 HttpEndpoint 设置为 enabled。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpTokens required `
-HttpEndpoint enabled).InstanceMetadataOptions
恢复使用 imdsv1
如果 IMDSv2 是必需的,则 IMDSv1 在请求实例元数据时无法正常工作。如果 IMDSv2 是可选的,则 IMDSv2 和 IMDSv1 都将正常工作。因此,要恢复 IMDSv1,请使用以下方法之一将 IMDSv2 设为可选。
- Console
-
- AWS CLI
-
恢复在实例上使用 IMDSv1
您可以使用 modify-instance-metadata-options CLI 命令并将 http-tokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-tokens optional \
--http-endpoint enabled
- PowerShell
-
恢复在实例上使用 IMDSv1
您可以使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpTokens 设置为 optional,以在请求实例元数据时恢复使用 IMDSv1。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpTokens optional `
-HttpEndpoint enabled).InstanceMetadataOptions
更改 PUT 响应跃点限制
对于现有的实例,您可以更改 PUT 响应跃点数限制设置。
目前仅 AWS CLI 和 AWS SDK 支持更改 PUT 响应跃点限制。
- AWS 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-1234567890abcdef0 \
--http-put-response-hop-limit 3 \
--http-endpoint enabled
- PowerShell
-
更改 PUT 响应跃点限制
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpPutResponseHopLimit 参数设置为所需的跃点数。在以下示例中,跃点数限制设置为 3。请注意,在为 HttpPutResponseHopLimit 指定值时,还必须将 HttpEndpoint 设置为 enabled。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpPutResponseHopLimit 3 `
-HttpEndpoint enabled).InstanceMetadataOptions
启用 IMDS IPv4 和 IPv6 端点
实例上的 IMDS 有两个端点:IPv4 (169.254.169.254) 和 IPv6 ([fd00:ec2::254])。启用 IMDS 时,会自动启用 IPv4 端点。即使将实例启动到仅限 IPv6 的子网中,IPv6 端点仍处于禁用状态。要启用 IPv6 端点,需将其显式启用。启用 IPv6 端点后,IPv4 端点将保持启用状态。
您可以在启动实例时或启动实例之后启用 IPv6 端点。
目前,仅 AWS CLI 和 AWS SDK 支持在启动实例后启用 IMDS IPv6 端点。
- AWS CLI
-
为实例启用 IMDS 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-1234567890abcdef0 \
--http-protocol-ipv6 enabled \
--http-endpoint enabled
- PowerShell
-
为实例启用 IMDS IPv6 端点
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpProtocolIpv6 参数设置为 enabled。请注意,在为 HttpProtocolIpv6 指定值时,还必须将 HttpEndpoint 设置为 enabled。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpProtocolIpv6 enabled `
-HttpEndpoint enabled).InstanceMetadataOptions
您可以通过启用实例上 IMDS 的 HTTP 端点来开启对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以随时通过禁用 HTTP 端点来撤消该更改。
使用以下方法之一,即可开启对实例上实例元数据的访问权限。
- Console
-
- AWS CLI
-
开启对实例元数据的访问权限
请使用 modify-instance-metadata-options CLI 命令,并将 http-endpoint 参数设置为 enabled。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-endpoint enabled
- PowerShell
-
开启对实例元数据的访问权限
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpEndpoint 参数设置为 enabled。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpEndpoint enabled).InstanceMetadataOptions
您可以通过禁用实例上 IMDS 的 HTTP 端点来关闭对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以随时启用 HTTP 终端节点以撤消该更改。
使用以下方法之一,即可关闭对实例上实例元数据的访问权限。
- Console
-
- AWS CLI
-
关闭对实例元数据的访问
请使用 modify-instance-metadata-options CLI 命令,并将 http-endpoint 参数设置为 disabled。
aws ec2 modify-instance-metadata-options \
--instance-id i-1234567890abcdef0 \
--http-endpoint disabled
- PowerShell
-
关闭对实例元数据的访问
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpEndpoint 参数设置为 disabled。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567890abcdef0 `
-HttpEndpoint disabled).InstanceMetadataOptions
您可允许访问正在运行或已停止实例上的实例元数据中的标签。对于每个实例,您必须明确允许访问。如果允许访问,则实例标签键必须符合特定的字符限制,否则会出错。有关更多信息,请参阅 启用对实例元数据中标签的访问权限。