目次
はじめに
VPC Flow logsは、VPC 内で行き来するIPトラフィックに関する情報をキャプチャできる機能です。出力先を選べますが、中でもAmazon S3(以降、S3)は安価に格納できるため、よく保存先に指定されます。しかし、いざ確認したい時に S3 を開いたら複数にオブジェクトが分かれており、確認に時間がかかる場合はありませんか?
本記事では、簡単に検索できる方法をご紹介します。
なお、VPCに関して詳しく知りたい方は、下記の記事をご確認ください。
プライベートネットワークをクラウド上で構築しよう!クラウドのメリットとAmazon VPCについて解説|AWS活用法
VPC Flow logs概要
VPC Flow logsは、以下のようなタスクに役立てることができます。
- セキュリティグループルールの診断
制限の厳しいセキュリティグループを特定できます。 - トラフィックの監視
インスタンスに到達トラフィックを監視できます。 - トラフィックの方向の決定
ネットワークに出入りするトラフィックの方向を判断できます。
VPC Flow logs 出力先
- Amazon CloudWatch Logs
- Amazon S3
- Amazon Data Firehose
- ※ ネットワークトラフィックのパスの外で収集されるため、ネットワークのスループットやレイテンシーには影響しません
VPC Flow logsをS3に出力する
Amazon S3の管理画面を開く
画面上部の「サービス」を選択し、サービス一覧より「ストレージ」-「S3」をクリックする。
バケットを作成
「バケットを作成」をクリックする。
バケット名を入力する。
画面を下にスクロールし、「バケットを作成」をクリックする。
- ※ 今回設定はデフォルト状態で作成します
バケットが作成されたことを確認する。
作成したバケット名をクリックし、「プロパティ」をクリックし、「Amazonリソース ネーム(ARN)」をコピーしておく。
VPC画面を開く
画面上部の「サービス」を選択し、サービス一覧より「ネットワーキングとコンテンツ配信」-「VPC」をクリックする。
VPC Flow logs 設定する
左画面の「お使いのVPC」からFlow logsを取得したいVPCを選択する。
タブから「フローログ」を選択し、「フローログを作成」をクリックする。
任意の名前を入力する。
「Amazon S3 バケットに送信」を選択する。S3バケットARNにコピーしていたARNを入力する。
「フローログを作成」をクリックする。
フローログが作成されたことを確認する。
VPC Flow logsをS3をAmazon Athenaで分析する
Amazon Athena概要
Amazon S3内のデータを直接分析するためのインタラクティブなクエリサービスです。
Amazon Athena画面を開く
画面上部の「サービス」を選択し、サービス一覧より「分析」-「Athena」をクリックする。
クエリエディタ画面を開く
Athenaクエリエディタ画面が表示されます。
クエリ結果の場所を設定
設定をクリックする。
「管理」をクリックする。
Athenaのクエリ結果を保存する用のS3を予め作成しておき、「S3を参照」をクリックし対象のS3を選択後、「保存」をクリックする。
Flow log用のテーブルを作成
テーブル作成のクエリを入力して実行をクリックする。
クエリ内容
CREATE EXTERNAL TABLE IF NOT EXISTS `vpc_flow_logs` (
`version` int,
`account_id` string,
`interface_id` string,
`srcaddr` string,
`dstaddr` string,
`srcport` int,
`dstport` int,
`protocol` bigint,
`packets` bigint,
`bytes` bigint,
`start` bigint,
`end` bigint,
`action` string,
`log_status` string,
`vpc_id` string,
`subnet_id` string,
`instance_id` string,
`tcp_flags` int,
`type` string,
`pkt_srcaddr` string,
`pkt_dstaddr` string,
`region` string,
`az_id` string,
`sublocation_type` string,
`sublocation_id` string,
`pkt_src_aws_service` string,
`pkt_dst_aws_service` string,
`flow_direction` string,
`traffic_path` int
)
PARTITIONED BY (`date` date)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://DOC-EXAMPLE-BUCKET/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/'
TBLPROPERTIES ("skip.header.line.count"="1");
クエリの正常終了の確認
実行後に、クエリ結果が表示されるため、「完了済み」を確認する。
テーブルに「vpc_flow_logs」が表示されることを確認する。
データの読み込みを実施
パーティションを作成してデータの読み取りを実施する。
クエリ画面を追加する。
クエリを入力する。
クエリ内容
ALTER TABLE vpc_flow_logs
ADD PARTITION (`date`='YYYY-MM-dd')
LOCATION 's3://DOC-EXAMPLE-BUCKET/prefix/AWSLogs/{account_id}/vpcflowlogs/{region_code}/YYYY/MM/dd';
クエリの正常終了を確認
実行後に、クエリ結果が表示されるため、「完了済み」を確認する。
データが取り込まれたことを確認
テーブル横のマークをクリックし、「テーブルをプレビュー」をクリックする。
「完了済み」を確認し、結果に表示されることを確認する。
- ※ 検索用のクエリを入力し、データを抽出する
まとめ
VPC Flow logsは調査に優れており、クエリで日付、時間を指定することでその時間のみを確認することができます。
また、IPアドレス、プロトコル等で簡単に抽出することができます。
原因の切り分けなどでご活用ください。
当社は、お客様のご希望に沿ったネットワークを含めたAWSの導入・構築・運用保守を強みとしています。「まず何から着手すべきか分からない」といった際は、当社までお気軽にご相談 ください。
参考文献
Amazon VPC フローログのクエリ
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/vpc-flow-logs.html
作者プロフィール
名前 | 手塚 |
担当のAWS業務 | 営業支援、ソリューションアーキテクト |
AWSの持っている資格 | Solutions Architect - Professional Network - Specialty |
好きなAWSのサービス | Amazon FSx、Amazon CloudWatch |
趣味 | レザークラフト |
ひとこと | とりあえず、やってみる! |