UNPKG

cdk-demo-construct

Version:
55 lines 6.38 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"); /** * @stability stable */ class AlarmInstance extends cdk.Construct { /** * @stability stable */ constructor(scope, id, props) { var _b; 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 = (_b = props.topic) !== null && _b !== void 0 ? _b : 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.6" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsOERBQThEO0FBQzlELHdDQUF3QztBQUN4Qyx3Q0FBd0M7QUFDeEMscUNBQXFDOzs7O0FBU3JDLE1BQWEsYUFBYyxTQUFRLEdBQUcsQ0FBQyxTQUFTOzs7O0lBRzlDLFlBQVksS0FBb0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7O1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNqRCxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQzlDLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEcsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNwQyxTQUFTLEVBQUUsU0FBUztZQUNwQixVQUFVLEVBQUUsZ0JBQWdCO1lBQzVCLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtTQUN4RCxDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNoRCxnQkFBZ0IsRUFBRSxvQkFBb0I7WUFDdEMsTUFBTSxFQUFFLE9BQU87WUFDZixTQUFTLEVBQUUsRUFBRTtZQUNiLGlCQUFpQixFQUFFLENBQUM7U0FDckIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssU0FBRyxLQUFLLENBQUMsS0FBSyxtQ0FBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNwQixLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLEtBQUssRUFBRSxFQUFFO29CQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFFBQVEsRUFBRSxHQUFHLENBQUMsb0JBQW9CLENBQUMsS0FBSztvQkFDeEMsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBckNILHNDQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3Vkd2F0Y2ggZnJvbSAnQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0ICogYXMgY3dfYWN0aW9ucyBmcm9tICdAYXdzLWNkay9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdAYXdzLWNkay9hd3MtZWMyJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdAYXdzLWNkay9hd3Mtc25zJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdAYXdzLWNkay9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGFybUluc3RhbmNlUHJvcHMge1xuICByZWFkb25seSB1c2VyRGF0YT86IGVjMi5Vc2VyRGF0YTtcbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgcmVhZG9ubHkgdG9waWM/OiBzbnMuVG9waWM7XG4gIHJlYWRvbmx5IG5vdGlmeU1haWw/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFsYXJtSW5zdGFuY2UgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcbiAgcHVibGljIGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHB1YmxpYyB0b3BpYzogc25zLlRvcGljO1xuICBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsYXJtSW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBlYzIuSW5zdGFuY2UodGhpcywgJ0luc3RhbmNlJywge1xuICAgICAgaW5zdGFuY2VOYW1lOiB0aGlzLm5vZGUuaWQsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKCd0My5taWNybycpLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoeyBnZW5lcmF0aW9uOiBlYzIuQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yIH0pLFxuICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhLFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXRyaWNzID0gbmV3IGNsb3Vkd2F0Y2guTWV0cmljKHtcbiAgICAgIG5hbWVzcGFjZTogJ0FXUy9FQzInLFxuICAgICAgbWV0cmljTmFtZTogJ0NQVVV0aWxpemF0aW9uJyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgSW5zdGFuY2VJZDogdGhpcy5pbnN0YW5jZS5pbnN0YW5jZUlkIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBhbGFybSA9IG5ldyBjbG91ZHdhdGNoLkFsYXJtKHRoaXMsICdBbGFybScsIHtcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246ICdBbGFybSBmb3IgaW5zdGFuY2UnLFxuICAgICAgbWV0cmljOiBtZXRyaWNzLFxuICAgICAgdGhyZXNob2xkOiA1MCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgIH0pO1xuXG4gICAgdGhpcy50b3BpYyA9IHByb3BzLnRvcGljID8/IG5ldyBzbnMuVG9waWModGhpcywgJ1RvcGljJyk7XG4gICAgYWxhcm0uYWRkQWxhcm1BY3Rpb24obmV3IGN3X2FjdGlvbnMuU25zQWN0aW9uKHRoaXMudG9waWMpKTtcbiAgICBpZiAocHJvcHMubm90aWZ5TWFpbCkge1xuICAgICAgcHJvcHMubm90aWZ5TWFpbC5mb3JFYWNoKChtYWlsLCBpbmRleCkgPT4ge1xuICAgICAgICBuZXcgc25zLlN1YnNjcmlwdGlvbih0aGlzLCBgQWxhcm1TbnMke2luZGV4fWAsIHtcbiAgICAgICAgICB0b3BpYzogdGhpcy50b3BpYyxcbiAgICAgICAgICBwcm90b2NvbDogc25zLlN1YnNjcmlwdGlvblByb3RvY29sLkVNQUlMLFxuICAgICAgICAgIGVuZHBvaW50OiBtYWlsLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSJdfQ==