

# 配置 Amazon ECS Linux 容器实例以接收竞价型实例通知
<a name="spot-instance-draining-linux-container"></a>

当 Spot 价格超过您请求的最高价格或容量不再可用时，Amazon EC2 会终止、停止或休眠您的竞价型实例。Amazon EC2 为终止和停止操作提供两分钟的竞价型实例中断通知。它没有提供休眠操作的两分钟通知。如果在实例上开启了 Amazon ECS 竞价型实例耗尽功能，则 Amazon ECS 会收到竞价型实例中断通知，并将实例置于 `DRAINING` 状态。

**重要**  
当 Auto Scaling Capacity Rebalancing 移除实例时，Amazon ECS 不会收到来自 Amazon EC2 的通知。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 容器重新平衡](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)。

当某个容器实例设置为 `DRAINING` 时，Amazon ECS 将阻止安排放置在该容器实例上的新任务。连接即将耗尽的容器实例上处于 `PENDING` 状态的服务任务将立即停止。如果集群中有可用的容器实例，则在这些容器实例上启动替换服务任务。

竞价型实例耗尽功能在默认情况下处于关闭状态。

您可以在启动实例时开启竞价型实例耗尽功能。将以下脚本添加到**用户数据**字段。将 *MyCluster* 替换为要向其注册容器实例的集群名称。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
EOF
```

有关更多信息，请参阅 [启动 Amazon ECS Linux 容器实例](launch_container_instance.md)。

**要为现有容器实例开启竞价型实例耗尽**

1. 通过 SSH 连接到竞价型实例。

1. 编辑 `/etc/ecs/ecs.config` 文件并添加以下内容：

   ```
   ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
   ```

1. 重新启动 `ecs` 服务。
   + 对于经 Amazon ECS 优化的 Amazon Linux 2 AMI：

     ```
     sudo systemctl restart ecs
     ```

1. （可选）您可以通过查询代理自检 API 操作，验证代理是否正在运行并查看有关新容器实例的一些信息。有关更多信息，请参阅 [Amazon ECS 容器自检](ecs-agent-introspection.md)。

   ```
   curl http://localhost:51678/v1/metadata
   ```