无法部署 - 错误:您的应用程序版本不能超过500个

时间:2015-05-04 11:32:43

标签: elastic-beanstalk

部署到EB时出现以下错误:

  

错误:您的应用程序版本不能超过500个。或   删除一些应用程序版本或请求限制增加。

我手动删除了一些版本。 由于此限制,我不希望部署失败。 Elastic Beanstalk中有没有办法自动驱逐未使用的版本?

6 个答案:

答案 0 :(得分:62)

最近在eb cli(v3.3)中添加了一项功能,以清理旧版本

https://m.reddit.com/r/aws/comments/340ce0/whats_the_thinking_behind_beanstalks_versioning/

从reddit链接复制命令

$ eb labs cleanup-versions --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

答案 1 :(得分:15)

您现在可以从AWS控制台管理生命周期策略。

  1. 在您的环境中找到应用程序版本菜单:
  2. Application versions menu

    1. 点击右上角的设置按钮,您就可以配置您想要保留的版本数量: Lifecycle policies
    2. 注意

      来自Configuring Application Version Lifecycle Settings文档:

        

      Elastic Beanstalk每次都应用应用程序的生命周期策略   您创建一个新的应用程序版本,并删除最多100个版本   每次应用生命周期策略时。 Elastic Beanstalk删除   创建新版本后的旧版本,并不计算   新版本朝向最大版本数量   政策。

           

      Elastic Beanstalk不会删除应用程序版本   当前正由环境或应用程序版本使用   部署到终止不到十周的环境   在政策被触发之前。

           

      应用程序版本限制适用于a中的所有应用程序   区域。如果您有多个应用程序,请配置每个应用程序   制定适当的生命周期政策以避免达到限制。   Elastic Beanstalk仅在应用程序版本时应用策略   创造成功,所以如果你已经达到极限,你必须   在创建新版本之前手动删除某些版本。

答案 2 :(得分:4)

在撰写此答案时,eb labs cleanup-versions对我不起作用:即使我有应用程序版本,它也会返回No application versions to delete

作为一种解决方法,我使用了this answer启发的单行内容(相应地更改区域应用名称):

  

aws elasticbeanstalk describe-application-versions --output text --region = us-west-2 --query' ApplicationVersions [*]。[ApplicationName,VersionLabel,DateCreated]& #39; | grep my-app-name |阅读应用日期;做回声"删除版本$ app $ ver $ date" ; aws elasticbeanstalk delete-application-version --region = us-west-2 --application-name $ app --version-label $ ver --delete-source-bundle;完成

答案 3 :(得分:1)

没有内置的方法可以做到这一点,但是下面的ruby脚本就是这样做的。只需使用cron安排它。

clearnup.rb:

application_name="myApp"
active_versions_shell_output = `aws elasticbeanstalk describe-environments --region=us-east-1 | grep git | awk '{gsub(/.*\:\ \"/,"",$0); print}'`
all_versions_shell_output = `aws elasticbeanstalk describe-applications --region=us-east-1 | grep git | awk '{gsub(/.*\ \"/,"",$0); print}'`
all_versions = all_versions_shell_output.split(/\n/).map{|x| x[0..57]}
active_versions = active_versions_shell_output.split(/\n/).map{|x| x[0..57]}

(all_versions - active_versions).each do |version_to_be_deleted|
    puts "deleting #{version_to_be_deleted}"
  `aws elasticbeanstalk delete-application-version --delete-source-bundle --application-name #{application_name} --version-label #{version_to_be_deleted}`
end

答案 4 :(得分:1)

现在,他们添加了一个管理UI页面来删除所有应用程序版本:

Managing Application Versions

答案 5 :(得分:1)

我在这里找到了解决方案,简单的解决方案是删除以前的版本,如下所述。

删除应用程序版本

  • 打开 Elastic Beanstalk 控制台,然后在区域列表中,选择您的 AWS 区域。

  • 在导航窗格中,选择应用程序,然后从列表中选择您的应用程序名称。

<块引用>

注意

如果您有很多应用程序,请使用搜索栏过滤 应用列表。

在导航窗格中,找到您的应用程序名称并选择 应用版本。

  • 选择您要删除的一个或多个应用程序版本。

  • 选择操作,然后选择删除。

  • (可选)要将这些应用程序版本的应用程序源包保留在您的 Amazon Simple Storage Service (Amazon S3) 存储桶中,请清除从 Amazon S3 中删除版本框。

  • 选择删除。

enter image description here

另一种解决方案

转到版本设置并按照如下所示的方式启用生命周期策略。

enter image description here enter image description here

参考:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-versions.html