EBにデプロイすると、次のエラーが表示されます。
エラー:500を超えるアプリケーションバージョンを持つことはできません。一部のアプリケーションバージョンを削除するか、制限の引き上げをリクエストしてください。
私は手動で行って、いくつかのバージョンを削除しました。この制限のためにデプロイが失敗したくありません。 Elastic Beanstalkに未使用バージョンを自動削除する方法はありますか?
古いバージョンをクリーンアップする機能が最近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
アプリケーションバージョンライフサイクル設定の構成 ドキュメントから:
Elastic Beanstalkは、新しいアプリケーションバージョンを作成するたびにアプリケーションのライフサイクルポリシーを適用し、ライフサイクルポリシーが適用されるたびに最大100バージョンを削除します。 Elastic Beanstalkは、新しいバージョンを作成した後に古いバージョンを削除し、ポリシーで定義されているバージョンの最大数に新しいバージョンをカウントしません。
Elastic Beanstalkは、現在環境で使用されているアプリケーションバージョン、またはポリシーがトリガーされる10週間以内に終了した環境にデプロイされたアプリケーションバージョンを削除しません。
アプリケーションバージョンの制限は、リージョン内のすべてのアプリケーションに適用されます。複数のアプリケーションがある場合は、制限に達しないように適切なライフサイクルポリシーを使用して各アプリケーションを構成します。 Elastic Beanstalkは、アプリケーションバージョンの作成が成功した場合にのみポリシーを適用するため、すでに制限に達している場合は、新しいバージョンを作成する前に一部のバージョンを手動で削除する必要があります。
この回答を書いている時点では、eb labs cleanup-versions
は機能しません。アプリケーションのバージョンがあってもNo application versions to delete
を返しました。
回避策として、 this answer (change theregionandアプリ名それに応じて):
aws elasticbeanstalk describe-application-versions --output text --region =us-west-2--query 'ApplicationVersions [*]。[ApplicationName、 VersionLabel、DateCreated] '| grepmy-app-name|アプリのバージョンの日付を読み取り中; echo "バージョン$ app $ ver $ dateの削除"; aws elasticbeanstalk delete-application-version --region =us-west-2--application-name $ app --version-label $ ver- delete-source-bundle;やった
それを行うための組み込みの方法はありませんが、次の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
これで、すべてのアプリケーションバージョンを削除するための管理UIページが追加されました。