Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
为现有实例修改实例元数据选项
您可以修改现有实例的实例元数据选项。
您还可以创建 IAM policy,以阻止用户修改现有实例上的实例元数据选项。要控制哪些用户可以修改实例元数据选项,请指定一个策略,阻止除具有指定角色的用户以外的所有用户使用 ModifyInstanceMetadataOptions API。有关示例 IAM policy,请参阅 使用实例元数据。
查询现有实例的实例元数据选项
您可以使用以下方法之一查询现有实例的实例元数据选项。
- Console
-
- 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
记录某个实例的 IMDSv1 使用量为零时,就可以要求该实例必须使用 IMDSv2。
- Console
-
要求在现有实例上使用 IMDSv2
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航窗格中,选择实例。
-
选择实例。
-
依次选择操作、实例设置、修改实例元数据选项。
-
在修改实例元数据选项对话框中,执行以下操作:
-
对于实例元数据服务,选择启用。
-
对于IMDSv2,选择必需。
-
选择保存。
- 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
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航窗格中,选择实例。
-
选择实例。
-
依次选择操作、实例设置、修改实例元数据选项。
-
在修改实例元数据选项对话框中,执行以下操作:
-
对于实例元数据服务,请确保选择启用。
-
对于 IMDSv2,选择可选。
-
选择保存。
- 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
启用 IMDS IPv4 和 IPv6 端点
实例上的 IMDS 有两个端点:IPv4 (169.254.169.254
) 和 IPv6 ([fd00:ec2::254]
)。启用 IMDS 时,会自动启用 IPv4 端点。即使将实例启动到仅限 IPv6 的子网中,IPv6 端点仍处于禁用状态。要启用 IPv6 端点,需将其显式启用。启用 IPv6 端点后,IPv4 端点将保持启用状态。
您可以在启动实例时或启动实例之后启用 IPv6 端点。
目前,仅 Amazon CLI 和 Amazon SDK 支持在启动实例后启用 IMDS IPv6 端点。
- Amazon 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-1234567898abcdef0
\
--http-protocol-ipv6 enabled \
--http-endpoint enabled
- PowerShell
-
为实例启用 IMDS IPv6 端点
使用 Edit-EC2InstanceMetadataOption Cmdlet 并将 HttpProtocolIpv6
参数设置为 enabled
。请注意,在为 HttpProtocolIpv6
指定值时,还必须将 HttpEndpoint
设置为 enabled
。
(Edit-EC2InstanceMetadataOption `
-InstanceId i-1234567898abcdef0
`
-HttpProtocolIpv6 enabled `
-HttpEndpoint enabled).InstanceMetadataOptions
您可以通过启用实例上 IMDS 的 HTTP 端点来开启对实例元数据的访问权限,无论您使用的是哪个版本的 IMDS。您可以随时通过禁用 HTTP 端点来撤消该更改。
使用以下方法之一,即可开启对实例上实例元数据的访问权限。
- Console
-
- 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
-
- 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