-
-
Notifications
You must be signed in to change notification settings - Fork 748
Description
Description
Encountering InvalidParameterValueException (and perhaps other exceptions) during terraform apply causes source code changes to be missed. Subsequent successful terraform apply steps continue to miss original code changes.
Versions
-
Module version [Required]: 7.20.2
-
Terraform version: 1.3.8
-
Provider version(s): hashicorp/aws v5.97.0
Reproduction Code [Required]
Steps to reproduce the behavior:
- Run terraform apply with Lambda module:
module "lambda_function" {
source = "terraform-aws-modules/lambda/aws"
function_name = "my-lambda1"
handler = "index.lambda_handler"
runtime = "python3.11"
create_package = true
source_path = "../src/lambda-function1"
}
- In AWS Console, manually edit the Lambda's runtime management configuration: 1) set "Update runtime version" to Manual and 2) supply a version ARN (e.g. arn:aws:lambda:us-east-1::runtime:93841db3a9beab9ac5a6a1822362b2f10a99e5edf5f36ba23aec15e41ff97311)
- Modify Lambda function's source code (e.g., add a comment, add a log statement, etc.) and change the runtime in the Terraform to "python3.12"
- Run terraform apply. This will fail with message "Error: updating Lambda Function (my-lambda1) configuration: operation error Lambda: UpdateFunctionConfiguration, https response error StatusCode: 400, RequestID: 55289fd5-e9e9-4357-8627-cc046c827ac9, InvalidParameterValueException: Cannot change runtime identifier when runtime management configuration is set to 'Manual'. Change the runtime management configuration to 'Auto' or 'FunctionUpdate', then retry."
- In AWS Console, manually edit the Lambda's runtime management configuration: set "Update runtime version" to Auto.
- Re-run terraform apply.
Expected behavior
Terraform apply runs successfully, the Lambda's runtime is modified to Python 3.12, and the source code change from step 3 is applied.
Actual behavior
Terraform apply runs successfully and the Lambda's runtime is modified to Python 3.12. However, the source code change from step 3 is NOT applied.
Additional context
Introducing a new code change (which changes the hash) before a subsequent terraform apply will cause the source code to update properly.