tl;dr
今更次郎な話かもしれないけど, 「そうなんだ〜」と思うことがあったのでメモっておきます.
どんなことなのか
「Amazon ECS のコンテナインスタンスってインスタンスタイプの変更は出来ない」ということです.
厳密に言うと, コンテナインスタンス EC2 自体のインスタンスタイプは変更は完了して無事に起動するのですが, コンテナインスタンス上で動く ecs-agent コンテナが起動しません.
コンテナインスタンスに SSH でログインして, ecs-agent を手動で起動させると /var/log/ecs-agent.log に以下のようなログを吐いてコンテナが異常終了します.
2019-02-20T02:49:28Z [ERROR] Unable to register as a container instance with ECS: ClientException: Container instance type changes are not supported. Container instance xxxxxxxxxxxxx-db72-4694-934b-xxxxxxxxxxxxxx was previously registered as t2.large. status code: 400, request id: 23c5fd6b-34ba-11e9-8259-a997a65d9f18 2019-02-20T02:49:28Z [ERROR] Error re-registering: ClientException: Container instance type changes are not supported. Container instance xxxxxxxxxxxxx-db72-4694-934b-xxxxxxxxxxxxxx was previously registered as t2.large. status code: 400, request id: 23c5fd6b-34ba-11e9-8259-a997a65d9f18 2019-02-20T02:49:28Z [CRITICAL] The current instance type does not match the registered instance type. Please revert the instance type change, or alternatively launch a new instance: ClientException: Container instance type changes are not supported. Container instance xxxxxxxxxxxxx-db72-4694-934b-xxxxxxxxxxxxxx was previously registered as t2.large. status code: 400, request id: 23c5fd6b-34ba-11e9-8259-a997a65d9f18
えー, そうなんだと思った次第です.
ドキュメント読め案件
— Yohei Kawahara(かっぱ) (@inokara) 2019年2月20日
コンテナインスタンスを停止してそのインスタンスタイプを変更することはできません。代わりに、コンテナインスタンスを終了し、必要なクラスター内の最新の Amazon ECS-optimized Amazon Linux 2 AMI で、必要なサイズの新しいコンテナインスタンスを起動することをお勧めします。
— Yohei Kawahara(かっぱ) (@inokara) 2019年2月20日
ドキュメント読め案件でした.
— Yohei Kawahara(かっぱ) (@inokara) 2019年2月20日
各コンテナインスタンスに、それぞれに固有の状態情報がコンテナインスタンスにローカルで保存され、Amazon ECS にも保存されているため、以下のような制限があります。
コンテナインスタンスに固有の情報が保存されるが所以の話で, その情報との整合性が取れない (取らない?) 為, ecs-agent が起動しないようです. 固有の情報がプレーンなテキストでコンテナインスタンスに保存されているのであれば, そのテキストを書き換えてしまえば良いのではと思いましたが, 試せていません. そんなことをするよりも, 新しく作り直した方が早いですし, リソースは使い捨てという考え方からするとこちらの仕様の方が正しいのかもしれません.
以上
学びの多い日常の 1 コマでした.