👉 はじめに
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