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

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

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

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

Amazon S3 に発行した場合、フローログデータは、指定する既存の Amazon S3 バケットに発行されます。モニタリングされるすべての Transit Gateway のフローログレコードが、バケットに保存された一連のログファイルオブジェクトに発行されます。

フローログを Amazon S3 に発行すると、 Amazon CloudWatch データインジェスト料金とアーカイブ料金が によって提供されるログに適用されます。発行されたログの CloudWatch 料金の詳細については、Amazon CloudWatch の料金 を開き、ログ を選択してから、発行されたログ を見つけます

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

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

CloudWatch ログの詳細については、Amazon S3 に送信された 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% 少なくなります。

ログファイルオプション

オプションで、次のオプションを指定できます。

  • [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/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/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 ポリシー

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

{ "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": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": account_id }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:region:account_id:*" } } }, { "Sid": "AWSLogDeliveryCheck", "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)、または に格納された KMS キーを使用したサーバー側の暗号化 (SSE-KMS) のいずれかを有効にします。詳細については、Amazon S3 ユーザーガイドの「サーバー側の暗号化を使用したデータの保護」をご参照ください。

SSE-KMS では、 AWS マネージドキーまたはカスタマーマネージドキーを使用できます。 AWS マネージドキーでは、クロスアカウント配信を使用できません。フローログはログ配信アカウントから配信されるため、クロスアカウント配信のアクセス権を付与する必要があります。S3 バケットへのクロスアカウントアクセス権を付与するには、カスタマーマネージドキーを使用し、バケット暗号化を有効にするときに、カスタマーマネージドキーの Amazon リソースネーム (ARN) を指定します。詳細については、Amazon S3 ユーザーガイドの「AWS KMSによるサーバー側の暗号化の指定」をご参照ください。

カスタマーマネージドキーで SSE-KMS を使用する場合、VPC Flow Logs が S3 バケットに書き込めるように、キーのキーポリシー (S3 バケットのバケットポリシーではありません) に以下を追加する必要があります。

{ "Sid": "Allow Transit Gateway Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

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

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

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

Amazon S3 バケットを作成して設定した後は、Transit Gateway のフローログを作成できます。

コンソールを使用して Amazon S3 に発行される Transit Gateway フローログを作成するには
  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. ナビゲーションペインで、[Transit Gateways][Transit Gateway アタッチメント] の順に選択します。

  3. 1 つまたは複数の Transit Gateway または Transit Gateway アタッチメントのチェックボックスを選択します。

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

  5. フローログ設定を構成します。詳細については、「フローログ設定を構成するには」を参照してください。

コンソールを使用してフローログ設定を構成するには
  1. [送信先] で、[S3 バケットへの送信] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

次の AWS CLI 例では、VPC のすべてのトランジットゲートウェイトラフィックをキャプチャするフローログtgw-00112233344556677を作成し、フローログを という Amazon S3 バケットに配信しますflow-log-bucket--log-format パラメータにより、フローログレコードのカスタム形式が指定されます。

aws ec2 create-flow-logs --resource-type TransitGateway --resource-ids tgw-00112233344556677 --log-destination-type s3 --log-destination arn:aws:s3:::flow-log-bucket/my-custom-flow-logs/'

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

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