Skip to content

[PRM-717] Disable report generation in dev, and enable the email trigger (for manual report generation testing)#118

Merged
chrisbloe merged 2 commits intomainfrom
PRM-717
Feb 25, 2026
Merged

[PRM-717] Disable report generation in dev, and enable the email trigger (for manual report generation testing)#118
chrisbloe merged 2 commits intomainfrom
PRM-717

Conversation

@chrisbloe
Copy link
Contributor

No description provided.

@github-actions
Copy link

Report for step_function on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (0 to add, 0 to change, 8 to destroy)


Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # aws_cloudwatch_event_target.daily_transfer_details_by_hour_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.daily_transfer_details_by_hour_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "daily_transfer_details_by_hour_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-daily-7am-dev-daily-reports-details-by-hour-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "0"
              - NUMBER_OF_DAYS           = "1"
              - REPORT_NAME              = "TRANSFER_DETAILS_BY_HOUR"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-daily-7am" -> null
      - target_id      = "dev-daily-reports-details-by-hour-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.daily_transfer_level_technical_failures_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.daily_transfer_level_technical_failures_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "daily_transfer_level_technical_failures_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-daily-7am-dev-daily-reports-transfer-level-technical-failures-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "0"
              - NUMBER_OF_DAYS           = "1"
              - REPORT_NAME              = "TRANSFER_LEVEL_TECHNICAL_FAILURES"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-daily-7am" -> null
      - target_id      = "dev-daily-reports-transfer-level-technical-failures-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.daily_transfer_outcomes_per_supplier_pathway_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.daily_transfer_outcomes_per_supplier_pathway_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "daily_transfer_outcomes_per_supplier_pathway_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-daily-7am-dev-daily-reports-generator-transfer-outcomes-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "true"
              - CONVERSATION_CUTOFF_DAYS = "0"
              - NUMBER_OF_DAYS           = "1"
              - REPORT_NAME              = "TRANSFER_OUTCOMES_PER_SUPPLIER_PATHWAY"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-daily-7am" -> null
      - target_id      = "dev-daily-reports-generator-transfer-outcomes-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.monthly_sicbl_level_integration_times_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.monthly_sicbl_level_integration_times_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "monthly_sicbl_level_integration_times_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-every-month-15th-7am-dev-monthly-reports-generator-sicbl-level-integr-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "14"
              - NUMBER_OF_MONTHS         = "1"
              - REPORT_NAME              = "SUB_ICB_LOCATION_LEVEL_INTEGRATION_TIMES"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-every-month-15th-7am" -> null
      - target_id      = "dev-monthly-reports-generator-sicbl-level-integr-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.monthly_transfer_outcomes_per_supplier_pathway_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.monthly_transfer_outcomes_per_supplier_pathway_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "monthly_transfer_outcomes_per_supplier_pathway_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-every-month-15th-7am-dev-monthly-reports-generator-transfer-outcomes-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "14"
              - NUMBER_OF_MONTHS         = "1"
              - REPORT_NAME              = "TRANSFER_OUTCOMES_PER_SUPPLIER_PATHWAY"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-every-month-15th-7am" -> null
      - target_id      = "dev-monthly-reports-generator-transfer-outcomes-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.weekly_transfer_details_by_hour_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.weekly_transfer_details_by_hour_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "weekly_transfer_details_by_hour_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-every-week-month-7am-dev-weekly-reports-generator-transfer-hourly-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "2"
              - NUMBER_OF_DAYS           = "7"
              - REPORT_NAME              = "TRANSFER_DETAILS_BY_HOUR"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-every-week-month-7am" -> null
      - target_id      = "dev-weekly-reports-generator-transfer-hourly-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.weekly_transfer_level_technical_failures_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.weekly_transfer_level_technical_failures_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "weekly_transfer_level_technical_failures_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-every-week-month-7am-dev-weekly-reports-generator-transfer-level-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "2"
              - NUMBER_OF_DAYS           = "7"
              - REPORT_NAME              = "TRANSFER_LEVEL_TECHNICAL_FAILURES"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-every-week-month-7am" -> null
      - target_id      = "dev-weekly-reports-generator-transfer-level-trigger" -> null
        # (1 unchanged attribute hidden)
    }

  # aws_cloudwatch_event_target.weekly_transfer_outcomes_per_supplier_pathway_report_event_trigger[0] will be destroyed
  # (because index [0] is out of range for count)
  # (moved from aws_cloudwatch_event_target.weekly_transfer_outcomes_per_supplier_pathway_report_event_trigger)
  - resource "aws_cloudwatch_event_target" "weekly_transfer_outcomes_per_supplier_pathway_report_event_trigger" {
      - arn            = "arn:aws:states:eu-west-2:343515223843:stateMachine:reports-generator" -> null
      - event_bus_name = "default" -> null
      - force_destroy  = false -> null
      - id             = "dev-run-data-pipeline-step-functions-every-week-month-7am-dev-weekly-reports-generator-transfer-outcomes-trigger" -> null
      - input          = jsonencode(
            {
              - ALERT_ENABLED            = "false"
              - CONVERSATION_CUTOFF_DAYS = "2"
              - NUMBER_OF_DAYS           = "7"
              - REPORT_NAME              = "TRANSFER_OUTCOMES_PER_SUPPLIER_PATHWAY"
              - SEND_EMAIL_NOTIFICATION  = "true"
            }
        ) -> null
      - region         = "eu-west-2" -> null
      - role_arn       = "arn:aws:iam::343515223843:role/dev-reports-generator-trigger" -> null
      - rule           = "dev-run-data-pipeline-step-functions-every-week-month-7am" -> null
      - target_id      = "dev-weekly-reports-generator-transfer-outcomes-trigger" -> null
        # (1 unchanged attribute hidden)
    }

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

@github-actions
Copy link

Report for email_and_alerting on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (1 to add, 5 to change, 0 to destroy)


Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
  ~ update in-place

Terraform will perform the following actions:

  # aws_lambda_function.email_report_lambda will be updated in-place
  ~ resource "aws_lambda_function" "email_report_lambda" {
        id                             = "dev-email-report-lambda"
      ~ last_modified                  = "2026-02-13T17:03:50.000+0000" -> (known after apply)
      ~ source_code_hash               = "9T1Bx+9g8GNZ++u1/erkBisInHkVzIBOKZyklnWy/Lo=" -> "goTiqKZIQZZ41tgVbXNLWiI5bev+pybWRWRxL5/Xj/U="
        tags                           = {
            "ApplicationRole"     = "AwsLambdaFunction"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-email-report-lambda"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "N"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # aws_lambda_function.gp2gp_dashboard_alert_lambda will be updated in-place
  ~ resource "aws_lambda_function" "gp2gp_dashboard_alert_lambda" {
        id                             = "dev-gp2gp-dashboard-alert-lambda"
      ~ last_modified                  = "2026-02-13T17:04:00.000+0000" -> (known after apply)
      ~ source_code_hash               = "iLDbDanxpMB2Rm1FpGZt6ZcynQDHnsVRq3Lbz7DR0Pk=" -> "2U7I9D0t7pL1sHwRxAAVTpaCJHPV5+bhbBB1ewB/Qf0="
        tags                           = {
            "ApplicationRole"     = "AwsLambdaFunction"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-gp2gp-dashboard-alert-lambda"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "N"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # aws_lambda_function.log_alerts_pipeline_error_lambda will be updated in-place
  ~ resource "aws_lambda_function" "log_alerts_pipeline_error_lambda" {
        id                             = "dev-log-alerts-pipeline-error-lambda"
      ~ last_modified                  = "2026-02-13T17:03:41.000+0000" -> (known after apply)
      ~ source_code_hash               = "b0NUb/nfzfQOTfAcaPbVE075ULvkO5CxFbzkMYMhH30=" -> "of+slL/MOHTyubLZVQzQ3tlZWGmUIxuIRXAaVVvVxLA="
        tags                           = {
            "ApplicationRole"     = "AwsLambdaFunction"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-log-alerts-pipeline-error-lambda"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "N"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # aws_lambda_function.log_alerts_technical_failures_above_threshold_lambda will be updated in-place
  ~ resource "aws_lambda_function" "log_alerts_technical_failures_above_threshold_lambda" {
        id                             = "dev-log-alerts-technical-failures-above-threshold-lambda"
      ~ last_modified                  = "2026-02-13T17:03:21.000+0000" -> (known after apply)
      ~ source_code_hash               = "DCX1iGzTPM83jstZuZnwk3/ClJjTmHNvq0SQLPILsPQ=" -> "ckURMQ9R0kO9tt+NiiXMMlobw0dAibiLofAsrbok3NM="
        tags                           = {
            "ApplicationRole"     = "AwsLambdaFunction"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-log-alerts-technical-failures-above-threshold-lambda"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "N"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # aws_lambda_function.store_asid_lookup will be updated in-place
  ~ resource "aws_lambda_function" "store_asid_lookup" {
        id                             = "dev_store_asid_lookup_lambda"
      ~ last_modified                  = "2026-02-13T17:03:31.000+0000" -> (known after apply)
      ~ source_code_hash               = "16BX0CNUdz1RjTgXR3dnYsRlvvzsLI4yRlXsm2lby5E=" -> "qSo7H64oGo2BZmDPmtKb/ipLC0cqPR6AsbVbK0mSZmM="
        tags                           = {}
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # aws_s3_bucket_notification.reports_generator_s3_object_created will be created
  + resource "aws_s3_bucket_notification" "reports_generator_s3_object_created" {
      + bucket      = (sensitive value)
      + eventbridge = false
      + id          = (known after apply)
      + region      = "eu-west-2"

      + lambda_function {
          + events              = [
              + "s3:ObjectCreated:*",
            ]
          + id                  = (known after apply)
          + lambda_function_arn = "arn:aws:lambda:eu-west-2:343515223843:function:dev-email-report-lambda"
        }
    }

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

@github-actions
Copy link

Report for transfer_classifier on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (no changes)


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.

@sonarqubecloud
Copy link

@github-actions
Copy link

Report for gp2gp_dashboard on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (0 to add, 2 to change, 0 to destroy)


Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
 <= read (data resources)

Terraform will perform the following actions:

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

      + statement {
          + actions   = [
              + "s3:GetObject",
            ]
          + effect    = "Allow"
          + resources = [
              + "arn:aws:s3:::prm-service-dashboard-dev/*",
            ]
          + sid       = "AllowCloudFrontRead"

          + condition {
              + test     = "StringEquals"
              + values   = [
                  + "arn:aws:cloudfront::343515223843:distribution/ES60SAUQ8ZFXZ",
                ]
              + variable = "AWS:SourceArn"
            }

          + principals {
              + identifiers = [
                  + "cloudfront.amazonaws.com",
                ]
              + type        = "Service"
            }
        }
    }

  # aws_cloudfront_distribution.dashboard_s3_distribution will be updated in-place
  ~ resource "aws_cloudfront_distribution" "dashboard_s3_distribution" {
        id                              = "ES60SAUQ8ZFXZ"
        tags                            = {
            "ApplicationRole"     = "AwsCloudfrontDistribution"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-GP2GP-service-dashboard"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "Y"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (24 unchanged attributes hidden)

      - origin {
          - connection_attempts         = 3 -> null
          - connection_timeout          = 10 -> null
          - domain_name                 = "prm-service-dashboard-dev.s3.eu-west-2.amazonaws.com" -> null
          - origin_access_control_id    = "E2OQ2VSHLUFC7V" -> null
          - origin_id                   = "prm-service-dashboard-dev" -> null
          - response_completion_timeout = 0 -> null
            # (1 unchanged attribute hidden)
        }
      + origin {
          + connection_attempts         = 3
          + connection_timeout          = 10
          + domain_name                 = "prm-service-dashboard-dev.s3.eu-west-2.amazonaws.com"
          + origin_access_control_id    = "E2OQ2VSHLUFC7V"
          + origin_id                   = "prm-service-dashboard-dev"
          + response_completion_timeout = 0
            # (1 unchanged attribute hidden)

          + s3_origin_config {
                # (1 unchanged attribute hidden)
            }
        }

        # (3 unchanged blocks hidden)
    }

  # aws_s3_bucket_policy.dashboard_website will be updated in-place
  ~ resource "aws_s3_bucket_policy" "dashboard_website" {
        id     = "prm-service-dashboard-dev"
      ~ policy = jsonencode(
            {
              - Statement = [
                  - {
                      - Action    = "s3:GetObject"
                      - Condition = {
                          - StringEquals = {
                              - "AWS:SourceArn" = "arn:aws:cloudfront::343515223843:distribution/ES60SAUQ8ZFXZ"
                            }
                        }
                      - Effect    = "Allow"
                      - Principal = {
                          - Service = "cloudfront.amazonaws.com"
                        }
                      - Resource  = "arn:aws:s3:::prm-service-dashboard-dev/*"
                      - Sid       = "AllowCloudFrontRead"
                    },
                ]
              - Version   = "2012-10-17"
            }
        ) -> (known after apply)
        # (2 unchanged attributes hidden)
    }

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

@github-actions
Copy link

Report for validate_metrics on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (0 to add, 1 to change, 0 to destroy)


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:

  # aws_lambda_function.validate_metrics_lambda will be updated in-place
  ~ resource "aws_lambda_function" "validate_metrics_lambda" {
        id                             = "dev-validate-metrics-lambda"
      ~ last_modified                  = "2026-02-13T17:04:41.000+0000" -> (known after apply)
      ~ source_code_hash               = "MeY/7zK7dCgfoC3W2L89Vvu1R+ecKpj5ybKApeKklns=" -> "9P0EnrPtyQ21lOgpaxskAWbrDUc+svRPwHc4uvglDGk="
        tags                           = {
            "ApplicationRole"     = "AwsLambdaFunction"
            "BackupLocal"         = "False"
            "BackupRemote"        = "False"
            "CostCentre"          = "P0688/04"
            "CreatedBy"           = "gp2gp-reporting-infrastructure"
            "Customer"            = "NHS D"
            "DataType"            = "None"
            "Environment"         = "dev"
            "Name"                = "dev-validate-metrics-lambda"
            "OnOffPattern"        = "AlwaysOn"
            "Owner"               = "Candice Moore"
            "Programme"           = "GP IT Futures"
            "Project"             = "Patient Record Migration"
            "ProjectType"         = "Public beta"
            "PublicFacing"        = "N"
            "ServiceCategory"     = "Bronze"
            "TagVersion"          = "1"
            "Team"                = "Registrations"
            "data_classification" = "1"
            "envtype"             = "dev"
        }
        # (30 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

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

@github-actions
Copy link

Report for ods_downloader on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (no changes)


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.

@github-actions
Copy link

Report for reports_generator on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (no changes)


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.

@github-actions
Copy link

Report for spine_exporter on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (no changes)


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.

@github-actions
Copy link

Report for metrics_calculator on environment: dev

Terraform Format and Style 🖌success

Format Output


Terraform Initialization ⚙️success

Initialization Output

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 6.0"...
- Installing hashicorp/aws v6.33.0...
- Installed hashicorp/aws v6.33.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan (no changes)


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.

@chrisbloe chrisbloe merged commit 20f27d1 into main Feb 25, 2026
18 checks passed
@chrisbloe chrisbloe deleted the PRM-717 branch February 25, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants