今回はLambda(サーバレス)を使用してEC2のインスタンス、EBSのスナップショット、
EIP、ELB/ALB/RDS/S3/CloudFrontをterminate/delete(削除)する方法をブログします。(意外とググっても出てこない件)

例えば、検証用としてインスタンス立ち上げたままで忘れて課金されているとか。。
しかもインフラメンバーとかは毎回コンソール開いて確認するのはとても!

ダルイ。。。

そんなことないように3ヶ月に一回削除(terminate)できたらいいことでしょう!
基本jsonとPythonとの戦いなので、まずはLambdaの使い方からいってみましょう。

そういえばre:invent 2016ではc#がサポートされましたね〜(c#むりぽ)


■Lambdaとは

インスタンスベースの仮想サーバー(EC2、ElastiChache、Redshiftなど)を
使わずにアプリケーションを開発するアーキテクチャで、
毎回サーバを構築する必要がありません!なのでコスト削減に期待できます。


■Lambdaを使ってみる

AWSのインスタンス情報は基本jsonで返ってきます。
今回は以下のコマンドで確認します。

ダーッとインスタンス情報なり、スナップショットの情報が出てくるかと。

AWS SDK For Python (Boto3)で書いてます。

・IAMにLambdaのロールを追加する

以下の3つの権限をぶち込んでください。

・Lambdaのコンソールを開き、新しく作成する

・Configure Function

・Dashboard

ここでテストと実行ができます。

・スクリプトの紹介

やりたいことはKeyが「nodelete」Valueが「true」以外
のものはインスタンスterminate(削除)します。
空白のものも消えます。
つまり、上記のタグにしとけば消えることはありません。
あとはこのスクリプトをかましてcloud watchで3ヶ月に一回とかイベント設定すればOK。


■実際にテスト

今回はインスタンスをterminateするスクリプトでやってみます。
実際にまずは削除プログラムをコメントアウトして、
インスタンスIDがタグ判別で出力されるかやってみましょう。


■定期実行

Cloud Watchからイベントでルールの新規作成をします。
スケジュールを選択肢し、
ターゲットの追加で先程のLambdaを以下のように追加します。
追加するとLambdaのマネジメントコンソールから
Triggerに反映されているはずです。


■まとめ

始めはec2建ててaws cliで頑張ろうとしたが、
らむださんすごい。サーバ作らなくてもOK!自動化したときの嬉しさ!
他にもELBやらRDSやら削除できるので次回ブログしていきます。

そしてjsonとPythonの基本勉強しよう。
やっぱコードとか実際に課題にそって作るのが一番覚えると思う!
参考書は逆引きな感じで。

※ちなみにEC2から実行する場合は(もともとインスタンスにPythonが入っているので)
以下のようにしないとあかん。

・boto3のインストール

・Pythonスクリプトの変更

参考:
http://boto3.readthedocs.io/en/latest/index.html
http://qiita.com/Yuki_BB3/items/bf713a5141ea59b741dc
http://qiita.com/Yuki_BB3/items/7885e06f82bebfa8a3bb

The following two tabs change content below.

あだちん

1989年生まれ。 ランサーズ/SRE。 2013年新卒に自宅サーバを構築し、技術ブログを立ち上げた。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズにてサーバ系のお仕事も副業で行っている。未経験によるエンジニア勉強会なども実施している。そして「脆弱性スキャナVuls」のOSS活動もしており、広報/エバンジェリスト/VulsRepo init file,chatwork通知のコントリビュータでもある。現在は分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください