-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathcloudwatch_logs.tf
More file actions
50 lines (38 loc) · 1.68 KB
/
Copy pathcloudwatch_logs.tf
File metadata and controls
50 lines (38 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
locals {
log_group_name = coalesce(try(var.logging_config.log_group, null), "/aws/lambda/${var.lambda_at_edge ? "us-east-1." : ""}${var.function_name}")
log_group_arn = try(data.aws_cloudwatch_log_group.lambda[0].arn, aws_cloudwatch_log_group.lambda[0].arn, "")
}
data "aws_cloudwatch_log_group" "lambda" {
count = var.create_cloudwatch_log_group ? 0 : 1
region = var.region
name = local.log_group_name
}
resource "aws_cloudwatch_log_group" "lambda" {
count = var.create_cloudwatch_log_group ? 1 : 0
region = var.region
name = local.log_group_name
log_group_class = var.cloudwatch_logs_log_group_class
retention_in_days = var.cloudwatch_logs_retention_in_days
kms_key_id = var.cloudwatch_logs_kms_key_id
skip_destroy = var.cloudwatch_logs_skip_destroy
tags = var.tags
}
resource "aws_lambda_permission" "cloudwatch_logs" {
for_each = var.cloudwatch_log_subscription_filters
region = var.region
action = "lambda:InvokeFunction"
function_name = lookup(each.value, "destination_arn", null)
principal = "logs.${data.aws_region.current.region}.amazonaws.com"
source_arn = "${local.log_group_arn}:*"
}
resource "aws_cloudwatch_log_subscription_filter" "cloudwatch_logs" {
for_each = var.cloudwatch_log_subscription_filters
depends_on = [aws_lambda_permission.cloudwatch_logs]
region = var.region
destination_arn = lookup(each.value, "destination_arn", null)
distribution = lookup(each.value, "distribution", null)
filter_pattern = lookup(each.value, "filter_pattern", "")
log_group_name = local.log_group_name
name = each.key
role_arn = lookup(each.value, "role_arn", null)
}