JesusFilm / core

JFP DS Engineering Monorepo
https://docs.core.jesusfilm.org/
19 stars 12 forks source link

feat: api tags #1432

Closed tataihono closed 1 year ago

tataihono commented 1 year ago

Description

This PR introduces the new Tags API. This exposes a collection of Tags that can be infinitely nested. This also makes use of Aurora and Prisma (our new DB system). This is built on top of the User API refactor to the same DB system.

How should this PR be QA Tested?

Please describe the QA tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

The follow query should work on stage and return a number of tags sorted alphabetically by name.

query {
  tags {
    id
    name {
      value
      primary
      language {
        id
      }
    }
    parentId
  }
}

Checklist

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Failed: This project is currently locked by an unapplied plan from pull #1391. To continue, delete the lock from #1391 or apply that plan and merge the pull request.

Once the lock is released, comment atlantis plan here to re-plan.

vercel[bot] commented 1 year ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

4 Ignored Deployments | Name | Status | Preview | Comments | Updated (UTC) | | :--- | :----- | :------ | :------- | :------ | | **core-docs** | ⬜️ Ignored ([Inspect](https://vercel.com/jesusfilm/core-docs/DhvNZGbefVRsktT2NjVF28co8HH8)) | [Visit Preview](https://core-docs-git-23-02-tn-feat-tags-api-jesusfilm.vercel.app) | | Apr 17, 2023 10:30pm | | **journeys** | ⬜️ Ignored ([Inspect](https://vercel.com/jesusfilm/journeys/Bp9tYWmXtBY3iRtFkyLsuHZqKK7r)) | [Visit Preview](https://journeys-git-23-02-tn-feat-tags-api-jesusfilm.vercel.app) | | Apr 17, 2023 10:30pm | | **journeys-admin** | ⬜️ Ignored ([Inspect](https://vercel.com/jesusfilm/journeys-admin/22EFstbemennVEhKAGis1ZqTRJUV)) | [Visit Preview](https://journeys-admin-git-23-02-tn-feat-tags-api-jesusfilm.vercel.app) | | Apr 17, 2023 10:30pm | | **watch** | ⬜️ Ignored ([Inspect](https://vercel.com/jesusfilm/watch/6CJHv7W3G7UstQqJqmvh1DcJwAYJ)) | [Visit Preview](https://watch-git-23-02-tn-feat-tags-api-jesusfilm.vercel.app) | | Apr 17, 2023 10:30pm |
infracost[bot] commented 1 year ago

💰 Infracost estimate: monthly cost will increase by $36 (+7%) 📈

Project Previous New Diff
JesusFilm/core/infrastructure $507 $543 +$36 (+7%)
All projects $535 $571 +$36 (+7%)

3 projects have no code changes.

Infracost output ``` Project: JesusFilm/core/infrastructure Module path: infrastructure + module.prod.module.api-tags.module.database.aws_rds_cluster.default Monthly cost depends on usage + Aurora serverless Monthly cost depends on usage +$0.06 per ACU-hours + Storage Monthly cost depends on usage +$0.10 per GB + I/O requests Monthly cost depends on usage +$0.20 per 1M requests + Backup storage Monthly cost depends on usage +$0.021 per GB + Snapshot export Monthly cost depends on usage +$0.01 per GB + module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group Monthly cost depends on usage + Data ingested Monthly cost depends on usage +$0.50 per GB + Archival Storage Monthly cost depends on usage +$0.03 per GB + Insights queries data scanned Monthly cost depends on usage +$0.005 per GB + module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository Monthly cost depends on usage + Storage Monthly cost depends on usage +$0.10 per GB + module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service +$18 + Per GB per hour +$3 + Per vCPU per hour +$15 + module.prod.module.api-tags.module.ecs-task.aws_route53_record.record Monthly cost depends on usage + Standard queries (first 1B) Monthly cost depends on usage +$0.40 per 1M queries + Latency based routing queries (first 1B) Monthly cost depends on usage +$0.60 per 1M queries + Geo DNS queries (first 1B) Monthly cost depends on usage +$0.70 per 1M queries + module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group Monthly cost depends on usage + Data ingested Monthly cost depends on usage +$0.50 per GB + Archival Storage Monthly cost depends on usage +$0.03 per GB + Insights queries data scanned Monthly cost depends on usage +$0.005 per GB + module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository Monthly cost depends on usage + Storage Monthly cost depends on usage +$0.10 per GB + module.stage.module.api-tags.module.database.aws_rds_cluster.default Monthly cost depends on usage + Aurora serverless Monthly cost depends on usage +$0.06 per ACU-hours + Storage Monthly cost depends on usage +$0.10 per GB + I/O requests Monthly cost depends on usage +$0.20 per 1M requests + Backup storage Monthly cost depends on usage +$0.021 per GB + Snapshot export Monthly cost depends on usage +$0.01 per GB + module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group Monthly cost depends on usage + Data ingested Monthly cost depends on usage +$0.50 per GB + Archival Storage Monthly cost depends on usage +$0.03 per GB + Insights queries data scanned Monthly cost depends on usage +$0.005 per GB + module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository Monthly cost depends on usage + Storage Monthly cost depends on usage +$0.10 per GB + module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service +$18 + Per GB per hour +$3 + Per vCPU per hour +$15 + module.stage.module.api-tags.module.ecs-task.aws_route53_record.record Monthly cost depends on usage + Standard queries (first 1B) Monthly cost depends on usage +$0.40 per 1M queries + Latency based routing queries (first 1B) Monthly cost depends on usage +$0.60 per 1M queries + Geo DNS queries (first 1B) Monthly cost depends on usage +$0.70 per 1M queries + module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group Monthly cost depends on usage + Data ingested Monthly cost depends on usage +$0.50 per GB + Archival Storage Monthly cost depends on usage +$0.03 per GB + Insights queries data scanned Monthly cost depends on usage +$0.005 per GB + module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository Monthly cost depends on usage + Storage Monthly cost depends on usage +$0.10 per GB Monthly cost change for JesusFilm/core/infrastructure (Module path: infrastructure) Amount: +$36 ($507 → $543) Percent: +7% ────────────────────────────────── The following projects have no cost estimate changes: JesusFilm/core/infrastructure/resources/atlantis (Module path: infrastructure/resources/atlantis), JesusFilm/core/infrastructure/resources/doppler (Module path: infrastructure/resources/doppler), JesusFilm/core/infrastructure/resources/terraform (Module path: infrastructure/resources/terraform) Run the following command to see their breakdown: infracost breakdown --path=/path/to/code ────────────────────────────────── Key: ~ changed, + added, - removed 596 cloud resources were detected: ∙ 122 were estimated, 88 of which include usage-based costs, see https://infracost.io/usage-file ∙ 472 were free: ∙ 145 x aws_ssm_parameter ∙ 64 x aws_route_table_association ∙ 64 x aws_subnet ∙ 28 x aws_appautoscaling_policy ∙ 28 x aws_ecs_task_definition ∙ 27 x aws_ecr_lifecycle_policy ∙ 18 x aws_alb_listener ∙ 14 x aws_alb_listener_rule ∙ 14 x aws_alb_target_group ∙ 13 x aws_security_group ∙ 8 x aws_security_group_rule ∙ 6 x aws_iam_role_policy_attachment ∙ 5 x aws_iam_role ∙ 4 x aws_route ∙ 4 x aws_route_table ∙ 3 x aws_ecs_cluster ∙ 2 x aws_acm_certificate ∙ 2 x aws_acm_certificate_validation ∙ 2 x aws_db_subnet_group ∙ 2 x aws_eip ∙ 2 x aws_iam_policy ∙ 2 x aws_internet_gateway ∙ 2 x aws_lb_listener ∙ 2 x aws_lb_listener_rule ∙ 2 x aws_vpc ∙ 1 x aws_cloudwatch_event_rule ∙ 1 x aws_cloudwatch_event_target ∙ 1 x aws_efs_mount_target ∙ 1 x aws_iam_access_key ∙ 1 x aws_iam_role_policy ∙ 1 x aws_iam_user ∙ 1 x aws_iam_user_policy ∙ 1 x aws_lb_target_group ∙ 1 x aws_s3_bucket_public_access_block ∙ 2 are not supported yet, see https://infracost.io/requested-resources: ∙ 1 x aws_s3_bucket_server_side_encryption_configuration ∙ 1 x aws_s3_bucket_versioning ```

This comment will be updated when the cost estimate changes.

Is this comment useful? Yes, No, Other

github-actions[bot] commented 1 year ago
Warnings
:warning: :exclamation: Big PR (1167 changes)
:warning: Is this PR related to a Basecamp issue? If so link it via the PR description.

(change count - 1167): Pull Request size seems relatively large. If Pull Request contains multiple changes, split each into separate PR will helps faster, easier review.

Generated by :no_entry_sign: dangerJS against e551c60a7fd229419617b072e1cc19f94acd0892

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Failed: This project is currently locked by an unapplied plan from pull #1391. To continue, delete the lock from #1391 or apply that plan and merge the pull request.

Once the lock is released, comment atlantis plan here to re-plan.

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-users/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-users/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.2 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: Unsupported argument
│ 
│   on ../apps/api-tags/infrastructure/main.tf line 8, in module "ecs-task":
│    8:   create_rds_cluster    = true
│ 
│ An argument named "create_rds_cluster" is not expected here.
╵
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-prod" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "prod" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "prod" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.prod.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "prd" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.prod.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-prod/ae1556aacf21465f" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.prod.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-prod-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-0b722b0a1f7789afd" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-prod" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.prod.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-prod/api-tags-prod-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.prod.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-prod" } # module.prod.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-prod" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-prod-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-prod-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-02935fccc551bacd8", ] + subnets = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] } } # module.prod.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-prod" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-prod-1581820397.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z03223152FHL8WN66TI5X" } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-prod-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-prod" } # module.prod.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-prod" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-prod" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/prod/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.prod.module.prod.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "prod" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-02f4c2a33ace122c5", + "subnet-036663ddfdb3b94b0", + "subnet-05c389158df4b940a", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be created + resource "aws_rds_cluster" "default" { + allocated_storage = (known after apply) + apply_immediately = (known after apply) + arn = (known after apply) + availability_zones = [ + "us-east-2a", + "us-east-2b", + "us-east-2c", ] + backup_retention_period = 5 + cluster_identifier = "api-tags-stage" + cluster_identifier_prefix = (known after apply) + cluster_members = (known after apply) + cluster_resource_id = (known after apply) + copy_tags_to_snapshot = false + database_name = "stage" + db_cluster_parameter_group_name = (known after apply) + db_subnet_group_name = "stage" + enable_global_write_forwarding = false + enable_http_endpoint = false + endpoint = (known after apply) + engine = "aurora-postgresql" + engine_mode = "provisioned" + engine_version = "13.7" + engine_version_actual = (known after apply) + hosted_zone_id = (known after apply) + iam_roles = (known after apply) + id = (known after apply) + kms_key_id = (known after apply) + master_password = (sensitive value) + master_username = "root" + network_type = (known after apply) + port = (known after apply) + preferred_backup_window = "07:00-09:00" + preferred_maintenance_window = (known after apply) + reader_endpoint = (known after apply) + skip_final_snapshot = false + storage_encrypted = (known after apply) + tags_all = (known after apply) + vpc_security_group_ids = (known after apply) } # module.stage.module.api-tags.module.database.doppler_secret.rds_password will be created + resource "doppler_secret" "rds_password" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_PASSWORD" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.doppler_secret.rds_url will be created + resource "doppler_secret" "rds_url" { + computed = (sensitive value) + config = "stg" + id = (known after apply) + name = "PG_DATABASE_URL" + project = "api-tags" + value = (sensitive value) } # module.stage.module.api-tags.module.database.random_password.password will be created + resource "random_password" "password" { + bcrypt_hash = (sensitive value) + id = (known after apply) + length = 16 + lower = true + min_lower = 0 + min_numeric = 0 + min_special = 0 + min_upper = 0 + number = true + numeric = true + override_special = "!$%&*?" + result = (sensitive value) + special = true + upper = true } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener.alb_listener will be created + resource "aws_alb_listener" "alb_listener" { + arn = (known after apply) + id = (known after apply) + load_balancer_arn = "arn:aws:elasticloadbalancing:us-east-2:410965620680:loadbalancer/app/jfp-internal-alb-stage/846f69021da58f87" + port = 4006 + protocol = "HTTP" + ssl_policy = (known after apply) + tags_all = (known after apply) + default_action { + order = (known after apply) + type = "fixed-response" + fixed_response { + content_type = "text/plain" + message_body = "No routes defined" + status_code = "200" } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_listener_rule.alb_listener_rule will be created + resource "aws_alb_listener_rule" "alb_listener_rule" { + arn = (known after apply) + id = (known after apply) + listener_arn = (known after apply) + priority = (known after apply) + tags_all = (known after apply) + action { + order = (known after apply) + target_group_arn = (known after apply) + type = "forward" } + condition { + path_pattern { + values = [ + "/*", ] } } } # module.stage.module.api-tags.module.ecs-task.aws_alb_target_group.alb_target_group will be created + resource "aws_alb_target_group" "alb_target_group" { + arn = (known after apply) + arn_suffix = (known after apply) + connection_termination = false + deregistration_delay = "300" + id = (known after apply) + ip_address_type = (known after apply) + lambda_multi_value_headers_enabled = false + load_balancing_algorithm_type = (known after apply) + name = "api-tags-stage-tg" + port = 4006 + preserve_client_ip = (known after apply) + protocol = "HTTP" + protocol_version = (known after apply) + proxy_protocol_v2 = false + slow_start = 0 + tags_all = (known after apply) + target_type = "ip" + vpc_id = "vpc-08eeff0fe23f23079" + health_check { + enabled = true + healthy_threshold = 2 + interval = 5 + matcher = (known after apply) + path = "/.well-known/apollo/server-health" + port = "traffic-port" + protocol = "HTTP" + timeout = 4 + unhealthy_threshold = 3 } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_cpu will be created + resource "aws_appautoscaling_policy" "ecs_policy_cpu" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-cpu-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageCPUUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_policy.ecs_policy_memory will be created + resource "aws_appautoscaling_policy" "ecs_policy_memory" { + alarm_arns = (known after apply) + arn = (known after apply) + id = (known after apply) + name = "jfp-memory-autoscaling-stage" + policy_type = "TargetTrackingScaling" + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" + target_tracking_scaling_policy_configuration { + disable_scale_in = false + target_value = 75 + predefined_metric_specification { + predefined_metric_type = "ECSServiceAverageMemoryUtilization" } } } # module.stage.module.api-tags.module.ecs-task.aws_appautoscaling_target.service_autoscaling will be created + resource "aws_appautoscaling_target" "service_autoscaling" { + id = (known after apply) + max_capacity = 2 + min_capacity = 1 + resource_id = "service/jfp-ecs-cluster-stage/api-tags-stage-service" + role_arn = (known after apply) + scalable_dimension = "ecs:service:DesiredCount" + service_namespace = "ecs" } # module.stage.module.api-tags.module.ecs-task.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-stage" } # module.stage.module.api-tags.module.ecs-task.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ecs_service.ecs_service will be created + resource "aws_ecs_service" "ecs_service" { + cluster = "arn:aws:ecs:us-east-2:410965620680:cluster/jfp-ecs-cluster-stage" + deployment_maximum_percent = 200 + deployment_minimum_healthy_percent = 100 + desired_count = 1 + enable_ecs_managed_tags = false + enable_execute_command = false + iam_role = (known after apply) + id = (known after apply) + launch_type = "FARGATE" + name = "api-tags-stage-service" + platform_version = (known after apply) + scheduling_strategy = "REPLICA" + tags_all = (known after apply) + task_definition = (known after apply) + triggers = (known after apply) + wait_for_steady_state = false + load_balancer { + container_name = "jfp-api-tags-stage-app" + container_port = 4006 + target_group_arn = (known after apply) } + network_configuration { + assign_public_ip = false + security_groups = [ + "sg-07a49b1a405029088", ] + subnets = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] } } # module.stage.module.api-tags.module.ecs-task.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "512" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-stage" + id = (known after apply) + memory = "1024" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_route53_record.record will be created + resource "aws_route53_record" "record" { + allow_overwrite = (known after apply) + fqdn = (known after apply) + id = (known after apply) + name = "api-tags" + records = [ + "internal-jfp-internal-alb-stage-154137661.us-east-2.elb.amazonaws.com", ] + ttl = 300 + type = "CNAME" + zone_id = "Z056780738DT3AZL6A4WD" } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_cloudwatch_log_group.ecs_cw_log_group will be created + resource "aws_cloudwatch_log_group" "ecs_cw_log_group" { + arn = (known after apply) + id = (known after apply) + name = "api-tags-seed-stage-logs" + name_prefix = (known after apply) + retention_in_days = 0 + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecr_lifecycle_policy.ecr_policy will be created + resource "aws_ecr_lifecycle_policy" "ecr_policy" { + id = (known after apply) + policy = jsonencode( { + rules = [ + { + action = { + type = "expire" } + description = "Expire more than 10 images" + rulePriority = 1 + selection = { + countNumber = 10 + countType = "imageCountMoreThan" + tagStatus = "any" } }, ] } ) + registry_id = (known after apply) + repository = "jfp-api-tags-seed-stage" } # module.stage.module.api-tags.module.seed.aws_ecr_repository.ecr_repository will be created + resource "aws_ecr_repository" "ecr_repository" { + arn = (known after apply) + id = (known after apply) + image_tag_mutability = "MUTABLE" + name = "jfp-api-tags-seed-stage" + registry_id = (known after apply) + repository_url = (known after apply) + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ecs_task_definition.ecs_task_definition will be created + resource "aws_ecs_task_definition" "ecs_task_definition" { + arn = (known after apply) + container_definitions = (known after apply) + cpu = "256" + execution_role_arn = "arn:aws:iam::410965620680:role/jfp-ecs-task-execution-role" + family = "jfp-api-tags-seed-stage" + id = (known after apply) + memory = "512" + network_mode = "awsvpc" + requires_compatibilities = [ + "FARGATE", ] + revision = (known after apply) + skip_destroy = false + tags_all = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + overwrite = true + tags = { + "name" = "PG_DATABASE_URL" } + tags_all = { + "name" = "PG_DATABASE_URL" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PRISMA_LOCATION"] will be created + resource "aws_ssm_parameter" "parameters" { + arn = (known after apply) + data_type = (known after apply) + id = (known after apply) + insecure_value = (known after apply) + key_id = (known after apply) + name = "/ecs/api-tags-seed/stage/PRISMA_LOCATION" + overwrite = true + tags = { + "name" = "PRISMA_LOCATION" } + tags_all = { + "name" = "PRISMA_LOCATION" } + tier = (known after apply) + type = "SecureString" + value = (sensitive value) + version = (known after apply) } # module.stage.module.stage.module.vpc.aws_db_subnet_group.default will be created + resource "aws_db_subnet_group" "default" { + arn = (known after apply) + description = "Managed by Terraform" + id = (known after apply) + name = "stage" + name_prefix = (known after apply) + subnet_ids = [ + "subnet-01f4e86883462b5ce", + "subnet-062de12e3e3639eff", + "subnet-09cbfc19be5214a8b", ] + supported_network_types = (known after apply) + tags_all = (known after apply) } Plan: 50 to add, 0 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 50 to add, 0 to change, 0 to destroy.


stage-branch-merger[bot] commented 1 year ago

I see you added the "on stage" label, I'll get this merged to the stage branch!

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


stage-branch-merger[bot] commented 1 year ago

I see you added the "on stage" label, I'll get this merged to the stage branch!

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

The default workspace at path infrastructure is currently locked by another command that is running for this pull request.
Wait until the previous command is complete and try again.
jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.prod.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/prod/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } # module.stage.module.api-tags.module.seed.aws_ssm_parameter.parameters["PG_DATABASE_URL"] will be updated in-place ~ resource "aws_ssm_parameter" "parameters" { id = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" + insecure_value = (known after apply) name = "/ecs/api-tags-seed/stage/PG_DATABASE_URL" tags = { "name" = "PG_DATABASE_URL" } ~ value = (sensitive value) ~ version = 1 -> (known after apply) # (7 unchanged attributes hidden) } Plan: 0 to add, 4 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 4 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Show Output ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # module.prod.module.api-tags.module.database.aws_rds_cluster.default will be updated in-place ~ resource "aws_rds_cluster" "default" { id = "api-tags-prod" tags = {} # (36 unchanged attributes hidden) ~ scaling_configuration { ~ min_capacity = 2 -> 1 # (4 unchanged attributes hidden) } } # module.stage.module.api-tags.module.database.aws_rds_cluster.default will be updated in-place ~ resource "aws_rds_cluster" "default" { id = "api-tags-stage" tags = {} # (36 unchanged attributes hidden) ~ scaling_configuration { ~ min_capacity = 2 -> 1 # (4 unchanged attributes hidden) } } Plan: 0 to add, 2 to change, 0 to destroy. ``` * :arrow_forward: To **apply** this plan, comment: * `atlantis apply -d infrastructure` * :put_litter_in_its_place: To **delete** this plan click [here](https://atlantis.central.jesusfilm.org/lock?id=JesusFilm%252Fcore%252Finfrastructure%252Fdefault) * :repeat: To **plan** this project again, comment: * `atlantis plan -d infrastructure`

Plan: 0 to add, 2 to change, 0 to destroy.


jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

Plan Error

running "/home/atlantis/.atlantis/bin/terraform1.4.5 plan -input=false -refresh -out \"/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure/default.tfplan\"" in "/home/atlantis/.atlantis/repos/JesusFilm/core/1432/default/infrastructure": exit status 1
╷
│ Error: failed to read schema for module.prod.module.api-tags.module.database.random_password.password in registry.terraform.io/hashicorp/random: failed to instantiate provider "registry.terraform.io/hashicorp/random" to obtain schema: could not read package directory: open .terraform/providers/registry.terraform.io/hashicorp/random/3.4.3/linux_amd64: no such file or directory
│ 
│ 
╵
stage-branch-merger[bot] commented 1 year ago

Merge conflict attempting to merge this into stage. Please fix manually.

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

jesus-film-bot commented 1 year ago

Ran Plan for dir: infrastructure workspace: default

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

jesus-film-bot commented 1 year ago

Locks and plans deleted for the projects and workspaces modified in this pull request: