Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す - Amazon Elastic Container Service

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