diff --git a/prod-eu-west/services/events/input.tf b/prod-eu-west/services/events/input.tf index 4a392b505..308cddc8c 100644 --- a/prod-eu-west/services/events/input.tf +++ b/prod-eu-west/services/events/input.tf @@ -45,3 +45,7 @@ data "aws_lb_listener" "default" { load_balancer_arn = data.aws_lb.default.arn port = 443 } + +data "aws_iam_role" "ecs_events" { + name = "ecs_events" +} diff --git a/prod-eu-west/services/events/main.tf b/prod-eu-west/services/events/main.tf index 5aa3ecb9e..11d237a19 100644 --- a/prod-eu-west/services/events/main.tf +++ b/prod-eu-west/services/events/main.tf @@ -120,3 +120,36 @@ resource "aws_route53_record" "split-events" { ttl = var.ttl records = [data.aws_lb.default.dns_name] } + +resource "aws_cloudwatch_event_rule" "events-reindex-touched-dois" { + name = "events-reindex-touched-dois" + schedule_expression = "cron(0 12 * * ? *)" +} + +resource "aws_cloudwatch_event_target" "events-reindex-touched-dois" { + target_id = "events-reindex-touched-dois" + arn = data.aws_ecs_cluster.default.arn + rule = aws_cloudwatch_event_rule.events-reindex-touched-dois.name + role_arn = data.aws_iam_role.ecs_events.arn + + input = jsonencode({ + containerOverrides = [{ + name = "events" + command = ["bundle", "exec", "rake", "event:reindex_touched_dois"] + }] + }) + + ecs_target { + task_count = 1 + launch_type = "FARGATE" + task_definition_arn = aws_ecs_task_definition.events.arn + + network_configuration { + security_groups = [data.aws_security_group.datacite-private.id] + subnets = [ + data.aws_subnet.datacite-private.id, + data.aws_subnet.datacite-alt.id + ] + } + } +}