#やりたいこと
ECSクラスターを作った後、追加でEC2インスタンスをアタッチしたい。
#EC2インスタンスの設定
ECSクラスターはすでに作ってあるという前提で話を進める。
クラスターにアタッチするために、インスタンスにはいくつか設定が必要だ。
###1. IAMロールは、ecsInstanceRole
にする。
起動時にロールの設定項目がある.
ecsInstanceRole
が存在しない場合は、公式を参考に自分で作成する。
###2. ECSコンテナエージェントをインストールする。
インスタンス起動後にsshして、GitHubから入手できる。
###手順2を省略する方法
インスタンスのAMIをAmazon ECS-Optimized Amazon Linux 2 AMIに設定すれば、手順2は不要。
###3. コンフィグファイル等を設定する。
手順1、2を踏んだ上でインスタンスを作成すると、インスタンスは、aws側が自動で生成するdefault
という名前のクラスターに自動的にアタッチされる。自分で作成したクラスターにアタッチするには、インスタンスのコンフィグを書き換えなければならない。
インスタンスにsshして、/etc/ecs/ecs.config
を編集する。
ECS_CLUSTER=YOUR_CLUSTER_NAME
YOUR_CLUSTER_NAME
は、アタッチしたいクラスターの名前にする。
###4. コンフィグの変更を適応する
私が詰まったポイントはココ。
インスタンスのログは、/var/log/ecs/ecs-agent.log.timestamp
にあるのだが、そこを見ると
[CRITICAL] Data mismatch; saved cluster 'default' does not match configured cluster 'YOUR_CLUSTER_NAME'. Perhaps you want to delete the configured checkpoint file?
と出力される。セーブされてるクラスターとコンフィグのクラスターが一致してないよー
と書いてある。
要するに、先程コンフィグに書いたクラスター名は、まだインスタンス上ではセーブされていないということ。
ということで、rm /var/lib/ecs/data/*
でチェックポイントファイルの削除を行う。
チェックポイントファイルは、インスタンスの起動時に自動で生成されるので、削除して問題ない。
削除をした後は、忘れずにインスタンスの再起動を行うこと。
#これでOK
以上の設定をすれば、クラスターはECSインスタンスと自動でつながる。
クラスターのコンソールのECSインスタンスのところに、アタッチされたインスタンスが表示されるはずだ。