

# Amazon ECS 容器代理配置
<a name="ecs-agent-config"></a>

**适用于**：EC2 实例

Amazon ECS 容器代理支持很多配置选项，其中大多数选项可通过环境变量来设置。

如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Linux 变体启动的，则可以在 `/etc/ecs/ecs.config` 文件中设置这些环境变量，然后重新启动代理。您还可以在启动时将这些配置变量写入到具有 Amazon EC2 用户数据的容器实例。有关更多信息，请参阅 [引导启动 Amazon ECS Linux 容器实例以传递数据](bootstrap_container_instance.md)。

如果容器实例是使用经 Amazon ECS 优化的 AMI 的 Windows 变体启动的，则可以使用 PowerShell SetEnvironmentVariable 命令设置这些环境变量，然后重新启动代理。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[在启动包含用户数据输入的 EC2 实例时运行命令](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)和 [引导启动 Amazon ECS Windows 容器实例以传递数据](bootstrap_windows_container_instance.md)。

如果要手动启动 Amazon ECS 容器代理（对于没有经 Amazon ECS 优化的 AMI），则可以在用于启动代理的 **docker run** 命令中使用这些环境变量。将这些变量与语法 `--env=VARIABLE_NAME=VARIABLE_VALUE` 结合使用。对于敏感信息（如私有存储库的身份验证凭证），您应该将代理环境变量存储在一个文件中并利用 `--env-file path_to_env_file` 选项一次性将它们传递完。您可以使用以下命令来添加变量。

```
sudo systemctl stop ecs
sudo vi /etc/ecs/ecs.config 
# And add the environment variables with VARIABLE_NAME=VARIABLE_VALUE format.
sudo systemctl start ecs
```

## 使用主机 PID 命名空间运行 Amazon ECS 代理
<a name="ecs-agent-pid-namespace"></a>

默认情况下，Amazon ECS 代理使用自己的 PID 命名空间运行。在以下配置中，您可以将 Amazon ECS 代理配置为使用主机 PID 命名空间运行：
+ SELinux 强制模式已启用。
+ Docker 的 SELinux 安全策略设置为 true。

您可以通过在 `/etc/ecs/ecs.config` 文件中将 `ECS_AGENT_PID_NAMESPACE_HOST` 环境变量设置为 `true` 来配置此行为。启用此变量后，`ecs-init` 将使用主机的 PID 命名空间（`--pid=host`）启动 Amazon ECS 代理容器，从而允许代理在 SELinux 强制执行环境中正确引导自身。此功能支持 Amazon ECS 代理版本 `1.94.0` 及更高版本。

要启用此功能，请将以下行添加到您的 `/etc/ecs/ecs.config` 文件：

```
ECS_AGENT_PID_NAMESPACE_HOST=true
```

进行此更改后，请重启 Amazon ECS 代理以使更改生效：

```
sudo systemctl restart ecs
```

如果启用了 SELinux 强制执行模式并且将 Docker 安全策略设置为 true，即使设置了 `ECS_AGENT_PID_NAMESPACE_HOST=true`，以下功能也将不起作用。
+ Amazon ECS Exec
+ Amazon EBS 任务附加
+ Service Connect
+ 适用于 Amazon ECS 的 FireLens

## 可用参数
<a name="ecs-agent-availparam"></a>

有关可用的 Amazon ECS 容器代理配置参数的信息，请参阅 GitHub 上的 [Amazon ECS 容器代理](https://github.com/aws/amazon-ecs-agent/blob/master/README.md)。