フローログを Amazon S3 に発行する - Amazon Virtual Private Cloud

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

フローログを Amazon S3 に発行する

フローログはフローログデータを Amazon S3 に発行できます。

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

フローログに使用する Amazon S3 バケットの作成方法については、Amazon Simple Storage Service ユーザーガイドの「バケットの作成」を参照してください。

複数のアカウントログの詳細については、「AWS ソリューションライブラリの中央ロギング」を参照してください。

CloudWatch ログの詳細については、「Amazon Logs ユーザーガイド」の「Amazon S3 に送信された CloudWatch ログ」を参照してください。

料金

フローログを Amazon S3 に発行すると、提供されたログに対するデータの取り込み料金とアーカイブ料金が適用されます。詳細については、「Amazon CloudWatch 料金表」を開き、「ログ」を選択し、発行されたログを見つけます

フローログファイル

VPC Flow Logs は、フローログレコードを収集し、ログファイルに統合して、5 分間隔でログファイルを Amazon S3 バケットに発行します。各ログファイルには、前の 5 分間に記録された IP トラフィックのフローログレコードが含まれています。

ログファイルの最大ファイルサイズは 75 MB です。ログファイルが 5 分以内にファイルサイズの上限に達した場合、フローログはフローログレコードの追加を停止します。次に、フローログを Amazon S3 バケットに発行してから、新しいログファイルを作成します。

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 に発行する IAM プリンシパルのアクセス許可

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

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

フローログのための Amazon S3 バケットのアクセス許可

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

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

それ以外の場合は、バケット所有者が、フローログ作成者の AWS アカウント ID を指定して、このポリシーをバケットに追加しなければ、フローログの作成は失敗します。詳細については、Amazon Simple Storage Service ユーザーガイドバケットポリシーの使用を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "my-s3-arn/*", "Condition": { "StringEquals": { "aws:SourceAccount": account_id, "s3:x-amz-acl": "bucket-owner-full-control" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:GetBucketAcl", "s3:ListBucket" ], "Resource": "arn:aws:s3:::bucket_name", "Condition": { "StringEquals": { "aws:SourceAccount": account_id }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } } ] }

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 アカウント ARNs ではなく、ログ配信サービスプリンシパルにこれらのアクセス許可を付与することです。また、aws:SourceAccount および aws:SourceArn 条件キーを使用して、混乱した使節の問題から保護することもベストプラクティスです。ソースアカウントはフローログの所有者であり、ソース ARN は、ログサービスのワイルドカード (*) ARN です。

SSE-KMS に使用する必須のキーポリシー

Amazon S3 バケット内のデータを保護するには、Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE-S3)、または S3 バケットに格納された KMS キーを使用したサーバー側の暗号化 (SSE-KMS) のいずれかを有効にします。詳細については、Amazon S3 ユーザーガイドの「サーバー側の暗号化を使用したデータの保護」をご参照ください。

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

SSE-KMS を選択した場合は、カスタマーマネージドキー ARN を使用する必要があります。キー ID を使用すると、フローログの作成時に LogDestination 配信不可 エラーが発生する可能性があります。また、ログ配信アカウントが S3 バケットに書き込めるように、カスタマーマネージドキーのキーポリシーを更新する必要があります。SSE-KMS で使用するために必要なキーポリシーの詳細については、「Amazon Logs ユーザーガイド」の「Amazon S3 バケットのサーバー側の暗号化 CloudWatch 」を参照してください。

Amazon S3 ログファイルのアクセス許可

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

Amazon S3 に発行するフローログの作成

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

コンソールを使用してフローログを作成するには
  1. 次のいずれかを行います。

    • Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。ナビゲーションペインで、[Network Interfaces] を選択します。ネットワークインターフェイスのチェックボックスをオンにします。

    • Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。ナビゲーションペインで、[Your VPCs(お使いの VPC)] を選択します。VPC のチェックボックスをオンにします。

    • Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。ナビゲーションペインで、[Subnets(サブネット)] を選択します。サブネットのチェックボックスをオンにします。

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

  3. [フィルタ] で、記録する IP トラフィックデータのタイプを指定します。

    • Accept – 承認されたトラフィックのみをログに記録します。

    • 拒否 – 拒否されたトラフィックのみをログに記録します。

    • [All] - 承認されたトラフィックと拒否されたトラフィックをログに記録します。

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

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

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

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

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

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

  7. [ログレコード形式] で、フローログレコードの形式を指定します。

    • デフォルトのフローログレコード形式を使用するには、[AWS のデフォルト形式] を選択します。

    • カスタム形式を作成するには、[カスタム形式] を選択します。[ログの形式] で、フローログレコードに含めるフィールドを選択します。

  8. [ログファイル形式] で、ログファイルの形式を指定します。

    • [Text] - プレーンテキスト。これがデフォルトの形式です。

    • [Parquet] - Apache Parquet は列指向データ形式です。Parquet 形式のデータに対するクエリは、プレーンテキストのデータに対するクエリに比べて 10~100 倍高速です。Gzip 圧縮を使用した Parquet 形式のデータは、Gzip 圧縮を使用したプレーンテキストよりもストレージスペースが 20% 少なくなります。

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

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

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

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

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

以下のいずれかのコマンドを使用します。

次の 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 コンソールを使用して、フローログレコードを表示できます。フローログを作成してからコンソールに表示されるまでに、数分かかる場合があります。

Amazon S3 に対して発行されたフローログレコードを表示するには
  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

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

  3. ログファイルのあるフォルダに移動します。例えば、プレフィックス /AWSLogs/account_id /vpcflowlogs/region /year /month /day / です。

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

Amazon S3 でのフローログレコードの処理

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

Amazon Athena を使用し、ログファイルのフローログレコードに対してクエリを実行することもできます。Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。詳細については、Amazon Athena ユーザーガイドの「Amazon VPC フローログのクエリ」を参照してください。