ITお絵かき修行

3歩歩いても忘れないために

不要な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=【環境名】)

docs.aws.amazon.com

あと無駄に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

*1:aws delete-layerというコマンドは検索に引っかかりますが、OpsWorkのものです。

*2:以前100TB超えのS3バケットを削除したのですが、削除に1週間かかりました。。かなしみ