Toyokky's Tech Notes

ネットワーク系クラウドエンジニアとして学んだことの技術メモ。

CLIだけで構築: 05_VPCフローログ、CloudWatch Logsロググループ

CLIだけで構築: 05_VPCフローログ、CloudWatch Logsロググループ

本ページでは CLIだけで構築: 01_まとめ、構成図 へ記載した構成図の以下AWSリソースを、AWS CLIで構築します。

記事番号 リソース種別 VPC AZ 個別情報 Name CIDR, その他
02 VPC 本番 - - P1x-Vpc 10.0.0.0/16
04 IAMロール 本番 - VPCフローログ用 P1x-Irl-Mnt-Vpcflowlogs -
05 VPCフローログ 本番 - すべて記録 P1x-Vfl-All -
CloudWatchロググループ 本番 - VPCフローログ用 /aws/P1x-Vpc/flowlogs 保管期間 1ヶ月

VPC, IAMロールは構築時の参考として記載しています。

自宅のPC環境

  • Windows10 Home Ver21H1
    • AWS CLI: aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
      • -- profile default : 読み取り専用
      • -- profile aws_RW : 書き込み権限あり
        • ※ 誤操作防止のため、変更操作時のみ-- profileオプションを付けてます。
    • PowerShell: Ver7.1.4

注意書き

  • コマンド内の変数やパラメータやは検証で使用したものを記載しています。自身の環境に書き換えて使用してください。
  • 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。

目次


CloudWatch Logs ロググループの作成

# ロググループ作成
${profile} = "aws_RW"
${loggroup_name} = "/aws/P1x-Vpc/flowlogs"
${tag_env} = "Product"
${tag_system} = "HatenaBlog"
${retention_days} = "14"
    # 選択値: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, 3653

aws logs create-log-group `
    --profile ${profile} `
    --log-group-name ${loggroup_name} `
    --tags "Name=${loggroup_name},Env=${tag_env},System=${tag_system}"

# ログの保管期間(Retention)設定
aws logs put-retention-policy `
    --profile ${profile} `
    --log-group-name ${loggroup_name} `
    --retention-in-days ${retention_days}


VPCフローログの作成

VPCVPCフローログを設定します。ログ形式はデフォルトです。
${version} ${account-id} ${interface-id} ${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action} ${log-status}

# VPC-IDを変数へ格納
${vpc_name} = "P1x-Vpc"

${vpc_id} = aws ec2 describe-vpcs `
    --filters "Name=tag:Name,Values=${vpc_name}" `
    --query "Vpcs[].VpcId" `
    --output text

# ロググループのARNを変数へ格納
${iam_role_name} = "P1x-Irl-Mnt-Vpcflowlogs"

${iam_role_arn} = aws iam get-role `
    --role-name ${iam_role_name} `
    --query "Role.Arn" `
    --output text

# VPCフローログの作成
${profile} = "aws_RW"
${flowlog_name} = "P1x-Vfl-All"
${loggroup_name} = "/aws/P1x-Vpc/flowlogs"
${tag_env} = "Product"
${tag_system} = "HatenaBlog"

aws ec2 create-flow-logs `
    --profile ${profile}  `
    --resource-type VPC `
    --resource-ids ${vpc_id} `
    --traffic-type ALL `
    --log-destination-type cloud-watch-logs `
    --log-group-name ${loggroup_name} `
    --deliver-logs-permission-arn ${iam_role_arn} `
    --tag-specifications "ResourceType=vpc-flow-log, `
        Tags=[{Key=Name,Value=${flowlog_name}}, `
            {Key=Env,Value=${tag_env}}, `
            {Key=System,Value=${tag_system}}]"


作成したAWSリソースの表示

# CloudWatch Logs ロググループ
## すべて表示する
aws logs describe-log-groups

## 名前を指定して表示
${loggroup_name} = "/aws/P1x-Vpc/flowlogs"

aws logs describe-log-groups `
    --log-group-name-prefix ${loggroup_name}

# -------------------------------------------
# VPCフローログ
## すべて表示する
aws ec2 describe-flow-logs

## 名前を指定して表示
${flowlog_name} = "P1x-Vfl-All"

aws ec2 describe-flow-logs `
    --filter "Name=tag:Name,Values=${flowlog_name}"  # 「filter」が「s」要らないので注意


VPCフローログのログイベントを表示する

コマンドリファレンスを参考にしてコマンドを組みます。

get-log-events

★他ページを作成して、ログが溜まってから作成します。


関連記事へのリンク