概要
Cloud Watch Logs のサブスクリプションフィルタを使うと
ログのパターンを検出してLambdaを起動できる
AWSコンソールからの作り方はCloudWatchのロググループを選んで「アクション」から設定できる
これをTerraform管理する
Terraformのコード例
resource "aws_cloudwatch_log_subscription_filter" "xxx" {
name = "xxx"
log_group_name = "/path/to/log_group"
filter_pattern = "<フィルタパターン>"
destination_arn = <LAMBDA関数のARN>
}
エラー
不要な指定
Error: putting CloudWatch Logs Subscription Filter (***********):
InvalidParameterException: destinationArn for vendor lambda cannot be used with roleArn
Lambdaを使う場合は role_arn の指定は不要のようだ
role_arn = <ロールのARN>
権限不足
ログがLambdaを実行できるようにしておく必要がありそう
Error: putting CloudWatch Logs Subscription Filter (*****************): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.
resource "aws_lambda_permission" "yyy" {
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.some_lambda.function_name
principal = "logs.<REGION>.amazonaws.com"
}
公式
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。