

# VPC フローログを使用した IP トラフィックのログ記録
<a name="flow-logs"></a>

VPC フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは、Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehose に発行できます。ネットワーク トラフィック ログを CloudWatch Logs や S3 などの送信先に送信できるようにする設定された配信パスとアクセス許可は、*サブスクリプション*と呼ばれます。フローログを作成したら、設定したロググループ、バケット、または配信ストリームのフローログレコードを取得して表示できます。

フローログは、以下のような多くのタスクに役立ちます。
+ 制限の過度に厳しいセキュリティグループルールを診断する
+ インスタンスに到達するトラフィックを監視する
+ ネットワークインターフェイスに出入りするトラフィックの方向を決定する

フローログデータはネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません。ネットワークパフォーマンスに影響を与えるリスクなしに、フローログを作成または削除できます。

**注記**  
このセクションでは、VPC のフローログについてのみ説明します。バージョン 6 で導入されたトランジットゲートウェイのフローログの詳細については、「*Amazon VPC Transit Gateways ユーザーガイド*」の「[Transit Gateway フローログを使用したネットワークトラフィックのログ記録](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-flow-logs.html)」を参照してください。

**Topics**
+ [フローログの基礎](flow-logs-basics.md)
+ [フローログレコード](flow-log-records.md)
+ [フローログレコードの例](flow-logs-records-examples.md)
+ [フローログの制限事項](flow-logs-limitations.md)
+ [料金](#flow-logs-pricing)
+ [フローログの使用](working-with-flow-logs.md)
+ [CloudWatch Logs へのフローログの発行](flow-logs-cwl.md)
+ [フローログを Amazon S3 に発行する](flow-logs-s3.md)
+ [Amazon Data Firehose へのフローログの発行](flow-logs-firehose.md)
+ [Amazon Athena を使用したフローログのクエリ](flow-logs-athena.md)
+ [VPC フローログトラブルシューティング](flow-logs-troubleshooting.md)

# フローログの基礎
<a name="flow-logs-basics"></a>

VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。サブネットまたは VPC のフローログを作成する場合、そのサブネットまたは VPC 内の各ネットワークインターフェイスが監視されます。

監視されるネットワークインターフェイスのフローログデータは、*フローログレコード*として記録されます。これは、トラフィックフローについて説明するフィールドで構成されるログイベントです。詳細については、「[フローログレコード](flow-log-records.md)」を参照してください

フローログを作成するには、以下の内容を指定します。
+ フローログを作成するリソース
+ キャプチャするトラフィックの種類 (許可されたトラフィック、拒否されたトラフィック、またはすべてのトラフィック)
+ フローログデータを発行する送信先

次の例では、プライベートサブネットの EC2 インスタンス の 1 つのネットワークインターフェイスで承諾されたトラフィックをキャプチャし、フローログレコードを Amazon S3 バケットに発行するフローログを作成します。

![\[インスタンスのフローログ\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/flow-logs-diagram-s3.png)


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

![\[サブネットのフローログ\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/flow-logs-diagram-cw.png)


フローログを作成後、データ収集と選択された送信先へのデータ発行が開始されるまでに数分かかる場合があります。フローログで、ネットワークインターフェイスのリアルタイムのログストリームはキャプチャされません。詳細については、「[2. フローログの作成](working-with-flow-logs.md#create-flow-log)」を参照してください。

サブネットまたは 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 つの値で構成されており、どちらもお客様側が定義します。タグは、目的や所有者などによって、フローログを整理するのに役立ちます。

フローログが不要になった場合には、それを削除することができます。フローログを削除すると、リソースのフローログサービスは無効になり、新しいフローログレコードの作成や発行は行われなくなります。フローログを削除しても、既存のフローログデータは削除されません。フローログの削除が完了したら、送信先から直接フローログデータを削除できます。詳細については、「[4. フローログの削除](working-with-flow-logs.md#delete-flow-log)」を参照してください。

# フローログレコード
<a name="flow-log-records"></a>

フローログレコードは、VPC のネットワークの流れを表します。デフォルトでは、各レコードは、*集約間隔* (*キャプチャウィンドウ*とも呼ばれる) 内で発生するネットワークインターネットプロトコル (IP) トラフィックフロー (ネットワークインターフェイスごとに 5 タプルによって特徴付けられる) をキャプチャします。

各レコードは、スペースで区切られたフィールドから成る文字列です。送信元、送信先、プロトコルなど、レコードには IP フローのさまざまなコンポーネントの値が含まれています。

フローログを作成するときは、フローログレコードのデフォルトの形式を使用するか、カスタム形式を指定できます。

**Topics**
+ [集約間隔](#flow-logs-aggregration-interval)
+ [デフォルトの形式](#flow-logs-default)
+ [カスタム形式](#flow-logs-custom)
+ [使用可能なフィールド](#flow-logs-fields)

## 集約間隔
<a name="flow-logs-aggregration-interval"></a>

集約間隔は、特定のフローがキャプチャされ、フローログレコードに集約される期間です。デフォルトでは、最大の集約間隔が 10 分に設定されています。フローログを作成する場合、オプションで最大集約間隔を 1 分に指定できます。最大集約間隔が 1 分のフローログでは、最大集約間隔が 10 分のフローログよりも多くのフローログレコードが生成されます。

ネットワークインターフェイスが [Nitro ベースのインスタンス](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)にアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。

集約間隔内にデータが取得された後、データの処理および CloudWatch Logs または Amazon S3 へのパブリッシュにさらに時間がかかります。フローログサービスは、通常、約 5 分で CloudWatch Logs に、約 10 分で Amazon S3 にログを配信します。ただし、ログの配信はベストエフォートベースであり、通常の配信時間を超えてログが遅れる可能性があります。

## デフォルトの形式
<a name="flow-logs-default"></a>

デフォルトの形式では、フローログレコードには、[使用可能なフィールドテーブル](#flow-logs-fields)に表示される順序でバージョン 2 のフィールドが含まれます 。デフォルトの形式をカスタマイズまたは変更することはできません。使用可能なすべてのフィールドまたはフィールドの異なるサブセットをキャプチャするには、代わりにカスタム形式を指定します。

## カスタム形式
<a name="flow-logs-custom"></a>

カスタム形式を使用して、フローログレコードに含めるフィールドと順序を指定します。これにより、ニーズに合ったフローログを作成し、関連のないフィールドを省略できます。カスタム形式を使用すると、発行されたフローログから特定の情報を抽出する別個のプロセスが不要になります。使用可能なフローログフィールドは任意の数指定できますが、少なくとも 1 つ指定する必要があります。

## 使用可能なフィールド
<a name="flow-logs-fields"></a>

次に表に、フローログレコードの使用可能なすべてのフィールドを示します。[**Version (バージョン)**] 列には、フィールドが導入された VPC フローログのバージョンが表示されます。デフォルトの形式には、すべてのバージョン 2 フィールドが含まれ、順番はテーブルと同じです。

Amazon S3 にフローログデータを公開する場合、フィールドのデータ型はフローログ形式によって異なります。形式がプレーンテキストの場合、すべてのフィールドは STRING 形式です。形式が Parquet の場合は、フィールドのデータ型の表を参照してください。

フィールドが特定のレコードに該当しないか、特定のレコードに対して計算できなかった場合、レコードでそのエントリには「-」記号が表示されます。パケットヘッダーから直接取得されないメタデータフィールドは、ベストエフォート近似値であり、値が欠落しているか、不正確である可能性があります。


| フィールド | 説明 | バージョン | 
| --- | --- | --- | 
|  version  |  VPC フローログバージョン。デフォルトの形式を使用する場合、バージョンは 2 です。カスタム形式を使用する場合、そのバージョンは指定されたフィールドの中で最も高いバージョンです。例えば、バージョン 2 のフィールドのみを指定した場合、バージョンは 2 です。バージョン 2、3、4 のフィールドを混在させて指定すると、バージョンは 4 になります。 **Parquet データ型:** INT\$132  | 2 | 
|  account-id  |  トラフィックが記録されるソースネットワークインターフェイスの所有者の AWS アカウント ID。ネットワークインターフェイスが AWS のサービスによって作成された場合 (VPC エンドポイントまたは Network Load Balancer の作成時など)、このフィールドに対してレコードに unknown と表示されることがあります。 **Parquet データ型:** STRING  | 2 | 
|  interface-id  |  トラフィックが記録されるネットワークインターフェイスの ID。リージョン NAT ゲートウェイに関連付けられたフローの「-」記号を返します。 **Parquet データ型:** STRING  | 2 | 
|  srcaddr  |   受信トラフィックの場合、これはトラフィックの送信元の IP アドレスです。送信トラフィックの場合、これはトラフィックを送信するネットワークインターフェイスのプライベート IPv4 アドレスまたは IPv6 アドレスです。リージョン NAT ゲートウェイからの送信トラフィックの場合、これは pkt-srcaddr と同じパケットレベルの送信元 IP アドレスです。pkt-srcaddr も参照してください。 **Parquet データ型:** STRING  | 2 | 
|  dstaddr  |  送信トラフィックの送信先アドレスか、ネットワークインターフェイスにおける受信トラフィックのネットワークインターフェイスの IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。リージョン NAT ゲートウェイへの受信トラフィックの場合、これは pkt-dstaddr と同じパケットレベルの送信先 IP アドレスです。pkt-dstaddr も参照してください。 **Parquet データ型:** STRING  | 2 | 
|  srcport  |  トラフィックの送信元ポート。 **Parquet データ型:** INT\$132  | 2 | 
|  dstport  |  トラフィックの送信先ポート。 **Parquet データ型:** INT\$132  | 2 | 
|  protocol  |  トラフィックの IANA プロトコル番号。詳細については、「[割り当てられたインターネットプロトコル番号](http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)」を参照してください。 **Parquet データ型:** INT\$132  | 2 | 
|  packets  |  フロー中に転送されたパケットの数。 **Parquet データ型:** INT\$164  | 2 | 
|  bytes  |  フロー中に転送されたバイト数。 **Parquet データ型:** INT\$164  | 2 | 
|  start  |  集約間隔内にフローの最初のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。 **Parquet データ型:** INT\$164  | 2 | 
|  end  |  集約間隔内にフローの最後のパケットが受信された時間 (UNIX 秒)。これは、パケットがネットワークインターフェイス上で送信または受信されてから最大 60 秒になる場合があります。 **Parquet データ型:** INT\$164  | 2 | 
|  action  |  トラフィックに関連付けられたアクション: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html) **Parquet データ型:** STRING  | 2 | 
|  log-status  |  フローログのロギングステータス。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html) **Parquet データ型:** STRING  | 2 | 
|  vpc-id  |  トラフィックが記録されるネットワークインターフェイスが含まれる VPC の ID。 **Parquet データ型:** STRING  | 3 | 
|  subnet-id  |  トラフィックが記録されるネットワークインターフェイスが含まれるサブネットの ID。リージョン NAT ゲートウェイに関連付けられたフローの「-」記号を返します。 **Parquet データ型:** STRING  | 3 | 
|  instance-id  |  インスタンスをお客様が所有している場合、トラフィックが記録されるネットワークインターフェイスに関連するインスタンスの ID。[リクエスタマネージド型のネットワークインターフェイス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/requester-managed-eni.html) (NAT ゲートウェイのネットワークインターフェイスなど) の場合、「-」記号を返します。 **Parquet データ型:** STRING  | 3 | 
|  tcp-flags  | 次の TCP フラグのビットマスク値:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html)サポートされているフラグが記録されていない場合、TCP フラグ値は 0 です。例えば、tcp-flags は ACK または PSH フラグのロギングをサポートしていないため、これらのサポートされていないフラグを持つトラフィックのレコードは TCP フラグの値が 0 になります。ただし、サポートされていないフラグにサポートされているフラグが付いている場合は、サポートされているフラグの値を報告します。たとえば、ACK が SYN-ACK の一部であれば、18 と報告します。また、SYN\$1ECE のようなレコードがある場合、SYN はサポートされているフラグで ECE はサポートされていないため、TCP フラグの値は 2 になります。何らかの理由でフラグの組み合わせが無効で値を計算できない場合、値は「-」になります。フラグが送信されていない場合、TCP フラグの値は 0 です。TCP フラグは、集約間隔内に OR 処理することができます。短い接続の場合、フラグがフローログレコードの同じ行に設定されることがあります (例えば、SYN-ACK と FIN の場合は 19、SYN と FIN の場合は 3 など)。例については、「[TCP フラグシーケンス](flow-logs-records-examples.md#flow-log-example-tcp-flag)」を参照してください。TCP フラグの一般的な情報 (FIN、SYN、ACK などのフラグの意味など) については、Wikipedia の[「TCP セグメント構造」](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure)を参照してください。**Parquet データ型:** INT\$132 | 3 | 
|  type  |  トラフィックの種類。指定できる値は IPv4 \$1 IPv6 \$1 EFA です。詳細については、[Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html)を参照してください。 **Parquet データ型:** STRING  | 3 | 
|  pkt-srcaddr  |  トラフィックのパケットレベルの (元の) 送信元 IP アドレス。srcaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの元の送信元 IP アドレスを区別します。例えば、トラフィックが [NAT ゲートウェイのネットワークインターフェイス](flow-logs-records-examples.md#flow-log-example-nat)を通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。 **Parquet データ型:** STRING  | 3 | 
|  pkt-dstaddr  |  トラフィックのパケットレベルの (元の) 送信先 IP アドレス。dstaddr フィールドとともにこのフィールドを使用し、トラフィックが通過する中間レイヤーの IP アドレスとトラフィックの最終的な送信元 IP アドレスを区別します。例えば、トラフィックが [NAT ゲートウェイのネットワークインターフェイス](flow-logs-records-examples.md#flow-log-example-nat)を通過する場合や、Amazon EKS 内のポッドの IP アドレスが、ポッドが実行されているインスタンスノードのネットワークインターフェイスの IP アドレスとは異なる場合などです (VPC 内の通信の場合)。 **Parquet データ型:** STRING  | 3 | 
|  region  |  トラフィックが記録されるネットワークインターフェイスが含まれるリージョン。 **Parquet データ型:** STRING  |  4  | 
|  az-id  |  トラフィックが記録されるネットワークインターフェイスが含まれるアベイラビリティーゾーンの ID。トラフィックがサブロケーションからの場合、レコードにはこのフィールドに「-」記号が表示されます。 **Parquet データ型:** STRING  |  4  | 
|  sublocation-type  |  sublocation-id フィールドに返されるサブロケーションのタイプ。指定可能な値は次のとおりです: [wavelength](https://aws.amazon.com/wavelength/) \$1 [outpost](https://docs.aws.amazon.com/outposts/latest/userguide/) \$1 [localzone](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-local-zones)。トラフィックがサブロケーションからではない場合、レコードにはこのフィールドに「-」記号が表示されます。 **Parquet データ型:** STRING  |  4  | 
|  sublocation-id  |  トラフィックが記録されるネットワークインターフェイスが含まれるサブロケーションの ID。トラフィックがサブロケーションからではない場合、レコードにはこのフィールドに「-」記号が表示されます。 **Parquet データ型:** STRING  |  4  | 
|  pkt-src-aws-service  |  pkt-srcaddr フィールド用の [IP アドレスの範囲](aws-ip-ranges.md)のサブセットの名前 (送信元 IP アドレスが AWS のサービス用の場合)。ソース IP アドレスが[重複範囲](aws-ip-syntax.md#aws-ip-range-overlaps)内にある場合、pkt-src-aws-service には AWS サービスコードのいずれか 1 つだけが表示されます。指定できる値は、`AMAZON` \$1 `AMAZON_APPFLOW` \$1 `AMAZON_CONNECT` \$1 `API_GATEWAY` \$1 `AURORA_DSQL` \$1 `CHIME_MEETINGS` \$1 `CHIME_VOICECONNECTOR` \$1 `CLOUD9` \$1 `CLOUDFRONT` \$1 `CLOUDFRONT_ORIGIN_FACING` \$1 `CODEBUILD` \$1 `DYNAMODB` \$1 `EBS` \$1 `EC2` \$1 `EC2_INSTANCE_CONNECT` \$1 `GLOBALACCELERATOR` \$1 `IVS_LOW_LATENCY` \$1 `IVS_REALTIME` \$1 `KINESIS_VIDEO_STREAMS` \$1 `MEDIA_PACKAGE_V2` \$1 `ROUTE53` \$1 `ROUTE53_HEALTHCHECKS` \$1 `ROUTE53_HEALTHCHECKS_PUBLISHING` \$1 `ROUTE53_RESOLVER` \$1 `S3` \$1 `WORKSPACES_GATEWAYS` です。 **Parquet データ型:** STRING  |  5  | 
|  pkt-dst-aws-service  |  pkt-dstaddr フィールド用の IP アドレスの範囲のサブセットの名前 (送信先 IP アドレスが AWS のサービス用の場合)。可能な値の一覧については、pkt-src-aws-service フィールドをご参照ください。 **Parquet データ型:** STRING  |  5  | 
|  flow-direction  |  トラフィックがキャプチャされるインターフェイスに対するフローの方向。指定できる値は次のとおりです: ingress \$1 egress。 **Parquet データ型:** STRING  |  5  | 
|  traffic-path  |  出力トラフィックが送信先につながるパス。トラフィックが出力トラフィックであるかどうかを判断するには、flow-direction フィールドを確認します。指定できる値は次のとおりです。いずれの値も適用されない場合、フィールドは - に設定されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html) **Parquet データ型:** INT\$132  |  5  | 
|  ecs-cluster-arn  | トラフィックが実行中の ECS タスクからのものである場合の ECS クラスターの AWS リソースネーム (ARN)。このフィールドをサブスクリプションに含めるには、ecs:ListClusters を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-cluster-name  | トラフィックが実行中の ECS タスクからのものである場合の ECS クラスターの名前。このフィールドをサブスクリプションに含めるには、ecs:ListClusters を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-container-instance-arn  | トラフィックが EC2 インスタンスで実行中の ECS タスクからのものである場合の ECS コンテナインスタンスの ARN。キャパシティープロバイダーが AWS Fargate の場合、このフィールドは「-」になります。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListContainerInstances を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-container-instance-id  | トラフィックが EC2 インスタンスで実行中の ECS タスクからのものである場合の ECS コンテナインスタンスの ID。キャパシティープロバイダーが AWS Fargate の場合、このフィールドは「-」になります。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListContainerInstances を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-container-id  | トラフィックが実行中の ECS タスクからのものである場合のコンテナの Docker ランタイム ID。ECS タスクに 1 つまたは複数のコンテナがある場合、これは最初のコンテナの Docker ランタイム ID になります。このフィールドをサブスクリプションに含めるには、ecs:ListClusters を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-second-container-id  | トラフィックが実行中の ECS タスクからのものである場合のコンテナの Docker ランタイム ID。ECS タスクに 1 つ以上のコンテナがある場合、これは 2 番目のコンテナの Docker ランタイム ID になります。このフィールドをサブスクリプションに含めるには、ecs:ListClusters を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-service-name  | トラフィックが実行中の ECS タスクからのもので、ECS タスクが ECS サービスによって開始される場合の ECS サービスの名前。ECS サービスによって ECS タスクが開始されない場合、このフィールドは「-」になります。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListServices を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-task-definition-arn  | トラフィックが実行中の ECS タスクからのものである場合の ECS タスク定義の ARN。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListTaskDefinitions を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-task-arn  | トラフィックが実行中の ECS タスクからのものである場合の ECS タスクの ARN。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListTasks を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  ecs-task-id  | トラフィックが実行中の ECS タスクからのものである場合の ECS タスクの ID。このフィールドをサブスクリプションに含めるには、ecs:ListClusters と ecs:ListTasks を呼び出すアクセス許可が必要です。Parquet データ型: STRING |  7  | 
|  reject-reason  |  トラフィックが拒否された理由。可能な値: BPA、EC。他の拒否理由の場合は「-」を返します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html) **Parquet データ型:** STRING  |  8  | 
|  resource-id  | トラフィックが記録されるネットワークインターフェイスを含むリージョン NAT ゲートウェイの ID。リージョン NAT ゲートウェイに関連付けられていないトラフィックフローの「-」記号を返します。リージョン NAT ゲートウェイの詳細については、「[自動マルチ AZ 拡張用のリージョン NAT ゲートウェイ](nat-gateways-regional.md)」を参照してください。 **Parquet データ型:** STRING  |  9  | 
|  encryption-status  |  フローの暗号化ステータス。VPC 暗号化コントロールの詳細については、「[転送時の VPC 暗号化を強制する](vpc-encryption-controls.md)」を参照してください。指定できる値は以下のとおりです。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-log-records.html) VPC 暗号化コントロールが有効になっていない場合、または FlowLog がステータスを取得できない場合、値は「-」です。  \$1 インターフェイスエンドポイントとゲートウェイエンドポイントの場合、AWS はパケットデータを調べて暗号化ステータスを判断するのではなく、暗号化ステータスを引き受けるために使用されるポートに依存します。 \$1\$1 指定された AWS マネージドエンドポイントの場合、AWS はサービス設定の TLS の要件に基づいて暗号化ステータスを決定します。  **Parquet データ型:** INT\$132  |  10  | 

# フローログレコードの例
<a name="flow-logs-records-examples"></a>

特定のトラフィックフローをキャプチャするフローログレコードの例を以下に示します。

フローログレコード形式の詳細については、「[フローログレコード](flow-log-records.md)」を参照してください。フローログの作成方法については、「[フローログの使用](working-with-flow-logs.md)」をご参照ください。

**Topics**
+ [承認されたトラフィックと拒否されたトラフィック](#flow-log-example-accepted-rejected)
+ [データなしおよびスキップされたレコード](#flow-log-example-no-data)
+ [セキュリティグループとネットワーク ACL ルール](#flow-log-example-security-groups)
+ [IPv6 トラフィック](#flow-log-example-ipv6)
+ [TCP フラグシーケンス](#flow-log-example-tcp-flag)
+ [ゾーン NAT ゲートウェイ経由のトラフィック](#flow-log-example-nat)
+ [リージョン NAT ゲートウェイ経由のトラフィック](#flow-log-example-regional-nat)
+ [トランジットゲートウェイ経由のトラフィック](#flow-log-example-tgw)
+ [サービス名、トラフィックパス、およびフロー方向](#flow-log-example-traffic-path)

## 承認されたトラフィックと拒否されたトラフィック
<a name="flow-log-example-accepted-rejected"></a>

デフォルトフローログレコードの例を以下に示します。

この例では、IP アドレス 172.31.16.139 からプライベート IP アドレスを使用したネットワークインターフェイスへの SSH トラフィック (宛先ポート 22、TCP プロトコル) が 172.31.16.21 で、アカウント 123456789010 の ID eni-1235b8ca123456789 が許可されています。

```
2 123456789010 eni-1235b8ca123456789 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
```

この例では、アカウント 123456789010 のネットワークインターフェイス eni-1235b8ca123456789 への RDP トラフィック (送信先ポート 3389、TCP プロトコル) が拒否されています。

```
2 123456789010 eni-1235b8ca123456789 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK
```

## データなしおよびスキップされたレコード
<a name="flow-log-example-no-data"></a>

デフォルトフローログレコードの例を以下に示します。

この例では、集約間隔内にデータは記録されませんでした。

```
2 123456789010 eni-1235b8ca123456789 - - - - - - - 1431280876 1431280934 - NODATA
```

VPC Flog Logs が集約間隔でフローログデータをキャプチャできない場合、内部容量を超えるため、レコードをスキップします。単一のスキップレコードは、集約間隔内にネットワークインターフェイスでキャプチャされなかった複数のフローを表すことができます。

```
2 123456789010 eni-11111111aaaaaaaaa - - - - - - - 1431280876 1431280934 - SKIPDATA
```

**注記**  
集計間隔中に一部のフローログレコードがスキップされることがあります ([使用可能なフィールド](flow-log-records.md#flow-logs-fields) の log-status を参照)。これは、内部の AWS キャパシティの制限または内部エラーが原因で発生する場合があります。VPC フローログの請求金額を表示するために AWS Cost Explorer を使用しており、一部のフローログがフローログの集計間隔中にスキップされた場合は、AWS Cost Explorer で報告されるフローログの数が Amazon VPC により発行されたフローログの数よりも多くなります。

## セキュリティグループとネットワーク ACL ルール
<a name="flow-log-example-security-groups"></a>

フローログを使用して過度に制限されているか制限のないセキュリティグループルールまたはネットワーク ACL ルールを診断している場合は、これらのリソースのステートフルさに注意してください。セキュリティグループはステートフルです。つまり、セキュリティグループのルールで許可されていない場合でも、許可されたトラフィックへの応答も許可されます。逆に、ネットワーク ACL はステートレスです。したがって、許可されたトラフィックへの応答は、ネットワーク ACL ルールに従って行われます。

例えば、ホームコンピュータ (IP アドレスが 203.0.113.12) からインスタンス (ネットワークインターフェイスのプライベート IP アドレスが 172.31.16.139) へは、**ping** コマンドを使用します。セキュリティルールのインバウンドルールでは ICMP トラフィックが許可されますが、アウトバウンドルールでは ICMP トラフィックが許可されません。セキュリティグループがステートフルの場合、インスタンスからのレスポンス ping が許可されます。ネットワーク ACL でインバウンド ICMP トラフィックが許可されますが、アウトバウンド ICMP トラフィックは許可されません。ネットワーク ACL はステートレスであるため、ping 応答は削除され、ホームコンピュータに達しません。デフォルトフローログで、これは 2 つのフローログレコードとして表示されます。
+ ネットワーク ACL とセキュリティグループの両方で許可され、したがってインスタンスへの到達を許可された発信元の ping の ACCEPT レコード。
+ ネットワーク ACL で拒否された応答 ping の REJECT レコード。

```
2 123456789010 eni-1235b8ca123456789 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
```

```
2 123456789010 eni-1235b8ca123456789 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK
```

ネットワーク ACL でアウトバウンド ICMP トラフィックを許可している場合、フローログには 2 つの ACCEPT レコード (1 つは発信元の ping、もう 1 つは応答 ping) が表示されます。セキュリティグループがインバウンド ICMP トラフィックを拒否する場合、トラフィックに対してインスタンスへの到達が許可されなかったため、フローログには 1 つの REJECT レコードが表示されます。

## IPv6 トラフィック
<a name="flow-log-example-ipv6"></a>

デフォルトフローログレコードの例を以下に示します。この例では、IPv6 アドレス 2001: db 8:1234: a 100:8 d6e: 3477: df66: f105 からアカウント 123456789010 のネットワークインターフェイス eni-1235b8ca123456789 への SSH トラフィック（ポート 22）が許可されています。

```
2 123456789010 eni-1235b8ca123456789 2001:db8:1234:a100:8d6e:3477:df66:f105 2001:db8:1234:a102:3304:8879:34cf:4071 34892 22 6 54 8855 1477913708 1477913820 ACCEPT OK
```

## TCP フラグシーケンス
<a name="flow-log-example-tcp-flag"></a>

このセクションでは、次のフィールドを次の順序でキャプチャするカスタムフローログの例が含まれています。

```
version vpc-id subnet-id instance-id interface-id account-id type srcaddr dstaddr srcport dstport pkt-srcaddr pkt-dstaddr protocol bytes packets start end action tcp-flags log-status
```

このセクションの例の tcp-flags フィールドは、フローログの最後から 2 番目の値で表されます。TCP フラッグは、トラフィックの方向 (接続を開始したサーバーなど) を識別するのに役立ちます。

**注記**  
tcp-flags オプションおよび各 TCP フラグの説明についての詳細は、「[使用可能なフィールド](flow-log-records.md#flow-logs-fields)」を参照してください。

次のレコード (午後 7:47:55 PM に開始して午後 7:48:53 に終了) では、ポート 5001 で実行されているサーバーに対する接続がクライアントにより開始されています。クライアントの異なる送信元ポート (43416 および 43418) から送信された 2 つの SYN フラグ (2) をサーバーが受け取っています。SYN ごとに、サーバーから対応するポートのクライアント (18) に SYN-ACK が送信されています。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43416 5001 52.213.180.42 10.0.0.62 6 568 8 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43416 10.0.0.62 52.213.180.42 6 376 7 1566848875 1566848933 ACCEPT 18 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 100701 70 1566848875 1566848933 ACCEPT 2 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 632 12 1566848875 1566848933 ACCEPT 18 OK
```

2 つ目の集約間隔では、前のフローで確立された接続の 1 つが閉じられます。サーバーは、ポート 43418 での接続に対してクライアントに FIN フラグ (1) を送信しています。クライアントは、サーバーのポート 43418 に FIN で応答しています。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43418 10.0.0.62 52.213.180.42 6 63388 1219 1566848933 1566849113 ACCEPT 1 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43418 5001 52.213.180.42 10.0.0.62 6 23294588 15774 1566848933 1566849113 ACCEPT 1 OK
```

単一の集約間隔内で開かれて閉じられた短い接続の場合 (数秒など)、同じ方向のトラフィックフローに関して、フローログレコードの同じ行にフラグが設定されることがあります。次の例では、同じ集約間隔内で接続が確立および終了されています。1 行目では、TCP フラグ値が 3 です。これは、SYN と FIN メッセージがクライアントからサーバーに送信されたことを示しています。2 行目では、TCP フラグ値が 19 です。これは、SYN-ACK と FIN メッセージがサーバーからクライアントに送信されたことを示しています。

```
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 52.213.180.42 10.0.0.62 43638 5001 52.213.180.42 10.0.0.62 6 1260 17 1566933133 1566933193 ACCEPT 3 OK
3 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-01234567890123456 eni-1235b8ca123456789 123456789010 IPv4 10.0.0.62 52.213.180.42 5001 43638  10.0.0.62 52.213.180.42 6 967 14 1566933133 1566933193 ACCEPT 19 OK
```

## ゾーン NAT ゲートウェイ経由のトラフィック
<a name="flow-log-example-nat"></a>

この例では、プライベートサブネットのインスタンスが、パブリックサブネットにあるゾーン NAT ゲートウェイ経由でインターネットに接続しています。

![\[ゾーン NAT ゲートウェイ経由でインターネットにアクセスする\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/flow-log-nat-gateway.png)


ゾーン NAT ゲートウェイネットワークインターフェイスの次のカスタムフローログでは、次のフィールドが次の順序でキャプチャされています。

```
instance-id interface-id srcaddr dstaddr pkt-srcaddr pkt-dstaddr
```

フローログには、インスタンス IP アドレス (10.0.1.5) からゾーン NAT ゲートウェイネットワークインターフェイス経由でインターネット上のホスト (203.0.113.5) に送信されるトラフィックのフローが表示されます。ゾーン NAT ゲートウェイネットワークインターフェイスは、リクエスタマネージド型のネットワークインターフェイスのため、フローログレコードの instance-id フィールドには「-」記号が表示されます。次の行は、送信元インスタンスからゾーン NAT ゲートウェイネットワークインターフェイスへのトラフィックを示しています。dstaddr フィールドと pkt-dstaddr フィールドの値は異なります。dstaddr フィールドには、ゾーン NAT ゲートウェイネットワークインターフェイスのプライベート IP アドレスが表示されており、pkt-dstaddr フィールドにはインターネット上のホストの最終的な送信先 IP アドレスが表示されています。

```
- eni-1235b8ca123456789 10.0.1.5 10.0.0.220 10.0.1.5 203.0.113.5
```

次の 2 行は、ゾーン NAT ゲートウェイトラフィックインターフェイスからインターネット上の送信先ホストへのトラフィックと、ホストから NAT ゲートウェイネットワークインターフェイスへのレスポンストラフィックを示しています。

```
- eni-1235b8ca123456789 10.0.0.220 203.0.113.5 10.0.0.220 203.0.113.5
- eni-1235b8ca123456789 203.0.113.5 10.0.0.220 203.0.113.5 10.0.0.220
```

次の行は、ゾーン NAT ゲートウェイネットワークインターフェイスから送信元インスタンスへのトラフィックを示しています。srcaddr フィールドと pkt-srcaddr フィールドの値は異なります。srcaddr フィールドには、ゾーン NAT ゲートウェイネットワークインターフェイスのプライベート IP アドレスが表示されており、pkt-srcaddr フィールドにはインターネット上のホストの IP アドレスが表示されています。

```
- eni-1235b8ca123456789 10.0.0.220 10.0.1.5 203.0.113.5 10.0.1.5
```

上記と同じフィールドセットを使用して別のカスタムフローログを作成できます。プライベートサブネット内のインスタンスのネットワークインターフェイスのフローログを作成します。この場合、instance-id フィールドはネットワークインターフェイスに関連するインスタンスの ID を返します。dstaddr および pkt-dstaddr フィールドと srcaddr および pkt-srcaddr フィールドの間に差異はありません。ゾーン NAT ゲートウェイのネットワークインターフェイスとは異なり、このネットワークインターフェイスはトラフィックの中間ネットワークではありません。

```
i-01234567890123456 eni-1111aaaa2222bbbb3 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5 #Traffic from the source instance to host on the internet
i-01234567890123456 eni-1111aaaa2222bbbb3 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5 #Response traffic from host on the internet to the source instance
```

## リージョン NAT ゲートウェイ経由のトラフィック
<a name="flow-log-example-regional-nat"></a>

リージョン NAT ゲートウェイは、異なるアベイラビリティーゾーンにまたがる複数のサブネットに接続できます。この例では、2 つの異なるアベイラビリティーゾーンのプライベートサブネット内の 2 つのインスタンスが、同じリージョン NAT ゲートウェイを介してインターネットにアクセスします。次のフローログは、いずれかのインスタンスからリージョン NAT ゲートウェイを介したインターネットへのトラフィックを示しています。

![\[リージョン NAT ゲートウェイ経由でインターネットにアクセスする\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/flow-log-regional-nat-gateway.png)


リージョン NAT ゲートウェイの次のカスタムフローログでは、次のフィールドが次の順序でキャプチャされています。

```
resource-id instance-id interface-id subnet-id srcaddr dstaddr pkt-srcaddr pkt-dstaddr
```

フローログには、インスタンス IP アドレス (10.0.1.5) からリージョン NAT ゲートウェイを経由してインターネット上のホスト (203.0.113.5) へのトラフィックのフローが表示されます。instance-id、interface-id および subnet-id は、リージョン NAT ゲートウェイには適用されません。したがって、フローログレコードでは、これらのフィールドに「-」記号が表示されます。代わりに、resource-id フィールドにはリージョン NAT ゲートウェイの ID が表示されます。dstaddr フィールドと pkt-dstaddr フィールドには、インターネット上のホストの最終的な宛先 IP アドレスが表示されます。

```
nat-1234567890abcdef - - - 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5
```

次の 2 行は、リージョン NAT ゲートウェイ (パブリック IP アドレス 107.22.182.139) からインターネット上のターゲットホストへのトラフィックと、ホストからリージョン NAT ゲートウェイへのレスポンストラフィックを示しています。

```
nat-1234567890abcdef - - - 107.22.182.139 203.0.113.5 107.22.182.139 203.0.113.5
nat-1234567890abcdef - - - 203.0.113.5 107.22.182.139 203.0.113.5 107.22.182.139
```

次の行は、リージョン NAT ゲートウェイから送信元インスタンスへのレスポンストラフィックを示しています。srcaddr フィールドと pkt-srcaddr フィールドには、インターネット上のホストの IP アドレスが表示されます。

```
nat-1234567890abcdef - - - 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5
```

上記と同じフィールドセットを使用して別のカスタムフローログを作成できます。プライベートサブネット内のインスタンスのネットワークインターフェイスのフローログを作成します。この場合、instance-id フィールドはネットワークインターフェイスに関連付けられているインスタンスの ID を返し、resource-id は「-」になります。dstaddr および pkt-dstaddr フィールドと srcaddr および pkt-srcaddr フィールドの間に違いはありません。

```
- i-01234567890123456 eni-1111aaaa2222bbbb3 subnet-aaaaaaaa012345678 10.0.1.5 203.0.113.5 10.0.1.5 203.0.113.5 #Traffic from the source instance to host on the internet
- i-01234567890123456 eni-1111aaaa2222bbbb3 subnet-aaaaaaaa012345678 203.0.113.5 10.0.1.5 203.0.113.5 10.0.1.5 #Response traffic from host on the internet to the source instance
```

## トランジットゲートウェイ経由のトラフィック
<a name="flow-log-example-tgw"></a>

この例では、VPC A 内のクライアントが Transit Gateway 経由で VPC B 内のウェブサーバーに接続します。クライアントとサーバーは、異なるアベイラビリティーゾーンにあります。トラフィックは、1 つの Elastic Network Interface ID を使用して VPC B のサーバーに到着し (この例では、ID が eni-11111111111111111 であるとします)、別のものを使用して VPC B を離れます (例: eni-22222222222222222)。

![\[トランジットゲートウェイ経由のトラフィック\]](http://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/flow-log-tgw.png)


VPC B のカスタムフローログは、次の形式で作成できます。

```
version interface-id account-id vpc-id subnet-id instance-id srcaddr dstaddr srcport dstport protocol tcp-flags type pkt-srcaddr pkt-dstaddr action log-status
```

フローログレコードの次の行は、ウェブサーバーのネットワークインターフェイスにあるトラフィックのフローを示しています。1 行目は、クライアントからのリクエストトラフィックであり、最後の行はウェブサーバーからのレスポンストラフィックです。

```
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.20.33.164 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
...
3 eni-33333333333333333 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb i-01234567890123456 10.40.2.236 10.20.33.164 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
```

次の行は eni-11111111111111111 (サブネット subnet-11111111aaaaaaaaa にある Transit Gateway のリクエスタマネージド型のネットワークインターフェイス) 上のリクエストトラフィックです。したがって、フローログレコードの instance-id フィールドには「-」記号が表示されます。srcaddr フィールドには、Transit Gateway ネットワークインターフェイスのプライベート IP アドレスが表示されており、pkt-srcaddr フィールドには VPC A 上のクライアントの送信元 IP アドレスが表示されています。

```
3 eni-11111111111111111 123456789010 vpc-abcdefab012345678 subnet-11111111aaaaaaaaa - 10.40.1.175 10.40.2.236 39812 80 6 3 IPv4 10.20.33.164 10.40.2.236 ACCEPT OK
```

次の行は eni-22222222222222222 (サブネット subnet-22222222bbbbbbbbb にある Transit Gateway のリクエスタマネージド型のネットワークインターフェイス) 上のレスポンストラフィックです。dstaddr フィールドには、Transit Gateway ネットワークインターフェイスのプライベート IP アドレスが表示されており、pkt-dstaddr フィールドには VPC A 上のクライアントの IP アドレスが表示されています。

```
3 eni-22222222222222222 123456789010 vpc-abcdefab012345678 subnet-22222222bbbbbbbbb - 10.40.2.236 10.40.2.31 80 39812 6 19 IPv4 10.40.2.236 10.20.33.164 ACCEPT OK
```

## サービス名、トラフィックパス、およびフロー方向
<a name="flow-log-example-traffic-path"></a>

カスタムフローログレコードのフィールドの例を次に示します。

```
version srcaddr dstaddr srcport dstport protocol start end type packets bytes account-id vpc-id subnet-id instance-id interface-id region az-id sublocation-type sublocation-id action tcp-flags pkt-srcaddr pkt-dstaddr pkt-src-aws-service pkt-dst-aws-service traffic-path flow-direction log-status
```

次の例では、レコードにバージョン 5 フィールドが含まれているので、バージョンは 5 です。EC2 インスタンスは Amazon S3 サービスを呼び出します。フローログは、インスタンスのネットワークインターフェイスでキャプチャされます。最初のレコードのフロー方向は ingress で、2 番目のレコードのフロー方向は egress です。egressレコードの場合、traffic-path は 8 で、トラフィックがインターネットゲートウェイを通過することを示します。traffic-path フィールドは、ingress トラフィックではサポートされません。pkt-srcaddr または pkt-dstaddr がパブリック IP アドレスの場合は、サービス名が表示されます。

```
5 52.95.128.179 10.0.0.71 80 34210 6 1616729292 1616729349 IPv4 14 15044 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 19 52.95.128.179 10.0.0.71 S3 - - ingress OK
5 10.0.0.71 52.95.128.179 34210 80 6 1616729292 1616729349 IPv4 7 471 123456789012 vpc-abcdefab012345678 subnet-aaaaaaaa012345678 i-0c50d5961bcb2d47b eni-1235b8ca123456789 ap-southeast-2 apse2-az3 - - ACCEPT 3 10.0.0.71 52.95.128.179 - S3 8 egress OK
```

# フローログの制限事項
<a name="flow-logs-limitations"></a>

フローログを使用するには、次の制限事項に注意する必要があります。
+ フローログの作成後は、選択したネットワークインターフェイス、サブネット、VPC のアクティブなトラフィックがあるまで、フローログデータは表示されません。
+ ピア VPC がアカウントにない限り、VPC とピアリング接続された VPC のフローログを有効にすることはできません。
+ フローログを作成後に、その設定やフローログレコードの形式を変更することはできません。例えば、異なる IAM ロールをフローログに関連付けたり、フローログレコードのフィールドを追加または削除したりすることはできません。代わりにフローログを削除し、必要な設定で新しいログを作成できます。
+ ネットワークインターフェイスに複数の IPv4 アドレスがある場合、トラフィックがセカンダリプライベート IPv4 アドレスに送信されても、フローログの `dstaddr` フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、`pkt-dstaddr` フィールドを含むフローログを作成します。
+ トラフィックがネットワークインターフェイスに送信され、送信先がネットワークインターフェイスの IP アドレスのいずれでもない場合、フローログの `dstaddr` フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信先 IP アドレスをキャプチャするには、`pkt-dstaddr` フィールドを含むフローログを作成します。
+  トラフィックがネットワークインターフェイスから送信され、送信元がネットワークインターフェイスの IP アドレスのいずれでもない場合、ログレコードがエグレスフローのとき、フローログの `srcaddr` フィールドにはプライマリプライベート IPv4 アドレスが表示されます。元の送信元 IP アドレスをキャプチャするには、`pkt-srcaddr` フィールドを含むフローログを作成します。ログレコードがネットワークインターフェイスへの入力フロー用である場合、ネットワークインターフェイスのプライマリプライベート IP は `srcaddr` フィールドに表示されません。
+ ネットワークインターフェイスが [Nitro ベースのインスタンス](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)にアタッチされている場合、指定した最大集約間隔に関係なく、集約間隔は常に 1 分以下になります。
+ `pkt-srcaddr` と `pkt-dstaddr` のフィールドについては、中間レイヤーでクライアント IP アドレスの保存が有効になっている場合、このフィールドに表示されるのが中間レイヤーの IP アドレスではなく、保存されたクライアント IP になることがあります。
+ `traffic-path` フィールドについては、値は同じ VPC 内のリソースを経由するフローと、Outpost ローカルゲートウェイを経由するフローで同じです。
+ 集計間隔中に一部のフローログレコードがスキップされることがあります ([使用可能なフィールド](flow-log-records.md#flow-logs-fields) の log-status を参照)。これは、内部の AWS キャパシティの制限または内部エラーが原因で発生する場合があります。VPC フローログの請求金額を表示するために AWS Cost Explorer を使用しており、一部のフローログがフローログの集計間隔中にスキップされた場合は、AWS Cost Explorer で報告されるフローログの数が Amazon VPC により発行されたフローログの数よりも多くなります。
+ [VPC ブロックパブリックアクセス (BPA)](security-vpc-bpa-assess-impact-main.md#security-vpc-bpa-fl) を使用している場合:
  + VPC BPA のフローログには、[スキップされたレコード](flow-logs-records-examples.md#flow-log-example-no-data)は含まれません。
  + VPC BPA のフローログには、フローログに `bytes` フィールドを含めた場合であっても、[`bytes`](flow-log-records.md#flow-logs-fields) は含まれません。

フローログですべての IP トラフィックはキャプチャされません。以下のトラフィックの種類は記録されません。
+ Amazon DNS サーバーに接続したときにインスタンスによって生成されるトラフィック。独自の DNS サーバーを使用する場合は、その DNS サーバーへのすべてのトラフィックが記録されます。
+ Amazon Windows ライセンスのアクティベーション用に Windows インスタンスによって生成されたトラフィック。
+ インスタンスメタデータ用に `169.254.169.254` との間を行き来するトラフィック。
+ Amazon Time Sync Service の `169.254.169.123` との間でやり取りされるトラフィック。
+ DHCP トラフィック。
+ [トラフィックミラーリングされた](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-how-it-works.html)ソーストラフィック。トラフィックミラーリングされたターゲットトラフィックのみが表示されます。
+ デフォルト VPC ルーターの予約済み IP アドレスへのトラフィック。
+ エンドポイントのネットワークインターフェイスと Network Load Balancer のネットワークインターフェイスの間のトラフィック。
+ アドレス解決プロトコル (ARP) トラフィック。
+ 有効期間が短いリージョン NAT ゲートウェイ上のトラフィック。作成後数分で削除されます。

バージョン 7 で利用可能な ECS フィールドに固有の制約事項:
+ 基盤となる ECS タスクがフローログサブスクリプションの所有者によって所有されていない場合、ECS フィールドは計算されません。例えば、サブネット (`SubnetA`) を別のアカウント (`AccountB`) と共有し、`SubnetA` のフローログサブスクリプションを作成する場合、`AccountB` が共有サブネットで ECS タスクを起動すると、サブスクリプションは `AccountB` によって起動された ECS タスクからトラフィックログを受信しますが、セキュリティ上の懸念から、これらのログの ECS フィールドは計算されません。
+ VPC / サブネットリソースレベルで ECS フィールドを使用してフローログサブスクリプションを作成すると、ECS 以外のネットワークインターフェイス用に生成されたトラフィックもサブスクリプションに対して配信されます。ECS フィールドの値は、ECS 以外の IP トラフィックでは「-」になります。例えば、サブネット (`subnet-000000`) があり、ECS フィールド (`fl-00000000`) を使用してこのサブネットのフローログサブスクリプションを作成する場合を考えてみます。`subnet-000000` で、インターネットに接続され、IP トラフィックをアクティブに生成している EC2 インスタンス (`i-0000000`) を起動します。また、同じサブネットで実行中の ECS タスク (`ECS-Task-1`) を起動します。`i-0000000` と `ECS-Task-1` の両方が IP トラフィックを生成しているため、フローログサブスクリプション `fl-00000000` は両方のエンティティのトラフィックログを配信します。ただし、logFormat に含めた ECS フィールドの実際の ECS メタデータを取得するのは `ECS-Task-1` だけです。`i-0000000` に関連するトラフィックの場合、これらのフィールドの値は「-」になります。
+ `ecs-container-id` と `ecs-second-container-id` の順序は、VPC フローログサービスが ECS イベントストリームからそれらを受信したときに基づきます。ECS コンソールまたは DescribeTask API コールで表示されるのと同じ順序であるとは限りません。タスクがまだ実行しているときにコンテナが STOPPED ステータスになると、このコンテナが引き続きログに表示されることがあります。
+ ECS メタデータと IP トラフィックログは、2 つの異なるソースからのものです。アップストリームの依存関係から必要な情報をすべて取得すると、ECS トラフィックの計算がすぐに開始されます。新しいタスクを開始した後、ESC フィールドの計算は、1) 基盤となるネットワークインターフェイスの IP トラフィックを受信したとき、および 2) タスクが現在実行中であることを示す ECS タスクのメタデータを含む ECS イベントを受信したときに開始されます。タスクを停止した後、ESC フィールドの計算は、1) 基盤となるネットワークインターフェイスの IP トラフィックが受信されなくなったとき、および 2) タスクがもう実行中でなくなったことを示す ECS タスクのメタデータを含む ECS イベントを受信したときに停止します。
+ サポートされるのは、`awsvpc` [ネットワーク](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)モードで起動した ECS タスクのみです。

`encryption-status` フィールドに固有の制限:
+ 一部のネットワークアプライアンスが暗号化ステータスを報告する制限があるため、一部のフローでは暗号化ステータスが「-」(使用不可) になる場合があります。ユーザーは分析でこれらのフローを無視できます。
+ モニターモードで暗号化として表示されても、フローが強制モードで許可されるわけではありません。逆も同様です。
  + フローがモニターモードで暗号化されている場合、強制モードでは準拠していない可能性があります。
    + フローに AWS サービスによって作成された ENI が含まれる場合、サービスは暗号化コントロールをサポートする必要があります。
    + フローが VPC ピアリングを通過する場合、ピアリングされた VPC は暗号化コントロールを強制しない可能性があります。
  + フローがモニターモードで暗号化されていない場合、フローに関連するサービスが除外として追加されている限り、強制モードで準拠している可能性があります。

## 料金
<a name="flow-logs-pricing"></a>

フローログを発行すると、提供されたログに対するデータインジェスト料金とアーカイブ料金が適用されます。提供されたログの発行に伴う料金の詳細については、「[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を開き、**[Logs]** (ログ) を選択して **[Vended Logs]** (提供されたログ) を参照してください。

フローログの発行に伴う料金を追跡するには、コスト配分タグを送信先のリソースに適用できます。これにより、AWS コスト配分レポートに、これらのタグで集計された使用状況とコストが表示されます。ビジネスカテゴリ (コストセンター、アプリケーション名、所有者など) 別のタグを適用すると、コストを分類できます。詳細については次を参照してください:
+ 「*AWS Billing ユーザーガイド*」の「[コスト配分タグの使用](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)」
+ 「*Amazon CloudWatch Logs ユーザーガイド*」の「[Amazon CloudWatch Logs のロググループにタグを付ける](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#log-group-tagging)」
+ 「*Amazon Simple Storage Service ユーザーガイド*」の「[S3 バケットタグでのコスト配分タグの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CostAllocTagging.html)」
+ 「*Amazon Data Firehose デベロッパーガイド*」の「[Tagging Your Delivery Streams](https://docs.aws.amazon.com/firehose/latest/dev/firehose-tagging.html)」

# フローログの使用
<a name="working-with-flow-logs"></a>

Amazon EC2 および Amazon VPC のコンソールを使用して、フローログを操作できます。

**Topics**
+ [1. IAM を使用してフローログの使用を管理する](#controlling-use-of-flow-logs)
+ [2. フローログの作成](#create-flow-log)
+ [3. フローログへのタグ付け](#modify-tags-flow-logs)
+ [4. フローログの削除](#delete-flow-log)
+ [コマンドラインの概要](#flow-logs-api-cli)

## 1. IAM を使用してフローログの使用を管理する
<a name="controlling-use-of-flow-logs"></a>

デフォルトでは、 ユーザーにはフローログを使用するためのアクセス許可がありません。フローログを作成、説明、削除するアクセス許可をユーザーに付与するポリシーがアタッチされた IAM ロールを作成できます。

フローログを作成、説明、削除する完全なアクセス許可をユーザーに付与するポリシー例を次に示します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteFlowLogs",
        "ec2:CreateFlowLogs",
        "ec2:DescribeFlowLogs"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 詳細については、「[Amazon VPC で IAM を使用する方法](security_iam_service-with-iam.md)」を参照してください。

## 2. フローログの作成
<a name="create-flow-log"></a>

VPCs、サブネット、またはネットワークインターフェイスのフローログを作成できます。フローログを作成するときは、フローログの送信先を指定する必要があります。詳細については次を参照してください:
+ [CloudWatch Logs に発行するフローログの作成](flow-logs-cwl-create-flow-log.md)
+ [Amazon S3 に発行するフローログの作成](flow-logs-s3-create-flow-log.md)
+ [Amazon Data Firehose に発行するフローログの作成](flow-logs-firehose-create-flow-log.md)

## 3. フローログへのタグ付け
<a name="modify-tags-flow-logs"></a>

フローログに対するタグの追加または削除は随時行うことができます。

**フローログのタグを管理するには**

1. 次のいずれかを行います。
   + Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。ナビゲーションペインで、[**Network Interfaces**] を選択してください。ネットワークインターフェイスのチェックボックスをオンにします。
   + Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。ナビゲーションペインで、[**Your VPCs（お使いの VPC）**] を選択します。VPC のチェックボックスをオンにします。
   + Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。ナビゲーションペインで、[**サブネット**] を選択してください。サブネットのチェックボックスをオンにします。

1. **[Flow Logs]** (フローログ) を選択します。

1. [**Actions**] (アクション)、[**Manage tags**] (タグの管理) を選択します。

1. タグを追加するには、**[Add new tag]** (新しいタグを追加) をクリックし、キーと値を入力します。タグを削除するには**[削除]** を選択してください。

1. タグの追加や削除が完了したら、**[Save]** (保存) を選択します。

## 4. フローログの削除
<a name="delete-flow-log"></a>

フローログはいつでも削除できます。フローログを削除した後で、データの収集が中止するまでに数分かかる場合があります。

フローログを削除しても、送信先からログデータが削除されたり、送信先リソースが変更されたりすることはありません。送信先サービスのコンソールを使用して、既存のフローログデータを送信先から直接削除し、送信先リソースをクリーンアップする必要があります。

**フローログを削除するには**

1. 次のいずれかを行います。
   + Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。ナビゲーションペインで、[**Network Interfaces**] を選択してください。ネットワークインターフェイスのチェックボックスをオンにします。
   + Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。ナビゲーションペインで、[**Your VPCs（お使いの VPC）**] を選択します。VPC のチェックボックスをオンにします。
   + Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。ナビゲーションペインで、[**サブネット**] を選択してください。サブネットのチェックボックスをオンにします。

1. **[Flow Logs]** (フローログ) を選択します。

1. **[Actions]** (アクション)、**[Delete flow logs]** (フローログの削除) を選択します。

1. 確認を求められたら、**delete** と入力し、**[Delete]** (削除) を選択します。

## コマンドラインの概要
<a name="flow-logs-api-cli"></a>

このページで説明しているタスクは、コマンドラインを使用して実行できます。

**フローログの作成**
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [New-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

**フローログの説明**
+ [describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) (AWS CLI)
+ [Get-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

**フローログへのタグ付け**
+ [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) および [delete-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html) (AWS CLI)
+ [New-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Tag.html) および [Remove-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Tag.html) (AWS Tools for Windows PowerShell)

**フローログの削除**
+ [delete-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-flow-logs.html) (AWS CLI)
+ [Remove-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

# CloudWatch Logs へのフローログの発行
<a name="flow-logs-cwl"></a>

フローログはフローログデータを直接 Amazon CloudWatch に発行できます。Amazon CloudWatch は、モニタリングとオブザーバビリティの総合サービスです。さまざまな AWS リソースや独自のアプリケーションおよびサービスからメトリクス、ログ、イベントデータを収集して追跡します。CloudWatch を使用することで、リソースの使用状況、アプリケーションのパフォーマンス、稼働状況を可視化でき、システム全体のパフォーマンス変化や潜在的問題を特定して対処することができます。CloudWatch を使用すると、アラームの設定やログおよびメトリクスの可視化が行え、クラウドリソースの収集および最適化に自動的に対応できます。これは、クラウドベースのインフラストラクチャとアプリケーションの信頼性、可用性、パフォーマンスを確実なものとするために欠かせないツールです。

フローログデータは、CloudWatch Logs に対して発行するときはロググループに発行され、各ネットワークインターフェイスにはロググループに一意のログストリームがあります。ログストリームにはフローログレコードが含まれます。同じロググループにデータを公開する複数のフローログを作成できます。同じネットワークインターフェイスが同じロググループの 1 つ以上のフローログに存在する場合、1 つの組み合わされたログストリームがあります。1 つのフローログで、拒否されたトラフィックをキャプチャし、別のフローログで、許可されたトラフィックをキャプチャするよう指定した場合、組み合わされたログストリームですべてのトラフィックがキャプチャされます。

CloudWatch Logs では、[**timestamp**] フィールドはフローログレコードでキャプチャされた開始時刻に対応します。[**ingestionTime**] フィールドは、CloudWatch Logs によってフローログレコードが受信された日時を示します。このタイムスタンプは、フローログレコードでキャプチャされた終了時刻より後です。

CloudWatch Logs の詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[CloudWatch Logs に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-CWL)」を参照してください。

**料金**  
フローログを CloudWatch Logs に発行すると、提供されたログに対するデータインジェスト料金とアーカイブ料金が適用されます。詳細については、「[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を開き、**[Logs]** (ログ) を選択して **[Vended Logs]** (提供されたログ) を参照してください。

**Topics**
+ [CloudWatch Logs へのフローログ発行のための IAM ロール](flow-logs-iam-role.md)
+ [CloudWatch Logs に発行するフローログの作成](flow-logs-cwl-create-flow-log.md)
+ [CloudWatch Logs を使用してフローログレコードを表示する](view-flow-log-records-cwl.md)
+ [フローログレコードの検索](search-flow-log-records-cwl.md)
+ [CloudWatch Logs でのフローログレコードの処理](process-records-cwl.md)

# CloudWatch Logs へのフローログ発行のための IAM ロール
<a name="flow-logs-iam-role"></a>

フローログに関連付けられた IAM ロールには、CloudWatch Logs の指定されたロググループにフローログを発行するために十分なアクセス許可が必要です。IAM ロールは AWS アカウントに属している必要があります。

IAM ロールにアタッチされた IAM ポリシーには、少なくとも以下のアクセス許可が含まれている必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}
```

------

ロールに以下の信頼ポリシーがあることを確認します。これにより、フローログサービスがロールを引き受けることができます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

[Confused Deputy Problem (混乱した使節の問題)](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) から自分を守るために、`aws:SourceAccount` および `aws:SourceArn` の条件キーを使用することをお勧めします。例えば、前述の信頼ポリシーに次の条件ブロックを追加できます。ソースアカウントはフローログの所有者であり、ソース ARN はフローログ ARN です。フローログ ID が不明な場合は、ARN の不明部分をワイルドカード (\$1) に置き換え、フローログ作成後にポリシーを更新できます。

```
"Condition": {
    "StringEquals": {
        "aws:SourceAccount": "account_id"
    },
    "ArnLike": {
        "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id"
    }
}
```

## フローログの IAM ロールの作成
<a name="create-flow-logs-role"></a>

前述のように既存のロールを更新できます。また、以下の手順を使用してフローログで使用する新しいロールを作成することもできます。このロールは、フローログの作成時に指定します。

**フローログの IAM ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**ポリシー** を選択してください。

1. **[ポリシーの作成]** を選択します。

1. **[ポリシーの作成]** ページで、次の操作を行います。

   1. **[JSON]** を選択します。

   1. このウィンドウのコンテンツを、このセクションの冒頭にあるアクセス許可ポリシーに置き換えてください。

   1. [**次へ**] を選択します。

   1. ポリシーの名前、説明 (省略可能)、タグを入力し、**[ポリシーの作成]** をクリックします。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

1. **[Trusted entity type]** (信頼されたエンティティのタイプ) で、**[Custom trust policy]** (カスタム信頼ポリシー) を選択します。**[Custom trust policy]** (カスタム信頼ポリシー) で、`"Principal": {},` を次のように置き換え、**[Next]** (次へ) を選択します。

   ```
   "Principal": {
      "Service": "vpc-flow-logs.amazonaws.com"
   },
   ```

1. **[Add permissions]** (アクセス許可の追加) ページで、この手順で先ほど作成したポリシーの横にあるチェックボックスを選択し、**[Next]** (次へ) を選択します。

1. ロールの名前を入力し、オプションで説明を入力します。

1. [**ロールの作成**] を選択します。

# CloudWatch Logs に発行するフローログの作成
<a name="flow-logs-cwl-create-flow-log"></a>

VPCs、サブネット、またはネットワークインターフェイスのフローログを作成できます。これらのステップを IAM ロールを使用するユーザーとして実行する場合は、そのロールが `iam:PassRole` アクションを使用するアクセス許可があることを確認してください。

**前提条件**  
リクエストを作成するために使用している IAM プリンシパルに `iam:PassRole` を呼び出すアクセス許可があることを確認してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::111122223333:role/flow-log-role-name"
        }
    ]
}
```

------

**コンソールを使用してフローログを作成するには**

1. 次のいずれかを行います。
   + Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。ナビゲーションペインで、[**Network Interfaces**] を選択してください。ネットワークインターフェイスのチェックボックスをオンにします。
   + Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。ナビゲーションペインで、[**Your VPCs（お使いの VPC）**] を選択します。VPC のチェックボックスをオンにします。
   + Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。ナビゲーションペインで、[**サブネット**] を選択してください。サブネットのチェックボックスをオンにします。

1. **[アクション]**、**[フローログの作成]** を選択します。

1. [**Filter**] (フィルター) で、ログに記録するトラフィックの種類を指定します。承認および拒否されたトラフィックを記録するには [**All**] (すべて)、拒否されたトラフィックだけをログ記録するには [**Reject**] (拒否)、承認されたトラフィックだけをログ記録するには [**Accept**] (承認) を選択します。

1. [**Maximum aggregation interval**] で、フローがキャプチャされ、1 つのフローログレコードに集約される最大期間を選択します。

1. [**送信先**] で、[**Send to CloudWatch Logs (CloudWatch ログへの送信)**] を選択します。

1. **[送信先ロググループ]** には、既存のロググループの名前を選択するか、新しいロググループの名前を入力します。名前を入力すると、記録するトラフィックがある場合にロググループが作成されます。

1. **[サービスアクセス]**では、CloudWatch Logs にログを発行する権限を持つ既存の [IAM サービスロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)を選択するか、新しいサービスロールを作成することを選択します。

1. **[Lログレコードの形式]** で、フローログレコードの形式を選択します。
   + デフォルトの形式を使用するには、**[AWS のデフォルト形式]** を選択します。
   + カスタム形式を使用するには、**[カスタム形式] **を選択し、**[ログ形式]** からフィールドを選択します。

1. **[追加のメタデータ]**で、Amazon ECS からのメタデータをログ形式に含めるかどうかを選択します。

1. (オプション) フローログにタグを適用するには、**[新規タグを追加]** を選択します。

1. **[フローログの作成] **を選択します。

**コマンドラインを使用してフローログを作成するには**

以下のいずれかのコマンドを使用します。
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [New-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

次の AWS CLI の例では、指定したサブネットの許可されたすべてのトラフィックをキャプチャするフローログが作成されます。フローログは、指定されたロググループに配信されます。`--deliver-logs-permission-arn` パラメータは、CloudWatch Logs への発行に必要な IAM ロールを指定します。

```
aws ec2 create-flow-logs --resource-type Subnet --resource-ids subnet-1a2b3c4d --traffic-type ACCEPT --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs
```

# CloudWatch Logs を使用してフローログレコードを表示する
<a name="view-flow-log-records-cwl"></a>

CloudWatch Logs コンソールを使用して、フローログレコードを表示できます。フローログを作成してからコンソールに表示されるまでに、数分かかる場合があります。

**コンソールを使用して CloudWatch Logs に対して発行されたフローログレコードを表示するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1. フローログを含むロググループの名前を選択して、その詳細ページを開きます。

1. フローログレコードを含むログストリームの名前を選択します。詳細については、「[フローログレコード](flow-log-records.md)」を参照してください。

**コマンドラインを使用して CloudWatch Logs に対して発行されたフローログレコードを表示するには**
+ [get-log-events](https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html) (AWS CLI)
+ [Get-CWLLogEvent](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-CWLLogEvent.html) (AWS Tools for Windows PowerShell)

# フローログレコードの検索
<a name="search-flow-log-records-cwl"></a>

CloudWatch Logs コンソールを使用して、CloudWatch Logs に発行されたフローログレコードを検索できます。[メトリクスフィルター](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)を使用すると、フローログレコードをフィルタリングできます。フローログレコードはスペースで区切られます。

**CloudWatch Logs コンソールを使用してフローログレコードを検索するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1. フローログを含むロググループを選択し、検索するネットワークインターフェイスが分かっている場合は、ログストリームを選択します。または、**[Search log group]** (ロググループの検索) を選択します。ロググループに多数のネットワークインターフェイスがある場合、または選択した時間範囲によっては、この処理に時間がかかる場合があります。

1. **[イベントのフィルター]** に以下の文字列を入力します。これは、フローログレコードで [デフォルトの形式](flow-log-records.md#flow-logs-default)が使用されていることを前提としています。

   ```
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   ```

1. 必要に応じてフィールドの値を指定して、フィルターを変更します。次の例では、特定の送信元 IP アドレスでフィルタリングします。

   ```
   [version, accountid, interfaceid, srcaddr = 10.0.0.1, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   [version, accountid, interfaceid, srcaddr = 10.0.2.*, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
   ```

   次の例では、送信先ポート、バイト数、およびトラフィックが拒否されたかどうかでフィルタリングします。

   ```
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes, start, end, action, logstatus]
   [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes >= 400, start, end, action = REJECT, logstatus]
   ```

# CloudWatch Logs でのフローログレコードの処理
<a name="process-records-cwl"></a>

フローログレコードは、CloudWatch Logs で収集した他のログイベントのように処理することができます。モニタリングログデータとメトリックフィルターの詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[フィルターを使用したログイベントからのメトリクスの作成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)」を参照してください。

## 例: フローログの CloudWatch メトリクスフィルターとアラームの作成
<a name="flow-logs-cw-alarm-example"></a>

この例では、`eni-1a2b3c4d` のフローログがあります。1 時間以内の期間に TCP ポート 22 (SSH) 経由でインスタンスに接続しようとする試みが 10 個以上拒否された場合に、アラームを作成するとします。最初に、アラームを作成するトラフィックのパターンと一致するメトリクスフィルターを作成する必要があります。次に、メトリクスフィルターのアラームを作成できます。

**拒否された SSH トラフィックのメトリクスフィルターを作成し、フィルタのアラームを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1. ロググループのチェックボックスをオンにしてから、**[アクション]**、**[メトリクスフィルターの作成]** を選択します。

1. **[Filter pattern]** (フィルターパターン) で、次の文字列を入力します。

   ```
   [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
   ```

1. [**テストするログデータの選択**] で、ネットワークインターフェイスのログストリームを選択します。(オプション) フィルタパターンと一致するログデータの行を表示するには、[**テストパターン**] を選択します。

1. 準備ができたら、**[次へ]** を選択します。

1. フィルター名、メトリクス名前空間、およびメトリック名を入力します。メトリクス値を 1 に設定します。完了したら、[**次へ**] を選択し、その後 [**Create metric filter**] を選択します。

1. ナビゲーションペインで、**[アラーム]**、**[すべてのアラーム]** の順に選択します。

1. [**アラームの作成**] を選択します。

1. 作成したメトリクス名を選択し、その後 **[メトリクスの選択]** を選択します。

1. アラームを以下のように設定して、**[次へ]** をクリックします。
   + **[統計]** で、**[合計]** を選択します。これにより、指定された期間のデータポイントの総数をキャプチャしていることを確認できます。
   + **[期間]** で、**[1 時間]** を選択します。
   + [**TimeSinceLastActive が次の場合...**] で、[**以上**] を選択し、しきい値は「10」と入力します。
   + [**追加設定**]、[**Datapoints to alarm**] はデフォルトの「1」のままにしておきます。

1. [**次へ**] を選択します。

1. [**Notification**] で、既存の SNS トピックを選択するか、[**Create new topic**] を選択して新しいトピックを作成します。[**次へ**] を選択します。

1. 次のページで、アラームの名前と説明を入力し、**[次へ]** を選択します。

1. アラームの設定が終わったら、**[アラームの作成]** を選択します。

# フローログを Amazon S3 に発行する
<a name="flow-logs-s3"></a>

フローログはフローログデータを Amazon S3 に発行できます。Amazon S3 (Simple Storage Service) は、スケーラブルで耐久性のあるオブジェクトストレージサービスです。ウェブ上のどの場所からも、任意の量のデータを保存して取得することができるように設計されています。S3 は、データバージョニング、暗号化、アクセスコントロールの機能が組み込まれており、業界をリードする耐久性と可用性を備えています。

Amazon S3 に発行した場合、フローログデータは、指定する既存の Amazon S3 バケットに発行されます。監視されるすべてのネットワークインターフェイスのフローログレコードが、バケットに保存された一連のログファイルオブジェクトに発行されます。フローログが VPC のデータを取得する場合、フローログは、選択された VPC ですべてのネットワークインターフェイスのフローログレコードを発行します。

フローログに使用する Amazon S3 バケットの作成方法については、「*Amazon S3 ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

VPC フローログの取り込み、フローログの処理、フローログの可視化に関する詳細は、AWS ソリューションライブラリ内「[OpenSearch を利用した統合ログ記録](https://aws.amazon.com/solutions/implementations/centralized-logging-with-opensearch/)」を参照してください。

CloudWatch Logs の詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[Amazon S3 に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)」を参照してください。

**料金**  
フローログを Amazon S3 に発行すると、提供されたログに対するデータインジェスト料金とアーカイブ料金が適用されます。詳細については、「[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を開き、**[Logs]** (ログ) を選択して **[Vended Logs]** (提供されたログ) を参照してください。

**Topics**
+ [フローログファイル](flow-logs-s3-path.md)
+ [フローログのための Amazon S3 バケットのアクセス許可](flow-logs-s3-permissions.md)
+ [SSE-KMS に使用する必須のキーポリシー](flow-logs-s3-cmk-policy.md)
+ [Amazon S3 ログファイルのアクセス許可](flow-logs-file-permissions.md)
+ [Amazon S3 に発行するフローログの作成](flow-logs-s3-create-flow-log.md)
+ [Amazon S3 を使ってフローログレコードを表示する](view-flow-log-records-s3.md)

# フローログファイル
<a name="flow-logs-s3-path"></a>

 VPC フローログは、VPC で送受信される IP トラフィックに関するデータをログレコードに収集し、それらのレコードをログファイルに集約してから、5 分間隔でログファイルを Amazon S3 バケットに発行します。複数のファイルが公開され、各ログファイルに過去 5 分間に記録された IP トラフィックのフローログレコードの一部またはすべてが含まれている場合があります。

Amazon S3 では、フローログファイルの [**最終更新日時**] フィールドに、ファイルが Amazon S3 バケットにアップロードされた日時が表示されます。これは、ファイル名のタイムスタンプより後で、Amazon S3 バケットにファイルをアップロードするのにかかった時間によって異なります。

**ログファイル形式**

ログファイルに指定できる形式は次のとおりです。各ファイルは 1 つの Gzip ファイルに圧縮されます。
+ **[Text]** - プレーンテキスト。これがデフォルトの形式です。
+ **[Parquet]** - Apache Parquet は列指向データ形式です。Parquet 形式のデータに対するクエリは、プレーンテキストのデータに対するクエリに比べて 10～100 倍高速です。Gzip 圧縮を使用した Parquet 形式のデータは、Gzip 圧縮を使用したプレーンテキストよりもストレージスペースが 20% 少なくなります。

**注記**  
gzip 圧縮を使用した Parquet 形式のデータが集計期間あたり 100 KB 未満の場合、Parquet ファイルのメモリ要件により、Parquet 形式のデータの保存には gzip 圧縮によるプレーンテキストよりも多くの容量が必要になる可能性があります。

**ログファイルオプション**

オプションで、次のオプションを指定できます。
+ **[Hive-compatible S3 prefixes]** - Hive 互換ツールにパーティションをインポートする代わりに、Hive 互換プレフィックスを有効にします。クエリを実行する前に、[**MSCK REPAIR TABLE**] コマンドを使用します。
+ **[Hourly partitions]** - 大量のログがあり、通常は特定の時間にクエリをターゲットにしている場合、ログを時間単位で分割することで、より高速な結果が得られ、クエリコストを節約できます。

**ログファイル S3 バケット構造**  
ログファイルでは、フローログの ID、リージョン、作成日、および送信先オプションに基づくフォルダ構造を使用して、指定された Amazon S3 バケットに保存されます。

デフォルトでは、ファイルは次の場所に配信されます。

```
bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/
```

Hive 互換の S3 プレフィックスを有効にすると、ファイルは次の場所に配信されます。

```
bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/aws-service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/
```

時間単位のパーティションを有効にすると、ファイルは次の場所に配信されます。

```
bucket-and-optional-prefix/AWSLogs/account_id/vpcflowlogs/region/year/month/day/hour/
```

Hive 互換パーティションを有効にして 1 時間あたりのフローログをパーティション化すると、ファイルは次の場所に配信されます。

```
bucket-and-optional-prefix/AWSLogs/aws-account-id=account_id/aws-service=vpcflowlogs/aws-region=region/year=year/month=month/day=day/hour=hour/
```

**ログファイル名**  
ログファイルのファイル名は、フローログ ID、リージョン、および作成日時に基づきます。ファイル名は、次の形式です。

```
aws_account_id_vpcflowlogs_region_flow_log_id_YYYYMMDDTHHmmZ_hash.log.gz
```

以下は、us-east-1 リージョンで June 20, 2018 の 16:20 UTC に、リソースに対して AWS アカウント「123456789012」で作成されたフローログのログファイルの例です。ファイルには、終了時刻が 16:20:00 から 16:24:59 の間のフローログレコードが含まれます。

```
123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz
```

# フローログのための Amazon S3 バケットのアクセス許可
<a name="flow-logs-s3-permissions"></a>

デフォルトでは、Amazon S3 バケットとそれに含まれているオブジェクトはプライベートです。バケット所有者のみが、そのバケットとそれに含まれているオブジェクトにアクセスできます。ただし、バケット所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

フローログを作成するユーザーがバケットを所有し、そのバケットに `PutBucketPolicy` および `GetBucketPolicy` 許可を持っている場合、次のポリシーが自動的にそのバケットにアタッチされます。このポリシーは、バケットにアタッチされている既存のポリシーを上書きします。

それ以外の場合は、バケット所有者が、フローログ作成者の AWS アカウント ID を指定して、このポリシーをバケットに追加しなければ、フローログの作成は失敗します。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットポリシーの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "123456789012"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:*"
                }
            }
        }
    ]
}
```

------

*my-s3-arn* に指定する ARN は、Hive と互換性のある S3 のプレフィックスを使用するかどうかによって異なります。
+ デフォルトのプレフィックス

  ```
  arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_id/*
  ```
+ Hive 互換の S3 プレフィックス

  ```
  arn:aws:s3:::bucket_name/optional_folder/AWSLogs/aws-account-id=account_id/*
  ```

ベストプラクティスは、個々の AWS アカウント の ARN ではなく、ログ配信サービスプリンシパルに、これらのアクセス許可を付与することです。また、`aws:SourceAccount` および `aws:SourceArn` 条件キーを使用して、[混乱した使節の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)から保護することもベストプラクティスです。ソースアカウントはフローログの所有者であり、ソース ARN は、ログサービスのワイルドカード (\$1) ARN です。

ログ配信サービスは、`HeadBucket` Amazon S3 API アクションを呼び出して、S3 バケットの存在と場所を確認することに注意してください。このアクションを呼び出すアクセス許可をログ配信サービスに付与する必要はありません。S3 バケットとその場所が確認できない場合でも、VPC フローログが配信されます。ただし、CloudTrail ログの `HeadBucket` への呼び出しには `AccessDenied` エラーが発生します。

# SSE-KMS に使用する必須のキーポリシー
<a name="flow-logs-s3-cmk-policy"></a>

Amazon S3 バケット内のデータを保護するには、Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)、または S3 バケットに格納された KMS キーを使用したサーバー側の暗号化 (SSE-KMS) のいずれかを有効にします。詳細については、「*Amazon S3 ユーザーガイド*」の「[サーバー側の暗号化を使用したデータの保護](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)」をご参照ください。

SSE-S3 を選択した場合、追加の設定は必要ありません。Amazon S3 が暗号化キーを処理します。

SSE-KMS を選択した場合は、カスタマーマネージドキー ARN を使用する必要があります。キー ID を使用すると、フローログの作成時に [LogDestination が配信できない](flow-logs-troubleshooting.md#flow-logs-troubleshooting-kms-id) エラーが発生する可能性があります。また、ログ配信アカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシーを更新する必要があります。SSE-KMS での使用に必要なキーポリシーについては、「*Amazon CloudWatch Logs ユーザーガイド*」の「[Amazon S3 バケットのサーバー側の暗号化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-SSE-KMS-S3)」を参照してください。

# Amazon S3 ログファイルのアクセス許可
<a name="flow-logs-file-permissions"></a>

Amazon S3 は、必須のバケットポリシーに加えて、アクセスコントロールリスト (ACL) を使用して、フローログによって作成されたログファイルへのアクセスを管理します。デフォルトでは、バケット所有者が各ログファイルで `FULL_CONTROL` 権限を持ちます。ログ配信の所有者 (バケット所有者とは異なる場合) は、許可を持ちません。ログ配信アカウントには、`READ` および `WRITE` 許可があります。詳細については、「*Amazon S3 ユーザーガイド*」の「[アクセスコントロールリスト (ACL) の概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)」を参照してください。

# Amazon S3 に発行するフローログの作成
<a name="flow-logs-s3-create-flow-log"></a>

Amazon S3 バケットを作成して設定した後は、ネットワークインターフェイス、サブネット、または VPC のフローログを作成できます。

**前提条件**

フローログを作成する IAM プリンシパルには、フローログを宛先の Amazon S3 バケットに公開するために、次のアクセス許可が付与されている IAM ロールを使用している必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogDelivery",
        "logs:DeleteLogDelivery"
      ],
      "Resource": "*"
    }
  ]
}
```

------

**コンソールを使用してフローログを作成するには**

1. 次のいずれかを行います。
   + Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。ナビゲーションペインで、[**Network Interfaces**] を選択してください。ネットワークインターフェイスのチェックボックスをオンにします。
   + Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。ナビゲーションペインで、[**Your VPCs（お使いの VPC）**] を選択します。VPC のチェックボックスをオンにします。
   + Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。ナビゲーションペインで、[**サブネット**] を選択してください。サブネットのチェックボックスをオンにします。

1. **[アクション]**、**[フローログの作成]** を選択します。

1. [**フィルタ**] で、記録する IP トラフィックデータのタイプを指定します。
   + **[承諾]** - 承諾されたトラフィックのみをログに記録します。
   + **[却下]** - 却下されたトラフィックのみをログに記録します。
   + [**All**] - 承認されたトラフィックと拒否されたトラフィックをログに記録します。

1. [**Maximum aggregation interval**] で、フローがキャプチャされ、1 つのフローログレコードに集約される最大期間を選択します。

1. [**送信先**] で、[**Amazon S3 バケットへの送信**] を選択します。

1. **[S3 バケット ARN]** で、既存の Amazon S3 バケットの Amazon リソースネーム (ARN) を指定します。オプションで、サブフォルダを含めることができます。例えば、`my-logs` というバケットで `my-bucket` というサブフォルダを指定するには、次の ARN を使用します。

   `arn:aws:s3:::my-bucket/my-logs/`

   `AWSLogs` は予約語であるため、バケットでサブフォルダ名として使用することはできません。

   バケットを所有している場合は、リソースポリシーが自動的に作成され、バケットにアタッチされます。詳細については、「[フローログのための Amazon S3 バケットのアクセス許可](flow-logs-s3-permissions.md)」を参照してください。

1. **[ログレコード形式]** で、フローログレコードの形式を指定します。
   + デフォルトのフローログレコード形式を使用するには、**[AWS のデフォルト形式]** を選択します。
   + カスタム形式を作成するには、[**カスタム形式**] を選択します。**[ログの形式]** で、フローログレコードに含めるフィールドを選択します。

1. **[追加のメタデータ]**で、Amazon ECS からのメタデータをログ形式に含めるかどうかを選択します。

1. **[ログファイル形式]** で、ログファイルの形式を指定します。
   + **[Text]** - プレーンテキスト。これがデフォルトの形式です。
   + **[Parquet]** - Apache Parquet は列指向データ形式です。Parquet 形式のデータに対するクエリは、プレーンテキストのデータに対するクエリに比べて 10～100 倍高速です。Gzip 圧縮を使用した Parquet 形式のデータは、Gzip 圧縮を使用したプレーンテキストよりもストレージスペースが 20% 少なくなります。

1. (オプション) Hive 互換の S3 プレフィックスを使用するには、[**Hive-compatible S3 prefix**]、[**有効化**] を選択します。

1. (オプション) 1 時間あたりのフローログを分割するには、[**Every 1 hour (60 mins)**] を選択します。

1. (オプション) フローログにタグを追加するには、[**新しいタグを追加**] を選択し、タグのキーと値を指定します。

1. **[フローログの作成]** を選択します。

**コマンドラインを使用して Amazon S3 に発行されるフローログを作成するには**

以下のいずれかのコマンドを使用します。
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [New-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

次の AWS CLI の例では、指定した VPC のすべてのトラフィックをキャプチャするフローログを作成し、そのフローログを指定した Amazon S3 バケットに配信します。`--log-format` パラメータにより、フローログレコードのカスタム形式が指定されます。

```
aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-00112233344556677 --traffic-type ALL --log-destination-type s3 --log-destination arn:aws:s3:::flow-log-bucket/custom-flow-logs/ --log-format '${version} ${vpc-id} ${subnet-id} ${instance-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${tcp-flags} ${type} ${pkt-srcaddr} ${pkt-dstaddr}'
```

# Amazon S3 を使ってフローログレコードを表示する
<a name="view-flow-log-records-s3"></a>

Amazon S3 コンソールを使用して、フローログレコードを表示できます。フローログを作成してからコンソールに表示されるまでに、数分かかる場合があります。

ログファイルは圧縮されます。Amazon S3 コンソールを使用してログファイルを開くと、ファイルは解凍され、フローログレコードが表示されます。ファイルをダウンロードする場合、フローログレコードを表示するには解凍する必要があります。

**Amazon S3 に対して発行されたフローログレコードを表示するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. バケットの名前を選択して、その詳細ページを開きます。

1. ログファイルのあるフォルダに移動します。例: *プレフィックス*/AWSLogs/*account\$1id*/vpcflowlogs/*リージョン*/*年*/*月*/*日*/。

1. ファイル名の横にあるチェックボックスをオンにしてから、**[Download]** (ダウンロード) を選択します。

Amazon Athena を使用し、ログファイルのフローログレコードに対してクエリを実行することもできます。Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。詳細については、「*Amazon Athena ユーザーガイド*」の「[Amazon VPC フローログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/vpc-flow-logs.html)」を参照してください。

# Amazon Data Firehose へのフローログの発行
<a name="flow-logs-firehose"></a>

フローログはフローログデータを直接 Amazon Data Firehose に発行できます。Amazon Data Firehose は、リアルタイムのデータストリームを収集、変換し、さまざまな AWS データストアや分析サービスに配信するフルマネージドサービスです。データインジェストをユーザーに代わって処理します。

VPC フローログの作業には Firehose が役立ちます。VPC フローログは、VPC のネットワークインターフェイスに出入りする IP トラフィックに関する情報を取得します。このデータは、セキュリティモニタリング、パフォーマンス分析、規制コンプライアンスに欠かせないものです。ただし、ログデータの継続的なフローの保存と処理を管理することは、複雑で、リソースを大量に消費します。

Firehose を VPC フローログと統合すれば、こうしたデータを Amazon S3 や Amazon Redshift などの希望する宛先に配信することができます。Firehose は VPC フローログの取り込み、変換、配信を処理できるようにスケールするため、作業負担の軽減につながります。それによりユーザーは、基盤となるインフラストラクチャを気にすることなくログの分析とインサイトの取得に専念できます。

また、Firehose はデータ変換、圧縮、暗号化などの機能を備えており、VPC フローログの処理パイプラインの効率と安全性を強化することができます。VPC フローログに Firehose を使用することで、データ管理を簡素化し、ネットワークトラフィックのデータからさまざまなインサイトを入手できます。

Amazon Data Firehose に発行すると、フローログデータは Amazon Data Firehose 配信ストリームにプレーンテキスト形式で発行されます。

**料金**  
標準の取り込み料金と配信料金が適用されます。詳細については、「[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を開き、**[Logs]** (ログ) を選択して **[Vended Logs]** (提供されたログ) を参照してください。

**Topics**
+ [クロスアカウント配信のための IAM ロール](firehose-cross-account-delivery.md)
+ [Amazon Data Firehose に発行するフローログの作成](flow-logs-firehose-create-flow-log.md)

# クロスアカウント配信のための IAM ロール
<a name="firehose-cross-account-delivery"></a>

Amazon Data Firehose に発行する場合、監視するリソースと同じアカウント (ソースアカウント) または別のアカウント (送信先アカウント) にある配信ストリームを選択できます。Amazon Data Firehose へのフローログのクロスアカウント配信を有効にするには、ソースアカウントと送信先アカウントに IAM ロールをそれぞれ作成する必要があります。

**Topics**
+ [ソースアカウントロール](#firehose-source-account-role)
+ [送信先アカウントロール](#firehose-destination-account-role)

## ソースアカウントロール
<a name="firehose-source-account-role"></a>

ソースアカウントで、次のアクセス許可を付与するロールを作成します。この例のロールの名前は `mySourceRole` ですが、このロールには別の名前を選択できます。最後のステートメントにより、送信先アカウントのロールがこのロールを引き受けることができるようになります。条件ステートメントにより、このロールは指定されたリソースを監視する場合に限り、ログ配信サービスだけに渡されます。ポリシーを作成するときに、監視する VPC、ネットワークインターフェイス、またはサブネットを条件キー `iam:AssociatedResourceARN` で指定します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::123456789012:role/mySourceRole",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "delivery.logs.amazonaws.com"
                },
                "StringLike": {
                    "iam:AssociatedResourceARN": [
                        "arn:aws:ec2:us-east-1:123456789012:vpc/vpc-00112233344556677"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "logs:GetLogDelivery"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::111122223333:role/AWSLogDeliveryFirehoseCrossAccountRole"
        }
    ]
}
```

------

このロールに以下の信頼ポリシーがあることを確認します。これにより、ログ配信サービスがロールを引き受けることができます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

ソースアカウントから、以下に説明する手順に従ってロールを作成します。

**ソースアカウントロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**ポリシー** を選択してください。

1. **[ポリシーの作成]** を選択します。

1. **[ポリシーの作成]** ページで、次の操作を行います。

   1. **[JSON]** を選択します。

   1. このウィンドウのコンテンツを、このセクションの冒頭にあるアクセス許可ポリシーに置き換えてください。

   1. [**次へ**] を選択します。

   1. ポリシーの名前、説明 (省略可能)、タグを入力し、**[ポリシーの作成]** をクリックします。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

1. **[Trusted entity type]** (信頼されたエンティティのタイプ) で、**[Custom trust policy]** (カスタム信頼ポリシー) を選択します。**[Custom trust policy]** (カスタム信頼ポリシー) で、`"Principal": {},` を次のように置き換え、ログ配信サービスを指定します。[**次へ**] を選択します。

   ```
   "Principal": {
      "Service": "delivery.logs.amazonaws.com"
   },
   ```

1. **[Add permissions]** (アクセス許可の追加) ページで、この手順で先ほど作成したポリシーの横にあるチェックボックスを選択し、**[Next]** (次へ) を選択します。

1. ロールの名前を入力し、オプションで説明を入力します。

1. [**ロールの作成**] を選択します。

## 送信先アカウントロール
<a name="firehose-destination-account-role"></a>

送信先アカウントで、**AWSLogDeliveryFirehoseCrossAccountRole** で始まる名前のロールを作成します。このロールには、以下のアクセス許可が必要です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "iam:CreateServiceLinkedRole",
          "firehose:TagDeliveryStream"
      ],
      "Resource": "*"
    }
  ]
}
```

------

このロールに次の信頼ポリシーがあることを確認します。これにより、ソースアカウントで作成したロールがこのロールを引き受けることができます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/mySourceRole"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

送信先アカウントから、以下に説明する手順に従ってロールを作成します。

**送信先アカウントロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**ポリシー** を選択してください。

1. **[ポリシーの作成]** を選択します。

1. **[ポリシーの作成]** ページで、次の操作を行います。

   1. **[JSON]** を選択します。

   1. このウィンドウのコンテンツを、このセクションの冒頭にあるアクセス許可ポリシーに置き換えてください。

   1. [**次へ**] を選択します。

   1. **AWSLogDeliveryFirehoseCrossAccountRole** で始まるポリシーの名前を入力し、**[ポリシーの作成]** を選択します。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

1. **[Trusted entity type]** (信頼されたエンティティのタイプ) で、**[Custom trust policy]** (カスタム信頼ポリシー) を選択します。**[Custom trust policy]** (カスタム信頼ポリシー) で、`"Principal": {},` を次のように置き換え、ソースアカウントロールを指定します。[**次へ**] を選択します。

   ```
   "Principal": {
      "AWS": "arn:aws:iam::source-account:role/mySourceRole"
   },
   ```

1. **[Add permissions]** (アクセス許可の追加) ページで、この手順で先ほど作成したポリシーの横にあるチェックボックスを選択し、**[Next]** (次へ) を選択します。

1. ロールの名前を入力し、オプションで説明を入力します。

1. [**ロールの作成**] を選択します。

# Amazon Data Firehose に発行するフローログの作成
<a name="flow-logs-firehose-create-flow-log"></a>

VPCs、サブネット、またはネットワークインターフェイスのフローログを作成できます。

**前提条件**
+ 送信先の Amazon Data Firehose 配信ストリームを作成します。ソースとして **[Direct Put]** を使用します。詳細については、「[Creating an Amazon Data Firehose Delivery Stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)」を参照してください。
+ フローログを作成するアカウントは、フローログを Amazon Data Firehose に発行するための以下のアクセス許可を付与する IAM ロールを使用している必要があります。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogDelivery",
                  "logs:DeleteLogDelivery",
                  "iam:CreateServiceLinkedRole",
                  "firehose:TagDeliveryStream"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ フローログを別のアカウントに発行する場合は、「[クロスアカウント配信のための IAM ロール](firehose-cross-account-delivery.md)」の説明に従って必要な IAM ロールを作成します。

**Amazon Data Firehose に発行するフローログを作成するには**

1. 次のいずれかを行います。
   + Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。ナビゲーションペインで、[**Network Interfaces**] を選択してください。ネットワークインターフェイスのチェックボックスをオンにします。
   + Amazon VPC コンソール ([https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)) を開きます。ナビゲーションペインで、[**Your VPCs（お使いの VPC）**] を選択します。VPC のチェックボックスをオンにします。
   + Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。ナビゲーションペインで、[**サブネット**] を選択してください。サブネットのチェックボックスをオンにします。

1. **[アクション]**、**[フローログの作成]** を選択します。

1. [**Filter**] (フィルター) で、ログに記録するトラフィックの種類を指定します。
   + **[Accepted]** (承認) - 承認されたトラフィックのみをログに記録します
   + **[Rejected]** (拒否) - 拒否されたトラフィックのみをログに記録します
   + **[All]** (すべて) - 承認されたトラフィックと拒否されたトラフィックをログに記録します。

1. [**Maximum aggregation interval**] で、フローがキャプチャされ、1 つのフローログレコードに集約される最大期間を選択します。

1. **[Destination]** (送信先) で、次のいずれかのオプションを選択します。
   + **[同じアカウント内の Amazon Data Firehose に送信]** — 配信ストリームと監視するリソースは同じアカウントにあります。
   + **[異なるアカウント内の Amazon Data Firehose に送信]** — 配信ストリームと監視するリソースは異なるアカウントにあります。

1. **Amazon Data Firehose** 配信ストリーム名には、作成した配信ストリームを選択します。

1. [クロスアカウント配信のみ] **[サービスアクセス]**では、ログを発行するアクセス許可を持つ[クロスアカウント配信用の既存の IAM サービスロール](firehose-cross-account-delivery.md)を選択するか、**[アクセス許可を設定]** を選択して IAM コンソールを開き、サービスロールを作成します。

1. **[ログレコード形式]** で、フローログレコードの形式を指定します。
   + デフォルトのフローログレコード形式を使用するには、**[AWS のデフォルト形式]** を選択します。
   + カスタム形式を作成するには、[**カスタム形式**] を選択します。**[ログの形式]** で、フローログレコードに含めるフィールドを選択します。

1. **[追加のメタデータ]**で、Amazon ECS からのメタデータをログ形式に含めるかどうかを選択します。

1. (オプション) フローログにタグを適用するには、**[タグの追加]** をクリックします。

1. **[フローログの作成] **をクリックします。

**コマンドラインを使用して Amazon Data Firehose に発行するフローログを作成するには**

以下のいずれかのコマンドを使用します。
+ [create-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-flow-logs.html) (AWS CLI)
+ [New-EC2FlowLog](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2FlowLog.html) (AWS Tools for Windows PowerShell)

次の AWS CLI の例では、指定した VPC のすべてのトラフィックをキャプチャするフローログを作成し、そのフローログを同じアカウント内の指定された Amazon Data Firehose 配信ストリームに配信します。

```
aws ec2 create-flow-logs --traffic-type ALL \
  --resource-type VPC \
  --resource-ids vpc-00112233344556677 \
  --log-destination-type kinesis-data-firehose \
  --log-destination arn:aws:firehose:us-east-1:123456789012:deliverystream/flowlogs_stream
```

次の AWS CLI の例では、指定した VPC のすべてのトラフィックをキャプチャするフローログを作成し、そのフローログを別のアカウント内の指定された Amazon Data Firehose 配信ストリームに配信します。

```
aws ec2 create-flow-logs --traffic-type ALL \
  --resource-type VPC \
  --resource-ids vpc-00112233344556677 \
  --log-destination-type kinesis-data-firehose \
  --log-destination arn:aws:firehose:us-east-1:123456789012:deliverystream/flowlogs_stream \
  --deliver-logs-permission-arn arn:aws:iam::source-account:role/mySourceRole \ 
  --deliver-cross-account-role arn:aws:iam::destination-account:role/AWSLogDeliveryFirehoseCrossAccountRole
```

フローログを作成することで、配信ストリーム用に設定した送信先からフローログデータを取得することができます。

# Amazon Athena を使用したフローログのクエリ
<a name="flow-logs-athena"></a>

Amazon Athena は、標準の SQL を使用して、フローログなどの Amazon S3 内のデータを分析できる対話型のクエリサービスです。VPC フローログで Athena を使用すると、VPC を通過するトラフィックに関する実用的なインサイトをすばやく得ることができます。例えば、仮想プライベートクラウド（VPC）内のリソースからトップトーカーを特定したり、最も TCP 接続を拒否された IP アドレスを特定したりできます。

**オプション**
+ 必要な AWS リソースと事前定義されたクエリを作成する CloudFormation テンプレートを生成することで、VPC フローログと Athena との統合を合理化および自動化できます。これにより、VPC を通過するトラフィックに関するインサイトを得ることができます。
+ Athena を使用して独自のクエリを作成できます。詳細については、「*Amazon Athena ユーザーガイド*」の「[Amazon Athena を使用したフローログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/vpc-flow-logs.html)」を参照してください。

**料金**  
クエリの実行には、標準の [ Amazon Athena 料金](https://aws.amazon.com/athena/pricing/)が発生します 。（パーティションのロード頻度を指定するが、開始日と終了日を指定しない場合）定期的なスケジュールで新しいパーティションをロードする Lambda 関数には、標準の [AWS Lambda 料金](https://aws.amazon.com/lambda/pricing/)が発生します。

**Topics**
+ [コンソールを使用した CloudFormation テンプレートの生成](flow-logs-generate-template-console.md)
+ [AWS CLI を使用した CloudFormation テンプレートの生成](flow-logs-generate-template-cli.md)
+ [事前定義されたクエリを実行する](flow-logs-run-athena-query.md)

# コンソールを使用した CloudFormation テンプレートの生成
<a name="flow-logs-generate-template-console"></a>

最初のフローログが S3 バケットに配信された後、CloudFormation テンプレートを生成し、そのテンプレートを使用してスタックを作成することで、Athena と統合できます。

**要件**
+ 選択したリージョンで、AWS Lambda と Amazon Athena がサポートされている必要があります。
+ Amazon S3 バケットは、選択したリージョンに存在する必要があります。
+ フローログのログレコード形式には、実行する特定の事前定義されたクエリで使用されるフィールドを含める必要があります。

**コンソールを使用してテンプレートを生成するには**

1. 次のいずれかを行ってください。
   + Amazon VPC コンソールを開きます。ナビゲーションペインで [**お客様の VPC**] をクリックして、VPCを選択します。
   + Amazon VPC コンソールを開きます。ナビゲーションペインで [**サブネット**] をクリックして、サブネットを選択します。
   + Amazon EC2 コンソールを開きます。ナビゲーションペインで [**ネットワークインターフェイス**] クリックして、ネットワークインターフェイスを選択します。

1. [**フローログ**] タブで、Amazon S3 に発行するフローログを選択し、[**アクション**]、[**Athena 統合の生成**] の順に選択します。

1. パーティションのロード頻度を指定します。[**なし**] を選択した場合は、過去の日付を使用して、パーティションの開始日と終了日を指定する必要があります。[**毎日**]、[**毎週**]、または [**毎月**] を選択した場合は、パーティションの開始日と終了日はオプションになります。開始日と終了日を指定しない場合、CloudFormation テンプレートは、定期的なスケジュールで新しいパーティションをロードする Lambda 関数を作成します。

1. 生成されたテンプレート用の S3 バケット、およびクエリ結果用の S3 バケットを選択または作成します。

1. [**Athena 統合を生成**] を選択します

1. （オプション）成功メッセージで、CloudFormation テンプレートに指定したバケットに移動するリンクを選択し、テンプレートをカスタマイズします。

1. 成功のメッセージで、[**Create CloudFormation stack**] (CloudFormation スタックを作成) を選択して、CloudFormation コンソールで [**Create Stack**] (スタックの作成) ウィザードを開きます。生成された CloudFormation テンプレートの URL は、[**テンプレート**] セクションで指定されます。ウィザードを完了して、テンプレートで指定されているリソースを作成します。

**CloudFormation テンプレートによって作成されたリソース**
+ Athena データベース。データベース名は vpcflowlogsathenadatabase<*flow-logs-subscription-id*> です。
+ Athena のワークグループ。ワークグループ名は、<*flow-log-subscription-id*><*partition-load-frequency*><*start-date*><*end-date*>workgroup です。
+ フローログレコードに対応するパーティション化された Athena テーブル。テーブル名は、<*flow-log-subscription-id*><*partition-load-frequency*><*start-date*><*end-date*> です。
+ Athena の名前付きクエリのセット。詳細については、「[事前に定義されたクエリ](flow-logs-run-athena-query.md#predefined-queries)」を参照してください
+ 指定したスケジュール (毎日、毎週、または毎月) でテーブルに新しいパーティションをロードする Lambda 関数。
+ Lambda 関数を実行するためのアクセス権限を付与する IAM ロール。

# AWS CLI を使用した CloudFormation テンプレートの生成
<a name="flow-logs-generate-template-cli"></a>

最初のフローログが S3 バケットに配信された後、CloudFormation テンプレートを生成して使用して Athena と統合できます。

次の [get-flow-logs-integration-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-flow-logs-integration-template.html) コマンドを使用して、CloudFormation テンプレートを生成します。

```
aws ec2 get-flow-logs-integration-template --cli-input-json file://config.json
```

次は、`config.json` ファイルの例です。

```
{
    "FlowLogId": "fl-12345678901234567",
    "ConfigDeliveryS3DestinationArn": "arn:aws:s3:::my-flow-logs-athena-integration/templates/",
    "IntegrateServices": {
        "AthenaIntegrations": [
            {
                "IntegrationResultS3DestinationArn": "arn:aws:s3:::my-flow-logs-analysis/athena-query-results/",
                "PartitionLoadFrequency": "monthly",
                "PartitionStartDate": "2021-01-01T00:00:00",
                "PartitionEndDate": "2021-12-31T00:00:00"
            }
        ]
    }
}
```

生成された CloudFormation テンプレートを使用してスタックを作成するには、次の [create-stack ](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) コマンドを使用します。

```
aws cloudformation create-stack --stack-name my-vpc-flow-logs --template-body file://my-cloudformation-template.json
```

# 事前定義されたクエリを実行する
<a name="flow-logs-run-athena-query"></a>

生成された CloudFormation テンプレートには、AWS ネットワーク内のトラフィックに関する有意義なインサイトをすばやく得るために実行できる一連の定義済みクエリが用意されています。スタックを作成し、すべてのリソースが正しく作成されたことを確認したら、定義済みクエリの 1 つを実行できます。

**コンソールを使用して定義済みのクエリを実行するには**

1. Athena コンソールを開きます。

1. 左側のナビゲーションの **[Query editor]** (クエリエディタ) を選択します。**[Workgroup]** (ワークグループ) で、CloudFormation テンプレートによって作成されたワークグループを選択します。

1. **[Saved queries]** (保存したクエリ) を選択してクエリを選択し、必要に応じてパラメータを変更してから、クエリを実行します。使用可能な事前定義されたクエリの一覧については、「[事前に定義されたクエリ](#predefined-queries)」を参照してください。

1. **[Query results]** (クエリ結果) で、クエリの結果を表示します。

## 事前に定義されたクエリ
<a name="predefined-queries"></a>

Athena の名前付きクエリの完全なリストを次に示します。テンプレートを生成する際に提供される事前定義されたクエリは、フローログのログレコード形式の一部であるフィールドによって異なります。そのため、これらの事前定義されたクエリのすべてがテンプレートに含まれない場合があります。
+ **vpcFlowLogsAcceptedTraffic** — セキュリティグループとネットワーク ACL に基づいて許可された TCP 接続。
+ **VpcFlowLogsAdminPortTraffic** — 管理ポートでリクエストを処理するアプリケーションによって記録された、トラフィックが最も多い上位 10 個の IP アドレス。
+ **vpcFlowLogsIPv4Traffic ** — 記録された IPv4 トラフィックの合計バイト数。
+ **vpcFlowLogsIPv6Traffic ** — 記録された IPv6 トラフィックの合計バイト数。
+ **vpcFlowLogsRejectedTCPTraffic ** — セキュリティグループまたはネットワーク ACL に基づいて拒否された TCP 接続。
+ **vpcFlowLogsRejectedTraffic ** — セキュリティグループまたはネットワーク ACL に基づいて拒否されたトラフィック。
+ **vpcFlowLogsShrdpTraffic ** — SSH および RDP トラフィック。
+ **vpcFlowLogStopTalkers ** — 記録されたトラフィックが最も多い50個のIPアドレス。
+ **vpcFlowLogStopTalkersPacketLevel ** — 記録されたトラフィックが最も多くある 50 個のパケットレベルの IP アドレス。
+ **vpcFlowLogStopTalkingInstances ** — 記録されたトラフィックが最も多い50個のインスタンスの ID。
+ **vpcFlowLogStopTalkingSubnets ** — 記録されたトラフィックが最も多くある 50 個のサブネットの ID。
+ **vpcFlowLogStopTcpTraffic ** — 送信元 IP アドレスに対して記録されたすべての TCP トラフィック。
+ **vpcFlowLogstotalBytestRansFerred ** — 記録されたバイト数が最も多い送信元と送信先 IP アドレスの 50 個のペア。
+ **vpcFlowLogstotalBytestRansFerredPacketLevel ** — 記録されたバイト数が最も多いパケットレベルの送信元および送信先 IP アドレスの 50 個のペア。
+ **vpcFlowLogStrafficFrmsrcaddr ** — 特定の送信元 IP アドレスについて記録されたトラフィック。
+ **vpcFlowLogStadfficToDr ** — 特定の送信先 IP アドレスについて記録されたトラフィック。

# VPC フローログトラブルシューティング
<a name="flow-logs-troubleshooting"></a>

フローログを操作する際、発生する可能性のある問題を以下に示します。

**Topics**
+ [不完全なフローログレコード](#flow-logs-troubleshooting-incomplete-records)
+ [フローログが有効でも、フローログレコードまたはロググループがない](#flow-logs-troubleshooting-no-log-group)
+ [「LogDestinationNotFoundException」または「Access Denied for LogDestination」エラー](#flow-logs-troubleshooting-not-found)
+ [Amazon S3 バケットポリシーの制限の超過](#flow-logs-troubleshooting-policy-limit)
+ [LogDestination が配信できない](#flow-logs-troubleshooting-kms-id)
+ [フローログのデータサイズが請求データと一致しない](#flow-logs-data-size-mismatch)

## 不完全なフローログレコード
<a name="flow-logs-troubleshooting-incomplete-records"></a>

**問題**  
フローログレコードが不完全であるか、公開が終了しています。

**原因**  
CloudWatch Logs ロググループへのフローログの配信に問題がある可能性があるか、[SkipData エントリが存在する可能性があります](flow-logs-records-examples.md#flow-log-example-no-data)。

**ソリューション**  
VPC、サブネット、またはネットワークインターフェイスの **[フローログ]** タブを確認します。共有された VPC またはサブネットのフローログを記述することはできませんが、共有された VPC またはサブネットで作成したネットワークインターフェイスのフローログを記述することはできます。エラーがある場合は、**[ステータス]** 列に表示されます。または、[describe-flow-logs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-flow-logs.html) コマンドを使用し、`DeliverLogsErrorMessage` フィールドに返された値を確認します。

ステータスに表示される可能性のあるエラー値は、以下のとおりです。
+ `Rate limited`: このエラーは、CloudWatch Logs のスロットリングが適用されている場合に発生することがあります。ネットワークインターフェイスのフローログのレコード数が、特定の期間内に発行できるレコードの最大数より多い場合などが該当します。このエラーは、作成できる CloudWatch Logs ロググループの数がクォータに達した場合にも発生することがあります。詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[CloudWatch サービスクォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)」を参照してください。
+ `Access error`: このエラーは、次のいずれかの原因で発生することがあります。
  + フローログの IAM ロールに、CloudWatch Logs ロググループにフローログレコードを発行するための十分なアクセス許可がありません。
  + IAM ロールにフローログサービスとの信頼関係がない
  + 信頼関係によりフローログサービスがプリンシパルとして指定されていない

  詳細については、「[CloudWatch Logs へのフローログ発行のための IAM ロール](flow-logs-iam-role.md)」を参照してください。
+ `Unknown error`: 内部エラーがフローログサービスで発生しました。

## フローログが有効でも、フローログレコードまたはロググループがない
<a name="flow-logs-troubleshooting-no-log-group"></a>

**問題**  
フローログを作成すると、Amazon VPC または Amazon EC2 コンソールにフローログが `Active` として表示されます。ただし、CloudWatch Logs のログストリームや、Amazon S3 バケットのログファイルは表示できない場合があります。

**考えられる原因**
+ フローログはまだ作成中である。場合によっては、ロググループのフローログを作成してからデータが表示されるまでに、10 分以上かかることがあります。
+ ネットワークインターフェイスに対して記録されたトラフィックがまだありません。CloudWatch Logs のロググループは、トラフィックの記録時にのみ作成されます。

**ソリューション**  
ロググループが作成されるか、トラフィックが記録されるまで数分待ちます。

## 「LogDestinationNotFoundException」または「Access Denied for LogDestination」エラー
<a name="flow-logs-troubleshooting-not-found"></a>

**問題**  
フローログを作成すると、`Access Denied for LogDestination` または `LogDestinationNotFoundException` エラーが発生します。

**考えられる原因**
+ Amazon S3 バケットにデータを発行するフローログを作成している場合、このエラーは、指定された S3 バケットが見つからないか、バケットポリシーでバケットへのログの配信が許可されていないことを示します。
+ Amazon CloudWatch Logs にデータを発行するフローログを作成している場合、このエラーは、IAM ロールでロググループへのログの配信が許可されていないことを示します。

**ソリューション**
+ Amazon S3 に配信する場合、既存の S3 バケットの ARN を指定したこと、および ARN が正しい形式であることを確認します。S3 バケットを所有していない場合は、[バケットポリシー](flow-logs-s3-permissions.md)に必要な許可があり、ARN に正しいアカウント ID とバケット名が使用されていることを確認します。
+ CloudWatch Logs に配信する場合は、[IAM ロール](flow-logs-iam-role.md)に必要な許可があることを確認します。

## Amazon S3 バケットポリシーの制限の超過
<a name="flow-logs-troubleshooting-policy-limit"></a>

**問題**  
フローログを作成しようとすると、`LogDestinationPermissionIssueException` エラーが発生します。

**考えられる原因**  
Amazon S3 バケットポリシーのサイズは 20 KB に制限されています。

Amazon S3 バケットに発行するフローログを作成するたびに、指定されたバケットの ARN (フォルダパスを含む) がバケットポリシーの `Resource` 要素に自動的に追加されます。

同じバケットに発行する複数のフローログを作成すると、バケットポリシーの制限を超える可能性があります。

**ソリューション**
+ 不要になったフローログエントリを削除して、バケットポリシーをクリーンアップします。
+ 個々のフローログエントリを以下で置き換えて、バケット全体にアクセス権限を付与します。

  ```
  arn:aws:s3:::bucket_name/*
  ```

  バケット全体にアクセス権限を付与した場合、新しいフローログのサブスクリプションによってバケットポリシーに新しいアクセス権限が追加されることはありません。

## LogDestination が配信できない
<a name="flow-logs-troubleshooting-kms-id"></a>

**問題**  
フローログを作成しようとすると、`LogDestination <bucket name> is undeliverable` エラーが発生します。

**考えられる原因**  
ターゲットの Amazon S3 バケットは、AWS KMS (SSE-KMS) によるサーバー側の暗号化を使って暗号化されます。バケットのデフォルトの暗号化は KMS キー ID です。

**ソリューション**  
値は KMS キー ARN である必要があります。デフォルトの S3 暗号化タイプを KMS キー ID から KMS キー ARN に変更してください。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[デフォルト暗号化の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html)」を参照してください。

## フローログのデータサイズが請求データと一致しない
<a name="flow-logs-data-size-mismatch"></a>

**問題**  
フローログの合計データサイズが、請求データが報告するサイズと一致しません。

**考えられる原因**  
フローログに SKIPDATA エントリがある場合があります。SKIPDATA エントリの説明については、「[データなしおよびスキップされたレコード](flow-logs-records-examples.md#flow-log-example-no-data)」を参照してください。

**ソリューション**  
log-status フィールドの異なるエントリがないかログのクエリを行うことで、ログエントリに SKIPDATA エントリが存在することを確認します。

SKIPDATA をチェックするサンプルクエリ:

CW Insights:

```
fields @timestamp, @message, @logStream, @log
| filter interfaceId = 'eni-123'
| stats count(*) by interfaceId, logStatus
| sort by interfaceId, logStatus
```

Athena:

```
SELECT log_status, interface_id, count(1)
FROM vpc_flow_logs
WHERE interface_id IN ('eni-1', 'eni-2', 'eni-3')
GROUP BY log_status, interface_id
```