👉 はじめに

Elastic Beanstalkのプラットフォームバージョンを更新したところ、エラーで詰まったので原因と解決策を備忘録として残したいと思います。

👉 エラー発生から解決まで

1、Elastic Beanstalkの構成

  • プラットフォーム:Docker running on 64bit Amazon Linux 2
  • プラットフォームバージョン(更新前):3.5.3
  • プラットフォームバージョン(更新後):3.7.1
  • Elastic BeanstalkのDocker環境は、docker-compose.ymlファイルを使用して設定している。

2、何が起きたのか

プラットフォームバージョンを「3.5.3」→「3.7.1」に更新したところ、以下のエラーが発生して更新が失敗しました。
Service:AmazonCloudFormation, Message:Stack named '<環境名>' aborted operation. Current state: 'CREATE_FAILED' Reason: The following resource(s) failed to create: [AWSEBInstanceLaunchWaitCondition].

CloudFormationコンソールでは、以下のエラーが表示されていました。
WaitCondition timed out. Received 0 conditions when expecting 1
The following resource(s) failed to create: [AWSEBInstanceLaunchWaitCondition].


3、何が原因だったのか

結論:「docker-compose.yml」の記述内容に問題があったから

プラットフォームバージョンが3.5.3から3.7.1にバーションアップする際にDockerバージョンも変更となりました。
そのため、旧バーションの構文で問題なく動作していても、新バーションでは構文エラーとなり、正常に更新できませんでした。
以下のログファイルの内容で原因究明できました。(AWSサポートの中の人、ありがとうございます。🙇)
/var/log/eb-engine.log

2024/00/00 06:15:36.849560 [INFO] Running command /bin/sh -c docker compose config
2024/00/00 06:15:38.634807 [ERROR] An error occurred during execution of command [self-startup] - [Docker Specific Build Application]. Stop running the command. Error: Command /bin/sh -c docker compose config failed with error exit status 15. Stderr:yaml: unmarshal errors:
line 56: mapping key "<環境変数名>" already defined at line 50