CloudFormationでVPCフローログ(S3出力版)を一撃で設定する

2019.08.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コカコーラ大好きカジです。

VPC Flow Logs(S3出力版)を、VPC構築済みの環境や、複数VPCに構築するときに使えるCloudFormationテンプレートを作成してみました。

VPCフローログとは

VPC Flow LogsのS3出力については以下を参照ください。

VPC Flow Logsの出力先にS3が追加になって安価に使いやすくなりました | DevelopersIO

VPC Flow LogsをCloudwatch Logsに出力したい場合は、以下のブログとなります。

CloudFormationでVPCフローログを設定する (CloudWatch版) | DevelopersIO

前提条件

利用するにあたっての前提条件は以下となります。

  • VPCが構築済みであること
  • 出力先S3バケット名を指定しますが、バケット名の最後にAWSアカウント番号を付与します。
  • Cloudformation削除時はS3バケット内にファイルを削除済みにしないとS3バケット削除できません。必要に応じて、DeletionPolicyをつけて削除除外してください。

スタック作成

一番最後に記載した、yamlファイルで、Cloudformationスタック作成します。 以下に沿って入力すればOKです。この画面以降はデフォルトのままでOKです。

スタック作成したら、リソースが作成されたことを確認します。

設定確認

スタック作成されたら、設定を確認します。

Cloudformation テンプレート

AWSTemplateFormatVersion: "2010-09-09"
Description:
VPC Flow Logs S3 Output

Metadata:
"AWS::CloudFormation::Interface":
ParameterGroups:
- Label:
default: "VPC Flow Logs Setup VPC ID"
Parameters:
- VpcId
- Label:
default: "VPC Flow Logs Configuration"
Parameters:
- Filter
- Label:
default: "VPC Flow Logs output S3 Buceket Name -. Account Number is set automatically."
Parameters:
- S3Bucket

# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:

VpcId:
Description: VPC ID
Type: AWS::EC2::VPC::Id

S3Bucket:
Description: S3 Bucket Name
Type: String
Default: vpc-flow-log

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

Resources:
# ------------------------------------------------------------#
# S3 Bucket for VPC Flow Logs
# ------------------------------------------------------------#
VPCFlowLogsS3Bucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Join [ "-", [ Ref: "S3Bucket" , Ref: "AWS::AccountId" ] ]

# ------------------------------------------------------------#
# VPC Flow Logs
# ------------------------------------------------------------#
VPCFlowLogs:
Type: "AWS::EC2::FlowLog"
DependsOn: VPCFlowLogsS3Bucket
Properties:
LogDestination: !Sub "arn:aws:s3:::${VPCFlowLogsS3Bucket}"
LogDestinationType: s3
ResourceId: !Ref VpcId
ResourceType: "VPC"
TrafficType: !Ref Filter

# ------------------------------------------------------------#
# Output Parameters
# ------------------------------------------------------------#
Outputs:
#VPCFlowLogsS3Bucket
VPCFlowLogsS3Bucket:
Value: !Ref VPCFlowLogsS3Bucket

まとめ

複数環境で有効にする必要があり、Cloudformationを作成してみました。 どなたかのお役に立てれば光栄です。