

# 注销 Amazon ECS 外部实例
<a name="ecs-anywhere-deregistration"></a>

我们建议您在完成使用实例后，从 Amazon ECS 和 AWS Systems Manager 注销该实例。注销后，容器实例再也不能接受新任务。

如果注销时容器实例上有正在运行的任务，这些任务将保持运行，直到通过其他方式停止为止。但是，这些任务不再由 Amazon ECS 监控或说明。如果外部实例上的这些任务是 Amazon ECS 服务的一部分，那么服务调度器将在不同的实例上启动该任务的另一个副本（如有可能）。

注销实例之后，请清理实例上剩余的 AWS 资源。然后，您可以将其注册到新的集群。

## 过程
<a name="ecs-anywhere-deregistration-procedure"></a>

------
#### [ AWS 管理控制台 ]

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2) 打开控制台。

1. 从导航栏中，选择您的外部实例将注册的区域。

1. 在导航窗格中，选择 **集群** 并选择托管外部实例的集群。

1. 在 **Cluster : *name***（集群：名称）页面上，选择 **Infrastructure**（基础设施）选项卡。

1. 在**容器实例**下，选择要取消注册的外部实例 ID。您将重新定向到容器实例详细信息页面。

1. 在**容器实例：*id*** 页面上，选择**取消注册**。

1. 查看注销消息。选择**注销 AWS Systems Manager** 以同时将外部实例注销为 Systems Manager 托管实例。选择**注销**。
**注意**  
您可以在 Systems Manager 控制台中将外部实例注销为 Systems Manager 托管实例。有关说明，请参阅《AWS Systems Manager 用户指南》**中的[在混合和多云环境中取消注册托管式节点](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-deregister-hybrid-nodes.html)。

1. 取消注册实例之后，清理本地服务器或虚拟机上的 AWS 资源。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/ecs-anywhere-deregistration.html)

------
#### [ AWS CLI ]

1. 您需要实例 ID 和容器实例 ARN，才能注销容器实例。如果没有这些值，则请运行以下命令

   请运行以下命令以获取实例 ID。

   您可以使用实例 ID（`instanceID`）来获取容器实例 ARN（`containerInstanceARN`）。

   ```
   instanceId=$(aws ssm describe-instance-information --region "{{ region }}" | jq ".InstanceInformationList[] |select(.IPAddress==\"{{ IPv4 Address }}\") | .InstanceId" | tr -d'"'
   ```

   运行以下命令。

   您可以在命令中使用 `containerInstanceArn` 作为参数来注销实例（`deregister-container-instance`）。

   ```
   instances=$(aws ecs list-container-instances --cluster "{{ cluster }}" --region "{{ region }}" | jq -c '.containerInstanceArns')
   containerInstanceArn=$(aws ecs describe-container-instances --cluster "{{ cluster }}" --region "{{ region }}" --container-instances $instances | jq ".containerInstances[] | select(.ec2InstanceId==\"{{ instanceId }}\") | .containerInstanceArn" | tr -d '"')
   ```

1.  运行以下命令以耗尽实例。

   ```
   aws ecs update-container-instances-state --cluster "{{ cluster }}" --region "{{ region }}" --container-instances "{{ containerInstanceArn }}" --status DRAINING
   ```

1. 容器实例耗尽后，运行以下命令注销该实例。

   ```
   aws ecs deregister-container-instance --cluster "{{ cluster }}" --region "{{ region }}" --container-instance "{{ containerInstanceArn }}"
   ```

1. 使用以下命令从 SSM 中移除容器实例。

   ```
   aws ssm deregister-managed-instance --region "{{ region }}" --instance-id "{{ instanceId }}"
   ```

1. 取消注册实例之后，清理本地服务器或虚拟机上的 AWS 资源。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECS/latest/developerguide/ecs-anywhere-deregistration.html)

------