Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す
Amazon EC2 インスタンスを起動するときに、ユーザーデータを EC2 インスタンスに渡すことができます。インスタンスの起動時に、データを使って、一般的な自動設定タスクを実行したり、スクリプトを実行したりできます。Amazon ECS では、ユーザーデータの最も一般的なユースケースは、設定情報を Docker デーモンと Amazon ECS コンテナエージェントに渡すことです。
クラウドブートフック、シェルスクリプト、cloud-init
ディレクティブなど、複数タイプのユーザーデータを Amazon EC2 に渡すことができます。これらおよびその他の形式の種類の詳細については、「Cloud-Init のドキュメント
Amazon EC2 起動ウィザードの使用時にユーザーデータを渡すには、「Amazon ECS Linux コンテナインスタンスの起動」を参照してください。
コンテナインスタンスがデータを渡すようにするための設定を、コンテナエージェント設定または Docker デーモン設定で行うことができます。
Amazon ECS コンテナエージェント
Amazon ECS に最適化された AMI の Linux バリアントは、コンテナエージェントの開始時に /etc/ecs/ecs.config
ファイルでエージェント設定データを検索します。Amazon EC2 ユーザーデータを使用して、起動時に、この設定データを指定することができます。利用可能な Amazon ECS コンテナエージェントの設定変数の詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
クラスター名など、単一エージェントの設定変数のみを設定するには、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 デーモン
Docker デーモンの構成情報は Amazon EC2 ユーザーデータで指定できます。設定オプションの詳細については、「Docker デーモンのドキュメント
以下の例では、カスタムオプションが 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