VPC フローログを使用した IP トラフィックのログ記録
VPC フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは、Amazon CloudWatch Logs、Amazon S3、または Amazon Kinesis Data Firehose に発行できます。フローログを作成したら、設定したロググループ、バケット、または配信ストリームのフローログレコードを取得して表示できます。
フローログは、以下のような多くのタスクに役立ちます。
-
制限の過度に厳しいセキュリティグループルールを診断する
-
インスタンスに到達するトラフィックをモニタリングする
-
ネットワークインターフェイスに出入りするトラフィックの方向を決定する
フローログデータはネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません。ネットワークパフォーマンスに影響を与えるリスクなしに、フローログを作成または削除できます。
目次
フローログの基礎
VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。サブネットまたは VPC のフローログを作成する場合、そのサブネットまたは VPC 内の各ネットワークインターフェイスがモニタリングされます。
モニタリングされるネットワークインターフェイスのフローログデータは、フローログレコードとして記録されます。これは、トラフィックフローについて説明するフィールドで構成されるログイベントです。詳細については、「フローログレコード」を参照してください
フローログを作成するには、以下の内容を指定します。
-
フローログを作成するリソース
-
キャプチャするトラフィックの種類 (許可されたトラフィック、拒否されたトラフィック、またはすべてのトラフィック)
-
フローログデータを発行する送信先
次の例では、プライベートサブネットの EC2 インスタンス の 1 つのネットワークインターフェイスで承諾されたトラフィックをキャプチャし、フローログレコードを Amazon S3 バケットに発行するフローログを作成します。

次の例では、サブネット B のすべてのトラフィックをキャプチャし、フローログレコードを Amazon CloudWatch Logs に発行します。フローログは、サブネット内のすべてのネットワークインターフェイスのトラフィックをキャプチャします。

フローログを作成後、データ収集と選択された送信先へのデータ発行が開始されるまでに数分かかる場合があります。フローログで、ネットワークインターフェイスのリアルタイムのログストリームはキャプチャされません。詳細については、「フローログの作成」を参照してください。
サブネットまたは VPC のフローログを作成後、サブネットにインスタンスを起動する場合、ネットワークインターフェイスにネットワークトラフィックができるとすぐに、新しいネットワークインターフェイス用のログストリーム (CloudWatch Logs の場合) またはログファイルオブジェクト (Amazon S3 の場合) が作成されます。
他の AWS サービスによって作成されたネットワークインターフェイスのフローログを作成できます。例えば、次のとおりです。
-
Elastic Load Balancing
-
Amazon RDS
-
Amazon ElastiCache
-
Amazon Redshift
-
Amazon WorkSpaces
-
NAT ゲートウェイ
-
トランジットゲートウェイ
ネットワークインターフェイスの種類にかかわらず、Amazon EC2 コンソールまたは Amazon EC2 API を使用してネットワークインターフェイスのフローログを作成する必要があります。
フローログにタグを適用できます。タグはそれぞれ、1 つのキーとオプションの 1 つの値で構成されており、どちらもお客様側が定義します。タグは、目的や所有者などによって、フローログを整理するのに役立ちます。
フローログが不要になった場合には、それを削除することができます。フローログを削除すると、リソースのフローログサービスは無効になり、新しいフローログレコードの作成や発行は行われなくなります。フローログを削除しても、既存のフローログデータは削除されません。フローログの削除が完了したら、送信先から直接フローログデータを削除できます。詳細については、「フローログの削除」を参照してください。
フローログレコード
フローログレコードは、VPC のネットワークの流れを表します。デフォルトでは、各レコードは、集約間隔 (キャプチャウィンドウとも呼ばれる) 内で発生するネットワークインターネットプロトコル (IP) トラフィックフロー (ネットワークインターフェイスごとに 5 タプルによって特徴付けられる) をキャプチャします。
各レコードは、スペースで区切られたフィールドから成る文字列です。送信元、送信先、プロトコルなど、レコードには IP フローのさまざまなコンポーネントの値が含まれています。
フローログを作成するときは、フローログレコードのデフォルトの形式を使用するか、カスタム形式を指定できます。
集約間隔
集約間隔は、特定のフローがキャプチャされ、フローログレコードに集約される期間です。デフォルトでは、最大の集約間隔が 10 分に設定されています。フローログを作成する場合、オプションで最大集約間隔を 1 分に指定できます。最大集約間隔が 1 分のフローログでは、最大集約間隔が 10 分のフローログよりも多くのフローログレコードが生成されます。
ネットワークインターフェイスが Nitro ベースのインスタンスにアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。
集約間隔内にデータが取得された後、データの処理および CloudWatch Logs または Amazon S3 へのパブリッシュにさらに時間がかかります。フローログサービスは、通常、約 5 分で CloudWatch Logs に、約 10 分で Amazon S3 にログを配信します。ただし、ログの配信はベストエフォートベースであり、通常の配信時間を超えてログが遅れる可能性があります。
デフォルトの形式
デフォルトの形式では、フローログレコードには、使用可能なフィールドテーブルに表示される順序でバージョン 2 のフィールドが含まれます 。デフォルトの形式をカスタマイズまたは変更することはできません。使用可能なすべてのフィールドまたはフィールドの異なるサブセットをキャプチャするには、代わりにカスタム形式を指定します。
カスタム形式
カスタム形式を使用して、フローログレコードに含めるフィールドと順序を指定します。これにより、ニーズに合ったフローログを作成し、関連のないフィールドを省略できます。カスタム形式を使用すると、発行されたフローログから特定の情報を抽出する別個のプロセスが不要になります。使用可能なフローログフィールドは任意の数指定できますが、少なくとも 1 つ指定する必要があります。
使用可能なフィールド
次に表に、フローログレコードの使用可能なすべてのフィールドを示します。[Version (バージョン)] 列には、フィールドが導入された VPC フローログのバージョンが表示されます。デフォルトの形式には、すべてのバージョン 2 フィールドが含まれ、順番はテーブルと同じです。
Amazon S3 にフローログデータを公開する場合、フィールドのデータ型はフローログ形式によって異なります。形式がプレーンテキストの場合、すべてのフィールドは STRING 形式です。形式が Parquet の場合は、フィールドのデータ型の表を参照してください。
フィールドが特定のレコードに該当しないか、特定のレコードに対して計算できなかった場合、レコードでそのエントリには「-」記号が表示されます。パケットヘッダーから直接取得されないメタデータフィールドは、ベストエフォート近似値であり、値が欠落しているか、不正確である可能性があります。
フィールド | 説明 | バージョン |
---|---|---|
version |
VPC フローログバージョン。デフォルトの形式を使用する場合、バージョンは 2 です。カスタム形式を使用する場合、そのバージョンは指定されたフィールドの中で最も高いバージョンです。例えば、バージョン 2 のフィールドのみを指定した場合、バージョンは 2 です。バージョン 2、3、4 のフィールドを混在させて指定すると、バージョンは 4 になります。 Parquet データ型: INT_32 |
2 |
account-id |
トラフィックが記録されるソースネットワークインターフェイスの所有者の AWS アカウント ID。ネットワークインターフェイスが AWS のサービスによって作成された場合 (VPC エンドポイントまたは Network Load Balancer の作成時など)、このフィールドに対してレコードに unknown と表示されることがあります。 Parquet データ型: STRING |
2 |
interface-id |
トラフィックが記録されるネットワークインターフェイスの ID。 Parquet データ型: STRING |
2 |
srcaddr |
受信トラフィックの送信元アドレスか、ネットワークインターフェイスにおける送信トラフィックのネットワークインターフェイスの IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。「pkt-srcaddr」も参照してください。 Parquet データ型: STRING |
2 |
dstaddr |
送信トラフィックの送信先アドレスか、ネットワークインターフェイスにおける受信トラフィックのネットワークインターフェイスの IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。「pkt-dstaddr」も参照してください。 Parquet データ型: STRING |
2 |
srcport |
トラフィックの送信元ポート。 Parquet データ型: INT_32 |
2 |
dstport |
トラフィックの送信先ポート。 Parquet データ型: INT_32 |
2 |
protocol |
トラフィックの IANA プロトコル番号。詳細については、「割り当てられたインターネットプロトコル番号 Parquet データ型: INT_32 |
2 |
packets |
フロー中に転送されたパケットの数。 Parquet データ型: INT_64 |
2 |
bytes |
フロー中に転送されたバイト数。 Parquet データ型: INT_64 |
2 |
start |
集約間隔内にフローの最初のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。 Parquet データ型: INT_64 |
2 |
end |
集約間隔内にフローの最後のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。 Parquet データ型: INT_64 |
2 |
action |
トラフィックに関連付けられたアクション:
Parquet データ型: STRING |
2 |
log-status |
フローログのロギングステータス。
Parquet データ型: STRING |
2 |
vpc-id |
トラフィックが記録されるネットワークインターフェイスが含まれる VPC の ID。 Parquet データ型: STRING |
3 |
subnet-id |
トラフィックが記録されるネットワークインターフェイスが含まれるサブネットの ID。 Parquet データ型: STRING |
3 |
instance-id |
インスタンスをお客様が所有している場合、トラフィックが記録されるネットワークインターフェイスに関連するインスタンスの ID。リクエスタマネージド型のネットワークインターフェイス (NAT ゲートウェイのネットワークインターフェイスなど) の場合、「-」記号を返します。 Parquet データ型: STRING |
3 |
tcp-flags |
次の TCP フラグのビットマスク値:
TCP フラグは、集約間隔内に OR 処理することができます。短い接続の場合、フラグがフローログレコードの同じ行に設定されることがあります (例えば、SYN-ACK と FIN の場合は 19、SYN と FIN の場合は 3 など)。例については、「TCP フラグシーケンス」を参照してください。 TCP フラグの一般的な情報 (FIN、SYN、ACK などのフラグの意味など) については、Wikipedia の「TCP セグメント構造」 Parquet データ型: INT_32 |
3 |
type |
トラフィックの種類。指定できる値は IPv4 | IPv6 | EFA です。詳細については、「Elastic Fabric Adapter」を参照してください。 Parquet データ型: STRING |
3 |
pkt-srcaddr |
トラフィックのパケットレベルの (元の) 送信元 IP アドレス。srcaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの元の送信元 IP アドレスを区別します。例えば、トラフィックが NAT ゲートウェイのネットワークインターフェイスを通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。 Parquet データ型: STRING |
3 |
pkt-dstaddr |
トラフィックのパケットレベルの (元の) 送信先 IP アドレス。dstaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの最終的な送信元 IP アドレスを区別します。例えば、トラフィックが NAT ゲートウェイのネットワークインターフェイスを通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。 Parquet データ型: STRING |
3 |
region |
トラフィックが記録されるネットワークインターフェイスが含まれるリージョン。 Parquet データ型: STRING |
4 |
az-id |
トラフィックが記録されるネットワークインターフェイスが含まれるアベイラビリティーゾーンの ID。トラフィックがサブロケーションからの場合、レコードにはこのフィールドに「-」記号が表示されます。 Parquet データ型: STRING |
4 |
sublocation-type |
sublocation-id フィールドに返されるサブロケーションのタイプ。指定可能な値は次のとおりです: wavelength Parquet データ型: STRING |
4 |
sublocation-id |
トラフィックが記録されるネットワークインターフェイスが含まれるサブロケーションの ID。トラフィックがサブロケーションからではない場合、レコードにはこのフィールドに「-」記号が表示されます。 Parquet データ型: STRING |
4 |
pkt-src-aws-service |
pkt-srcaddr フィールド用の IP アドレスの範囲のサブセットの名前 (送信元 IP アドレスが AWS のサービス用の場合)。指定可能な値は次のとおりです:AMAZON |AMAZON_APPFLOW |AMAZON_CONNECT |API_GATEWAY |CHIME_MEETINGS |CHIME_VOICECONNECTOR |CLOUD9 |CLOUDFRONT |CODEBUILD |DYNAMODB |EBS |EC2 |EC2_INSTANCE_CONNECT |GLOBALACCELERATOR |KINESIS_VIDEO_STREAMS |ROUTE53 |ROUTE53_HEALTHCHECKS |ROUTE53_HEALTHCHECKS_PUBLISHING |ROUTE53_RESOLVER |S3 |WORKSPACES_GATEWAYS。 Parquet データ型: STRING |
5 |
pkt-dst-aws-service |
pkt-dstaddr フィールド用の IP アドレスの範囲のサブセットの名前 (送信先 IP アドレスが AWS のサービス用の場合)。可能な値の一覧については、pkt-src-aws-service フィールドをご参照ください。 Parquet データ型: STRING |
5 |
flow-direction |
トラフィックがキャプチャされるインターフェイスに対するフローの方向。指定できる値は次のとおりです: ingress | egress。 Parquet データ型: STRING |
5 |
traffic-path |
出力トラフィックが送信先につながるパス。トラフィックが出力トラフィックであるかどうかを判断するには、flow-direction フィールドを確認します。指定できる値は次のとおりです。いずれの値も適用されない場合、フィールドは - に設定されます。
Parquet データ型: INT_32 |
5 |
フローログの制限事項
フローログを使用するには、次の制限事項に注意する必要があります。
-
EC2-Classic プラットフォームにあるネットワークインターフェイスのフローログを有効にすることはできません。これには、ClassicLink を使用して VPC にリンクされた EC2-Classic インスタンスが含まれます。
-
ピア VPC がアカウントにない限り、VPC とピアリング接続された VPC のフローログを有効にすることはできません。
-
フローログを作成後、その設定やフローログレコードの形式を変更することはできません。例えば、異なる IAM ロールをフローログに関連付けたり、フローログレコードのフィールドを追加または削除したりすることはできません。代わりにフローログを削除し、必要な設定で新しいログを作成できます。
-
ネットワークインターフェイスに複数の IPv4 アドレスがある場合、トラフィックがセカンダリプライベート IPv4 アドレスに送信されても、フローログの
dstaddr
フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、pkt-dstaddr
フィールドを含むフローログを作成します。 -
トラフィックがネットワークインターフェイスに送信され、送信先がネットワークインターフェイスの IP アドレスのいずれでもない場合、フローログの
dstaddr
フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、pkt-dstaddr
フィールドを含むフローログを作成します。 -
トラフィックがネットワークインターフェイスから送信され、送信元がネットワークインターフェイスの IP アドレスのいずれでもない場合、フローログの
srcaddr
フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信元 IP アドレスをキャプチャするには、pkt-srcaddr
フィールドを含むフローログを作成します。 -
ネットワークインターフェイスとの間でトラフィックが送受信される場合、パケットの送信元または送信先にかかわらず、フローログの
srcaddr
フィールドとdstaddr
フィールドには常にプライマリのプライベート IPv4 アドレスが表示されます。パケットの送信元または送信先をキャプチャするには、pkt-srcaddr
フィールドとpkt-dstaddr
フィールドを含むフローログを作成します。 -
ネットワークインターフェイスが Nitro ベースのインスタンスにアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。
フローログですべての IP トラフィックはキャプチャされません。以下のトラフィックの種類は記録されません。
-
Amazon DNS サーバーに接続したときにインスタンスによって生成されるトラフィック。独自の DNS サーバーを使用する場合は、その DNS サーバーへのすべてのトラフィックが記録されます。
-
Amazon Windows ライセンスのアクティベーション用に Windows インスタンスによって生成されたトラフィック。
-
インスタンスメタデータ用に
169.254.169.254
との間を行き来するトラフィック。 -
Amazon Time Sync Service の
169.254.169.123
との間でやり取りされるトラフィック。 -
DHCP トラフィック。
-
ミラートラフィック。
-
デフォルト VPC ルーターの予約済み IP アドレスへのトラフィック。
-
エンドポイントのネットワークインターフェイスと Network Load Balancer のネットワークインターフェイスの間のトラフィック。
フローログの料金
フローログを発行すると、提供されたログに対するデータインジェスト料金とアーカイブ料金が適用されます。提供されたログの発行に伴う料金の詳細については、「Amazon CloudWatch 料金表
フローログの発行に伴う料金を追跡するには、コスト配分タグを送信先のリソースに適用できます。これにより、AWS コスト配分レポートに、これらのタグで集計された使用状況とコストが表示されます。ビジネスカテゴリ (コストセンター、アプリケーション名、所有者など) 別のタグを適用すると、コストを分類できます。詳細については、次を参照してください。
-
「AWS Billing ユーザーガイド」の「コスト配分タグの使用」
-
「Amazon CloudWatch Logs ユーザーガイド」の「Amazon CloudWatch Logs のロググループにタグを付ける」
-
「Amazon Simple Storage Service ユーザーガイド」の「S3 バケットタグでのコスト配分タグの使用」
-
「Amazon Kinesis Data Firehose デベロッパーガイド」の「配信ストリームのタグ付け」