

# 创建和管理进程守护程序
<a name="managed-daemons-create-manage"></a>

注册进程守护程序任务定义后，创建一个进程守护程序以将其部署在各个 Amazon ECS 托管实例容量提供程序中。Amazon ECS 会自动在关联容量提供程序中的每个 Amazon EC2 实例上置放一个进程守护程序任务，并管理进程守护程序生命周期。

## 先决条件
<a name="managed-daemons-prerequisites"></a>

创建进程守护程序前，请验证您具有以下各项：
+ Amazon ECS 集群。
+ 与该集群关联的一个或多个 Amazon ECS 托管实例容量提供程序。
+ 注册的进程守护程序任务定义。

## 创建进程守护程序
<a name="managed-daemons-create"></a>

### AWS 管理控制台
<a name="managed-daemons-create-console"></a>

1. 打开 Amazon ECS 控制台。在左侧导航窗格中，选择**集群**，然后选择您的集群。

1. 选择**进程守护程序**选项卡，然后选择**创建**。

1. 对于**进程守护程序任务定义系列**，请从下拉列表中选择您的进程守护程序任务定义。

1. 对于**进程守护程序任务定义修订版**，选择要使用的修订版。将此项留空以使用最新的修订版。

1. 对于**进程守护程序名称**，输入唯一的名称。名称最多可以包含 255 个字母数字字符、连字符和下划线。

1. 对于**容量提供程序**，请选择一个或多个 Amazon ECS 托管实例容量提供程序。它们决定了哪些实例运行您的进程守护程序任务。

1. （可选）配置部署设置：
   + **耗尽百分比** - 要在更新期间同时耗尽的实例百分比。默认值：`25`。
   + **使用 CloudWatch 警报** - 开启以监控部署运行状况，并在警报触发时自动回滚。
   + **烘焙时间** - Amazon ECS 在完成部署之前将所有实例更新到新的进程守护程序修订版后等待的分钟数。在此期间，Amazon ECS 会监控 CloudWatch 警报，并在触发任何警报时自动回滚部署。默认值：`0`。

1. （可选）添加标签。

1. （可选）开启**启用 ECS Exec** 在进程守护程序容器中运行交互式命令以进行故障排除。

1. 查看您的配置，然后选择**创建**。

### AWS CLI
<a name="managed-daemons-create-cli"></a>

创建一个包含进程守护程序配置的 JSON 文件并运行 `create-daemon` 命令。

以下是示例 JSON 文件：

```
{
    "clusterArn": "arn:aws:ecs:{{us-east-1}}:{{123456789012}}:cluster/{{my-daemon-cluster}}",
    "daemonName": "{{my-monitoring-daemon}}",
    "daemonTaskDefinitionArn": "arn:aws:ecs:{{us-east-1}}:{{123456789012}}:daemon-task-definition/{{my-daemon-task}}:1",
    "capacityProviderArns": [
        "arn:aws:ecs:{{us-east-1}}:{{123456789012}}:capacity-provider/{{my-daemon-capacity-provider}}"
    ]
}
```

运行以下命令，以创建进程守护程序：

```
aws ecs create-daemon --cli-input-json file://create-daemon.json
```

**必填字段**
+ `daemonName` - 进程守护程序的唯一名称。
+ `clusterArn` - 集群的 ARN。
+ `daemonTaskDefinitionArn` - 进程守护程序任务定义的 ARN。
+ `capacityProviderArns` - Amazon ECS 托管实例容量提供程序 ARN 的数组。

**可选字段**
+ `deploymentConfiguration` - 用于自定义部署行为的 `DaemonDeploymentConfiguration` 对象。
+ `tags` - 用于标记的键值对。
+ `propagateTags` - 标签传播设置。
+ `clientToken` - 一个幂等性令牌。

## 验证进程守护程序部署
<a name="managed-daemons-verify"></a>

创建进程守护程序后，使用 AWS 管理控制台 或 AWS CLI 验证其状态。

### AWS 管理控制台
<a name="managed-daemons-verify-console"></a>

1. 打开 Amazon ECS 控制台。在左侧导航窗格中，选择**集群**，然后选择您的集群。

1. 选择**进程守护程序**选项卡。

1. 验证您的进程守护程序是否显示**活动**状态。

1. 选择**任务**选项卡，确认每个容器实例上都运行了一个进程守护程序任务。

### AWS CLI
<a name="managed-daemons-verify-cli"></a>

请运行以下命令来验证进程守护程序状态：

```
aws ecs list-daemons \
    --cluster-arn arn:aws:ecs:{{us-east-1}}:{{123456789012}}:cluster/{{my-daemon-cluster}}
```

```
aws ecs describe-daemons \
    --daemon-arn arn:aws:ecs:{{us-east-1}}:{{123456789012}}:daemon/{{my-daemon-cluster}}/{{my-monitoring-daemon}}
```

## 更新进程守护程序
<a name="managed-daemons-update"></a>

要使用新的任务定义修订版更新进程守护程序或添加容量提供程序，请使用 AWS 管理控制台 或 AWS CLI。这将在所有实例中触发滚动部署。

### AWS 管理控制台
<a name="managed-daemons-update-console"></a>

1. 打开 Amazon ECS 控制台。在左侧导航窗格中，选择**集群**，然后选择您的集群。

1. 选择**进程守护程序**选项卡，然后选择要更新的进程守护程序。

1. 选择**更新**。

1. 对于**进程守护程序任务定义修订版**，选择新修订版。

1. （可选）更新容量提供程序或部署设置。

1. 选择**更新**以开始滚动部署。

### AWS CLI
<a name="managed-daemons-update-cli"></a>

运行 `update-daemon` 命令：

```
aws ecs update-daemon \
    --daemon-arn arn:aws:ecs:{{us-east-1}}:{{123456789012}}:daemon/{{my-daemon-cluster}}/{{my-monitoring-daemon}} \
    --daemon-task-definition-arn arn:aws:ecs:{{us-east-1}}:{{123456789012}}:daemon-task-definition/{{my-daemon-task}}:2 \
    --capacity-provider-arns arn:aws:ecs:{{us-east-1}}:{{123456789012}}:capacity-provider/{{my-daemon-capacity-provider}}
```

**重要**  
当您在 `UpdateDaemon` 请求中提供进程守护程序配置设置时，Amazon ECS 将使用您指定的设置而不是默认设置。进程守护程序配置设置（包括标签和 enable execute 命令标志）不会在两次更新之间保持不变。每次调用 `UpdateDaemon` 都必须包括要应用的全套配置设置。请求中省略的所有设置都将恢复为其默认值。

## 删除进程守护程序
<a name="managed-daemons-delete"></a>

要删除进程守护程序，请使用 AWS 管理控制台 或 AWS CLI。等待所有进程守护程序任务停止，然后再删除容量提供程序或集群。

### AWS 管理控制台
<a name="managed-daemons-delete-console"></a>

1. 打开 Amazon ECS 控制台。在左侧导航窗格中，选择**集群**，然后选择您的集群。

1. 选择**进程守护程序**选项卡，然后选择您要删除的进程守护程序。

1. 选择**删除**。

1. 在确认对话框中，选择**删除**以确认。

### AWS CLI
<a name="managed-daemons-delete-cli"></a>

运行 `delete-daemon` 命令：

```
aws ecs delete-daemon \
    --daemon-arn arn:aws:ecs:{{us-east-1}}:{{123456789012}}:daemon/{{my-daemon-cluster}}/{{my-monitoring-daemon}}
```