@@ -187,21 +187,21 @@ pub(crate) async fn run(args: &Args, promote_args: &PromoteArgs) -> Result<()> {
187187 . map ( |( k, v) | ( v, & target_parameter_map[ k] ) )
188188 . collect ( ) ;
189189
190+ // Create full set of target parameters
191+ let full_target_parameters = current_source_parameters
192+ . into_iter ( )
193+ . map ( |( key, value) | {
194+ (
195+ SsmKey :: new ( key. region , source_target_map[ & key. name ] . to_string ( ) ) ,
196+ value. clone ( ) ,
197+ )
198+ } )
199+ . collect ( ) ;
200+
190201 // Show the difference between source and target parameters in SSM. We use the
191202 // source_target_map we built above to map source keys to target keys (generated from the same
192203 // template) so that the diff code has common keys to compare.
193- let set_parameters = key_difference (
194- & current_source_parameters
195- . into_iter ( )
196- . map ( |( key, value) | {
197- (
198- SsmKey :: new ( key. region , source_target_map[ & key. name ] . to_string ( ) ) ,
199- value,
200- )
201- } )
202- . collect ( ) ,
203- & current_target_parameters,
204- ) ;
204+ let set_parameters = key_difference ( & full_target_parameters, & current_target_parameters) ;
205205 if set_parameters. is_empty ( ) {
206206 info ! ( "No changes necessary." ) ;
207207 return Ok ( ( ) ) ;
@@ -211,7 +211,7 @@ pub(crate) async fn run(args: &Args, promote_args: &PromoteArgs) -> Result<()> {
211211 // write the newly promoted parameters to `ssm_parameter_output` along with the original
212212 // parameters
213213 if let Some ( ssm_parameter_output) = & promote_args. ssm_parameter_output {
214- append_rendered_parameters ( ssm_parameter_output, & set_parameters ) . await ?;
214+ append_rendered_parameters ( ssm_parameter_output, & full_target_parameters ) . await ?;
215215 }
216216
217217 // SSM set =^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=
0 commit comments