in src/tasks/CloudFormationCreateOrUpdateStack/TaskOperations.ts [162:242]
private async updateStack(): Promise<void> {
console.log(tl.loc('UpdateStack', this.taskParameters.templateFile))
const request: CloudFormation.UpdateStackInput = {
StackName: this.taskParameters.stackName,
RoleARN: this.taskParameters.roleARN
}
switch (this.taskParameters.templateSource) {
case fileSource:
{
if (this.taskParameters.s3BucketName) {
request.TemplateURL = await this.uploadTemplateFile(
this.taskParameters.templateFile,
this.taskParameters.s3BucketName
)
} else {
request.TemplateBody = await this.loadTemplateFile(this.taskParameters.templateFile)
}
}
break
case urlSource:
{
request.TemplateURL = this.taskParameters.templateUrl
}
break
case s3Source:
{
// sync call
request.TemplateURL = await SdkUtils.getPresignedUrl(
this.s3Client,
'getObject',
this.taskParameters.s3BucketName,
this.taskParameters.s3ObjectKey
)
}
break
case usePreviousTemplate: {
request.UsePreviousTemplate = true
break
}
}
request.Parameters = this.loadTemplateParameters()
request.NotificationARNs = this.getNotificationArns(this.taskParameters.notificationARNs)
request.ResourceTypes = this.getResourceTypes(this.taskParameters.resourceTypes)
request.Capabilities = this.getCapabilities(
this.taskParameters.capabilityIAM,
this.taskParameters.capabilityNamedIAM,
this.taskParameters.capabilityAutoExpand
)
request.Tags = SdkUtils.getTags<CloudFormation.Tag[]>(this.taskParameters.tags)
if (this.taskParameters.monitorRollbackTriggers) {
request.RollbackConfiguration = {
MonitoringTimeInMinutes: this.taskParameters.monitoringTimeInMinutes,
RollbackTriggers: this.constructRollbackTriggerCollection(this.taskParameters.rollbackTriggerARNs)
}
}
try {
await this.cloudFormationClient.updateStack(request).promise()
await waitForStackUpdate(this.cloudFormationClient, request.StackName, this.taskParameters.timeoutInMins)
} catch (err) {
const e = <AWSError>err
if (isNoWorkToDoValidationError(e.code, e.message)) {
if (this.taskParameters.warnWhenNoWorkNeeded) {
tl.warning(tl.loc('NoWorkToDo'))
}
return
}
console.error(tl.loc('StackUpdateRequestFailed', e.message), err)
throw err
}
}