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

VPCフローログをアップデートがありましたので、ご紹介したいと思います。 AWS CLI、AWSマネジメントコンソール、またはEC2を使用してVPCフローログをS3に直接配信できるようになりました。
2018.08.09

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

ご機嫌いかがでしょうか、豊崎です。

VPCフローログをアップデートがありましたので、ご紹介したいと思います。 https://aws.amazon.com/about-aws/whats-new/2018/08/amazon-vpc-flow-logs-can-now-be-delivered-to-s3/

AWS CLI、AWSマネジメントコンソール、またはEC2を使用してVPCフローログをS3に直接配信できるようになりました。 これによってVPCフローログを配信できる先はS3とCloudWatchLogsになりました。

これで安価にVPCフローログを貯めることができるようになり、導入がしやすくなりましたね!

まずはVPCフローログについて

VPCフローログ自体の説明はこちらをご覧ください。

【新機能】VPC Flow LogsでVPC内のIPトラフィックを監視することができるようになりました!

コスト

データ量 VPCフローログ→CloudWatch Logs VPCフローログ→S3
初めの10TBまで $0.76/GB $0.38/GB
次の20TB(10TB-30TB) $0.38/GB $0.228/GB
次の20TB(30TB-50TB) $0.152/GB $0.114/GB
50TBから $0.076/GB $0.076/GB

https://aws.amazon.com/cloudwatch/pricing/

また、S3でデータを保管する料金もかかります。

https://aws.amazon.com/jp/s3/pricing/

つまり、VPCのフローログ をS3に配信する場合にかかるコストとしては以下の2点の料金が発生します。

  • 取り込まれたデータを S3 にログを配信するコスト(上記表のVPCフローログ→S3)
  • S3でデータを保管する料金

やってみた

それでは早速試していきたいと思います。

以下を参考にしてAWS CLIからS3への配信をしたいと思います。 https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/flow-logs.html ※執筆時点では英語版のみに記載があります。

まずはログを貯める用のS3バケットを作っておきます。 オプションは全てデフォルトのS3バケットを作りました。 あとで利用するので、作成したS3のARNをコピーしておきましょう。

次にVPCフローログを有効化するVPCを選択してフローログタブからフローログの作成をクリックします。

Destinationの部分に「Send to an S3 bucket」という選択項目が増えていますね。 それでは設定していきます。

Filterは「ALL」、Destinationは「S3」、S3 bucket ARNには先ほどコピーしたS3のARNを入力して作成します。

これで設定は完了です。

S3のバケットポリシーを確認すると以下のようなポリシーが記述されています。

{
    "Version": "2012-10-17",
    "Id": "AWSLogDeliveryWrite20150319",
    "Statement": [
        {
            "Sid": "AWSLogDeliveryWrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::demo-flow-logs-201808/AWSLogs/xxxxxxxxxxxx/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        },
        {
            "Sid": "AWSLogDeliveryAclCheck",
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::demo-flow-logs-201808"
        }
    ]
}

適当なEC2を作成して、sshやhttp、pingなど外部から通信をおこなってみました。 10分くらい待つとS3にフローログが配信されます。

 

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 xxxxxxxxxxxx eni-xxxxxxxxxxxxxxxxx xx.xx.xx.xx yy.yy.yy.yy 58128 22 6 2959 154697 1533762015 1533762248 ACCEPT OK
2 xxxxxxxxxxxx eni-xxxxxxxxxxxxxxxxx xx.xx.xx.xx yy.yy.yy.yy 22 58128 6 3369 522961 1533762015 1533762248 ACCEPT OK

コストを抑えたい場合やAthenaを利用した確認でOKな場合、蓄積したログをあとで利用する場合などはS3を利用して、リアルタイムなログの可視化や、アラートが必要な場合はCloudWatchLogsを利用するなど目的に応じて使い分けができますね。

さいごに

いかがでしたでしょうか?今回のupdateでコストが抑えられるので、VPCフローログの導入がしやすくなったのではないでしょうか? この記事が誰かのお役に立てば幸いです。