0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSの仕様変更によりECSでコンテナが起動しない

Posted at

はじめに

2024/10ごろ、これまで問題なくできていたECSのコンテナ起動で急にエラーが出るようになり、起動ができなくなりました。その時に調べてわかったことを記しておきます。

原因になったAWSの仕様変更

  • 仕様変更前
    • ECRのイメージタグからECSのコンテナを起動
  • 仕様変更後
    • ECRのイメージタグに紐付く、イメージダイジェストからECSのコンテナを起動

何が起きたか

以下、担当システムでの事例を元に説明します。

仕様変更前

  1. イメージタグを元にコンテナを起動
  2. ECRに対して、同じイメージタグでプッシュを行う
  3. 1.と同じイメージタグを元にコンテナが起動しようとする
  4. 問題なくコンテナが起動する

仕様変更後

  1. イメージダイジェストAを元にコンテナを起動
  2. ECRに対して、同じイメージタグでプッシュを行う
    a. イメージダイジェストAに紐付くイメージタグがなくなる
    b. イメージダイジェストBが作成される
  3. イメージダイジェストAを元にコンテナが起動しようとする
  4. CannotPullContainerError:pull image manifest has been retried 1 time(s): failed to resolve ref ~~ というエラーが発生する(イメージダイジェストAはすでにイメージタグに紐付いていないため、「そんなものないよ」と怒られている)

スクリーンショット 2025-03-18 9.42.33.png

想定される対処方法

今回の仕様変更に対しては、以下の方法で対応することが可能です。

案1:ECRにプッシュをする際に同じイメージタグを使用しない
→イメージタグ自体が新しいものに更新されるため、イメージダイジェストに紐づくイメージタグが存在しない、という状況が発生しなくなる

案2:ECRにプッシュをするたびに「新しいデプロイの強制」(Force new deployment)を行い、ECSに紐づくイメージダイジェストを更新する
→「新しいデプロイの強制」(Force new deployment)を行うことで、ECSが最新のイメージダイジェストからコンテナを再起動するため、古いイメージダイジェストを参照しなくなる

我々の対処方法

担当システムでは、同じイメージタグを使用しない運用にするためには、ECRのプッシュ方法やその後のECSのコンテナ起動を1から見直す必要があるため、対応するのは難しく、案2の解決策で問題を解決しました。

運用変更後の流れ

  1. イメージダイジェストAを元にコンテナを起動
  2. ECRに対して、同じイメージタグでプッシュを行う
    a. イメージダイジェストAに紐付くイメージタグがなくなる
    b. イメージダイジェストBが作成される
  3. 「新しいデプロイの強制」(Force new deployment)を行う
  4. イメージダイジェストBを元にコンテナが再起動される
  5. エラーが発生しなくなり、問題解決
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?