示例#1
0
    def create_scheduler(self):
        variables = self.get_variables()
        troposphere_events_rule = variables["CloudwatchEventsRule"]
        aws_lambda_arns = {}

        # iterate over targets in the event Rule & gather aws_lambda_arns.
        for target in getattr(troposphere_events_rule, "Targets", []):
            if target.Arn.startswith("arn:aws:lambda:"):
                safe_id = cf_safe_name(target.Id)
                aws_lambda_arns[safe_id] = target.Arn

        # schedule a Cloudwatch event rule to invoke the Targets.
        rule = self.template.add_resource(troposphere_events_rule)

        # allow cloudwatch to invoke on any of the given lambda targets.
        for event_rule_target_id, aws_lambda_arn in aws_lambda_arns.items():
            self.template.add_resource(
                awslambda.Permission(
                    "PermToInvokeFunctionFor{}".format(event_rule_target_id),
                    Principal="events.amazonaws.com",
                    Action="lambda:InvokeFunction",
                    FunctionName=aws_lambda_arn,
                    SourceArn=rule.GetAtt("Arn")
                )
            )
示例#2
0
    def create_scheduler(self):
        variables = self.get_variables()
        troposphere_events_rule = variables["CloudwatchEventsRule"]
        aws_lambda_arns = {}

        # iterate over targets in the event Rule & gather aws_lambda_arns.
        for target in getattr(troposphere_events_rule, "Targets", []):
            if target.Arn.startswith("arn:aws:lambda:"):
                safe_id = cf_safe_name(target.Id)
                aws_lambda_arns[safe_id] = target.Arn

        # schedule a Cloudwatch event rule to invoke the Targets.
        rule = self.template.add_resource(troposphere_events_rule)

        # allow cloudwatch to invoke on any of the given lambda targets.
        for event_rule_target_id, aws_lambda_arn in aws_lambda_arns.items():
            self.template.add_resource(
                awslambda.Permission(
                    "PermToInvokeFunctionFor{}".format(event_rule_target_id),
                    Principal="events.amazonaws.com",
                    Action="lambda:InvokeFunction",
                    FunctionName=aws_lambda_arn,
                    SourceArn=rule.GetAtt("Arn")
                )
            )
示例#3
0
 def test_cf_safe_name(self):
     tests = (
         ("abc-def", "AbcDef"),
         ("GhI", "GhI"),
         ("jKlm.noP", "JKlmNoP")
     )
     for t in tests:
         self.assertEqual(cf_safe_name(t[0]), t[1])
示例#4
0
文件: test_util.py 项目: 40a/stacker
 def test_cf_safe_name(self):
     tests = (
         ("abc-def", "AbcDef"),
         ("GhI", "GhI"),
         ("jKlm.noP", "JKlmNoP")
     )
     for t in tests:
         self.assertEqual(cf_safe_name(t[0]), t[1])
示例#5
0
 def test_cf_safe_name(self):
     tests = (
         ('abc-def', 'AbcDef'),
         ('GhI', 'GhI'),
         ('jKlm.noP', 'JKlmNoP')
     )
     for t in tests:
         self.assertEqual(cf_safe_name(t[0]), t[1])