

# Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す
<a name="bootstrap_container_instance"></a>

Amazon EC2 インスタンスを起動するときに、ユーザーデータを EC2 インスタンスに渡すことができます。インスタンスの起動時に、データを使って、一般的な自動設定タスクを実行したり、スクリプトを実行したりできます。Amazon ECS では、ユーザーデータの最も一般的なユースケースは、設定情報を Docker デーモンと Amazon ECS コンテナエージェントに渡すことです。

クラウドブートフック、シェルスクリプト、`cloud-init` ディレクティブなど、複数タイプのユーザーデータを Amazon EC2 に渡すことができます。これらおよびその他の形式の種類の詳細については、「[Cloud-Init のドキュメント](https://cloudinit.readthedocs.io/en/latest/explanation/format.html)」を参照してください。

Amazon EC2 起動ウィザードの使用時にユーザーデータを渡すには、「[Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)」を参照してください。

コンテナインスタンスがデータを渡すようにするための設定を、コンテナエージェント設定または Docker デーモン設定で行うことができます。

## Amazon ECS コンテナエージェント
<a name="bootstrap_container_agent"></a>

Amazon ECS に最適化された AMI の Linux バリアントは、コンテナエージェントの開始時に `/etc/ecs/ecs.config` ファイルでエージェント設定データを検索します。Amazon EC2 ユーザーデータを使用して、起動時に、この設定データを指定することができます。利用可能な Amazon ECS コンテナエージェントの設定変数の詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。

クラスター名など、単一エージェントの設定変数のみを設定するには、**echo** を使用して、変数を設定ファイルにコピーします。

```
#!/bin/bash
echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
```

`/etc/ecs/ecs.config` に書き込む変数が複数ある場合は、以下の `heredoc` 形式を使用します。この形式は **cat** で始まる行と `EOF` の間のすべてを設定ファイルに書き込みます。

```
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=MyCluster
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}
ECS_LOGLEVEL=debug
ECS_WARM_POOLS_CHECK=true
EOF
```

カスタムインスタンス属性を設定するには、`ECS_INSTANCE_ATTRIBUTES` 環境変数を設定します。

```
#!/bin/bash
cat <<'EOF' >> ecs.config
ECS_INSTANCE_ATTRIBUTES={"envtype":"prod"}
EOF
```

## Docker デーモン
<a name="bootstrap_docker_daemon"></a>

Docker デーモンの構成情報は Amazon EC2 ユーザーデータで指定できます。設定オプションの詳細については、「[Docker デーモンのドキュメント](https://docs.docker.com/reference/cli/dockerd/)」を参照してください。

**注記**  
カスタム Docker 設定は、将来の Amazon ECS の変更や機能と警告なしに競合する可能性があるため、AWS はサポートしていません。

以下の例では、カスタムオプションが Docker デーモン構成ファイル `/etc/docker/daemon.json` に追加され、インスタンスの起動時にユーザーデータで指定されます。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"debug": true}
EOF
systemctl restart docker --no-block
```

以下の例では、カスタムオプションが Docker デーモン構成ファイル `/etc/docker/daemon.json` に追加され、インスタンスの起動時にユーザーデータで指定されます。この例は、Docker デーモン設定ファイルの docker-proxy を無効にする方法を示します。

```
#!/bin/bash
cat <<EOF >/etc/docker/daemon.json
{"userland-proxy": false}
EOF
systemctl restart docker --no-block
```