bounty将在4天后过期。回答此问题可获得+50声望奖励。Kuldeep Tanwar希望引起更多关注此问题。
我有一个Node.js应用程序(用JavaScript编写)使用Codepipeline部署在Elastic Beanstalk环境中。这意味着,在每个新的git push
上,Codepipeline都会将应用程序的新版本部署到指定的Elastic Beanstalk环境中。到目前为止,它运行得很好,但最近,每个新版本都失败,并出现以下错误:
部署已完成,但出现错误:在已中止的部署期间,某些示例可能已部署新的应用程序版本。若要确保所有示例都运行相同的版本,请重新部署相应的应用程序版本。部署应用程序失败。对示例ID“i-XXXXX”执行命令失败。正在中止操作。[Instance:i-XXXXX]对示例执行命令失败。返回代码:1输出:引擎执行遇到错误..示例部署失败。有关详细信息,请参阅“eb-engine.log”。
我检查了CloudWatch中的所有日志,特别是提到的'eb-engine.log
',并发现了以下日志:Platform Engine已完成对以下命令的执行:app-deploy正在运行命令/bin/sh -c /opt/aws/bin/cfn-init -s arn:aws:cloudformation:us-east-1:XXXXXXXXXXX:stack/awseb-e-vcrthwt 2fn-stack/XXXXXXXXX-r AWSEBAutoScalingGroup --region us-east-1 --configets> config-EmbeddedPreBuild生成期间发生错误:命令01_enable_swap失败执行命令[app-deploy] - [PreBuildEbExtension]期间发生错误。停止运行命令。错误:EbExtension构建失败。请参阅/var/log/cfn-init. log了解详细信息。执行清理逻辑CommandService响应:{“status”:“FAILURE”,“API_version”:“1.0”,“results”:[{“status”:“FAILURE”,“msg”:“引擎执行遇到错误。",“returncode”:1,“events”:[{“msg”:“示例部署>失败。有关详细信息,请参阅”eb-engine.log“。",“timestamp”:1698824033276,“severity”:“ERROR”}]}}正在运行命令/bin/sh -c /opt/aws/bin/cfn-elect-pair-leader--stack arn:aws:cloudformation:us-east-1:XXXXXXXXXXX:stack/awseb-e-vcrthwt 2fn-stack/XXXXXXXXXXX --command-name ElasticBeanstalkCommand-AWSEBAutoScalingGroup --invocation-id 89 ba 36 e0 - 3e 4a-439 f-b6 ff-eff 89 c74 bd 2f--configerner-id i-XXXXXXXXXXX --region us-east-1示例为Leader。执行指令:stopSqsd这是一个web服务器环境示例,跳过stop sqsd守护进程...执行指令:PreBuildEbExtension开始执行配置集EST-EmbeddedPreBuild。下载中:bucket:elasticbeanstalk-us-east-1-XXXXXXXXX,对象:/resources/environments/e-vcrthwt 2fn/_runtime/_versions/PROJECT_NAME/ code-pipeline-1698824021435-c67 f26 f41 d43 caabae 9 c88 c869142 f218534 a3 d3下载成功下载了19343927个字节执行指令:ElectLeader正在运行leader election for instance i-XXXXXXXXXXX...调用cfn-elect-EQUIP-leader来选举leader命令。envBucket:elasticbeanstalk-us-east-1-XXXXXXXXXXX使用来自命令请求的清单文件名清单名称是:manifest_1698824028934下载应用版本清单下载:bucket:elasticbeanstalk-us-east-1-XXXXXXXXXXX,object:/resources/environments/e-vcrthwt 2fn/_runtime/versions/manifest_1698824028934下载成功151字节下载尝试读取和解析版本清单.运行命令/bin/sh -c /opt/aws/bin/cfn-get-metadata -s arn:aws:cloudformation:us-east-1:XXXXXXXXX:stack/awseb-e-vcrthwt 2fn-stack/XXXXXXXXXXX -r AWSEBBeanstalkMetadata --region us-east-1检查app-deploy命令是否适用于该示例.该命令适用于该示例,因此,示例应该执行命令Engine命令:(app-deploy)正在下载EB Application. Region:us-east-1 envID:e-vcrthwt2fn Running command /bin/sh -c /opt/aws/bin/cfn-get-metadata -s arn:aws:cloudformation:us-east-1:XXXXXXXXX:stack/awseb-e-vcrthwt2fn-stack/XXXXXXXXXXX -r AWSEBAutoScalingGroup --region us-east-1 Starting. Starting EB Platform-PlatformEngine阅读事件消息文件Engine收到EB命令cfn-hup-exec
虽然我尝试了几种解决方案,如:
- AWS EB Error: Incorrect application version found on all instances的
- Incorrect application version found on all instances. Expected version的
- https://serverfault.com/questions/1076695/managed-platform-update-failing-with-incorrect-application-version-error的
- https://elishebawiggins.wordpress.com/2018/04/16/how-i-fixed-my-failed-elastic-beanstalk-deploy/
- 我甚至试着从ChatGPT和Bing那里寻求帮助,但一无所获。
我最后的办法是删除环境和管道,并在每次推送代码时构建新的环境和管道为了保存我的时间,我最终使用了一项名为:Render,令人震惊的是,它对同一个未能在AWS上部署的应用程序非常有效。唯一的问题是,它会在没有活动的情况下关闭示例,并增加延迟。由于冷 Boot 的响应时间。
任何帮助将不胜感激,因为这个问题已经吃了这么多天的开发时间。
1条答案
按热度按时间ifsvaxew1#
我最近也看到了这个错误,并在ElasticBeanstalk环境中更改了我的部署策略->配置->更新,监视和日志记录,从
Rolling
到Immutable
。这次更改没有看到你提到的相同错误,所以我认为这是一个修复。我认为滚动更新有时会重用现有的示例,无论出于什么原因,应用程序版本不能正常工作,Beanstalk抱怨。(可能是与健康检查的交互?或者是一些失败/缓慢的启动?)使用不可变部署时,新的EC2 instancE仅使用新的应用程序版本启动,在负载均衡器上切换伸缩组之前,部署的所有部分都必须准备好。虽然它更“云重”,可能会有点慢,这种一致性对我的项目更好,我会坚持下去。
你会很欣赏你在蓝绿部署上所做的工作。当你需要升级平台以获得新的NodeJS版本时,它需要一个新的环境,而不是自动升级。