🖥

AWS Terraform – Cloud Watch Logs のサブスクリプションフィルタ + Lambda連携を Terrafor

2023/10/07に公開

概要

Cloud Watch Logs のサブスクリプションフィルタを使うと
ログのパターンを検出してLambdaを起動できる

AWSコンソールからの作り方はCloudWatchのロググループを選んで「アクション」から設定できる

<img width="632" alt="image" src="https://github.com/YumaInaura/YumaInaura/assets/13635059/f40dd57a-4ab2-4611-bab8-1c959e28dcc8">

これを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"
}

公式

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_log_subscription_filter#destination_arn

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-09-19

Discussion