Skip to content

Commit a573b03

Browse files
authored
fix: Adds region wildcard to log group arn when lambda@edge (claranet#35)
1 parent 06c9eef commit a573b03

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Diff for: examples/simple/main.tf

+13
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ resource "random_pet" "this" {
1414
length = 2
1515
}
1616

17+
//module "lambda_at_edge" {
18+
// source = "../../"
19+
//
20+
// function_name = "${random_pet.this.id}-lambda-edge"
21+
// handler = "index.lambda_handler"
22+
// runtime = "python3.8"
23+
// lambda_at_edge = true
24+
//
25+
// attach_cloudwatch_logs_policy = true
26+
//
27+
// source_path = "${path.module}/../fixtures/python3.8-app1/"
28+
//}
29+
1730
//resource "aws_cloudwatch_log_group" "this" {
1831
// name = "/aws/lambda/us-east-1.${random_pet.this.id}-lambda-simple"
1932
//}

Diff for: iam.tf

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
locals {
2-
create_role = var.create && var.create_function && ! var.create_layer && var.create_role
3-
log_group_arn = element(concat(data.aws_cloudwatch_log_group.lambda.*.arn, aws_cloudwatch_log_group.lambda.*.arn, [""]), 0)
2+
create_role = var.create && var.create_function && ! var.create_layer && var.create_role
3+
4+
# Lambda@Edge uses the Cloudwatch region closest to the location where the function is executed
5+
# The region part of the LogGroup ARN is then replaced with a wildcard (*) so Lambda@Edge is able to log in every region
6+
log_group_arn_regional = element(concat(data.aws_cloudwatch_log_group.lambda.*.arn, aws_cloudwatch_log_group.lambda.*.arn, [""]), 0)
7+
log_group_arn = local.create_role && var.lambda_at_edge ? format("arn:%s:%s:%s:%s:%s", data.aws_arn.log_group_arn[0].partition, data.aws_arn.log_group_arn[0].service, "*", data.aws_arn.log_group_arn[0].account, data.aws_arn.log_group_arn[0].resource) : local.log_group_arn_regional
48
}
59

610
###########
@@ -38,6 +42,12 @@ resource "aws_iam_role" "lambda" {
3842
# Cloudwatch Logs
3943
##################
4044

45+
data "aws_arn" "log_group_arn" {
46+
count = local.create_role && var.lambda_at_edge ? 1 : 0
47+
48+
arn = local.log_group_arn_regional
49+
}
50+
4151
data "aws_iam_policy_document" "logs" {
4252
count = local.create_role && var.attach_cloudwatch_logs_policy ? 1 : 0
4353

0 commit comments

Comments
 (0)