🤖

VPC Lambdaの関連付けを一括で解除するツール

に公開

概要

VPCにアタッチしたLambdaがあるとスタックの削除時間が遅くなるんですよね。
回避するためにはスタックを削除する前にスタック上の全てのLambdaをVPCからデタッチすればいいんですが、マネコンからやるとデタッチ漏れが発生して・・・みたいなことがよくありました。

そこでスタック削除効率を上げようと思って、スタック内の全LambdaからVPCの関連付けを解除(detach)して削除(delete)するツールを作りました。

https://github.com/shikira/delambda

インストール方法

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

他のプラットフォームも一応ありますが、インストールスクリプトは用意していないので、任意の場所に解凍して使ってください。

https://github.com/shikira/delambda/releases

使い方

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