cdk-demo-construct
Version:
A sample L3 CDK project
55 lines • 6.38 kB
JavaScript
;
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==