Pocket

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


■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。

  • delete-cloudfront.py

  • delete-eip.py

  • delete-elb-alb.py

  • delete-rds-snapshot.py

  • delete-rds.py

  • delete-s3.py

  • delete-security-groups.py

  • terminate-ebs-snapshot-delete.py

  • terminate-ec2-instances.py


■実際にテスト

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


■定期実行

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


■まとめ

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

Pocket

カテゴリー: AWSboto3Python

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。個人開発では「夫婦、パートナー向け家事管理サービス/famii」をCakePHP/Laravelで開発中。副業では数社サーバー保守とベンチャー企業のインフラコンサルティングやMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、GCPでのGKE/Kubernetes保守などを担当している。

0件のコメント

コメントを残す

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