🤖
VPC Lambdaの関連付けを一括で解除するツール
概要
VPCにアタッチしたLambdaがあるとスタックの削除時間が遅くなるんですよね。
回避するためにはスタックを削除する前にスタック上の全てのLambdaをVPCからデタッチすればいいんですが、マネコンからやるとデタッチ漏れが発生して・・・みたいなことがよくありました。
そこでスタック削除効率を上げようと思って、スタック内の全LambdaからVPCの関連付けを解除(detach)して削除(delete)するツールを作りました。
インストール方法
LinuxとmacOSでは以下の手順でインストールできます。
For Linux and macOS:
# Install the latest version
curl -sSfL https://raw.githubusercontent.com/shikira/delambda/main/install.sh | bash
# Install a specific version
curl -sSfL https://raw.githubusercontent.com/shikira/delambda/main/install.sh | bash -s v1.0.0
他のプラットフォームも一応ありますが、インストールスクリプトは用意していないので、任意の場所に解凍して使ってください。
使い方
Lambda functionsの一覧を取得する
# アカウント内に存在する全てのLambda functionsの一覧を表示する
delambda list
# スタック内に存在する全てのLambda functionsの一覧を表示する
delambda list --stack my-stack
Lambda functionsからVPC関連付けを解除する
# Detach VPC from a single Lambda function
delambda detach --lambda my-function
# Detach VPC from all Lambda functions in a CloudFormation stack
delambda detach --stack my-stack
Lambda functionsを削除する
VPC関連付け解除だけでなく、Lambda functionsを削除したい場合はdeleteコマンドを使います。
デフォルトではlog groupも削除するので、ログを残したい場合は--without-logsオプションを指定してください。
# Delete a Lambda function and its log group (VPC will be automatically detached if attached)
delambda delete --lambda my-function
# Delete a Lambda function without deleting its log group
delambda delete --lambda my-function --without-logs
# Delete all Lambda functions in a CloudFormation stack (including log groups)
delambda delete --stack my-stack
# Delete all Lambda functions in a stack without deleting log groups
delambda delete --stack my-stack --without-logs
おわりに
そもそもVPC Lambdaがすぐに消せないのはCFnの不良だと思うんだけど改善される気配は感じられません。近い将来改善されることを楽しみにしてます。
最悪、CFnが改善しなくても、delstackで実装されたら嬉しいなぁなんて思っています。
Discussion