public static async Task UpsertStack( string stackName, string templatePath, List <Parameter> parameters, List <Tag> tags, Credentials credentials, StackSettings settings = null) { if (await StackExists(stackName, credentials)) { await UpdateStack(stackName, templatePath, parameters, tags, credentials, settings); } else { await CreateStack(stackName, templatePath, parameters, tags, credentials, settings); } }
public static async Task CreateStack( string stackName, string templatePath, List <Parameter> parameters, List <Tag> tags, Credentials credentials, StackSettings settings = null) { Console.WriteLine($"\nCreating stack {stackName}..."); await GetClient(credentials).CreateStackAsync( new CreateStackRequest { StackName = stackName, TemplateBody = File.ReadAllText(templatePath), Parameters = parameters, Capabilities = new List <string> { Capability.CAPABILITY_NAMED_IAM }, Tags = tags, DisableRollback = true, NotificationARNs = settings?.NotificationArns?.ToList() ?? new List <string>() }); await WaitForStackStatus(stackName, StackStatus.CREATE_COMPLETE, credentials); }
public static async Task UpdateStack( string stackName, string templatePath, List <Parameter> parameters, List <Tag> tags, Credentials credentials, StackSettings settings = null) { Console.WriteLine($"\nUpdating stack {stackName}..."); try { await GetClient(credentials).UpdateStackAsync( new UpdateStackRequest { StackName = stackName, TemplateBody = File.ReadAllText(templatePath), Parameters = parameters, Capabilities = new List <string> { Capability.CAPABILITY_NAMED_IAM }, Tags = tags, NotificationARNs = settings?.NotificationArns?.ToList() ?? new List <string>() }); } catch (AmazonCloudFormationException exc) when(exc.Message == "No updates are to be performed.") { Console.WriteLine(exc.Message); return; } await WaitForStackStatus(stackName, StackStatus.UPDATE_COMPLETE, credentials); }