ElasticBeanstalk 错误“应用程序版本不可用且不能与环境一起使用”是什么意思?

ElasticBeanstalk 错误“应用程序版本不可用且不能与环境一起使用”是什么意思?

我正在尝试使用 AWS-cli 工具将 .NET 应用程序部署到 ElasticBeanstalk。

首先上传然后使用以下方法创建版本:

aws elasticbeanstalk create-application-version 
   --application-name "MyApp - DEV" 
   --version-label "0.1.165" 
   --source-bundle S3Bucket="xxx",S3Key="MyApp.0.1.165.zip" 
   --process 

这有效,因此下一步:

aws elasticbeanstalk update-environment 
  --environment-name "myapp-dev-env" 
  --version-label "0.1.165" 
  --application-name "MyApp - DEV" 

有时它会以代码 255 退出并输出:

调用 UpdateEnvironment 操作时发生客户端错误 (InvalidParameterValue):应用程序版本不可用,无法与环境一起使用

令人沮丧的是,这些确切的步骤(由我的持续集成服务器运行)有时会起作用,如果我使用 AWS 控制台部署此版本,它也会起作用。我上传的 zip 看起来没有任何不同,事实上,如果我从相同的源修订版重建(使用之前成功部署的构建,为其提供新的版本号),它似乎(通常)会遇到这个问题。

我找不到关于此错误含义的任何详细信息,所以我还可以在哪里查找以弄清楚发生了什么?

答案1

该问题是由于未能等待新版本“处理”而引起的。

命令create-application-version返回:

  [Exec] {
  [Exec]     "ApplicationVersion": {
  [Exec]         "ApplicationName": "MyApp - DEV", 
  [Exec]         "Status": "PROCESSING", 
  [Exec]         "VersionLabel": "0.1.165", 
  [Exec]         "DateCreated": "2016-04-19T19:27:35.948Z", 
  [Exec]         "DateUpdated": "2016-04-19T19:27:35.948Z", 
  [Exec]         "SourceBundle": {
  [Exec]             "S3Bucket": "xxx", 
  [Exec]             "S3Key": "MyApp.0.1.165.zip"
  [Exec]         }
  [Exec]     }
  [Exec] }

我延迟了 3 秒,然后跑describe-application-versions了起来

  [Exec]             "Status": "PROCESSED", 

(有趣的是,DateUpdated没有改变)

此后,该update-environment命令运行良好,并且我已经部署了多个版本而没有问题。


正确的解决方法是继续运行describe-application-versions直到状态!=“正在处理”,然后处理所有失败情况(“正在处理”或“已处理”以外的状态,或永远保持为“正在处理”)。

就我而言,我从 msbuild 调用此命令(循环和等待非常困难),因此我对任意延迟的解决方法感到满意,update-environment如果出现问题,则允许命令失败。因为生产直到 才会受到影响update-environment,并且部署(导致该命令)的实际时间并不重要,所以我不需要付出那么多努力。

相关内容