provider "aws" { region = "eu-west-1" } #################################################### # Lambda Function (building from source) #################################################### module "lambda_function" { source = "terraform-aws-modules/lambda/aws" version = "~> 4.0" function_name = "${random_pet.this.id}-lambda" description = "My awesome lambda function" handler = "index.lambda_handler" runtime = "python3.8" publish = true source_path = "${path.module}/../terraform-fixtures/python" allowed_triggers = { AllowExecutionFromS3Bucket = { service = "s3" source_arn = module.s3_bucket.s3_bucket_arn } } tags = { Pattern = "terraform-s3-lambda" Module = "lambda_function" } } ################### # S3 bucket with notification ################### module "s3_bucket" { source = "terraform-aws-modules/s3-bucket/aws" version = "~> 3.0" bucket = "${random_pet.this.id}-bucket" force_destroy = true tags = { Pattern = "terraform-s3-lambda" Module = "s3_bucket" } } module "s3_notification" { source = "terraform-aws-modules/s3-bucket/aws//modules/notification" version = "~> 3.0" bucket = module.s3_bucket.s3_bucket_id eventbridge = true lambda_notifications = { lambda1 = { function_arn = module.lambda_function.lambda_function_arn function_name = module.lambda_function.lambda_function_name events = ["s3:ObjectCreated:*"] filter_prefix = "data/" filter_suffix = ".json" } } } ################## # Extra resources ################## resource "random_pet" "this" { length = 2 }