1+ resource "aws_iam_role" "gap_detection_eventbridge_scheduler_execution_role" {
2+ name = " ${ var . DEPLOY_NAME } -gap-detection-eventbridge-role"
3+
4+ assume_role_policy = jsonencode ({
5+ Version = " 2012-10-17"
6+ Statement = [
7+ {
8+ Effect = " Allow"
9+ Principal = {
10+ Service = " scheduler.amazonaws.com"
11+ }
12+ Action = " sts:AssumeRole"
13+ }
14+ ]
15+ })
16+ }
17+
18+ resource "aws_iam_role_policy" "gap_detection_eventbridge_scheduler_policy" {
19+ name = " ${ var . DEPLOY_NAME } -gap-detection-eventbridge-policy"
20+ role = aws_iam_role. gap_detection_eventbridge_scheduler_execution_role . id
21+
22+ policy = jsonencode ({
23+ Version = " 2012-10-17"
24+ Statement = [
25+ {
26+ Effect = " Allow"
27+ Action = " lambda:InvokeFunction"
28+ Resource = aws_lambda_function.gap_functions[" gapReporter" ].arn
29+ }
30+ ]
31+ })
32+ }
33+ resource "aws_scheduler_schedule" "gap_reporter_scheduler" {
34+ name = " ${ var . DEPLOY_NAME } -gap_detection_reporter"
35+ group_name = " default"
36+
37+ schedule_expression = " rate(7 days)"
38+
39+ flexible_time_window {
40+ mode = " OFF"
41+ }
42+
43+ target {
44+ arn = " arn:aws:scheduler:::aws-sdk:lambda:invoke"
45+ role_arn = aws_iam_role. gap_detection_eventbridge_scheduler_execution_role . arn
46+
47+ input = jsonencode ({
48+ FunctionName = aws_lambda_function.gap_functions[" gapReporter" ].arn,
49+ InvocationType = " Event" ,
50+ Payload = jsonencode (" foo" )
51+ })
52+ }
53+ }
54+
55+ resource "aws_lambda_permission" "allow_scheduler_invoke" {
56+ statement_id = " AllowSchedulerInvoke"
57+ action = " lambda:InvokeFunction"
58+ function_name = aws_lambda_function. gap_functions [" gapReporter" ]. function_name
59+ principal = " scheduler.amazonaws.com"
60+ source_arn = aws_scheduler_schedule. gap_reporter_scheduler . arn
61+ }
0 commit comments