Skip to content

Commit f8d5d09

Browse files
committed
fix: pass parameter defaults to expand_language_extensions in code change detection
Without parameter values, Fn::ForEach collections using Ref to parameters (e.g. {"Ref": "ServiceNames"}) fail to resolve during expansion, causing _detect_foreach_code_changes to silently skip code change detection for all ForEach-generated resources.
1 parent c720a94 commit f8d5d09

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

samcli/lib/sync/infra_sync_executor.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,19 @@ def _detect_foreach_code_changes(
586586
from samcli.lib.cfn_language_extensions.sam_integration import expand_language_extensions
587587

588588
try:
589-
current_expanded = expand_language_extensions(current_template).expanded_template
590-
deployed_expanded = expand_language_extensions(last_deployed_template).expanded_template
589+
# Extract parameter default values from the template so Ref-based
590+
# ForEach collections (e.g. {"Ref": "ServiceNames"}) can be resolved.
591+
param_values = {}
592+
for param_name, param_def in current_template.get("Parameters", {}).items():
593+
if isinstance(param_def, dict) and "Default" in param_def:
594+
param_values[param_name] = param_def["Default"]
595+
596+
current_expanded = expand_language_extensions(
597+
current_template, parameter_values=param_values
598+
).expanded_template
599+
deployed_expanded = expand_language_extensions(
600+
last_deployed_template, parameter_values=param_values
601+
).expanded_template
591602
except Exception as e:
592603
LOG.warning(
593604
"Failed to expand language extensions for code change detection: %s. "

0 commit comments

Comments
 (0)