SRE部佐竹です。
本日は、AWS Organizations の運用に関して記載をします。
- はじめに
- 背景
- 全体像
- Region を US East (N. Virginia) に
- SNS Topic を作成する
- CloudWatch Events で Rule を作成する
- 動作確認
- まとめ
はじめに
AWS Organizations については過去 SCP に関するブログを記載してきました。
今回は、AWS Organizations で AWS アカウントを新規に払い出ししたときに、その通知を送りたいという要望に対応します。
背景
AWS Organizations で AWS アカウントを新規に払い出したとき、すぐにそれに気づきたいという要望があります。
AWS アカウントが発行された時、それが正常なものなのかすぐに確認したいということ。それに加えて、作成した AWS アカウントに対してすぐに後続処理をしたいため、となります。
というわけで今回は、CloudWatch Events を利用して AWS アカウントの新規作成時の通知を簡単に実装します。
全体像
以下に AWS 環境構成図として全体像を示します。
Region を US East (N. Virginia) に
AWS Organizations の履歴は US East (N. Virginia) に記録される決まりがあります。そのため、まずは Region を US East (N. Virginia)
へと変更しましょう。
東京リージョンでは CloudTrail のコンソール一切表示がされない AWS Organizations の履歴も US East (N. Virginia)
であれば上画像の通り閲覧可能です。
SNS Topic を作成する
CloudWatch Events の通知先に SNS を指定するため、先に SNS の Topic を作成します。
今回は Organizations-CreateAccount
という名前の Topic を新規に作成しました。Subscriptions
のメールアドレスは Slack のチャンネル投稿になっています。
なお、SNS の Email でサブスクリプションする場合は、以下のブログに記載する点にご注意ください。
CloudWatch Events で Rule を作成する
Region US East (N. Virginia)
のまま操作します。CloudWatch のマネジメントコンソールの左端メニューから Events を選択して進めます。
- Event pattern を選択します
- Build event pattern to match events by service を選択します
- サービス名に Organizations と入力検索し Organizations を選択します
- Event Type タイプは AWS API Call via CloudTrail を選択します
- Specific operation(s) には今回通知を行いたい
CreateAccount
と記載します
正しく入力すると Event Pattern Preview 配下の通りになります。
{ "source": [ "aws.organizations" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "organizations.amazonaws.com" ], "eventName": [ "CreateAccount" ] } }
画面右側、Targets には先ほど作成した SNS の Topic を選択します。Configure input は Matched event
のままで問題ありません。
最後にルールに名前をつけます。今回は Organizations-CreateAccount
としました。
ルールが無事に作成完了しました。
動作確認
今回、実際に CreateAccount を行うのはハードルが高いため CreateOrganizationalUnit
で代理しました。OU(Organizational Unit) であれば容易に作成と削除が可能なためです。
ルールとして CreateOrganizationalUnit
も合わせて通知されるようにルールを追加します。先ほど Specific operation(s) にて設定した CreateAccount
の部分を CreateOrganizationalUnit
に変更(もしくは追加)するだけで問題ありません。
上画像の通り設定した状態で、実際に CreateOrganizationalUnit
を操作してみると以下の Notification が Slack に通知されました。
問題なくフックできてますね。
Chatbot の動作について
上記の通り設定できる Chatbot ですが残念ながら現時点では AWS Organizations のイベントには対応しておりませんでした。
設定してみたところ以下のエラーとなりました。
Event received is not supported (see https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html )
まとめ
今回のブログでは、AWS Organizations で AWS アカウントを新規に払い出したタイミングで通知を送る実装方法について記載しました。
実装方法は簡単で SNS と CloudWatch Events を設定するだけで、CloudTrail の API をフックして通知が可能です。ポイントはリージョンを US East (N. Virginia)
とするところでしょうか。
今回は通知だけを目的にしたため SNS から Email を送信するのみでしたが、もちろんのこと SNS をトリガーにして AWS Lambda も発火可能です。うまく活用すればアカウント払い出し直後に自動的に OU に AWSアカウントを移動することも可能になるでしょう。
今回はここまで。
ではまたお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。