S3バケットを作成して、VPCフローログを保管する処理の備忘録となります。
本記事で使用するサービスは以下です。
CloudWatch Logsへの保管については以下をご覧ください。
参考 CloudWatchへlogを保管するITサービス指向エンジニアブログTable of Contents
S3バケットを作成
S3バケットを作成します。
設定はデフォルトのまま作成します。


バケットが作成されました。
バケット作成時はバケット名は一意である必要があるため、作成時に一意でない場合はエラーとなります。
バケット名をクリックし、プロパティタブからARN(Amazon リソースネーム)をコピーしておきます。
※VPCフローログ作成時、送信先フローログでS3を選択するとARNが必要になるためです。


VPCフローログの作成
VPCの画面からフローログを作成します。

フローログ設定画面にて名前、送信先をAmazon S3バケットに送信を選択し、コピーしておいたARNを貼り付けます。

ログレコードはカスタム形式ですべて選択します。

これでフローログを作成します。
CloudWatchとは異なり、バケットポリシーはVPCフローログ作成時に作成されます。
S3バケット画面のアクセス許可タブを選択し、バケットポリシーから確認できます。

S3バケットのログの確認
S3バケット画面のオブジェクトタブからAWSLogs/をクリックします。

これはS3のディレクトリを示しています。
現状はログが何もない状態なので、EC2を起動してpingを飛ばしてみたいと思います。

S3バケットのオブジェクトにログが保管されていることを確認できました。


Athenaのセットアップ
Athenaを使用してSQLクエリを発行するため、Athenaのセットアップを行います。
VPCの画面から統合オプションを調べるを選択します。

CloudFormationのテンプレートを作成します。
ロード頻度: 毎日
パーティションの開始日: 適当な日付
パーティションの終了日: 適当な日付
CloudFormationテンプレートS3バケット: S3のARNを入力
クエリ結果S3: S3のARNを入力

CloudFormationスタックの作成
yamlファイル等で記述し、インフラ構築手順や設定情報を記述し、そのファイルを実行することで環境構築を自動化する優れものです。
Dockerfileやdocker-compose.ymlと似たようなものになります。
VPCの画面からCloudFormationスタックの作成をクリックします。


スタックの名前を入力し、次へ、スタックオプションの設定も次へ進みます。

AWS CloudFormationによてIAMリソースが作成される場合があることを承認します。にチェックを入れ、スタックの作成をします。

スタックの画面で作成したathena-stack-flowlogがCRATE_COMPLETEされていれば成功しています。

Athenaの画面に移動します。

Athenaの画面に移動したらデータのクエリを開始→クエリエディタを詳しく確認するをクリックします。

ワークグループからランダムの英数字を選択します。

以下画面が表示されますので、認証をクリックします。

保存したクエリタブを選択すると、AWSがすでに用意している、SQLが出てきますので、そこから必要なSQLを使用して、データ抽出が可能です。

AWS公式サイトにも事前に定義されたクエリページが存在します。
参考 事前に定義されたクエリAWS公式サイトEC2にssh接続したSQLクエリを実行してみたいと思います。
一旦EC2からexitとし、再度ssh接続をし、
保存したクエリタブからMonitor SSH and RDP trafficのリンクをクリックします。

エディタタブからSQLを実行すると、実行したSQLの結果が表示されます。


S3へ VPCフローログを保管し、Athenaを使用してSQLクエリを発行する手順でした。