ec2-spot-notification
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.3 • Public • Published

    EC2 Spot Instance Termination Notifier

    AWS EC2 Spot Instance Termination Notices for NodeJs

    NPM version Downloads Dependency Status

    Installation

    Install with npm:

    npm install --save ec2-spot-notification

    Example

    import {SpotNotifier as spot} from "ec2-spot-notification";
     
    spot.once("termination", date => {
        console.log("termination", date);
    });
    spot.once("termination-cancelled", date => {
        console.log("termination-cancelled", date);
    });
    spot.on("termination-not-detected", error => {
        console.log("termination-not-detected", error);
    });
     
    spot.instanceId()
        .then(id => {
            console.log("instanceId", id);
            spot.start();
        })
        .catch(err => {
            console.error("instanceId", err);
        });

    Production usage

    var SpotNotifier = require("ec2-spot-notification").SpotNotifier;
    var aws = require("aws-sdk");
     
    var instanceId = null;
    var elb = new aws.ELB();
     
    SpotNotifier.on("termination", function (date) {
        console.log("Aws termination detected", date.toString());
     
        elb.deregisterInstancesFromLoadBalancer({
            Instances: [{InstanceId: instanceId}],
            LoadBalancerName: "Nutcracker"
        }, function (err, data) {
            if (err)
                console.error("deregisterInstancesFromLoadBalancer", err);
            else {
                console.log("deregisterInstancesFromLoadBalancer", data);
                SpotNotifier.stop();
            }
        });
     
    });
    SpotNotifier.on("termination-cancelled", function (date) {
        console.log("Aws termination cancelled for %s, restarting notifier", date.toString());
     
        SpotNotifier.start();
        elb.registerInstancesWithLoadBalancer({
            Instances: [{InstanceId: instanceId}],
            LoadBalancerName: "Nutcracker"
        }, function (err, data) {
            if (err)
                console.error("deregisterInstancesFromLoadBalancer", err);
            else {
                console.log("deregisterInstancesFromLoadBalancer", data);
            }
        });
     
    });
    SpotNotifier.instanceId()
        .then(function (iId) {
            console.log("Aws Spot Notification instanceId", iId);
            instanceId = iId;
            SpotNotifier.start();
        })
        .catch(function (err) {
            console.error("Aws Spot Notification instanceId", err);
        });

    Test

    ubuntu@ip-172-31-2-186:~/ec2-spot-notification$ npm run test-server
    instanceId i-05858013e
    termination-not-detected 404
    termination-not-detected 404
    termination-not-detected 404
    termination-not-detected 404
    termination moment("2017-02-08T12:49:14.000")
     
    Broadcast message from root@ip-172-31-2-186
        (unknown) at 12:49 ...
     

    Contributors

    We welcome contributions of all kinds from anyone.

    My boss wants a license. So where is it?

    MIT License

    Install

    npm i ec2-spot-notification

    DownloadsWeekly Downloads

    1,948

    Version

    2.0.3

    License

    MIT

    Last publish

    Collaborators

    • brend