CloudWarchログを加工したりするためにLambdaに接続する設定をTerraformで行ってみます。
解説
ま、大して設定するところもないのでソース見るだけでもわかると思いますが………
terraformでやろうとすると意外と面倒です。つか、わかりにくい。
それは、他のリソースと違ってLambdaの場合はLambda側でACLの設定を行うためです。
CloudWatchログ
まずは対象となるログを指定します
data "aws_cloudwatch_log_group" "log" {
name = "hoge_fuga_log"
}
サブスクリプションフィルタ
ストリームの設定です
resource "aws_cloudwatch_log_subscription_filter" "log_filter" {
name = "log_filter"
log_group_name = "${data.aws_cloudwatch_log_group.log.name}"
filter_pattern = ""
destination_arn = "対象のLambda関数のarn"
}
Lambda側でACLの設定
CloudWatchログからのアクセスを許可します
resource "aws_lambda_permission" "log_permission" {
action = "lambda:InvokeFunction"
function_name = "対象のLambda関数の名前"
principal = "logs.ap-northeast-1.amazonaws.com"
source_arn = "${data.aws_cloudwatch_log_group.log.arn}"
}
蛇足
毎度思うんだが、同じLambdaを指定するにもarnだったり名前だったりと統一性のないのがAWSのお約束。
まぁ、マイクロサービスのDarkSideですなぁ。