[アップデート]Amazon CloudWatch Network Monitoring Flow MonitorがOrganizations統合されました

[アップデート]Amazon CloudWatch Network Monitoring Flow MonitorがOrganizations統合されました

Amazon CloudWatch Network Monitoring Flow MonitorがOrganizations統合されました
Clock Icon2025.05.08

お疲れさまです。とーちです。

皆さんは Amazon CloudWatch Network Monitoring Network Flow Monitor というサービスはご存知でしょうか?私は今まで触ったことがなかったのですが、どうやら re:Invent 2024 で新しく登場したネットワーク監視サービスのようです。

https://dev.classmethod.jp/articles/awsreinvent-network-flow-monitor/

Amazon EC2 や Amazon EKS などのコンピューティングインスタンスと、Amazon S3、Amazon RDS、Amazon DynamoDB などの AWS サービス間のワークロードのネットワークパフォーマンスをほぼリアルタイムで可視化するサービスとなっており、ネットワークに起因する障害を検出して原因を特定するのに役立つものとなっています。

Network Flow Monitor には大きく2つの機能があります

  1. ワークロードインサイト

    • 設定を有効化したリージョンで、どこからどこに対してどのような通信(サイズや再送信回数等)が発生しているか等の通信の概要を確認できる機能
  2. モニター

    • 監視したいネットワークとその宛先を設定することで、2点間のネットワーク接続状態を監視し、通信速度や遅延時間などの具体的な数値(パフォーマンスメトリック)と、接続の健全性を示す指標(ネットワークヘルスインジケーター)を使って問題を見つけるための機能

今回のアップデートでは、この Network Flow Monitor が AWS Organizations と統合されました。Organizations 統合されたことで以下のようなことができるようになりました

  • 管理アカウントから Organizations 組織内の AWS アカウントに対して簡単に Network Flow Monitor を初期化できるようになった
  • 複数のアカウントのネットワークパフォーマンスを一つのアカウントから一元的にモニタリングできるようになった
  • 複数のアカウントにまたがるワークロードのネットワークパスも可視化できる

https://aws.amazon.com/jp/about-aws/whats-new/2025/05/amazon-cloudwatch-network-monitoring-multi-account-flow-monitors/

それでは早速やってみましょう。

やってみた

前提条件

  • AWS Organizations が有効化済みであること

手順の概要

手順の概要は以下のとおりです

STEP 1: 管理アカウントでの準備

  • CloudWatch の信頼済みアクセスを有効化
  • (オプション)委任された管理者アカウントを登録

STEP 2: 委任された管理者アカウントでの設定

  • 監視対象アカウントに対してNetwork Flow Monitor をまとめて初期化

STEP 3: 監視対象アカウントでの設定

  • クロスアカウントアクセス用の IAM ロールを作成
  • 監視対象 EC2 インスタンスにエージェントをインストール

STEP 4: 詳細監視の設定(委任された管理者アカウント)

  • (オプション)特定のリソース間のモニターを作成

それでは公式ドキュメントの手順に則り実際にやってみましょう。

管理アカウントで CloudWatch を AWS Organizations と統合

まずは管理アカウントにサインインし、CloudWatch の信頼済みアクセスを有効にします。

信頼されたアクセスはマネージメントコンソールの AWS Organizations の画面から行うケースもありますが、CloudWatch の場合は CloudWatch の画面から行うようです。

alt text

alt text

オプションですが、委任された管理者アカウントを登録できます。管理アカウントは特殊なアカウントであるため、管理アカウントにアクセスできるユーザーを制限するためにも別アカウントに機能を委任するのがベストプラクティスとされています。今回は委任を行います。

alt text

alt text

委任が完了すると以下の状態になります。

alt text

委任された管理者アカウントで Network Flow Monitor をまとめて初期化する

ここからは委任された管理者アカウントで作業します。まずはマネージメントコンソールで CloudWatch の画面にいき、Network Flow Monitor を有効化します。

alt text

CloudWatch の管理アカウントとなっている場合、以下のように組織内の監視対象アカウントを追加する画面が出てきます。追加を押してアカウントを追加します。

alt text

追加するアカウントを選択します。(委任された管理者アカウントではない本来の)管理アカウントも追加できるようです。なお、追加できるアカウントの最大数は自身のアカウントも含め 100 個までのようです。

alt text

アカウントを追加した状態で、サービスの初期化の項目にある「Network Flow Monitor を有効にする」をクリックします。Organizations 連携していない場合、1アカウントずつ Network Flow Monitor を有効化する必要がありますが、これを組織内の任意のアカウントに対して一括して行えるというわけです。

alt text

Network Flow Monitor の有効化が完了すると以下のメッセージが出ました。有効化完了まで 30 分かかるというメッセージが出ていたのでどのくらいかかるか心配でしたが、20 分はかかっていなかったと思います。

alt text

現在の監視対象アカウントは設定タブから確認できます。追加したアカウントの Status が Permissions missing となっていますね。これは追加したアカウントに必要な IAM ロールが作成されていないからです。ということで、次の手順で追加したアカウントに対して IAM ロールを作成していきます。

alt text

監視対象アカウントで特定の IAM ロールを作成する

委任された管理者アカウントが他のアカウントのリソースを表示できるようにするためには監視対象のアカウントに特定の IAM ロールを作成する必要があります。(このロールも一緒に作ってくれればいいのですが・・・)

IAM ロールは各監視対象アカウントにて作成します。監視対象アカウントがたくさんある場合は一つずつやるのは大変なので CloudFormation StackSets 等を使って作るのが良いでしょう。今回は手で作っていきます。

監視対象アカウントにログインしマネージメントコンソールの IAM の画面から以下の通り IAM ロールを作成します。IAM ロール名等に指定があるので公式ドキュメントも確認しながら作ったほうが良いです。また、信頼ポリシーは委任された管理者アカウントの ID を信頼するよう設定してください。

alt text

追加する IAM ポリシーは AmazonEC2ReadOnlyAccess です。

alt text

ロール名は NetworkFlowMonitorAccountResourceAccess という名前で作りましょう。

alt text

作成が完了した後、委任された管理者アカウントで再度確認すると以下のようにステータスが Permissions added に変わるはずです。

alt text

監視対象アカウントで監視対象 EC2 インスタンスを作成する

今回は監視対象アカウントに対して、2台の EC2 を別々の AZ に立てその通信メトリクスを委任された管理者アカウントから確認してみようと思います。

前提として監視対象アカウントに VPC 及び EC2 インスタンスは作成済みであるものとします。EC2 インスタンスには AWS 管理 IAM ポリシーである CloudWatchNetworkFlowMonitorAgentPublishPolicy を含む IAM ロールをつけるようにしてください。

公式ドキュメントに従い、EC2 インスタンスに Network Flow Monitor 用のエージェントをインストールします。

alt text

次の画面でターゲットとして、作成した2台の EC2 インスタンスを選択してインストールを実行します。

alt text

以下のようになれば OK です。

alt text

委任された管理者アカウントで Network Flow Monitor のモニターを作成

この状態でも通信が発生すればワークロードインサイトで通信の概要を確認することはできますが、より詳細にポイントを絞って確認したいときは「モニター」を作成します。

モニターは以下の画面から設定していきます。Organizations 連携している場合は委任された管理者アカウントで作成していきます。

alt text

ローカルリソースが監視したいネットワーク、リモートリソースが監視したいネットワークからの通信先です。それぞれで指定できる最小単位はサブネットになっており、リモートリソースでは S3 や DynamoDB といった AWS サービスも指定できます。Organizations 連携の設定が出来ているのでアカウントという項目から監視対象のアカウントのリソースが選べるようになってますね。今回は監視対象アカウントの az-1c のパブリックサブネット(送信元)と az-1a のパブリックサブネット(送信先)間でモニターを設定してみました。

alt text

この状態で以下のコマンドを実行し、EC2インスタンス上にある100MBのファイルを別AZのEC2インスタンスでダウンロードしてみます。

# ap-northeast-1aのEC2インスタンスにて
root@ip-172-18-128-25:/var/www/html# cd /var/www/html/
root@ip-172-18-128-25:/var/www/html# fallocate -l 100M large.txt
root@ip-172-18-128-25:/var/www/html# ls -l
total 102408
-rw-r--r-- 1 root root        44 May  7 22:45 index.html
-rw-r--r-- 1 root root       615 May  7 22:44 index.nginx-debian.html
-rw-r--r-- 1 root root 104857600 May  8 01:43 large.txt

# ap-northeast-1cのEC2インスタンスにて
root@ip-172-18-129-247:~# curl http://172.18.128.25/large.txt --output large.txt # 何回か実行

しばらくしてから委任された管理者アカウントで確認してみるとワークロードインサイトにデータが表示されていました。

alt text

またモニターのほうでもデータを見ることが出来ました。

alt text

まとめ

以上、Network Flow Monitor が Organizations 統合されたというアップデートでした。Network Flow Monitor は使ったことがなかったのですが、自分の VPC から、S3 や DynamoDB 等のマネージドなサービスへのネットワークに異常がないかを確認できるので、AWS サービス側の障害を迅速に検知できそうですね。機会があれば使ってみようと思いました。

以上、とーちでした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.