不要なLambdaレイヤーをワンライナーで削除する
故あってAWS環境のお掃除をすることがあり、その時にめんどくさい思いをしたのでメモです。Windows環境(コマンドプロンプト)で実施しています。
1.tl;dr (※Lambdaレイヤー全バージョン一括削除ワンライナー)
for /l %i in (1,1,100) do (aws lambda delete-layer-version --layer-name 【Lambdaレイヤー名】 --version-number %i --profile=【環境名】)
※100は適当です。現存するレイヤーバージョン以上指定していればOKです。範囲外の値を指定しても特に怒られなかったです。
2.えるしっているか Lambdaレイヤーは1バージョンずつしかけせない
Lambdaレイヤーは1バージョンずつしか削除できません(再掲)。
なのでマネコンからひたすらポチポチするか、CLIの「aws lambda delete-layer-version」コマンドを外から回してあげるしかないです。
Layerの作り方にもよりますが、開発を進めていると50とか100とかになっているときもあるので、手作業での削除はつらみを感じると思います*1
CLIの場合、戻り値はないっぽいので結果は素直にマネコンを見るかCLIで確認してください。
コマンド(ワンライナー)は下記です。Lambdaレイヤー名と環境名は書き換えてください。
for /l %i in (1,1,100) do (aws lambda delete-layer-version --layer-name 【Lambdaレイヤー名】 --version-number %i --profile=【環境名】)
あと無駄にbatファイルも用意してしまったので、そちらも供養のため貼っておきます。
@ECHO OFF setlocal enabledelayedexpansion cd %~dp0 pause for /l %%i in (1,1,100) do ( set increment=0%%i echo !increment! aws lambda delete-layer-version --layer-name 【Lambdaレイヤー名】 --version-number !increment! --profile=【環境名】 ) pause
3.AWS環境のお掃除について(ポエム)
・ただのお掃除とはいえ結構いろんなところで躓きます(VPCが消えない、Roleの削除順を間違えて削除できなくなる等)。 ただ以前(2年前くらい?)に比べると逃げ道が色々用意されるようになってきていると感じます(※CFnにおけるリソース削除をスキップする機能、ENI強制デタッチ機能などなど)
・個人で使う分にはアカウントごと入れ替えればいいですが、そうもいかない場合はお掃除を実施する必要があるので、お掃除手段が増えたことは普通にありがたいなーけどめんどくさいなー…と思いながらS3バケットを空にする作業に勤しむ今日この頃です。*2
■参考
https://www.366service.com/jp/qa/483db1e26b8dd6b23a783f97129e3c09