如何避免AWS Elastic Beanstalk上的TooManyApplicationVersion异常?

A N*_*ter 17 amazon-web-services amazon-elastic-beanstalk

最近有人亲眼目睹了

TooManyApplicationVersions Exception
Run Code Online (Sandbox Code Playgroud)

在部署新应用程序版本(战争)时在AWS Elastic Beanstalk控制台上?看到这条消息是非常烦人的,因为它只在你完成上传战争后出现.

我很想知道为什么会发生这种异常以及应该采取哪些预防措施来避免这种情况?

Ste*_*pel 19

原因

您所看到的异常到达您相应的帐户限制茎AWS弹性魔豆,见错误CreateApplicationVersion [意译]:

  • TooManyApplicationVersions - 调用者已超出与其帐户关联的应用程序版本数量限制.
  • TooManyApplications - 呼叫者已超出与其帐户关联的应用程序数量限制.

相关常见问题中概述了当前的限制我可以使用AWS Elastic Beanstalk运行多少个应用程序?:

您最多可以创建25个应用程序和500个应用程序版本.默认情况下,您可以在所有应用程序中运行多达10个环境.如果您还在Elastic Beanstalk之外使用AWS,则可能不会[...] 如果您需要更多资源,请填写AWS Elastic Beanstalk请求表单,我们会及时评估您的请求. [强调我的]

正如所强调的那样,AWS提供了通常的升级选项,如果您确实需要许多应用程序版本仍可供重用,则允许您提交增加AWS Elastic Beanstalk限制请求.否则你可能会删除不再使用的旧版本,问题应该相应消失.

祝好运!


小智 19

这是一个使用AWS CLI的单线程,它将帮助您清除旧的应用程序版本:

aws elasticbeanstalk describe-application-versions --output text --query 'ApplicationVersions[*].[ApplicationName,VersionLabel,DateCreated]' | grep "2014-02" | while read app ver date; do aws elasticbeanstalk delete-application-version --application-name $app --version-label $ver --delete-source-bundle; done

用你认为合适的日期(2013,2014-01,2014-02-0等)替换grep.


a d*_*ren 13

从EB CLI 3.3开始,您现在可以运行以下命令来清除旧版本:

$ eb labs cleanup-versions
Run Code Online (Sandbox Code Playgroud)

默认情况下,这将清除最后10个版本和/或超过60天.添加--help,输出以下内容:

usage: eb labs cleanup-versions [options...]

Cleans up old application versions.

optional arguments:
--num-to-leave NUM    number of versions to leave DEFAULT=10
--older-than DAYS     delete only versions older than x days DEFAULT=60
--force               don't prompt for confirmation
Run Code Online (Sandbox Code Playgroud)


inm*_*yth 10

您正在接近最大版本的数量,需要删除旧的未使用的版本.

使用Web控制台查找和删除它们:转到Beanstalk控制台,找到环境,单击它.点击"上传和部署",会出现一个弹出窗口.单击"所有版本".在这里,您可以删除旧版本或不必要版本.