

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Elastic Beanstalk 环境的实例上配置 IMDS
<a name="environments-cfg-ec2-imds"></a>

本主题介绍实例元数据服务（IMDS）。

*实例元*数据是与亚马逊弹性计算云 (Amazon EC2) 实例相关的数据，应用程序可以使用这些数据来配置或管理正在运行的实例。实例元数据服务（IMDS）是实例上的组件，在实例上进行编码，用于安全访问实例元数据。这些代码可以是您的环境实例上的 Elastic Beanstalk 平台代码 Amazon 、您的应用程序可能正在使用的软件开发工具包，甚至是您的应用程序自己的代码。有关更多信息，请参阅 *Amazon [用户指南中的实例元数据和](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) EC2 用户*数据。

代码可以使用以下两种方法之一从正在运行的实例访问实例元数据：实例元数据服务版本 1 (IMDSv1) 或实例元数据服务版本 2 (IMDSv2)。 IMDSv2 使用面向会话的请求并缓解了几种可用于尝试访问 IMDS 的漏洞。有关这两种方法的信息，请参阅 *Amazon EC2 用户指南*中的[配置实例元数据服务](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

**Topics**
+ [IMDS 平台支持](#environments-cfg-ec2-imds.plat)
+ [选择 IMDS 方法](#environments-cfg-ec2-imds.choose)
+ [使用 Elastic Beanstalk 控制台配置 IMDS](#environments-cfg-ec2-imds.console)
+ [aws:autoscaling:launchconfiguration 命名空间](#environments-cfg-ec2-imds.namespace)

## IMDS 平台支持
<a name="environments-cfg-ec2-imds.plat"></a>

在亚马逊 Linux 2、亚马逊 Linux 2023 和 Windows 服务器上运行的 Elastic Beanstalk 平台都支持和。 IMDSv1 IMDSv2有关更多信息，请参阅 [使用 Elastic Beanstalk 控制台配置 IMDS](#environments-cfg-ec2-imds.console)。

## 选择 IMDS 方法
<a name="environments-cfg-ec2-imds.choose"></a>

在确定希望环境支持的 IMDS 方法时，请考虑以下使用案例：
+ *Amazon SDK* — 如果您的应用程序使用 S Amazon DK，请确保使用最新版本的 SDK。调 Amazon SDKs用 IMDS，并 IMDSv2 尽可能使用较新的 SDK 版本。如果您禁用 IMDSv1，或者您的应用程序使用的是旧的 SDK 版本，IMDS 调用可能会失败。
+ *您的应用程序代码* — 如果您的应用程序发出 IMDS 调用，请考虑使用 Amazon SDK，这样您就可以进行调用，而不是直接发出 HTTP 请求。通过这种方式，您无需进行代码更改即可在 IMDS 方法之间切换。S Amazon DK IMDSv2 尽可能使用。
+ *Elastic Beanstalk* 平台代码 — 我们的代码 Amazon 通过 SDK 进行 IMDS 调用， IMDSv2 因此可以在所有支持的平台版本上使用。如果您的代码使用 S up-to-date Amazon DK 并通过 SDK 进行所有 IMDS 调用，则可以放心地禁用 IMDSv1。

## 使用 Elastic Beanstalk 控制台配置 IMDS
<a name="environments-cfg-ec2-imds.console"></a>

您可以在 Elastic Beanstalk 控制台中修改 Elastic Beanstalk 环境 EC2 的亚马逊实例配置。

**重要**  
`DisableIMDSv1` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

**在 Elastic Beanstalk 控制 EC2 台中为您的亚马逊实例配置 IMDS**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Instance traffic and scaling**（实例流量和扩展）配置类别中，选择 **Edit**（编辑）。

1. 将 “**禁用 IMDSv1**” 设置为强制执行 IMDSv2。清除 **“禁 IMDSv1用**” 可同时启用 IMDSv1 和 IMDSv2。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## aws:autoscaling:launchconfiguration 命名空间
<a name="environments-cfg-ec2-imds.namespace"></a>

您可以使用 `aws:autoscaling:launchconfiguration` 命名空间中的[配置选项](command-options.md)在环境实例上配置 IMDS。

**重要**  
`DisableIMDSv1` 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略，则在更新环境配置时，创建或更新环境可能会失败。有关更多信息和重要注意事项，请参阅[将 Elastic Beanstalk 环境迁移到启动模板](environments-cfg-autoscaling-launch-templates.md)。

以下[配置文件](ebextensions.md)示例禁止 IMDSv1 使用该`DisableIMDSv1`选项。

```
option_settings:
  aws:autoscaling:launchconfiguration:
    DisableIMDSv1: true
```

将 “**禁用 IMDSv1**” 设置为 `true` “禁用” IMDSv1 并强制执行 IMDSv2。

将 “**禁用 IMDSv1**” 设置为`false`，可同时启用 IMDSv1 和 IMDSv2。