やりたいこと
・クロスアカウント環境下で他アカウントのVPCログを特定アカウントに集約する
・S3にログを集約してファイル作成ごとにLambdaでファイルを読み込む
(外部への一定バイト以上の通信を検知して通知するような監視に利用する)
別記事でクロスアカウントにおけるログ集約は記載しましたので
その部分は割愛し、ファイル作成時にLambdaで読み込む部分を記載します。
ファイル出力するS3のバケットとキー
kaikusakari-test-vpc/AWSLogs/123456789012/vpcflowlogs/ap-northeast-1/
Lambdaの設定
イベントのトリガー
イベントタイプ: PUT
バケット名:kaikusakari-test-vpc
プレフィックス: AWSLogs/123456789012/vpcflowlogs/ap-northeast-1/
(vpcのログはバケット名のみ指定してキー階層はデフォルトです)
ロール
Lambdaの実行
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:ap-northeast-1:123456789012:log-group:/aws/lambda/test:*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:ap-northeast-1:123456789012:*"
}
]
}
S3アクセス用ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetLifecycleConfiguration",
・・・中略・・・
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::kaikusakari-test-vpc/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:GetAccessPoint",
"s3:GetAccountPublicAccessBlock",
"s3:ListAllMyBuckets",
"s3:ListAccessPoints",
"s3:ListJobs",
"s3:HeadBucket"
],
"Resource": "*"
}
]
}
言語でAWS SDKを使ってS3のオブジェクトを読み込み可能です。