[運用子ネタ]「もう勘弁してよ、このECSインスタンを作ったのはだれ ?」と悩んでいる方へ

皆さん、こんにちは。ソリューションアーキテクトのQ(@joe_qiubinbin)です。

先日弊社が入っているビルにクリスマスツリーが飾られ、すっかりクリスマス気分になりました。12月12日には Alibaba Cloud Developers Meetup (AliEaters) #9兼プチ忘年会を開催されますので、ご興味ある方は是非参加してください。

 

さて、本題に入りますが、「もう勘弁してよ、このECSインスタンを作ったのはだれ ?」という悩みがありますでしょうか。ECSインスタンス作成できる上限に引っかかり、作成者不明のECSインスタンスが乱立していて、削除していいかどうかが分からず、参ったなぁ〜という問題が昔別のクラウドを利用していた時代からよく聞く話です。特に本番環境ではない環境でよく起きる問題ではないかと思っています。

今回はECSインスタンスを作成される際に、作成者(RAM User)の名前を自動的にECSインスタンスにタグ付けするようなソリューションをご紹介させていただきます。

デモ動画

とりあえず、動くものをお見せします。下記約1分30秒動画をご確認ください。

test-qiubinbinというRAM Userで、タグ無しのECSインスタンスを作成したあと、しばらく立つとtest-qiubinbinというOwnerタグをつけられるデモ動画になります。

アーキテクチャ、フロー、利用プロダクト

全体のアーキテクチャ及びフローは以下になります。

利用しているプロダクトは以下になります。

  1. ActionTrail
    Alibaba Cloudリソースへの操作を記録するプロダクトです。
  2. Object Storage Service (OSS)
    名前の通り、オブジェクトストレージです。ActionTrailログはOSS Bucketに格納されます。
  3. Function Compute
    利用者はサーバーを立てる必要がなく、コードをそのまま実行できるサービスです。OSSのトリガーがあり、対象となるOSSイベントが発生した際に、OSSからイベントの情報がFunction Computeに送信されて、Function Computeでいろいろやれます。
  4. Resource Access Management (RAM)
    ポリシーで、Alibaba Cloud各プロダクトへのアクセスを管理するプロダクトです。利用者はRAM Userというサブアカウントでコンソール画面にログインしたら、Access Keyを使ったプログラムで操作したりすることが可能です。今回はRAMのAccess Keyを利用します。

各プロダクトの設定

各プロダクトの作業内容を簡単にご紹介いたします、細かい設定については割愛させていただきます。( お問い合わせ か Twitter(@joe_qiubinbin)にてご連絡いただければ、いつでも説明に参ります)

OSS

OSSの管理画面にて、ActionTrailログ保存用のバケットを作成します。バケット名はバケットのドメイン名にも利用されるので、一意性を持つ必要があります。

以下、バケット作成の画面になります。

ActionTrail

ActionTrailの管理画面にて、操作を追跡するトレイルを作成します。下の図ですと、トレイル名はaudit_trailで、OSS Bucketはjoe-trail-logを設定しています。

RAM

RAMユーザーを作成する と ユーザーまたはユーザーグループの権限付与 を参考にして、RAM Userの作成、そのユーザーのAccess Keyの生成と必要な権限の付与といった作業を行います。

生成されたAccess KeyはFunction Computeの関数に利用されます。

権限については、OSS Bucket の読み取り権限、ECSインスタンスへタグ付けの権限が必要がなります。

Function Compute

関数の作成 、ユーザー許可 を参考に、サービスと関数を作成します。サービスと関数は1:Nの関係です。

今回作成する関数のRuntimeはpython3で、サンプルコードはこちらです。サンプルコードでは、ACCESS_KEY_ID、ACCESS_KEY_SECRET、TAG_NAMEといった関数の環境変数を利用しています。あくまでもテスト用のもので、そのまま本番環境にご利用することを推奨しません

トリガーの作成を参考に、OSSトリガーを作成します。

最後

いかがでしょうか、このような仕組みを活用することで、作成者不明のECSインスタンスの乱立問題が解消されるでしょう。

余談ですが、この投稿の最初にご紹介させていただいたAlibaba Cloud Developers Meetup (AliEaters)はAlibaba Cloudに関する技術ネタ、ノウハウなどを共有する場です。よかったら是非参加してみてください。

 

 

この記事をシェアする