サービスで Amazon Elastic Container Service (Amazon ECS) タスクが開始すると、古いコンテナイメージが使用されています。また、古いコンテナイメージを削除してもタスクが開始されず、"CannotPullContainer" エラーが発生します。
簡単な説明
コンテナイメージをサービスにデプロイすると、コンテナイメージタグがコンテナイメージダイジェストに解決されます。ダイジェストにはイメージに関する信頼されたメタデータが含まれているため、コンテナイメージへの変更は、コンテナイメージを再度デプロイするまで反映されません。コンテナイメージをサービスに再デプロイすると、ダイジェストが更新されます。
詳細については、「コンテナイメージの解決」および「Amazon ECS におけるソフトウェアバージョンの一貫性に関する発表」を参照してください。
解決策
ECS サービスを更新する
イメージダイジェストを更新するには、Amazon ECS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して新しいデプロイを適用します。
Amazon ECS コンソール
Amazon ECS コンソールを使用する場合は、「コンソールを使用して Amazon ECS サービスを更新する」を参照してください。
AWS CLI
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
update-service コマンドを実行します。
aws ecs update-service --service SERVICE_NAME --cluster CLUSTER_NAME --force-new-deployment
注: お使いのものでそれぞれ、SERVICE_NAME をサービス名に、CLUSTER_NAME をクラスター名に置き換えます。
特定のイメージを常に使用するには、タスク定義でイメージダイジェストのディレクトリを指定します。
"CannotPullContainer" エラーを解決する
古いコンテナイメージを削除した後に CanNotPullContainer エラーが発生する場合は、コンテナイメージを再デプロイしてダイジェストを更新します。
特定のタグが付いた最新のコンテナイメージを使用するには、サービスを更新してイメージダイジェストを再度解決します。
注: CODE_DEPLOY または EXTERNAL デプロイコントローラーを使用するサービスでは、コンテナイメージタグは解決されません。