diff --git a/tf/environments/dev/main.tf b/tf/environments/dev/main.tf index 5d1f9e64..c9a70776 100644 --- a/tf/environments/dev/main.tf +++ b/tf/environments/dev/main.tf @@ -936,6 +936,61 @@ module "fastpath_builder" { codepipeline_bucket = aws_s3_bucket.ooniapi_codepipeline_bucket.bucket } +module "reuploader_builder" { + source = "../../modules/ooni_docker_build" + trigger_tag = "" + + service_name = "reuploader" + repo = "ooni/backend" + branch_name = "add_fastpath_reuploader" + environment = local.environment + buildspec_path = "reuploader/buildspec.yml" + trigger_path = "reuploader/**" + codestar_connection_arn = aws_codestarconnections_connection.oonidevops.arn + + codepipeline_bucket = aws_s3_bucket.ooniapi_codepipeline_bucket.bucket +} + +module "reuploader" { + source = "../../modules/scheduled_service" + + task_memory = 256 + + vpc_id = module.network.vpc_id + + first_run = true + service_name = "reuploader" + default_docker_image_url = "ooni/reuploader:20260611-840e1b63" + schedule_expression = "cron(0/5 * * * ? 2000-2199)" + stage = local.environment + dns_zone_ooni_io = local.dns_zone_ooni_io + key_name = module.adm_iam_roles.oonidevops_key_name + scheduled_task_cluster = module.ooniapi_cluster.cluster_name + ecs_cluster_id = module.ooniapi_cluster.cluster_id + + task_environment = { + AWS_REGION = var.aws_region + BATCH_SIZE = 10 + BUCKET_NAME = "ooniprobe-failed-reports-eu-central-1-1d24426a" + DRY_RUN = true + FASTPATH_API = "http://${local.fastpath_hosts[length(local.fastpath_hosts) - 1]}:8472" + } + + task_secrets = { + AWS_SECRET_ACCESS_KEY = module.ooniapi_user.aws_secret_access_key_arn + AWS_ACCESS_KEY_ID = module.ooniapi_user.aws_access_key_id_arn + } + + ooniapi_service_security_groups = [ + module.ooniapi_cluster.web_security_group_id + ] + + tags = merge( + local.tags, + { Name = "ooni-tier0-reuploader" } + ) +} + #### OONI Run service module "ooniapi_oonirun_deployer" { diff --git a/tf/modules/adm_iam_roles/main.tf b/tf/modules/adm_iam_roles/main.tf index aa5c525f..10fb15f9 100644 --- a/tf/modules/adm_iam_roles/main.tf +++ b/tf/modules/adm_iam_roles/main.tf @@ -53,7 +53,8 @@ resource "aws_iam_policy" "oonidevops" { "secretsmanager:*", "cloudhsm:*", "athena:*", - "glue:*" + "glue:*", + "events:*" ], "Resource": "*" } diff --git a/tf/modules/ooniapi_service/main.tf b/tf/modules/ooniapi_service/main.tf index 84e9f38f..068d1651 100644 --- a/tf/modules/ooniapi_service/main.tf +++ b/tf/modules/ooniapi_service/main.tf @@ -36,6 +36,72 @@ resource "aws_iam_role_policy" "ooniapi_service_task" { policy = templatefile("${path.module}/templates/profile_policy.json", {}) } +resource "aws_iam_role" "events_run_task" { + count = var.run_on_schedule ? 1 : 0 + name = "${local.name}-events-run-task-role" + + assume_role_policy = <