『LambdaからセキュアにRDSに接続する』で作成したSecurity Groupを削除する


こんにちは、中の人です。

今回は、AWS Lambda Advent Calendar 2014に投稿した記事『LambdaからセキュアにRDSに接続する』で作ったセキュリティグループを一括削除してみたいと思います。
※本当は同じスクリプトで削除できればいいのですが…。方法がわかったら変更します。

○今回のスクリプトの注意点

1. ホスト名で判断して削除するので、EC2等でパブリックアクセスしている場合にはポリシーが削除されちゃうため使えません。
2. IP⇒ホスト名の変換用にDNSのパッケージをインストールしますが、サイズが大きいため圧縮に時間がかかる&初回実行時はTimeoutを長め(30秒程度)に取る必要があります。

○Lambdaのプログラム

Lambdaでは
1. DBが所属するセキュリティグループからポリシーを取得
2. ポート 3306でIPアドレスのポリシーのみホスト名を参照
3. ホスト名に”amazon”を含むならポリシーの削除
という流れになります。

事前準備としてDNSパッケージをインストールします。

サーバ上で以下を実施します。

以下のプログラムをindex.jsとして保存します。

続いてindex.jsと先ほどインストールしたDNSのパッケージのあるnode_modulesをまとめてzip化します。

圧縮ファイルの中身が以下の様になっていればOKです。

lambda上にzip形式でアップして実行してみましょう。
この時にTimeoutの設定を30秒に変えることを忘れないようにして下さい。

Logs
—-
START RequestId: d90fe207-81c3-11e4-a97d-3d95cee205e2
2014-12-12T05:58:15.051Z d90fe207-81c3-11e4-a97d-3d95cee205e2 {}
END RequestId: d90fe207-81c3-11e4-a97d-3d95cee205e2
REPORT RequestId: d90fe207-81c3-11e4-a97d-3d95cee205e2 Duration: 1457.44 ms Billed Duration: 1500 ms Memory Size: 128 MB Max Memory Used: 18 MB

プログラム上にコメントアウトされているconsole.logを有効化する事で、途中の動作を確認することも出来ます。

前回の記事で作ってしまった余計なセキュリティグループを消すためのスクリプトでした。

次回、お楽しみに!