Skip to content

infra: allow ecr cleanup during zip migration - #54

Merged
maxsonferovante merged 1 commit into
mainfrom
codex/migrate-lambdas-to-zip
Jun 22, 2026
Merged

infra: allow ecr cleanup during zip migration#54
maxsonferovante merged 1 commit into
mainfrom
codex/migrate-lambdas-to-zip

Conversation

@maxsonferovante

Copy link
Copy Markdown
Contributor

No description provided.

@maxsonferovante
maxsonferovante merged commit c4a20a1 into main Jun 22, 2026
@github-actions

Copy link
Copy Markdown

Terraform Plan (shared)

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
Copy Markdown

Terraform Plan (dev)

Note: Objects have changed outside of Terraform

Terraform detected the following changes made outside of Terraform since the
last "terraform apply" which may have affected this plan:

  # module.lambda.aws_lambda_function.builder_function has been deleted
  - resource "aws_lambda_function" "builder_function" {
      - arn                            = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-builder-dev" -> null
      - function_name                  = "tech-floripa-certificates-builder-dev" -> null
        id                             = "tech-floripa-certificates-builder-dev"
      - invoke_arn                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-builder-dev/invocations" -> null
        tags                           = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-builder-dev"
            "Project"     = "tech-floripa-certificates"
        }
        # (27 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.lambda.aws_lambda_function.notification_function has been deleted
  - resource "aws_lambda_function" "notification_function" {
      - arn                            = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev" -> null
      - function_name                  = "tech-floripa-certificates-notification-dev" -> null
        id                             = "tech-floripa-certificates-notification-dev"
      - invoke_arn                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev/invocations" -> null
        tags                           = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-notification-dev"
            "Project"     = "tech-floripa-certificates"
        }
        # (27 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }


Unless you have made equivalent changes to your configuration, or ignored the
relevant attributes using ignore_changes, the following plan may include
actions to undo or respond to these changes.

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

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

Terraform will perform the following actions:

  # module.api_gateway.aws_api_gateway_deployment.api_deployment must be replaced
+/- resource "aws_api_gateway_deployment" "api_deployment" {
      ~ created_date = "2025-12-06T16:44:40Z" -> (known after apply)
      ~ id           = "0ruq8z" -> (known after apply)
      ~ triggers     = {
          - "redeployment" = "e74dfb9a1c06abee6f24c9b881aa7c4f9330031d"
        } -> (known after apply) # forces replacement
        # (3 unchanged attributes hidden)
    }

  # module.api_gateway.aws_api_gateway_integration.lambda_integrations["api-v1-certificate-create"] will be updated in-place
  ~ resource "aws_api_gateway_integration" "lambda_integrations" {
        id                      = "agi-mpl8es0cb7-kjx11s-POST"
      ~ uri                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev/invocations" -> (known after apply)
        # (16 unchanged attributes hidden)
    }

  # module.api_gateway.aws_api_gateway_integration.lambda_integrations["api-v1-certificate-create-batch"] will be updated in-place
  ~ resource "aws_api_gateway_integration" "lambda_integrations" {
        id                      = "agi-mpl8es0cb7-mp137e-POST"
      ~ uri                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev/invocations" -> (known after apply)
        # (16 unchanged attributes hidden)
    }

  # module.api_gateway.aws_api_gateway_integration.lambda_integrations["api-v1-certificate-download"] will be updated in-place
  ~ resource "aws_api_gateway_integration" "lambda_integrations" {
        id                      = "agi-mpl8es0cb7-8ww5uo-GET"
      ~ uri                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev/invocations" -> (known after apply)
        # (16 unchanged attributes hidden)
    }

  # module.api_gateway.aws_api_gateway_integration.lambda_integrations["api-v1-certificate-fetch"] will be updated in-place
  ~ resource "aws_api_gateway_integration" "lambda_integrations" {
        id                      = "agi-mpl8es0cb7-37f13v-GET"
      ~ uri                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev/invocations" -> (known after apply)
        # (16 unchanged attributes hidden)
    }

  # module.api_gateway.aws_api_gateway_stage.api_stage will be updated in-place
  ~ resource "aws_api_gateway_stage" "api_stage" {
      ~ deployment_id         = "0ruq8z" -> (known after apply)
        id                    = "ags-mpl8es0cb7-dev"
        tags                  = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-api-stage-dev"
            "Project"     = "tech-floripa-certificates"
        }
        # (15 unchanged attributes hidden)
    }

  # module.ecr.aws_ecr_repository.api_repository will be destroyed
  # (because aws_ecr_repository.api_repository is not in configuration)
  - resource "aws_ecr_repository" "api_repository" {
      - arn                  = "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-api-dev" -> null
      - force_delete         = true -> null
      - id                   = "tech-floripa-certificates-api-dev" -> null
      - image_tag_mutability = "MUTABLE" -> null
      - name                 = "tech-floripa-certificates-api-dev" -> null
      - region               = "us-east-1" -> null
      - registry_id          = "334318883918" -> null
      - repository_url       = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-api-dev" -> null
      - tags                 = {
          - "Name"    = "tech-floripa-certificates-api-dev"
          - "Project" = "tech-floripa-certificates"
        } -> null
      - tags_all             = {
          - "Environment" = "dev"
          - "ManagedBy"   = "terraform"
          - "Name"        = "tech-floripa-certificates-api-dev"
          - "Project"     = "tech-floripa-certificates"
        } -> null

      - encryption_configuration {
          - encryption_type = "AES256" -> null
            # (1 unchanged attribute hidden)
        }

      - image_scanning_configuration {
          - scan_on_push = true -> null
        }
    }

  # module.ecr.aws_ecr_repository.builder_repository will be destroyed
  # (because aws_ecr_repository.builder_repository is not in configuration)
  - resource "aws_ecr_repository" "builder_repository" {
      - arn                  = "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-builder-dev" -> null
      - force_delete         = true -> null
      - id                   = "tech-floripa-certificates-builder-dev" -> null
      - image_tag_mutability = "MUTABLE" -> null
      - name                 = "tech-floripa-certificates-builder-dev" -> null
      - region               = "us-east-1" -> null
      - registry_id          = "334318883918" -> null
      - repository_url       = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-builder-dev" -> null
      - tags                 = {
          - "Name"    = "tech-floripa-certificates-builder-dev"
          - "Project" = "tech-floripa-certificates"
        } -> null
      - tags_all             = {
          - "Environment" = "dev"
          - "ManagedBy"   = "terraform"
          - "Name"        = "tech-floripa-certificates-builder-dev"
          - "Project"     = "tech-floripa-certificates"
        } -> null

      - encryption_configuration {
          - encryption_type = "AES256" -> null
            # (1 unchanged attribute hidden)
        }

      - image_scanning_configuration {
          - scan_on_push = true -> null
        }
    }

  # module.ecr.aws_ecr_repository.notification_repository will be destroyed
  # (because aws_ecr_repository.notification_repository is not in configuration)
  - resource "aws_ecr_repository" "notification_repository" {
      - arn                  = "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-notification-dev" -> null
      - force_delete         = true -> null
      - id                   = "tech-floripa-certificates-notification-dev" -> null
      - image_tag_mutability = "MUTABLE" -> null
      - name                 = "tech-floripa-certificates-notification-dev" -> null
      - region               = "us-east-1" -> null
      - registry_id          = "334318883918" -> null
      - repository_url       = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-notification-dev" -> null
      - tags                 = {
          - "Name"    = "tech-floripa-certificates-notification-dev"
          - "Project" = "tech-floripa-certificates"
        } -> null
      - tags_all             = {
          - "Environment" = "dev"
          - "ManagedBy"   = "terraform"
          - "Name"        = "tech-floripa-certificates-notification-dev"
          - "Project"     = "tech-floripa-certificates"
        } -> null

      - encryption_configuration {
          - encryption_type = "AES256" -> null
            # (1 unchanged attribute hidden)
        }

      - image_scanning_configuration {
          - scan_on_push = true -> null
        }
    }

  # module.lambda.aws_iam_role.lambda_builder_execution_role will be updated in-place
  ~ resource "aws_iam_role" "lambda_builder_execution_role" {
        id                    = "tech-floripa-certificates-lambda-builder-role-dev"
        name                  = "tech-floripa-certificates-lambda-builder-role-dev"
      ~ tags                  = {
            "Environment" = "dev"
          ~ "Name"        = "tech-floripa-certificates-lambda-ecr-builder-execution-role-dev" -> "tech-floripa-certificates-lambda-builder-role-dev"
            "Project"     = "tech-floripa-certificates"
        }
      ~ tags_all              = {
          ~ "Name"        = "tech-floripa-certificates-lambda-ecr-builder-execution-role-dev" -> "tech-floripa-certificates-lambda-builder-role-dev"
            # (3 unchanged elements hidden)
        }
        # (11 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.lambda.aws_lambda_event_source_mapping.builder_sqs_trigger will be updated in-place
  ~ resource "aws_lambda_event_source_mapping" "builder_sqs_trigger" {
      ~ function_name                      = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-builder-dev" -> (known after apply)
        id                                 = "46b21c58-2ee9-4518-962d-a03094f7e658"
        tags                               = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-builder-sqs-trigger-dev"
            "Project"     = "tech-floripa-certificates"
        }
        # (24 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.lambda.aws_lambda_event_source_mapping.notification_sqs_trigger will be updated in-place
  ~ resource "aws_lambda_event_source_mapping" "notification_sqs_trigger" {
      ~ function_name                      = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev" -> (known after apply)
        id                                 = "59bdce66-0030-4773-912b-24a9e3dd32a6"
        tags                               = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-notification-sqs-trigger-dev"
            "Project"     = "tech-floripa-certificates"
        }
        # (24 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # module.lambda.aws_lambda_function.api_function must be replaced
+/- resource "aws_lambda_function" "api_function" {
      ~ architectures                  = [
          - "x86_64",
        ] -> (known after apply)
      ~ arn                            = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev" -> (known after apply)
      ~ code_sha256                    = "36e6fdfd27ac74f62ecb467a827aa505c802bd6029d76edcd207546aa6d6b3fc" -> (known after apply)
      + filename                       = "../../modules/05.lambda/bootstrap/lambda-bootstrap.zip"
      + handler                        = "lambda_function.lambda_handler"
      ~ id                             = "tech-floripa-certificates-api-dev" -> (known after apply)
      - image_uri                      = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-api-dev@sha256:36e6fdfd27ac74f62ecb467a827aa505c802bd6029d76edcd207546aa6d6b3fc" -> null
      ~ invoke_arn                     = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev/invocations" -> (known after apply)
      ~ last_modified                  = "2025-12-06T16:44:10.000+0000" -> (known after apply)
      - layers                         = [] -> null
      ~ package_type                   = "Image" -> "Zip" # forces replacement
      ~ qualified_arn                  = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev:$LATEST" -> (known after apply)
      ~ qualified_invoke_arn           = "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev:$LATEST/invocations" -> (known after apply)
      + runtime                        = "python3.13"
      + signing_job_arn                = (known after apply)
      + signing_profile_version_arn    = (known after apply)
      + source_code_hash               = "SpO0q/yFR4BZluRLR3vzorn98UjwAq+JHjfz9gvFkw8="
      ~ source_code_size               = 0 -> (known after apply)
        tags                           = {
            "Environment" = "dev"
            "Name"        = "tech-floripa-certificates-api-dev"
            "Project"     = "tech-floripa-certificates"
        }
      ~ version                        = "$LATEST" -> (known after apply)
        # (13 unchanged attributes hidden)

      ~ ephemeral_storage (known after apply)
      - ephemeral_storage {
          - size = 512 -> null
        }

      ~ logging_config (known after apply)
      - logging_config {
          - log_format            = "Text" -> null
          - log_group             = "/aws/lambda/tech-floripa-certificates-api-dev" -> null
            # (2 unchanged attributes hidden)
        }

      ~ tracing_config (known after apply)
      - tracing_config {
          - mode = "PassThrough" -> null
        }

        # (1 unchanged block hidden)
    }

  # module.lambda.aws_lambda_function.builder_function will be created
  + resource "aws_lambda_function" "builder_function" {
      + architectures                  = (known after apply)
      + arn                            = (known after apply)
      + code_sha256                    = (known after apply)
      + filename                       = "../../modules/05.lambda/bootstrap/lambda-bootstrap.zip"
      + function_name                  = "tech-floripa-certificates-builder-dev"
      + handler                        = "lambda_function.lambda_handler"
      + id                             = (known after apply)
      + invoke_arn                     = (known after apply)
      + last_modified                  = (known after apply)
      + memory_size                    = 512
      + package_type                   = "Zip"
      + publish                        = false
      + qualified_arn                  = (known after apply)
      + qualified_invoke_arn           = (known after apply)
      + region                         = "us-east-1"
      + reserved_concurrent_executions = -1
      + role                           = "arn:aws:iam::334318883918:role/tech-floripa-certificates-lambda-builder-role-dev"
      + runtime                        = "python3.13"
      + signing_job_arn                = (known after apply)
      + signing_profile_version_arn    = (known after apply)
      + skip_destroy                   = false
      + source_code_hash               = "SpO0q/yFR4BZluRLR3vzorn98UjwAq+JHjfz9gvFkw8="
      + source_code_size               = (known after apply)
      + tags                           = {
          + "Environment" = "dev"
          + "Name"        = "tech-floripa-certificates-builder-dev"
          + "Project"     = "tech-floripa-certificates"
        }
      + tags_all                       = {
          + "Environment" = "dev"
          + "ManagedBy"   = "terraform"
          + "Name"        = "tech-floripa-certificates-builder-dev"
          + "Project"     = "tech-floripa-certificates"
        }
      + timeout                        = 900
      + version                        = (known after apply)

      + environment {
          + variables = {
              + "BUCKET_NAME"                             = "tech-floripa-certificates-dev-bucket"
              + "QUEUE_URL"                               = "https://sqs.us-east-1.amazonaws.com/334318883918/tech-floripa-certificates-notification-queue"
              + "REGION"                                  = "us-east-1"
              + "SERVICE_API_KEY_REGISTRATION_API_SOLANA" = (sensitive value)
              + "SERVICE_URL_REGISTRATION_API_SOLANA"     = "https://certificados.pynews.org/register"
              + "TECH_FLORIPA_CERTIFICATE_VALIDATE_URL"   = "https://tech.floripa.br/certificate-validate/"
              + "TECH_FLORIPA_LOGO_URL"                   = "https://tech.floripa.br/wp-content/uploads/2025/03/Tech-Floripa-Qr.png"
            }
        }

      + ephemeral_storage (known after apply)

      + logging_config (known after apply)

      + tracing_config (known after apply)
    }

  # module.lambda.aws_lambda_function.notification_function will be created
  + resource "aws_lambda_function" "notification_function" {
      + architectures                  = (known after apply)
      + arn                            = (known after apply)
      + code_sha256                    = (known after apply)
      + filename                       = "../../modules/05.lambda/bootstrap/lambda-bootstrap.zip"
      + function_name                  = "tech-floripa-certificates-notification-dev"
      + handler                        = "lambda_function.lambda_handler"
      + id                             = (known after apply)
      + invoke_arn                     = (known after apply)
      + last_modified                  = (known after apply)
      + memory_size                    = 512
      + package_type                   = "Zip"
      + publish                        = false
      + qualified_arn                  = (known after apply)
      + qualified_invoke_arn           = (known after apply)
      + region                         = "us-east-1"
      + reserved_concurrent_executions = -1
      + role                           = "arn:aws:iam::334318883918:role/tech-floripa-certificates-lambda-notification-role-dev"
      + runtime                        = "python3.13"
      + signing_job_arn                = (known after apply)
      + signing_profile_version_arn    = (known after apply)
      + skip_destroy                   = false
      + source_code_hash               = "SpO0q/yFR4BZluRLR3vzorn98UjwAq+JHjfz9gvFkw8="
      + source_code_size               = (known after apply)
      + tags                           = {
          + "Environment" = "dev"
          + "Name"        = "tech-floripa-certificates-notification-dev"
          + "Project"     = "tech-floripa-certificates"
        }
      + tags_all                       = {
          + "Environment" = "dev"
          + "ManagedBy"   = "terraform"
          + "Name"        = "tech-floripa-certificates-notification-dev"
          + "Project"     = "tech-floripa-certificates"
        }
      + timeout                        = 900
      + version                        = (known after apply)

      + environment {
          + variables = {
              + "API_GATEWAY_DOWNLOAD_URL" = "https://mpl8es0cb7.execute-api.us-east-1.amazonaws.com/dev/api/v1/certificate/download"
              + "ENVIRONMENT"              = "dev"
              + "PROJECT_NAME"             = "tech-floripa-certificates"
              + "REGION"                   = "us-east-1"
              + "S3_BUCKET_NAME"           = "tech-floripa-certificates-dev-bucket"
              + "URL_SERVICE_TECH"         = "https://tech.floripa.br/wp-json/custom/v1"
            }
        }

      + ephemeral_storage (known after apply)

      + logging_config (known after apply)

      + tracing_config (known after apply)
    }

Plan: 4 to add, 8 to change, 5 to destroy.

Changes to Outputs:
  - ecr_api_repository_name                   = "tech-floripa-certificates-api-dev" -> null
  - ecr_repository_url                        = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-api-dev" -> null
  ~ infrastructure_summary                    = {
      - ecr         = {
          - api_repository_name = "tech-floripa-certificates-api-dev"
          - repository_url      = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-api-dev"
        }
      ~ lambda      = {
          + builder_function_arn       = (known after apply)
          + builder_function_name      = "tech-floripa-certificates-builder-dev"
          ~ function_arn               = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev" -> (known after apply)
          ~ notification_function_arn  = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev" -> (known after apply)
            # (2 unchanged attributes hidden)
        }
        # (4 unchanged attributes hidden)
    }
  + lambda_builder_function_arn               = (known after apply)
  + lambda_builder_function_name              = "tech-floripa-certificates-builder-dev"
  ~ lambda_function_arn                       = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-api-dev" -> (known after apply)
  ~ lambda_notification_function_arn          = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev" -> (known after apply)

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.

1 participant