UNPKG

cdk-demo-construct

Version:
48 lines 6.25 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlarmInstance = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cloudwatch = require("@aws-cdk/aws-cloudwatch"); const cw_actions = require("@aws-cdk/aws-cloudwatch-actions"); const ec2 = require("@aws-cdk/aws-ec2"); const sns = require("@aws-cdk/aws-sns"); const cdk = require("@aws-cdk/core"); class AlarmInstance extends cdk.Construct { constructor(scope, id, props) { super(scope, id); this.instance = new ec2.Instance(this, 'Instance', { instanceName: this.node.id, instanceType: new ec2.InstanceType('t3.micro'), machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2 }), userData: props.userData, vpc: props.vpc, }); const metrics = new cloudwatch.Metric({ namespace: 'AWS/EC2', metricName: 'CPUUtilization', dimensionsMap: { InstanceId: this.instance.instanceId }, }); const alarm = new cloudwatch.Alarm(this, 'Alarm', { alarmDescription: 'Alarm for instance', metric: metrics, threshold: 50, evaluationPeriods: 1, }); this.topic = props.topic ?? new sns.Topic(this, 'Topic'); alarm.addAlarmAction(new cw_actions.SnsAction(this.topic)); if (props.notifyMail) { props.notifyMail.forEach((mail, index) => { new sns.Subscription(this, `AlarmSns${index}`, { topic: this.topic, protocol: sns.SubscriptionProtocol.EMAIL, endpoint: mail, }); }); } } } exports.AlarmInstance = AlarmInstance; _a = JSII_RTTI_SYMBOL_1; AlarmInstance[_a] = { fqn: "cdk-demo-construct.AlarmInstance", version: "0.0.311" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsOERBQThEO0FBQzlELHdDQUF3QztBQUN4Qyx3Q0FBd0M7QUFDeEMscUNBQXFDO0FBU3JDLE1BQWEsYUFBYyxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBRzlDLFlBQVksS0FBb0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUIsWUFBWSxFQUFFLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDOUMsWUFBWSxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoRyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3BDLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxnQkFBZ0I7WUFDNUIsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQ2hELGdCQUFnQixFQUFFLG9CQUFvQjtZQUN0QyxNQUFNLEVBQUUsT0FBTztZQUNmLFNBQVMsRUFBRSxFQUFFO1lBQ2IsaUJBQWlCLEVBQUUsQ0FBQztTQUNyQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDcEIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLEVBQUUsRUFBRTtvQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixRQUFRLEVBQUUsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEtBQUs7b0JBQ3hDLFFBQVEsRUFBRSxJQUFJO2lCQUNmLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztBQXJDSCxzQ0FzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ0Bhd3MtY2RrL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGN3X2FjdGlvbnMgZnJvbSAnQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnQGF3cy1jZGsvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnQGF3cy1jZGsvYXdzLXNucyc7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxhcm1JbnN0YW5jZVByb3BzIHtcbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBlYzIuVXNlckRhdGE7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG4gIHJlYWRvbmx5IHRvcGljPzogc25zLlRvcGljO1xuICByZWFkb25seSBub3RpZnlNYWlsPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBBbGFybUluc3RhbmNlIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyBpbnN0YW5jZTogZWMyLkluc3RhbmNlO1xuICBwdWJsaWMgdG9waWM6IHNucy5Ub3BpYztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGFybUluc3RhbmNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsICdJbnN0YW5jZScsIHtcbiAgICAgIGluc3RhbmNlTmFtZTogdGhpcy5ub2RlLmlkLFxuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZSgndDMubWljcm8nKSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IGVjMi5BbWF6b25MaW51eEltYWdlKHsgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMiB9KSxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YSxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWV0cmljcyA9IG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvRUMyJyxcbiAgICAgIG1ldHJpY05hbWU6ICdDUFVVdGlsaXphdGlvbicsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IEluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2UuaW5zdGFuY2VJZCB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBhbGFybURlc2NyaXB0aW9uOiAnQWxhcm0gZm9yIGluc3RhbmNlJyxcbiAgICAgIG1ldHJpYzogbWV0cmljcyxcbiAgICAgIHRocmVzaG9sZDogNTAsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICB9KTtcblxuICAgIHRoaXMudG9waWMgPSBwcm9wcy50b3BpYyA/PyBuZXcgc25zLlRvcGljKHRoaXMsICdUb3BpYycpO1xuICAgIGFsYXJtLmFkZEFsYXJtQWN0aW9uKG5ldyBjd19hY3Rpb25zLlNuc0FjdGlvbih0aGlzLnRvcGljKSk7XG4gICAgaWYgKHByb3BzLm5vdGlmeU1haWwpIHtcbiAgICAgIHByb3BzLm5vdGlmeU1haWwuZm9yRWFjaCgobWFpbCwgaW5kZXgpID0+IHtcbiAgICAgICAgbmV3IHNucy5TdWJzY3JpcHRpb24odGhpcywgYEFsYXJtU25zJHtpbmRleH1gLCB7XG4gICAgICAgICAgdG9waWM6IHRoaXMudG9waWMsXG4gICAgICAgICAgcHJvdG9jb2w6IHNucy5TdWJzY3JpcHRpb25Qcm90b2NvbC5FTUFJTCxcbiAgICAgICAgICBlbmRwb2ludDogbWFpbCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0iXX0=