はじめに
本投稿は SBCloud Engineers' Blog にも投稿しています。SBCloud Engineers' Blogには日中間接続をはじめ、Alibaba Cloud関連のソリューションや技術ネタを記載していますので、よかったら是非一度アクセスみてください。
先日勤務先のビルにクリスマスツリーが飾られ、すっかりクリスマス気分になりました。12月12日には Alibaba Cloud Developers Meetup (AliEaters) #9兼プチ忘年会を開催されますので、ご興味ある方は是非参加してください。
さて、本題に入りますが、「もう勘弁してよ、このECSインスタンを作ったのはだれ ?」という悩みがありますでしょうか。ECSインスタンス作成できる上限に引っかかり、作成者不明のECSインスタンスが乱立していて、削除していいかどうかが分からず、参ったなぁ〜という問題が昔別のクラウドを利用していた時代からよく聞く話です。特に本番環境ではない環境でよく起きる問題ではないかと思っています。
今回はECSインスタンスを作成される際に、作成者(RAM User)の名前を自動的にECSインスタンスにタグ付けするようなソリューションをご紹介させていただきます。
デモ動画
とりあえず、動くものをお見せします。下記約1分30秒動画をご確認ください。
デモ動画 → https://youtu.be/l3ZSbflM_Zk
test-qiubinbinというRAM Userで、タグ無しのECSインスタンスを作成したあと、しばらく立つとtest-qiubinbinというOwnerタグをつけられるデモになります。
アーキテクチャ、フロー、利用プロダクト
利用しているプロダクトは以下になります。
ActionTrail
Alibaba Cloudリソースへの操作を記録するプロダクトです。
Object Storage Service (OSS)
名前の通り、オブジェクトストレージです。ActionTrailログはOSS Bucketに格納されます。
Function Compute
利用者はサーバーを立てる必要がなく、コードをそのまま実行できるサービスです。OSSのトリガーがあり、対象となるOSSイベントが発生した際に、OSSからイベントの情報がFunction Computeに送信されて、Function Computeでいろいろやれます。
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に関する技術ネタ、ノウハウなどを共有する場です。よかったら是非参加してみてください。