in src/Amazon.Lambda.Tools/Commands/DeployServerlessCommand.cs [576:615]
private List<Parameter> GetTemplateParameters(Stack stack, List<Tuple<string, bool>> definedParameters)
{
var parameters = new List<Parameter>();
var map = GetKeyValuePairOrDefault(this.TemplateParameters, LambdaDefinedCommandOptions.ARGUMENT_CLOUDFORMATION_TEMPLATE_PARAMETER, false);
if (map != null)
{
foreach (var kvp in map)
{
Tuple<string, bool> dp = null;
if(definedParameters != null)
{
dp = definedParameters.FirstOrDefault(x => string.Equals(x.Item1, kvp.Key));
}
if (dp == null)
{
this.Logger.WriteLine($"Skipping passed in template parameter {kvp.Key} because the template does not define that parameter");
}
else
{
parameters.Add(new Parameter { ParameterKey = kvp.Key, ParameterValue = kvp.Value ?? "" });
}
}
}
if (stack != null)
{
foreach (var existingParameter in stack.Parameters)
{
if ((definedParameters == null || definedParameters.FirstOrDefault(x => string.Equals(x.Item1, existingParameter.ParameterKey)) != null) &&
!parameters.Any(x => string.Equals(x.ParameterKey, existingParameter.ParameterKey)))
{
parameters.Add(new Parameter { ParameterKey = existingParameter.ParameterKey, UsePreviousValue = true });
}
}
}
return parameters;
}