From 392b007920b1b72cf2574f0f1014e043e701c909 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 29 Mar 2023 16:52:10 -0700 Subject: [PATCH] (cloud) allows for automated restore. --- terraform/deploy.tf | 12 ++++ .../prod-cloud/terraform.tfstate | 43 ++++++++++++- .../prod-cloud/terraform.tfstate.backup | 63 ++++++++++++++++++- 3 files changed, 113 insertions(+), 5 deletions(-) diff --git a/terraform/deploy.tf b/terraform/deploy.tf index c9cfcfd2..b0807de9 100644 --- a/terraform/deploy.tf +++ b/terraform/deploy.tf @@ -458,3 +458,15 @@ module "load_historical_sales_job" { cpu = 1024 } */ + +module "restore_from_backup_job" { + source = "./background-job/" + ecs_cluster = var.ecs_cluster + task_role_arn = var.task_role_arn + stage = var.stage + job_name = "restore-from-backup" + execution_role_arn = var.execution_role_arn + use_schedule = false + memory = 8192 + cpu = 4096 +} diff --git a/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate b/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate index 64c67671..eabe3ae5 100644 --- a/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate +++ b/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.3.8", - "serial": 60, + "serial": 66, "lineage": "cf731bb4-8fb3-47af-6e29-22030e089d96", "outputs": { "aws_access_key_id": { @@ -164,7 +164,7 @@ ], "tags": {}, "tags_all": {}, - "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod-cloud:2", + "task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_prod-cloud:15", "timeouts": { "delete": null }, @@ -1075,6 +1075,45 @@ "private": "bnVsbA==" } ] + }, + { + "module": "module.restore_from_backup_job", + "mode": "managed", + "type": "aws_ecs_task_definition", + "name": "background_taskdef", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/restore_from_backup_prod_cloud:1", + "container_definitions": "[{\"cpu\":0,\"dockerLabels\":{\"com.datadoghq.tags.env\":\"prod-cloud\",\"com.datadoghq.tags.service\":\"restore-from-backup\"},\"environment\":[{\"name\":\"DD_CONTAINER_ENV_AS_TAGS\",\"value\":\"{\\\"INTEGREAT_JOB\\\":\\\"background_job\\\"}\"},{\"name\":\"DD_ENV\",\"value\":\"prod-cloud\"},{\"name\":\"DD_SERVICE\",\"value\":\"restore-from-backup\"},{\"name\":\"INTEGREAT_JOB\",\"value\":\"restore-from-backup\"},{\"name\":\"config\",\"value\":\"/usr/local/config/prod-cloud-background-worker.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat:prod-cloud\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-background-worker-prod-cloud\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"},{\"containerPort\":9090,\"hostPort\":9090,\"protocol\":\"tcp\"}],\"volumesFrom\":[]},{\"cpu\":0,\"environment\":[{\"name\":\"DD_API_KEY\",\"value\":\"ce10d932c47b358e81081ae67bd8c112\"},{\"name\":\"ECS_FARGATE\",\"value\":\"true\"}],\"essential\":true,\"image\":\"public.ecr.aws/datadog/agent:latest\",\"mountPoints\":[],\"name\":\"datadog-agent\",\"portMappings\":[],\"volumesFrom\":[]}]", + "cpu": "4096", + "ephemeral_storage": [], + "execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole", + "family": "restore_from_backup_prod_cloud", + "id": "restore_from_backup_prod_cloud", + "inference_accelerator": [], + "ipc_mode": "", + "memory": "8192", + "network_mode": "awsvpc", + "pid_mode": "", + "placement_constraints": [], + "proxy_configuration": [], + "requires_compatibilities": [ + "FARGATE" + ], + "revision": 1, + "runtime_platform": [], + "tags": null, + "tags_all": {}, + "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", + "volume": [] + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] } ], "check_results": null diff --git a/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate.backup b/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate.backup index d692d05b..64c67671 100644 --- a/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate.backup +++ b/terraform/terraform.tfstate.d/prod-cloud/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.3.8", - "serial": 54, + "serial": 60, "lineage": "cf731bb4-8fb3-47af-6e29-22030e089d96", "outputs": { "aws_access_key_id": { @@ -208,7 +208,7 @@ ], "revision": 3, "runtime_platform": [], - "tags": null, + "tags": {}, "tags_all": {}, "task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb", "volume": [] @@ -905,7 +905,64 @@ "type": "aws_ses_receipt_rule", "name": "store", "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", - "instances": [] + "instances": [ + { + "schema_version": 0, + "attributes": { + "add_header_action": [], + "after": null, + "arn": "arn:aws:ses:us-east-1:679918342773:receipt-rule-set/default-rule-set:receipt-rule/store-prod-cloud", + "bounce_action": [], + "enabled": true, + "id": "store-prod-cloud", + "lambda_action": [], + "name": "store-prod-cloud", + "recipients": [ + "invoices@cloud.mail.app.integreatconsult.com" + ], + "rule_set_name": "default-rule-set", + "s3_action": [ + { + "bucket_name": "integreat-mail-prod-cloud", + "kms_key_arn": "", + "object_key_prefix": "", + "position": 1, + "topic_arn": "" + } + ], + "scan_enabled": true, + "sns_action": [], + "stop_action": [], + "tls_policy": "Optional", + "workmail_action": [] + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_s3_bucket.invoices", + "aws_ses_receipt_rule_set.main", + "data.aws_caller_identity.current" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_ses_receipt_rule_set", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ses:us-east-1:679918342773:receipt-rule-set/default-rule-set-prod-cloud", + "id": "default-rule-set-prod-cloud", + "rule_set_name": "default-rule-set-prod-cloud" + }, + "sensitive_attributes": [], + "private": "bnVsbA==" + } + ] }, { "mode": "managed",