J'obtiens l'erreur suivante lors du déploiement sur EB:
ERREUR: vous ne pouvez pas avoir plus de 500 versions d'application. Supprimez certaines versions d'application ou demandez une augmentation de limite.
Je suis allé manuellement et j'ai supprimé certaines versions. Je ne veux pas que les déploiements échouent à cause de cette limite. Existe-t-il un moyen dans Elastic Beanstalk pour expulser automatiquement les versions inutilisées?
Une fonctionnalité a été récemment ajoutée à eb cli (v3.3) pour nettoyer les anciennes versions
https://m.reddit.com/r/aws/comments/340ce0/whats_the_thinking_behind_beanstalks_versioning/
Copie de la commande à partir du lien 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
Dans la documentation Configuring Application Version Lifecycle Settings :
Elastic Beanstalk applique la stratégie de cycle de vie d'une application à chaque fois que vous créez une nouvelle version d'application et supprime jusqu'à 100 versions à chaque application de la stratégie de cycle de vie. Elastic Beanstalk supprime les anciennes versions après avoir créé la nouvelle version et ne compte pas la nouvelle version dans le nombre maximal de versions défini dans la stratégie.
Elastic Beanstalk ne supprime pas les versions d'application actuellement utilisées par un environnement, ni les versions d'application déployées dans des environnements qui ont été arrêtés moins de dix semaines avant le déclenchement de la stratégie.
La limite de version d'application s'applique à toutes les applications d'une région. Si vous avez plusieurs applications, configurez chaque application avec une stratégie de cycle de vie appropriée pour éviter d'atteindre la limite. Elastic Beanstalk n'applique la stratégie que si la création de la version de l'application réussit, donc si vous avez déjà atteint la limite, vous devez supprimer certaines versions manuellement avant de créer une nouvelle version.
Au moment de la rédaction de cette réponse, eb labs cleanup-versions
ne fonctionne pas pour moi: il a renvoyé No application versions to delete
même lorsque j'avais des versions d'application.
Comme solution de contournement, j'ai utilisé ce one-liner inspiré de cette réponse (changez la région et nom de l'application en conséquence):
aws elasticbeanstalk describe-application-versions --output text --region = us-west-2 --query 'ApplicationVersions [*]. [ApplicationName, VersionLabel, DateCreated] '| grep my-app-name | pendant la lecture de la date de l'application; do echo "suppression de la version $ app $ ver $ date"; aws elasticbeanstalk delete-application-version --region = us-west-2 --application-name $ app --version-label $ ver - paquet de suppression de source; terminé
Il n'y a aucun moyen intégré de le faire, mais le script Ruby effectue exactement cela. Planifiez-le simplement en utilisant 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
Maintenant, ils ont ajouté une page d'administration UI pour supprimer toutes les versions d'application: