in source/services/tasks/tasks.ts [951:1014]
async deleteCloudWatchEventRule(taskId: string): Promise<void | ErrorReturn> {
// Checks if the CloudWatch event rule exists
let listParams: AWS.CloudWatchEvents.ListRulesRequest = {
NamePrefix: taskId
};
try {
let rules = await this.cloudWatchEvents.listRules(listParams).promise();
if (rules.Rules.length === 0) {
return Promise.resolve();
}
} catch (error) {
LOGGER.error(`deleteCloudWatchEventRule Error: ${JSON.stringify(error)}`);
return Promise.reject(
COMMON_UTIL.getErrorObject('DeleteCloudWatchEventRuleFailure', 500, 'Error occurred while listing CloudWatchEvents rules.', error)
);
}
// Deletes a permission from Lambda
let lambdaParams: AWS.Lambda.RemovePermissionRequest = {
FunctionName: this.resourceSelectorLambdaArn,
StatementId: taskId
};
try {
await this.lambda.removePermission(lambdaParams).promise();
} catch (error) {
LOGGER.error(`deleteCloudWatchEventRule Error: ${JSON.stringify(error)}`);
return Promise.reject(
COMMON_UTIL.getErrorObject('DeleteCloudWatchEventRuleFailure', 500, 'Error occurred while removing Lambda permission.', error)
);
}
// Removes a target
let targetParams: AWS.CloudWatchEvents.RemoveTargetsRequest = {
Ids: [ taskId ],
Rule: taskId
};
try {
await this.cloudWatchEvents.removeTargets(targetParams).promise();
} catch (error) {
LOGGER.error(`deleteCloudWatchEventRule Error: ${JSON.stringify(error)}`);
return Promise.reject(
COMMON_UTIL.getErrorObject('DeleteCloudWatchEventRuleFailure', 500, 'Error occurred while removing CloudWatchEvents targets.', error)
);
}
// Delete a rule
let ruleParams: AWS.CloudWatchEvents.DeleteRuleRequest = {
Name: taskId
};
try {
await this.cloudWatchEvents.deleteRule(ruleParams).promise();
} catch (error) {
LOGGER.error(`deleteCloudWatchEventRule Error: ${JSON.stringify(error)}`);
return Promise.reject(
COMMON_UTIL.getErrorObject('DeleteCloudWatchEventRuleFailure', 500, 'Error occurred while deleting a CloudWatchEvents rule.', error)
);
}
return Promise.resolve();
}