async deleteCloudWatchEventRule()

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();
    }