我正在尝试使用 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 看起来没有任何不同,事实上,如果我从相同的源修订版重建(使用之前成功部署的构建,这给了它一个新的版本号),它似乎(通常)运行进入这个问题。
我找不到有关此错误含义的任何详细信息,那么我还能在哪里查看发生了什么?
该问题是由于未能等待“处理”新版本而引起的。
create-application-version
命令返回:我延迟了 3 秒,然后跑了
describe-application-versions
,得到了(有趣的是,
DateUpdated
没有改变)之后,该
update-environment
命令工作正常,并且我已经部署了多个版本而没有问题。一个适当的解决方法是继续运行
describe-application-versions
直到 Status!="Processing",然后处理所有故障情况(“Processing”或“Processed”以外的状态,或永远保持“Processing”)。在我的情况下,我从 msbuild 调用它(循环和等待非常困难),所以我对任意延迟的解决方法感到满意,并允许
update-environment
命令在出现问题时失败。因为生产在 之前保持不变update-environment
,并且实际部署时间(导致该命令)并不重要,所以我不需要付出太多努力。