AWS
CloudFormation
vpc
VPCFlowLogs

CloudFormationを使ってVPCフローログを設定し出力先をS3に設定する


はじめに

本記事では、AWS CloudFormation管理コンソールを使って、VPCフローログの設定をし、出力先をS3に設定する手順を説明しています。(初心者向け)

本記事で掲載しているテンプレートの最新版は、下記に置いてます。

https://github.com/okubo-t/aws-cloudformation

出力先をCloudWatchLogsに設定する手順は、下記を参照して下さい。

CloudFormationを使ってVPCフローログを設定する


構成図


前提条件

下記の記事の構築手順で、VPCを構築していること。

CloudFormationを使ってVPCを構築する

PJPrefixの値は、同一にすること。


構築手順

1 AWS CloudFormation管理コンソールから、スタックの作成をクリックします。

2 後述のテンプレートを選択します。

3 各パラメータを入力します。

パラメータ名
用途
備考

スタックの名前
テンプレートから作成するリソース一式の名前
例 prd-stack-vpc-20180801

PJPrefix
構築するプロジェクトの環境を識別するために各コンポーネントの先頭に付与する識別子
例 qiita-prd

Filter
フローログのトラフィックタイプ
許可されたログのみ出力する場合は、ACCEPT
拒否されたログのみ出力する場合は、REJECT
全てのログを出力する場合は、ALL

ALLデフォルト)

4 後続は、デフォルトのまま次へ次へで、作成します。

5 状況が CREATE COMPLETEになれば、VPCフローログの設定とフローログ出力用のS3バケットの作成が完了です。バケットポリシーも自動で設定されます。

6 VPCの管理コンソール上からも、設定されていることを確認できます。


テンプレート


vpcflowlogs-s3.yml

AWSTemplateFormatVersion: "2010-09-09"

Description:
VPCFlowLogs Settings (Destination Type is S3)

Metadata:
"AWS::CloudFormation::Interface":
ParameterGroups:
- Label:
default: "Project Name Prefix"
Parameters:
- PJPrefix
- Label:
default: "VPCFlowLogs Configuration (Destination Type is S3)"
Parameters:
- Filter

# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:
PJPrefix:
Type: String

Filter:
Type: String
Default: ALL
AllowedValues: [ ALL, ACCEPT, REJECT ]

Resources:
# ------------------------------------------------------------#
# S3 Bucket for VPCFlowLogs
# ------------------------------------------------------------#
#FlowLogsBucket
FlowLogsBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Sub "${PJPrefix}-vpcflowlogs"

# ------------------------------------------------------------#
# VPCFlowLogs
# ------------------------------------------------------------#
VPCFlowLogs:
Type: "AWS::EC2::FlowLog"
DependsOn: FlowLogsBucket
Properties:
LogDestination: !Sub "arn:aws:s3:::${FlowLogsBucket}"
LogDestinationType: s3
ResourceId: { "Fn::ImportValue": !Sub "${PJPrefix}-vpc" }
ResourceType: "VPC"
TrafficType: !Ref Filter

# ------------------------------------------------------------#
# Output Parameters
# ------------------------------------------------------------#
Outputs:
#FlowLogsBucket
FlowLogsBucket:
Value: !Ref FlowLogsBucket
Export:
Name: !Sub "${PJPrefix}-vpcflowlogs"