@@ -398,19 +398,18 @@ def _resolve_refs_recursively(
398
398
join_values ,
399
399
)
400
400
401
- join_values = [
402
- resolve_refs_recursively (
403
- account_id ,
404
- region_name ,
405
- stack_name ,
406
- resources ,
407
- mappings ,
408
- conditions ,
409
- parameters ,
410
- v ,
411
- )
412
- for v in join_values
413
- ]
401
+ # resolve reference in the items list
402
+ assert isinstance (join_values , list )
403
+ join_values = resolve_refs_recursively (
404
+ account_id ,
405
+ region_name ,
406
+ stack_name ,
407
+ resources ,
408
+ mappings ,
409
+ conditions ,
410
+ parameters ,
411
+ join_values ,
412
+ )
414
413
415
414
none_values = [v for v in join_values if v is None ]
416
415
if none_values :
@@ -420,9 +419,7 @@ def _resolve_refs_recursively(
420
419
raise Exception (
421
420
f"Cannot resolve CF Fn::Join { value } due to null values: { join_values } "
422
421
)
423
- return value [keys_list [0 ]][0 ].join (
424
- [str (v ) for v in join_values if v != "__aws_no_value__" ]
425
- )
422
+ return value [keys_list [0 ]][0 ].join ([str (v ) for v in join_values ])
426
423
427
424
if stripped_fn_lower == "sub" :
428
425
item_to_sub = value [keys_list [0 ]]
@@ -756,8 +753,10 @@ def _resolve_refs_recursively(
756
753
{inner_list [0 ]: inner_list [1 ]},
757
754
)
758
755
756
+ # remove _aws_no_value_ from resulting references
757
+ clean_list = []
759
758
for i in range (len (value )):
760
- value [ i ] = resolve_refs_recursively (
759
+ temp_value = resolve_refs_recursively (
761
760
account_id ,
762
761
region_name ,
763
762
stack_name ,
@@ -767,6 +766,9 @@ def _resolve_refs_recursively(
767
766
parameters ,
768
767
value [i ],
769
768
)
769
+ if not (isinstance (temp_value , str ) and temp_value == PLACEHOLDER_AWS_NO_VALUE ):
770
+ clean_list .append (temp_value )
771
+ value = clean_list
770
772
771
773
return value
772
774
0 commit comments