Создайте тему AWS SNS и укажите ее в ASG, используя тропосферу

Я пытаюсь создать тему SNS и ссылаться на нее в ASG, чтобы получать уведомления при запуске или завершении экземпляров. Вот часть кода тропосферы, которую я использую:

    email_topic = self.template.add_resource(Topic(
        'ec2_lauch_termination',
        Subscription=[
            Subscription(
                Endpoint=Ref(alarm_email),
                Protocol="email"
            ),
        ],
    ))

    self.template.add_output(Output(
            "TopicArn",
            Value=GetAtt(email_topic, "Arn"),
            Description="ARN of email topic",
    ))

    for i in range(0, self.subnet_count):
            asg_name = "autoScalingGroup" + str(i)
            asg = self.template.add_resource(AutoScalingGroup(
                asg_name,
                DesiredCapacity=Ref(self.desired_capacity),
                HealthCheckType="EC2",
                LaunchConfigurationName=Ref(launch_config),
                MinSize=Ref(self.min_size),
                MaxSize=Ref(self.max_size),
                VPCZoneIdentifier=[Select(i, Ref(self.instance_subnets))],
                Tags=[
                    Tag("Name", Join("-", [Ref(self.resource_name),  Ref(self.env_tag), Ref(self.vpc_short_name), "pdx"]), True),
                    Tag("Name", "XXXX", True),
                    Tag("Service", Ref(self.service_tag), True),
                    Tag("Environment", Ref(self.env_tag), True),
                    Tag("Address", Ref(self.address_tag), True)
                ],

        NotificationConfigurations=[
            NotificationConfigurations(
                TopicARN=GetAtt(email_topic, "Arn"),
                NotificationTypes=[
                    'autoscaling:EC2_INSTANCE_LAUNCH',
                    'autoscaling:EC2_INSTANCE_LAUNCH_ERROR',
                    'autoscaling:EC2_INSTANCE_TERMINATE',
                    'autoscaling:EC2_INSTANCE_TERMINATE_ERROR',
                    ],
                ),
            ],
    ))

Я вытащил ARN темы и задал в качестве значения "TopicARN" NotificationConfigurations в ASG, но этот код не выводит шаблон CF. Я что-то здесь упускаю или есть лучший способ добиться этого?

Цените вашу помощь заранее!

Спасибо!

1 ответ

Вы должны позвонить to_json метод объекта шаблона. Если вы просто хотите распечатать его на экране, например, в вашем случае вы бы:

print self.template.to_json()

Или назовите это на самом созданном классе.

Другие вопросы по тегам