[Bug fix] aws_lambda_function: Suppress false persistent diffs on log levels when logging_format = "JSON" and publish = true #42660
+183
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rollback Plan
If a change needs to be reverted, we will publish an updated version of the library.
Changes to Security Controls
Are there any changes to security controls (access controls, encryption, logging) in this pull request? If so, explain.
Description
When
logging_format
inlogging_config
is set toJSON
andpublish
istrue
, persistent diffs appear. This PR fixes that issue.application_log_level
andsystem_log_level
) are not explicitly specified, the AWS API response for describing Lambda functions differs depending on thelogging_format
. When the format isText
, the default log level is an empty string (""
), but when the format isJSON
, the default is"INFO"
.logging_format
isJSON
, the log level in the Terraform state is refreshed to"INFO"
, causing Terraform to plan an update to reset it back to the default value of""
.DiffSuppressFunc
introduced in Resolve logging_config consecutive diff issue #35694.publish
istrue
, Terraform determines whether to updateversion
,qualified_arn
, andqualified_invoke_arn
usingd.HasChange()
for each argument. The issue is thatd.HasChange()
does not takeDiffSuppressFunc
into account—it only checks for literal differences in the argument values.The function that determines whether a new version should be published now incorporates the logic of
DiffSuppressFunc
for log levels.The newly added acceptance tests verify that no plan diffs occur when log levels remain unchanged.
See also
aws_lambda_function
perpetual difference whenlog_format
is set toJSON
#42181 (comment)Relations
Closes #42181
Closes #41065
Relates #35694
Output from Acceptance Testing