Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: GCForms release v3.4.0 #507

Merged
merged 1 commit into from
Oct 25, 2023

Conversation

sre-read-write[bot]
Copy link
Contributor

@sre-read-write sre-read-write bot commented Oct 10, 2023

🤖 I have created a release beep boop

3.4.0 (2023-10-25)

Features

Bug Fixes

  • ACM cert not being recreated on domain name addition (#518) (2ba215d)
  • handle duplicate log events (#511) (e8de8d6)
  • site verification files allowed path were not properly included in regex (#510) (30a9c8b)
  • temporarily remove additional domain names (#519) (5e5a50f)

Miscellaneous Chores

  • allow path to verification files for search engines tool (#509) (2fba19c)
  • deps: update all non-major github action dependencies (#501) (c9c3b84)
  • synced file(s) with cds-snc/site-reliability-engineering (#508) (14f249d)

This PR was generated with Release Please. See documentation.

@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch 3 times, most recently from bc1df52 to d83de38 Compare October 12, 2023 14:40
@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch 2 times, most recently from 99ba942 to 9fd08e0 Compare October 19, 2023 14:27
@sre-read-write sre-read-write bot changed the title chore: GCForms release v3.3.2 chore: GCForms release v3.4.0 Oct 24, 2023
@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch 2 times, most recently from bbd91e7 to f85b976 Compare October 24, 2023 19:01
@sre-read-write sre-read-write bot force-pushed the release-please--branches--develop branch from f85b976 to f846e71 Compare October 25, 2023 12:39
@github-actions
Copy link

Production: hosted_zone

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 1 to add, 0 to change, 0 to destroy
Show summary
CHANGE NAME
add aws_route53_zone.form_viewer[1]
Show plan
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # aws_route53_zone.form_viewer has moved to aws_route53_zone.form_viewer[0]
    resource "aws_route53_zone" "form_viewer" {
        id            = "Z1031499PBK3926Y7HKK"
        name          = "forms-formulaires.alpha.canada.ca"
        tags          = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (6 unchanged attributes hidden)
    }

  # aws_route53_zone.form_viewer[1] will be created
  + resource "aws_route53_zone" "form_viewer" {
      + arn           = (known after apply)
      + comment       = "Managed by Terraform"
      + force_destroy = false
      + id            = (known after apply)
      + name          = "forms-formulaires.canada.ca"
      + name_servers  = (known after apply)
      + tags          = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all      = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + zone_id       = (known after apply)
    }

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

Changes to Outputs:
  - hosted_zone_id    = "Z1031499PBK3926Y7HKK" -> null
  + hosted_zone_ids   = [
      + "Z1031499PBK3926Y7HKK",
      + null,
    ]
  - hosted_zone_name  = "forms-formulaires.alpha.canada.ca" -> null
  + hosted_zone_names = [
      + "forms-formulaires.alpha.canada.ca",
      + "forms-formulaires.canada.ca",
    ]

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Releasing state lock. This may take a few moments...
Show Conftest results
18 tests, 18 passed, 0 warnings, 0 failures, 0 exceptions

@github-actions
Copy link

Production: cognito

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 0 to add, 1 to change, 0 to destroy
Show summary
CHANGE NAME
update aws_cognito_user_pool_client.forms
Show plan
Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # aws_cognito_user_pool_client.forms will be updated in-place
  ~ resource "aws_cognito_user_pool_client" "forms" {
      ~ callback_urls                        = [
          + "https://forms-formulaires.canada.ca/api/auth/callback/cognito",
            # (2 unchanged elements hidden)
        ]
        id                                   = "5rkjd3us3ocssieiitdbtjitiv"
        name                                 = "forms_client"
        # (14 unchanged attributes hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Releasing state lock. This may take a few moments...
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.cognito_email_sender"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.cognito_pre_sign_up"]
WARN - plan.json - main - Missing Common Tags: ["aws_cognito_user_pool.forms"]

20 tests, 17 passed, 3 warnings, 0 failures, 0 exceptions

@github-actions
Copy link

Production: load_balancer

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

⚠️   Warning: resources will be destroyed by this change!

Plan: 5 to add, 2 to change, 3 to destroy
Show summary
CHANGE NAME
update aws_wafv2_regex_pattern_set.forms_base_url
aws_wafv2_regex_pattern_set.valid_app_uri_paths
recreate aws_route53_record.form_viewer[0]
aws_route53_record.form_viewer_certificate_validation["forms-formulaires.alpha.canada.ca"]
aws_shield_protection.route53_hosted_zone[0]
add aws_route53_record.form_viewer[1]
aws_shield_protection.route53_hosted_zone[1]
Show plan
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # aws_route53_record.form_viewer[0] must be replaced
  # (moved from aws_route53_record.form_viewer)
-/+ resource "aws_route53_record" "form_viewer" {
      + allow_overwrite = (known after apply)
      ~ fqdn            = "forms-formulaires.alpha.canada.ca" -> (known after apply)
      ~ id              = "Z1031499PBK3926Y7HKK_forms-formulaires.alpha.canada.ca_A" -> (known after apply)
        name            = "forms-formulaires.alpha.canada.ca"
      - records         = [] -> null
      - ttl             = 0 -> null
      ~ zone_id         = "Z1031499PBK3926Y7HKK" -> "mocked_zone_id_forms-formulaires.alpha.canada.ca" # forces replacement
        # (1 unchanged attribute hidden)

        # (1 unchanged block hidden)
    }

  # aws_route53_record.form_viewer[1] will be created
  + resource "aws_route53_record" "form_viewer" {
      + allow_overwrite = (known after apply)
      + fqdn            = (known after apply)
      + id              = (known after apply)
      + name            = "forms-formulaires.canada.ca"
      + type            = "A"
      + zone_id         = "mocked_zone_id_forms-formulaires.canada.ca"

      + alias {
          + evaluate_target_health = true
          + name                   = "form-viewer-1039776084.ca-central-1.elb.amazonaws.com"
          + zone_id                = "ZQSVJUPU6J1EY"
        }
    }

  # aws_route53_record.form_viewer_certificate_validation["forms-formulaires.alpha.canada.ca"] must be replaced
-/+ resource "aws_route53_record" "form_viewer_certificate_validation" {
      ~ fqdn            = "_d790f6dfd9c2ba0c9fa129347a170b4c.forms-formulaires.alpha.canada.ca" -> (known after apply)
      ~ id              = "Z1031499PBK3926Y7HKK__d790f6dfd9c2ba0c9fa129347a170b4c.forms-formulaires.alpha.canada.ca._CNAME" -> (known after apply)
        name            = "_d790f6dfd9c2ba0c9fa129347a170b4c.forms-formulaires.alpha.canada.ca"
      ~ zone_id         = "Z1031499PBK3926Y7HKK" -> "mocked_zone_id_forms-formulaires.alpha.canada.ca" # forces replacement
        # (4 unchanged attributes hidden)
    }

  # aws_shield_protection.route53_hosted_zone[0] must be replaced
  # (moved from aws_shield_protection.route53_hosted_zone)
-/+ resource "aws_shield_protection" "route53_hosted_zone" {
      ~ arn          = "arn:aws:shield::957818836222:protection/abb8c7ef-5e58-4b87-afe6-2eeb93734f51" -> (known after apply)
      ~ id           = "abb8c7ef-5e58-4b87-afe6-2eeb93734f51" -> (known after apply)
        name         = "Route53HostedZone"
      ~ resource_arn = "arn:aws:route53:::hostedzone/Z1031499PBK3926Y7HKK" -> "arn:aws:route53:::hostedzone/mocked_zone_id_forms-formulaires.alpha.canada.ca" # forces replacement
        tags         = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (1 unchanged attribute hidden)
    }

  # aws_shield_protection.route53_hosted_zone[1] will be created
  + resource "aws_shield_protection" "route53_hosted_zone" {
      + arn          = (known after apply)
      + id           = (known after apply)
      + name         = "Route53HostedZone"
      + resource_arn = "arn:aws:route53:::hostedzone/mocked_zone_id_forms-formulaires.canada.ca"
      + tags         = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all     = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
    }

  # aws_wafv2_regex_pattern_set.forms_base_url will be updated in-place
  ~ resource "aws_wafv2_regex_pattern_set" "forms_base_url" {
        id          = "e1ceb832-c7e4-4b53-a818-44a55e27b3e4"
        name        = "forms_base_url"
        tags        = {}
        # (5 unchanged attributes hidden)

      - regular_expression {
          - regex_string = "forms-formulaires.alpha.canada.ca$" -> null
        }
      + regular_expression {
          + regex_string = "^forms-formulaires.alpha.canada.ca$"
        }
      + regular_expression {
          + regex_string = "^forms-formulaires.canada.ca$"
        }
    }

  # aws_wafv2_regex_pattern_set.valid_app_uri_paths will be updated in-place
  ~ resource "aws_wafv2_regex_pattern_set" "valid_app_uri_paths" {
        id          = "f3927a12-2101-47c6-9a47-7353ac95ba92"
        name        = "valid_app_uri_paths"
        tags        = {}
        # (5 unchanged attributes hidden)

      + regular_expression {
          + regex_string = "^\\/?(BingSiteAuth\\.xml|googlef34bd8c094c26cb0\\.html)$"
        }

        # (4 unchanged blocks hidden)
    }

Plan: 5 to add, 2 to change, 3 to destroy.

Warning: Argument is deprecated

  with aws_s3_bucket.firehose_waf_logs,
  on kinesis.tf line 30, in resource "aws_s3_bucket" "firehose_waf_logs":
  30: resource "aws_s3_bucket" "firehose_waf_logs" {

Use the aws_s3_bucket_server_side_encryption_configuration resource instead

(and 5 more similar warnings elsewhere)

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Releasing state lock. This may take a few moments...
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_regex_pattern_set.forms_base_url"]
WARN - plan.json - main - Missing Common Tags: ["aws_wafv2_regex_pattern_set.valid_app_uri_paths"]

19 tests, 17 passed, 2 warnings, 0 failures, 0 exceptions

@github-actions
Copy link

Production: app

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

⚠️   Warning: resources will be destroyed by this change!

Plan: 12 to add, 8 to change, 12 to destroy
Show summary
CHANGE NAME
update aws_iam_policy.lambda_app_invoke
aws_lambda_function.archive_form_templates
aws_lambda_function.archiver
aws_lambda_function.audit_logs
aws_lambda_function.dead_letter_queue_consumer
aws_lambda_function.nagware
aws_lambda_function.reliability
aws_lambda_function.submission
recreate aws_ecs_task_definition.form_viewer
aws_lambda_layer_version.archive_form_templates_lib
aws_lambda_layer_version.archive_form_templates_nodejs
aws_lambda_layer_version.archiver_lib
aws_lambda_layer_version.archiver_nodejs
aws_lambda_layer_version.audit_logs_lib
aws_lambda_layer_version.dead_letter_queue_consumer_lib
aws_lambda_layer_version.nagware_lib
aws_lambda_layer_version.nagware_nodejs
aws_lambda_layer_version.reliability_lib
aws_lambda_layer_version.reliability_nodejs
aws_lambda_layer_version.submission_lib

✂   Warning: plan has been truncated! See the full plan in the logs.

Show plan
Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement
 <= read (data resources)

Terraform will perform the following actions:

  # data.aws_iam_policy_document.lambda_app_invoke will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "aws_iam_policy_document" "lambda_app_invoke" {
      + id   = (known after apply)
      + json = (known after apply)

      + statement {
          + actions   = [
              + "lambda:InvokeFunction",
            ]
          + effect    = "Allow"
          + resources = [
              + "arn:aws:lambda:ca-central-1:957818836222:function:Submission",
            ]
        }
    }

  # data.template_file.form_viewer_task will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "template_file" "form_viewer_task" {
      + id       = (known after apply)
      + rendered = (known after apply)
      + template = jsonencode(
            [
              + {
                  + environment      = [
                      + {
                          + name  = "METRIC_PROVIDER"
                          + value = "${metric_provider}"
                        },
                      + {
                          + name  = "TRACER_PROVIDER"
                          + value = "${tracer_provider}"
                        },
                      + {
                          + name  = "SUBMISSION_API"
                          + value = "${submission_api}"
                        },
                      + {
                          + name  = "NEXTAUTH_URL"
                          + value = "${nextauth_url}"
                        },
                      + {
                          + name  = "REDIS_URL"
                          + value = "${redis_url}"
                        },
                      + {
                          + name  = "RELIABILITY_FILE_STORAGE"
                          + value = "${reliability_file_storage}"
                        },
                      + {
                          + name  = "RECAPTCHA_V3_SITE_KEY"
                          + value = "${recaptcha_public}"
                        },
                      + {
                          + name  = "TEMPORARY_TOKEN_TEMPLATE_ID"
                          + value = "${gc_temp_token_template_id}"
                        },
                      + {
                          + name  = "TEMPLATE_ID"
                          + value = "${gc_template_id}"
                        },
                      + {
                          + name  = "VAULT_FILE_STORAGE"
                          + value = "${vault_file_storage}"
                        },
                      + {
                          + name  = "COGNITO_ENDPOINT_URL"
                          + value = "${cognito_endpoint_url}"
                        },
                      + {
                          + name  = "COGNITO_CLIENT_ID"
                          + value = "${cognito_client_id}"
                        },
                      + {
                          + name  = "EMAIL_ADDRESS_CONTACT_US"
                          + value = "${email_address_contact_us}"
                        },
                      + {
                          + name  = "EMAIL_ADDRESS_SUPPORT"
                          + value = "${email_address_support}"
                        },
                      + {
                          + name  = "REPROCESS_SUBMISSION_QUEUE_URL"
                          + value = "${reprocess_submission_queue}"
                        },
                      + {
                          + name  = "AUDIT_LOG_QUEUE_URL"
                          + value = "${audit_log_queue_url}"
                        },
                    ]
                  + image            = "${image}"
                  + linuxParameters  = {
                      + capabilities = {
                          + drop = [
                              + "ALL",
                            ]
                        }
                    }
                  + logConfiguration = {
                      + logDriver = "awslogs"
                      + options   = {
                          + awslogs-group         = "${awslogs-group}"
                          + awslogs-region        = "${awslogs-region}"
                          + awslogs-stream-prefix = "${awslogs-stream-prefix}"
                        }
                    }
                  + name             = "form_viewer"
                  + portMappings     = [
                      + {
                          + containerPort = 3000
                        },
                    ]
                  + secrets          = [
                      + {
                          + name      = "NOTIFY_API_KEY"
                          + valueFrom = "${notify_api_key}"
                        },
                      + {
                          + name      = "RECAPTCHA_V3_SECRET_KEY"
                          + valueFrom = "${recaptcha_secret}"
                        },
                      + {
                          + name      = "DATABASE_URL"
                          + valueFrom = "${database_url}"
                        },
                      + {
                          + name      = "TOKEN_SECRET"
                          + valueFrom = "${token_secret}"
                        },
                      + {
                          + name      = "GC_NOTIFY_CALLBACK_BEARER_TOKEN"
                          + valueFrom = "${gc_notify_callback_bearer_token}"
                        },
                      + {
                          + name      = "FRESHDESK_API_KEY"
                          + valueFrom = "${freshdesk_api_key}"
                        },
                    ]
                },
            ]
        )
      + vars     = {
          + "audit_log_queue_url"             = "https://sqs.ca-central-1.amazonaws.com/957818836222/audit_log_queue"
          + "awslogs-group"                   = "Forms"
          + "awslogs-region"                  = "ca-central-1"
          + "awslogs-stream-prefix"           = "ecs-form-viewer"
          + "cognito_client_id"               = "5rkjd3us3ocssieiitdbtjitiv"
          + "cognito_endpoint_url"            = "cognito-idp.ca-central-1.amazonaws.com/ca-central-1_eSTGTCw33"
          + "database_url"                    = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:server-database-url-jVtWGE"
          + "email_address_contact_us"        = "[email protected]"
          + "email_address_support"           = "[email protected]"
          + "freshdesk_api_key"               = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:freshdesk_api_key-2Q118n"
          + "gc_notify_callback_bearer_token" = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:gc_notify_callback_bearer_token-0zuI6O"
          + "gc_temp_token_template_id"       = "61cec9c4-64ca-4e4d-b4d2-a0e931c44422"
          + "gc_template_id"                  = "92096ac6-1cc5-40ae-9052-fffdb8439a90"
          + "image"                           = "957818836222.dkr.ecr.ca-central-1.amazonaws.com/form_viewer_production"
          + "metric_provider"                 = "stdout"
          + "nextauth_url"                    = "https://forms-formulaires.alpha.canada.ca"
          + "notify_api_key"                  = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:notify_api_key-sLtddr"
          + "recaptcha_public"                = "6LfuLrQnAAAAAK9Df3gem4XLMRVY2Laq6t2fhZhZ"
          + "recaptcha_secret"                = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:recaptcha_secret-LxfCjN"
          + "redis_url"                       = "gcforms-redis-rep-group.iyrckm.ng.0001.cac1.cache.amazonaws.com"
          + "reliability_file_storage"        = "forms-production-reliability-file-storage"
          + "reprocess_submission_queue"      = "https://sqs.ca-central-1.amazonaws.com/957818836222/reprocess_submission_queue.fifo"
          + "submission_api"                  = "arn:aws:lambda:ca-central-1:957818836222:function:Submission"
          + "token_secret"                    = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:token_secret-jw4Dou"
          + "tracer_provider"                 = "stdout"
          + "vault_file_storage"              = "forms-production-vault-file-storage"
        }
    }

  # aws_ecs_task_definition.form_viewer must be replaced
-/+ resource "aws_ecs_task_definition" "form_viewer" {
      ~ arn                      = "arn:aws:ecs:ca-central-1:957818836222:task-definition/form-viewer:30" -> (known after apply)
      ~ container_definitions    = jsonencode(
            [
              - {
                  - cpu              = 0
                  - environment      = [
                      - {
                          - name  = "AUDIT_LOG_QUEUE_URL"
                          - value = "https://sqs.ca-central-1.amazonaws.com/957818836222/audit_log_queue"
                        },
                      - {
                          - name  = "COGNITO_CLIENT_ID"
                          - value = "5rkjd3us3ocssieiitdbtjitiv"
                        },
                      - {
                          - name  = "COGNITO_ENDPOINT_URL"
                          - value = "cognito-idp.ca-central-1.amazonaws.com/ca-central-1_eSTGTCw33"
                        },
                      - {
                          - name  = "EMAIL_ADDRESS_CONTACT_US"
                          - value = "[email protected]"
                        },
                      - {
                          - name  = "EMAIL_ADDRESS_SUPPORT"
                          - value = "[email protected]"
                        },
                      - {
                          - name  = "METRIC_PROVIDER"
                          - value = "stdout"
                        },
                      - {
                          - name  = "NEXTAUTH_URL"
                          - value = "https://forms-formulaires.alpha.canada.ca"
                        },
                      - {
                          - name  = "RECAPTCHA_V3_SITE_KEY"
                          - value = "6LfuLrQnAAAAAK9Df3gem4XLMRVY2Laq6t2fhZhZ"
                        },
                      - {
                          - name  = "REDIS_URL"
                          - value = "gcforms-redis-rep-group.iyrckm.ng.0001.cac1.cache.amazonaws.com"
                        },
                      - {
                          - name  = "RELIABILITY_FILE_STORAGE"
                          - value = "forms-production-reliability-file-storage"
                        },
                      - {
                          - name  = "REPROCESS_SUBMISSION_QUEUE_URL"
                          - value = "https://sqs.ca-central-1.amazonaws.com/957818836222/reprocess_submission_queue.fifo"
                        },
                      - {
                          - name  = "SUBMISSION_API"
                          - value = "arn:aws:lambda:ca-central-1:957818836222:function:Submission"
                        },
                      - {
                          - name  = "TEMPLATE_ID"
                          - value = "92096ac6-1cc5-40ae-9052-fffdb8439a90"
                        },
                      - {
                          - name  = "TEMPORARY_TOKEN_TEMPLATE_ID"
                          - value = "61cec9c4-64ca-4e4d-b4d2-a0e931c44422"
                        },
                      - {
                          - name  = "TRACER_PROVIDER"
                          - value = "stdout"
                        },
                      - {
                          - name  = "VAULT_FILE_STORAGE"
                          - value = "forms-production-vault-file-storage"
                        },
                    ]
                  - essential        = true
                  - image            = "957818836222.dkr.ecr.ca-central-1.amazonaws.com/form_viewer_production"
                  - linuxParameters  = {
                      - capabilities = {
                          - drop = [
                              - "ALL",
                            ]
                        }
                    }
                  - logConfiguration = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "Forms"
                          - awslogs-region        = "ca-central-1"
                          - awslogs-stream-prefix = "ecs-form-viewer"
                        }
                    }
                  - mountPoints      = []
                  - name             = "form_viewer"
                  - portMappings     = [
                      - {
                          - containerPort = 3000
                          - hostPort      = 3000
                          - protocol      = "tcp"
                        },
                    ]
                  - secrets          = [
                      - {
                          - name      = "NOTIFY_API_KEY"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:notify_api_key-sLtddr"
                        },
                      - {
                          - name      = "RECAPTCHA_V3_SECRET_KEY"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:recaptcha_secret-LxfCjN"
                        },
                      - {
                          - name      = "DATABASE_URL"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:server-database-url-jVtWGE"
                        },
                      - {
                          - name      = "TOKEN_SECRET"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:token_secret-jw4Dou"
                        },
                      - {
                          - name      = "GC_NOTIFY_CALLBACK_BEARER_TOKEN"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:gc_notify_callback_bearer_token-0zuI6O"
                        },
                      - {
                          - name      = "FRESHDESK_API_KEY"
                          - valueFrom = "arn:aws:secretsmanager:ca-central-1:957818836222:secret:freshdesk_api_key-2Q118n"
                        },
                    ]
                  - volumesFrom      = []
                },
            ] # forces replacement
        ) -> (known after apply)
      ~ id                       = "form-viewer" -> (known after apply)
      ~ revision                 = 30 -> (known after apply)
        tags                     = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (9 unchanged attributes hidden)
    }

  # aws_iam_policy.lambda_app_invoke will be updated in-place
  ~ resource "aws_iam_policy" "lambda_app_invoke" {
        id          = "arn:aws:iam::957818836222:policy/lambda_app_invoke"
        name        = "lambda_app_invoke"
      ~ policy      = jsonencode(
            {
              - Statement = [
                  - {
                      - Action   = "lambda:InvokeFunction"
                      - Effect   = "Allow"
                      - Resource = "arn:aws:lambda:ca-central-1:957818836222:function:Submission"
                      - Sid      = ""
                    },
                ]
              - Version   = "2012-10-17"
            }
        ) -> (known after apply)
        tags        = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (5 unchanged attributes hidden)
    }

  # aws_lambda_function.archive_form_templates will be updated in-place
  ~ resource "aws_lambda_function" "archive_form_templates" {
        id                             = "ArchiveFormTemplates"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_lib_packages:2",
          - "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_node_packages:5",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.archiver will be updated in-place
  ~ resource "aws_lambda_function" "archiver" {
        id                             = "Archiver"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_lib_packages:1",
          - "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_node_packages:8",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.audit_logs will be updated in-place
  ~ resource "aws_lambda_function" "audit_logs" {
        id                             = "AuditLogs"
      ~ last_modified                  = "2023-09-19T18:58:02.000+0000" -> (known after apply)
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:audit_logs_node_packages:5",
        ] -> (known after apply)
      ~ runtime                        = "nodejs16.x" -> "nodejs18.x"
      ~ source_code_hash               = "L0huilf9W9wqyXvWG8qNvrLEBYUOyWugGVxyaDbnrvE=" -> "D+znb19Vjp8Q9nqFkVJze635ACkzsT7CtKnPs4GHyS4="
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (16 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.dead_letter_queue_consumer will be updated in-place
  ~ resource "aws_lambda_function" "dead_letter_queue_consumer" {
        id                             = "DeadLetterQueueConsumer"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:dead_letter_queue_consumer_node_packages:6",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.nagware will be updated in-place
  ~ resource "aws_lambda_function" "nagware" {
        id                             = "Nagware"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_lib_packages:4",
          - "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_node_packages:5",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.reliability will be updated in-place
  ~ resource "aws_lambda_function" "reliability" {
        id                             = "Reliability"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:reliability_lib_packages:17",
          - "arn:aws:lambda:ca-central-1:957818836222:layer:reliability_node_packages:35",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_function.submission will be updated in-place
  ~ resource "aws_lambda_function" "submission" {
        id                             = "Submission"
      ~ layers                         = [
          - "arn:aws:lambda:ca-central-1:957818836222:layer:submission_node_packages:23",
        ] -> (known after apply)
      ~ runtime                        = "nodejs14.x" -> "nodejs18.x"
        tags                           = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (18 unchanged attributes hidden)

        # (2 unchanged blocks hidden)
    }

  # aws_lambda_layer_version.archive_form_templates_lib must be replaced
-/+ resource "aws_lambda_layer_version" "archive_form_templates_lib" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_lib_packages:2" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-08-16T18:15:28.727+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_lib_packages:2" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_lib_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_size            = 1306 -> (known after apply)
      ~ version                     = "2" -> (known after apply)
        # (4 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.archive_form_templates_nodejs must be replaced
-/+ resource "aws_lambda_layer_version" "archive_form_templates_nodejs" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_node_packages:5" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-09-19T18:57:41.037+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_node_packages:5" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:archive_form_templates_node_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_hash            = "U7YTzsbYATYmRnzFQ2nphx91ATD+XeGW0/0eq7JO374=" -> "1s0LHTtXUYI1Z/t9D3Ub7cle8Ovvor2y0hKAPUnUmFs=" # forces replacement
      ~ source_code_size            = 2444541 -> (known after apply)
      ~ version                     = "5" -> (known after apply)
        # (3 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.archiver_lib must be replaced
-/+ resource "aws_lambda_layer_version" "archiver_lib" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_lib_packages:1" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs12.x",
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-04-17T14:28:01.282+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_lib_packages:1" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_lib_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_size            = 830 -> (known after apply)
      ~ version                     = "1" -> (known after apply)
        # (4 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.archiver_nodejs must be replaced
-/+ resource "aws_lambda_layer_version" "archiver_nodejs" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_node_packages:8" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs12.x",
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-09-19T18:57:54.745+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_node_packages:8" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:archiver_node_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_hash            = "5U9x5dCmwJ6xIpguaeoTzEw2t6BZiEhws8ZozxMZ5Hw=" -> "6QJJlOaMJJPU7yEW6Q7ZGpqZ6Nwz35wFOl0+wpg0Uis=" # forces replacement
      ~ source_code_size            = 4619618 -> (known after apply)
      ~ version                     = "8" -> (known after apply)
        # (3 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.audit_logs_lib must be replaced
-/+ resource "aws_lambda_layer_version" "audit_logs_lib" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:audit_logs_node_packages:5" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs16.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-09-19T18:58:01.277+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:audit_logs_node_packages:5" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:audit_logs_node_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_hash            = "vduYlNH7TwZ3UIpgcQk3oMNmQh6TNJCXN7J0rLAnrdg=" -> "eKVFhdUWemRZ7m6bU4ZKUGrJ2+Yxad3g5qvEpsVbWu8=" # forces replacement
      ~ source_code_size            = 3180135 -> (known after apply)
      ~ version                     = "5" -> (known after apply)
        # (3 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.dead_letter_queue_consumer_lib must be replaced
-/+ resource "aws_lambda_layer_version" "dead_letter_queue_consumer_lib" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:dead_letter_queue_consumer_node_packages:6" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-09-19T18:57:34.878+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:dead_letter_queue_consumer_node_packages:6" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:dead_letter_queue_consumer_node_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_hash            = "MHuTntHaUrwEUfSxCwtR0AxiqeGbHXWEwDZ8VsIle7Q=" -> "tuF2XONzbyECqK4CYu45UWE8yS8SonpGQkXtfJjJ+U8=" # forces replacement
      ~ source_code_size            = 2400073 -> (known after apply)
      ~ version                     = "6" -> (known after apply)
        # (3 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.nagware_lib must be replaced
-/+ resource "aws_lambda_layer_version" "nagware_lib" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_lib_packages:4" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs12.x",
          - "nodejs14.x",
          + "nodejs18.x",
        ]
      ~ created_date                = "2023-08-16T18:15:44.081+0000" -> (known after apply)
      ~ id                          = "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_lib_packages:4" -> (known after apply)
      ~ layer_arn                   = "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_lib_packages" -> (known after apply)
      + signing_job_arn             = (known after apply)
      + signing_profile_version_arn = (known after apply)
      ~ source_code_size            = 4427 -> (known after apply)
      ~ version                     = "4" -> (known after apply)
        # (4 unchanged attributes hidden)
    }

  # aws_lambda_layer_version.nagware_nodejs must be replaced
-/+ resource "aws_lambda_layer_version" "nagware_nodejs" {
      ~ arn                         = "arn:aws:lambda:ca-central-1:957818836222:layer:nagware_node_packages:5" -> (known after apply)
      - compatible_architectures    = [] -> null
      ~ compatible_runtimes         = [ # forces replacement
          - "nodejs12.x",
          - "nodejs14.x",
          +...
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.cron_2am_every_day"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.cron_3am_every_day"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.cron_4am_every_day"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_event_rule.cron_5am_every_business_day"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.archive_form_templates"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.archiver"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.audit_logs"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.dead_letter_queue_consumer"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.nagware"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.reliability"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.submission"]

28 tests, 17 passed, 11 warnings, 0 failures, 0 exceptions

@github-actions
Copy link

Production: alarms

✅   Terraform Init: success
✅   Terraform Validate: success
✅   Terraform Format: success
✅   Terraform Plan: success
✅   Conftest: success

Plan: 2 to add, 2 to change, 0 to destroy
Show summary
CHANGE NAME
update aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[0]
aws_cloudwatch_metric_alarm.route53_ddos[0]
add aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[1]
aws_cloudwatch_metric_alarm.route53_ddos[1]
Show plan
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[0] will be updated in-place
  # (moved from aws_cloudwatch_metric_alarm.ddos_detected_route53_warn)
  ~ resource "aws_cloudwatch_metric_alarm" "ddos_detected_route53_warn" {
      ~ dimensions                = {
          ~ "ResourceArn" = "arn:aws:route53:::hostedzone/Z1031499PBK3926Y7HKK" -> "mocked_zone_id_forms-formulaires.alpha.canada.ca"
        }
        id                        = "DDoSDetectedRoute53Warn"
        tags                      = {
            "CostCentre" = "forms-platform-production"
            "Terraform"  = "true"
        }
        # (17 unchanged attributes hidden)
    }

  # aws_cloudwatch_metric_alarm.ddos_detected_route53_warn[1] will be created
  + resource "aws_cloudwatch_metric_alarm" "ddos_detected_route53_warn" {
      + actions_enabled                       = true
      + alarm_actions                         = [
          + "arn:aws:sns:ca-central-1:957818836222:alert-warning",
        ]
      + alarm_description                     = "End User Forms Warning - AWS has detected a DDOS attack on the End User Forms's DNS Server"
      + alarm_name                            = "DDoSDetectedRoute53Warn"
      + arn                                   = (known after apply)
      + comparison_operator                   = "GreaterThanThreshold"
      + dimensions                            = {
          + "ResourceArn" = "mocked_zone_id_forms-formulaires.canada.ca"
        }
      + evaluate_low_sample_count_percentiles = (known after apply)
      + evaluation_periods                    = 1
      + id                                    = (known after apply)
      + metric_name                           = "DDoSDetected"
      + namespace                             = "AWS/DDoSProtection"
      + period                                = 60
      + statistic                             = "Sum"
      + tags                                  = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + tags_all                              = {
          + "CostCentre" = "forms-platform-production"
          + "Terraform"  = "true"
        }
      + threshold                             = 0
      + treat_missing_data                    = "missing"
    }

  # aws_cloudwatch_metric_alarm.route53_ddos[0] will be updated in-place
  # (moved from aws_cloudwatch_metric_alarm.route53_ddos)
  ~ resource "aws_cloudwatch_metric_alarm" "route53_ddos" {
      ~ dimensions                = {
          ~ "ResourceArn" = "arn:aws:route53:::hostedzone/Z1031499PBK3926Y7HKK" -> "mocked_zone_id_forms-formulaires.alpha.canada.ca"
        }
        id                        = "Route53DDoS"
        tags                      = {}
        # (17 unchanged attributes hidden)
    }

  # aws_cloudwatch_metric_alarm.route53_ddos[1] will be created
  + resource "aws_cloudwatch_metric_alarm" "route53_ddos" {
      + actions_enabled                       = true
      + alarm_actions                         = [
          + "arn:aws:sns:us-east-1:957818836222:alert-warning",
        ]
      + alarm_description                     = "DDoS detection for Route53"
      + alarm_name                            = "Route53DDoS"
      + arn                                   = (known after apply)
      + comparison_operator                   = "GreaterThanThreshold"
      + dimensions                            = {
          + "ResourceArn" = "mocked_zone_id_forms-formulaires.canada.ca"
        }
      + evaluate_low_sample_count_percentiles = (known after apply)
      + evaluation_periods                    = 1
      + id                                    = (known after apply)
      + metric_name                           = "DDoSDetected"
      + namespace                             = "AWS/DDoSProtection"
      + ok_actions                            = [
          + "arn:aws:sns:us-east-1:957818836222:alert-ok",
        ]
      + period                                = 60
      + statistic                             = "Sum"
      + tags_all                              = (known after apply)
      + threshold                             = 0
      + treat_missing_data                    = "notBreaching"
    }

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

Warning: Argument is deprecated

  with module.athena_bucket.aws_s3_bucket.this,
  on .terraform/modules/athena_bucket/S3/main.tf line 8, in resource "aws_s3_bucket" "this":
   8: resource "aws_s3_bucket" "this" {

Use the aws_s3_bucket_logging resource instead

(and 8 more similar warnings elsewhere)

─────────────────────────────────────────────────────────────────────────────

Saved the plan to: plan.tfplan

To perform exactly these actions, run the following command to apply:
    terraform apply "plan.tfplan"
Releasing state lock. This may take a few moments...
Show Conftest results
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_log_group.notify_slack"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.alb_ddos"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.route53_ddos[0]"]
WARN - plan.json - main - Missing Common Tags: ["aws_cloudwatch_metric_alarm.route53_ddos[1]"]

21 tests, 17 passed, 4 warnings, 0 failures, 0 exceptions

Copy link
Contributor

@thiessenp-cds thiessenp-cds left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :)

@bryan-robitaille bryan-robitaille merged commit ce0b86f into develop Oct 25, 2023
1 check passed
@bryan-robitaille bryan-robitaille deleted the release-please--branches--develop branch October 25, 2023 18:06
@sre-read-write
Copy link
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants