def test_cwl_subscriber(self): self.patch(CloudWatchLogSubscription, 'iam_delay', 0.01) session_factory = self.replay_flight_data('test_cwl_subscriber') session = session_factory() client = session.client('logs') lname = "custodian-test-log-sub" self.addCleanup(client.delete_log_group, logGroupName=lname) client.create_log_group(logGroupName=lname) linfo = client.describe_log_groups( logGroupNamePrefix=lname)['logGroups'][0] params = dict( session_factory=session_factory, name="c7n-log-sub", role=self.role, sns_topic="arn:", log_groups=[linfo]) func = logsub.get_function(**params) manager = LambdaManager(session_factory) finfo = manager.publish(func) self.addCleanup(manager.remove, func) results = client.describe_subscription_filters(logGroupName=lname) self.assertEqual(len(results['subscriptionFilters']), 1) self.assertEqual(results['subscriptionFilters'][0]['destinationArn'], finfo['FunctionArn'])
def main(): parser = setup_parser() options = parser.parse_args() logging.basicConfig(level=logging.DEBUG) logging.getLogger('botocore').setLevel(logging.ERROR) if not options.group and not options.prefix: print("Error: Either group or prefix must be specified") sys.exit(1) session_factory = SessionFactory( options.region, options.profile, options.assume) groups = get_groups(session_factory, options) func = logsub.get_function( session_factory, "cloud-custodian-error-notify", role=options.role, sns_topic=options.topic, subject=options.subject, log_groups=groups, pattern=options.pattern) manager = LambdaManager(session_factory) try: manager.publish(func) except Exception: import traceback, pdb, sys traceback.print_exc() pdb.post_mortem(sys.exc_info()[-1])
def test_cwl_subscriber(self): self.patch(CloudWatchLogSubscription, "iam_delay", 0.01) session_factory = self.replay_flight_data("test_cwl_subscriber") session = session_factory() client = session.client("logs") lname = "custodian-test-log-sub" self.addCleanup(client.delete_log_group, logGroupName=lname) client.create_log_group(logGroupName=lname) linfo = client.describe_log_groups(logGroupNamePrefix=lname)["logGroups"][0] params = dict( session_factory=session_factory, name="c7n-log-sub", role=ROLE, sns_topic="arn:", log_groups=[linfo], ) func = logsub.get_function(**params) manager = LambdaManager(session_factory) finfo = manager.publish(func) self.addCleanup(manager.remove, func) results = client.describe_subscription_filters(logGroupName=lname) self.assertEqual(len(results["subscriptionFilters"]), 1) self.assertEqual( results["subscriptionFilters"][0]["destinationArn"], finfo["FunctionArn"] )
def main(): parser = setup_parser() options = parser.parse_args() logging.basicConfig(level=logging.DEBUG) logging.getLogger('botocore').setLevel(logging.ERROR) if not options.group and not options.prefix: print("Error: Either group or prefix must be specified") sys.exit(1) session_factory = SessionFactory(options.region, options.profile, options.assume) groups = get_groups(session_factory, options) func = logsub.get_function(session_factory, "cloud-custodian-error-notify", role=options.role, sns_topic=options.topic, subject=options.subject, log_groups=groups, pattern=options.pattern) manager = LambdaManager(session_factory) try: manager.publish(func) except Exception: import traceback, pdb, sys traceback.print_exc() pdb.post_mortem(sys.exc_info()[-1])
def test_cwl_subscriber(self): self.patch(CloudWatchLogSubscription, 'iam_delay', 0.01) session_factory = self.replay_flight_data('test_cwl_subscriber') session = session_factory() client = session.client('logs') lname = "custodian-test-log-sub" self.addCleanup(client.delete_log_group, logGroupName=lname) client.create_log_group(logGroupName=lname) linfo = client.describe_log_groups( logGroupNamePrefix=lname)['logGroups'][0] params = dict(session_factory=session_factory, name="c7n-log-sub", role=self.role, sns_topic="arn:", log_groups=[linfo]) func = logsub.get_function(**params) manager = LambdaManager(session_factory) finfo = manager.publish(func) self.addCleanup(manager.remove, func) results = client.describe_subscription_filters(logGroupName=lname) self.assertEqual(len(results['subscriptionFilters']), 1) self.assertEqual(results['subscriptionFilters'][0]['destinationArn'], finfo['FunctionArn']) # try and update params['sns_topic'] = "arn:123" manager.publish(func)