Amazon ECS

Amazon EC2 Container Service

Q&A

簡単に試す方法は?

[2] ヘルプウィザードへのリンクがあります。

Docker image の更新時に新しい方に差し替えたい

[4] 更新完了後に aws CLI を使う。

[5] register-task-definition で新しいイメージを使う task definition (の revision) を登録する。

[6] update-service で service が使う task definition を新しいものに差し替える。このとき --task-definition で revision 番号なしで指定しておけば、最新のものになる。

[7] 後は新しい方の container が起動して安定したら、古い方は自動的に停止する。

[13] 新しい方に完全に切り替わるまで、すこし時間がかかります。

[21] インスタンスが1つしかないと、新しい方が起動できずに切り替わらないかもしれません。

認証付き Docker image を使いたい

[9] 動作させるインスタンスの /etc/ecs/ecs.config に認証情報を書いておく必要があります >>8

[11] インスタンスの (Auto Scaling 起動設定の) ユーザーデータとして、 /etc/ecs/ecs.config を作成する過程を書いておけばOK >>10

[12] これをしておかないと Web の management console ではなぜか起動しないように見えます。 (当該インスタンスでログを見たら認証エラーとわかります。)

Cluster にインスタンスを紐付けるには?

[14] Web の management console にはインスタンスと Cluster を直接紐付ける UI はなくて、動作させるインスタンスの /etc/ecs/ecs.config で cluster の名前を指定する必要があります。

[15] インスタンスの (Auto Scaling 起動設定の) ユーザーデータとして、 /etc/ecs/ecs.config を作成する過程を書いておけばOK >>10

なぜか動かない、動いてすぐ止まる

[16] Docker image の取得に失敗しているか、サーバーが正常に動作していないか、 ELB のヘルスチェックに失敗しているかもしれません。

[17] 動作するはずのインスタンスで /var/log/ecs/ に何か出ていないか調べてみましょう。 (認証エラー → >>9) (メモリー不足 → インスタンスの種類を変えてみる)

[18] docker コマンドが使えるはずなので、手動で動かして試してみましょう。

[19] 手動で正常にサーバーが動いているのに ELB を通して外部からアクセスできる状態にならないなら、死活検査でエラーになっている可能性もあります。

[22] ELB からインスタンスにアクセスできるかセキュリティグループをチェックしましょう。

[20] 検査する URL は存在するか、認証リダイレクトになっていないか確認しましょう。 Host: がサーバーにとって想定外だったときに正しいホストリダイレクトする仕組みにしていないかもチェック。

メモ

[23] ecs-agent running but not connected after a while, generates AGENT errors trying to start tasks · Issue #316 · aws/amazon-ecs-agent ( ()) https://github.com/aws/amazon-ecs-agent/issues/316

[24] ELB が見ていないポートの container を見るようにサービスを更新しようとしても、

A client error (InvalidParameterException) occurred when calling the UpdateService operation: The load balancer elb12345 did not have a listener configured to route traffic to port 12345.

... というエラーになります。

[25] Amazon ECS におけるコンテナ インスタンス ドレイニングの自動化方法 | Amazon Web Services ブログ () https://aws.amazon.com/jp/blogs/news/how-to-automate-container-instance-draining-in-amazon-ecs/

[26] Fargate

[28] Container Instance Draining - Amazon Elastic Container Service () http://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-draining.html

[27] Amazon ECSのCloudWatchメトリクスとAutoScaling戦略 | Developers.IO () https://dev.classmethod.jp/cloud/aws/amazon-ecs-cloudwatch-metrics/