

# デーモンの作成と管理
<a name="managed-daemons-create-manage"></a>

デーモンタスク定義を登録したら、デーモンを作成して Amazon ECS マネージドインスタンスキャパシティプロバイダーにデプロイします。Amazon ECS は、関連付けられたキャパシティプロバイダー内のすべての Amazon EC2 インスタンスに 1 つのデーモンタスクを自動的に配置し、デーモンのライフサイクルを管理します。

## 前提条件
<a name="managed-daemons-prerequisites"></a>

デーモンを作成する前に、以下があることを確認します:
+ Amazon ECS クラスター。
+ クラスターに関連付けられた 1 つまたは複数の 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. [**キャパシティプロバイダー**] では、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. [**タスク**] タブを選択して、各コンテナインスタンスで 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}}
```