Skip to content

infra: migrate lambda deploys from ecr to zip - #53

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

infra: migrate lambda deploys from ecr to zip#53
maxsonferovante merged 2 commits into
mainfrom
codex/migrate-lambdas-to-zip

Conversation

@maxsonferovante

Copy link
Copy Markdown
Contributor

No description provided.

@maxsonferovante maxsonferovante self-assigned this Jun 21, 2026
@github-actions

Copy link
Copy Markdown

Terraform Plan (dev)

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
  - destroy
-/+ destroy and then create replacement
+/- 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_lifecycle_policy.api_repository_policy will be destroyed
  # (because aws_ecr_lifecycle_policy.api_repository_policy is not in configuration)
  - resource "aws_ecr_lifecycle_policy" "api_repository_policy" {
      - id          = "tech-floripa-certificates-api-dev" -> null
      - policy      = jsonencode(
            {
              - rules = [
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove imagens não-taggeadas imediatamente (exceto a mais recente)"
                      - rulePriority = 1
                      - selection    = {
                          - countNumber = 1
                          - countType   = "imageCountMoreThan"
                          - tagStatus   = "untagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Mantém apenas 1 imagem por tag específica - remove versões antigas"
                      - rulePriority = 2
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "imageCountMoreThan"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove qualquer imagem taggeada com mais de 1 dia (fallback de segurança)"
                      - rulePriority = 3
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "sinceImagePushed"
                          - countUnit     = "days"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                              - "feature",
                              - "hotfix",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                ]
            }
        ) -> null
      - region      = "us-east-1" -> null
      - registry_id = "334318883918" -> null
      - repository  = "tech-floripa-certificates-api-dev" -> null
    }

  # module.ecr.aws_ecr_lifecycle_policy.builder_repository_policy will be destroyed
  # (because aws_ecr_lifecycle_policy.builder_repository_policy is not in configuration)
  - resource "aws_ecr_lifecycle_policy" "builder_repository_policy" {
      - id          = "tech-floripa-certificates-builder-dev" -> null
      - policy      = jsonencode(
            {
              - rules = [
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove imagens não-taggeadas imediatamente (exceto a mais recente)"
                      - rulePriority = 1
                      - selection    = {
                          - countNumber = 1
                          - countType   = "imageCountMoreThan"
                          - tagStatus   = "untagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Mantém apenas 1 imagem por tag específica - remove versões antigas"
                      - rulePriority = 2
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "imageCountMoreThan"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove qualquer imagem taggeada com mais de 1 dia (fallback de segurança)"
                      - rulePriority = 3
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "sinceImagePushed"
                          - countUnit     = "days"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                              - "feature",
                              - "hotfix",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                ]
            }
        ) -> null
      - region      = "us-east-1" -> null
      - registry_id = "334318883918" -> null
      - repository  = "tech-floripa-certificates-builder-dev" -> null
    }

  # module.ecr.aws_ecr_lifecycle_policy.notification_repository_policy will be destroyed
  # (because aws_ecr_lifecycle_policy.notification_repository_policy is not in configuration)
  - resource "aws_ecr_lifecycle_policy" "notification_repository_policy" {
      - id          = "tech-floripa-certificates-notification-dev" -> null
      - policy      = jsonencode(
            {
              - rules = [
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove imagens não-taggeadas imediatamente (exceto a mais recente)"
                      - rulePriority = 1
                      - selection    = {
                          - countNumber = 1
                          - countType   = "imageCountMoreThan"
                          - tagStatus   = "untagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Mantém apenas 1 imagem por tag específica - remove versões antigas"
                      - rulePriority = 2
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "imageCountMoreThan"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                  - {
                      - action       = {
                          - type = "expire"
                        }
                      - description  = "Remove qualquer imagem taggeada com mais de 1 dia (fallback de segurança)"
                      - rulePriority = 3
                      - selection    = {
                          - countNumber   = 1
                          - countType     = "sinceImagePushed"
                          - countUnit     = "days"
                          - tagPrefixList = [
                              - "latest",
                              - "v",
                              - "dev",
                              - "prod",
                              - "staging",
                              - "main",
                              - "feature",
                              - "hotfix",
                            ]
                          - tagStatus     = "tagged"
                        }
                    },
                ]
            }
        ) -> null
      - region      = "us-east-1" -> null
      - registry_id = "334318883918" -> null
      - repository  = "tech-floripa-certificates-notification-dev" -> null
    }

  # 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_iam_role_policy.lambda_builder_custom_policy will be updated in-place
  ~ resource "aws_iam_role_policy" "lambda_builder_custom_policy" {
        id          = "tech-floripa-certificates-lambda-builder-role-dev:tech-floripa-certificates-lambda-builder-policy-dev"
        name        = "tech-floripa-certificates-lambda-builder-policy-dev"
      ~ policy      = jsonencode(
          ~ {
              ~ Statement = [
                  - {
                      - Action   = [
                          - "ecr:GetAuthorizationToken",
                          - "ecr:BatchCheckLayerAvailability",
                          - "ecr:GetDownloadUrlForLayer",
                          - "ecr:BatchGetImage",
                        ]
                      - Effect   = "Allow"
                      - Resource = [
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-builder-dev",
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-builder-dev:*",
                        ]
                    },
                    {
                        Action   = [
                            "s3:GetObject",
                            "s3:GetObjectVersion",
                            "s3:PutObject",
                            "s3:DeleteObject",
                            "s3:ListBucket",
                        ]
                        Effect   = "Allow"
                        Resource = [
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket",
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket/*",
                        ]
                    },
                    # (1 unchanged element hidden)
                ]
                # (1 unchanged attribute hidden)
            }
        )
        # (2 unchanged attributes hidden)
    }

  # module.lambda.aws_iam_role_policy.lambda_custom_policy will be updated in-place
  ~ resource "aws_iam_role_policy" "lambda_custom_policy" {
        id          = "tech-floripa-certificates-lambda-role-dev:tech-floripa-certificates-lambda-policy-dev"
        name        = "tech-floripa-certificates-lambda-policy-dev"
      ~ policy      = jsonencode(
          ~ {
              ~ Statement = [
                    # (1 unchanged element hidden)
                    {
                        Action   = [
                            "sqs:SendMessage",
                            "sqs:ReceiveMessage",
                            "sqs:DeleteMessage",
                            "sqs:GetQueueAttributes",
                        ]
                        Effect   = "Allow"
                        Resource = [
                            "arn:aws:sqs:us-east-1:334318883918:tech-floripa-certificates-builder-queue",
                            "arn:aws:sqs:us-east-1:334318883918:tech-floripa-certificates-notification-queue",
                        ]
                    },
                  - {
                      - Action   = [
                          - "ecr:GetAuthorizationToken",
                          - "ecr:BatchCheckLayerAvailability",
                          - "ecr:GetDownloadUrlForLayer",
                          - "ecr:BatchGetImage",
                        ]
                      - Effect   = "Allow"
                      - Resource = [
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-api-dev",
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-api-dev:*",
                        ]
                    },
                    {
                        Action   = [
                            "s3:GetObject",
                            "s3:GetObjectVersion",
                            "s3:PutObject",
                            "s3:DeleteObject",
                            "s3:ListBucket",
                        ]
                        Effect   = "Allow"
                        Resource = [
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket",
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket/*",
                        ]
                    },
                ]
                # (1 unchanged attribute hidden)
            }
        )
        # (2 unchanged attributes hidden)
    }

  # module.lambda.aws_iam_role_policy.lambda_notification_custom_policy will be updated in-place
  ~ resource "aws_iam_role_policy" "lambda_notification_custom_policy" {
        id          = "tech-floripa-certificates-lambda-notification-role-dev:tech-floripa-certificates-lambda-notification-policy-dev"
        name        = "tech-floripa-certificates-lambda-notification-policy-dev"
      ~ policy      = jsonencode(
          ~ {
              ~ Statement = [
                    # (1 unchanged element hidden)
                    {
                        Action   = [
                            "sqs:SendMessage",
                            "sqs:ReceiveMessage",
                            "sqs:DeleteMessage",
                            "sqs:GetQueueAttributes",
                        ]
                        Effect   = "Allow"
                        Resource = [
                            "arn:aws:sqs:us-east-1:334318883918:tech-floripa-certificates-builder-queue",
                            "arn:aws:sqs:us-east-1:334318883918:tech-floripa-certificates-notification-queue",
                        ]
                    },
                  - {
                      - Action   = [
                          - "ecr:GetAuthorizationToken",
                          - "ecr:BatchCheckLayerAvailability",
                          - "ecr:GetDownloadUrlForLayer",
                          - "ecr:BatchGetImage",
                        ]
                      - Effect   = "Allow"
                      - Resource = [
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-notification-dev",
                          - "arn:aws:ecr:us-east-1:334318883918:repository/tech-floripa-certificates-notification-dev:*",
                        ]
                    },
                    {
                        Action   = [
                            "s3:GetObject",
                            "s3:PutObject",
                            "s3:DeleteObject",
                            "s3:ListBucket",
                        ]
                        Effect   = "Allow"
                        Resource = [
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket",
                            "arn:aws:s3:::tech-floripa-certificates-dev-bucket/*",
                        ]
                    },
                ]
                # (1 unchanged attribute hidden)
            }
        )
        # (2 unchanged attributes hidden)
    }

  # module.lambda.aws_iam_role_policy_attachment.lambda_builder_execution will be destroyed
  # (because aws_iam_role_policy_attachment.lambda_builder_execution is not in configuration)
  - resource "aws_iam_role_policy_attachment" "lambda_builder_execution" {
      - id         = "tech-floripa-certificates-lambda-builder-role-dev/arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" -> null
      - policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" -> null
      - role       = "tech-floripa-certificates-lambda-builder-role-dev" -> null
    }

  # 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 must be replaced
-/+ resource "aws_lambda_function" "builder_function" {
      ~ architectures                  = [
          - "x86_64",
        ] -> (known after apply)
      ~ arn                            = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-builder-dev" -> (known after apply)
      ~ code_sha256                    = "438616c83700615867288d5b938cfb266c989878ccf904c47d122fd399b94c82" -> (known after apply)
      + filename                       = "../../modules/05.lambda/bootstrap/lambda-bootstrap.zip"
      + handler                        = "lambda_function.lambda_handler"
      ~ id                             = "tech-floripa-certificates-builder-dev" -> (known after apply)
      - image_uri                      = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-builder-dev@sha256:438616c83700615867288d5b938cfb266c989878ccf904c47d122fd399b94c82" -> 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-builder-dev/invocations" -> (known after apply)
      ~ last_modified                  = "2026-04-15T00:58:25.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-builder-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-builder-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-builder-dev"
            "Project"     = "tech-floripa-certificates"
        }
      ~ version                        = "$LATEST" -> (known after apply)
        # (13 unchanged attributes hidden)

      ~ environment {
          ~ variables = {
              ~ "SERVICE_API_KEY_REGISTRATION_API_SOLANA" = (sensitive value)
              ~ "SERVICE_URL_REGISTRATION_API_SOLANA"     = "https://api.dataservice.market/certificados/register" -> "https://certificados.pynews.org/register"
                # (5 unchanged elements 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-builder-dev" -> null
            # (2 unchanged attributes hidden)
        }

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

  # module.lambda.aws_lambda_function.notification_function must be replaced
-/+ resource "aws_lambda_function" "notification_function" {
      ~ architectures                  = [
          - "x86_64",
        ] -> (known after apply)
      ~ arn                            = "arn:aws:lambda:us-east-1:334318883918:function:tech-floripa-certificates-notification-dev" -> (known after apply)
      ~ code_sha256                    = "40533c5e73e5005caa1b78d5c54eaa2be13a6a34a5b74e648a15a5d3af736403" -> (known after apply)
      + filename                       = "../../modules/05.lambda/bootstrap/lambda-bootstrap.zip"
      + handler                        = "lambda_function.lambda_handler"
      ~ id                             = "tech-floripa-certificates-notification-dev" -> (known after apply)
      - image_uri                      = "334318883918.dkr.ecr.us-east-1.amazonaws.com/tech-floripa-certificates-notification-dev@sha256:40533c5e73e5005caa1b78d5c54eaa2be13a6a34a5b74e648a15a5d3af736403" -> 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-notification-dev/invocations" -> (known after apply)
      ~ last_modified                  = "2025-12-06T15:17:41.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-notification-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-notification-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-notification-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-notification-dev" -> null
            # (2 unchanged attributes hidden)
        }

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

        # (1 unchanged block hidden)
    }

Plan: 4 to add, 11 to change, 11 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)

@github-actions

Copy link
Copy Markdown

Terraform Plan (shared)

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_iam_policy.github_actions_policy will be updated in-place
  ~ resource "aws_iam_policy" "github_actions_policy" {
        id               = "arn:aws:iam::334318883918:policy/github-actions-policy"
        name             = "github-actions-policy"
      ~ policy           = jsonencode(
          ~ {
              ~ Statement = [
                    # (2 unchanged elements hidden)
                    {
                        Action   = "s3:*"
                        Effect   = "Allow"
                        Resource = "*"
                    },
                  - {
                      - Action   = "ecr:*"
                      - Effect   = "Allow"
                      - Resource = "*"
                    },
                    {
                        Action   = "sqs:*"
                        Effect   = "Allow"
                        Resource = "*"
                    },
                    # (4 unchanged elements hidden)
                ]
                # (1 unchanged attribute hidden)
            }
        )
        tags             = {}
        # (7 unchanged attributes hidden)
    }

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

@maxsonferovante
maxsonferovante merged commit 22bcd84 into main Jun 22, 2026
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.

2 participants