diff --git a/examples/complete/main.tf b/examples/complete/main.tf index b678c53..fb32465 100644 --- a/examples/complete/main.tf +++ b/examples/complete/main.tf @@ -105,8 +105,9 @@ module "lambda" { invoke_function_permissions = [ { - principal = "s3.amazonaws.com" - source_arn = join("", aws_s3_bucket.example[*].arn) + principal = "s3.amazonaws.com" + source_arn = join("", aws_s3_bucket.example[*].arn) + source_account = join("", data.aws_caller_identity.current[*].account_id) } ] diff --git a/examples/complete/versions.tf b/examples/complete/versions.tf index c6da977..9e3d479 100644 --- a/examples/complete/versions.tf +++ b/examples/complete/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 0.14" + required_version = ">= 1.4" required_providers { aws = { diff --git a/examples/docker-image/versions.tf b/examples/docker-image/versions.tf index b78d471..8eba512 100644 --- a/examples/docker-image/versions.tf +++ b/examples/docker-image/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 0.14" + required_version = ">= 1.4" required_providers { aws = { diff --git a/lambda-permissions.tf b/lambda-permissions.tf index a8cd24b..eee87a4 100644 --- a/lambda-permissions.tf +++ b/lambda-permissions.tf @@ -1,8 +1,9 @@ resource "aws_lambda_permission" "invoke_function" { for_each = local.enabled ? { for i, permission in var.invoke_function_permissions : i => permission } : {} - action = "lambda:InvokeFunction" - function_name = aws_lambda_function.this[0].function_name - principal = each.value.principal - source_arn = each.value.source_arn + action = "lambda:InvokeFunction" + function_name = aws_lambda_function.this[0].function_name + principal = each.value.principal + source_arn = each.value.source_arn + source_account = each.value.source_account } diff --git a/variables.tf b/variables.tf index c8bfbb0..647f894 100644 --- a/variables.tf +++ b/variables.tf @@ -248,9 +248,16 @@ variable "inline_iam_policy" { variable "invoke_function_permissions" { type = list(object({ - principal = string - source_arn = string + principal = string + source_arn = optional(string) + source_account = optional(string) })) - description = "Defines which external source(s) can invoke this function (action 'lambda:InvokeFunction'). Attributes map to those of https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission. NOTE: to keep things simple, we only expose a subset of said attributes. If a more complex configuration is needed, declare the necessary lambda permissions outside of this module" + description = <