exports.handler = function()

in aws_emr_blog_v2/code/amilookup-win/amilookup-win.js [18:71]


exports.handler = function(event, context) {
 
    console.log("REQUEST RECEIVED:\n" + JSON.stringify(event));
    
    // For Delete requests, immediately send a SUCCESS response.
    if (event.RequestType == "Delete") {
        sendResponse(event, context, "SUCCESS");
        return;
    }
 
    var responseStatus = "FAILED";
    var responseData = {};
    var osBaseName = osNameToPattern[event.ResourceProperties.OSName];
    
    console.log("OS: " + event.ResourceProperties.OSName + " -> " + osBaseName);
    
    var ec2 = new aws.EC2({region: event.ResourceProperties.Region});
    var describeImagesParams = {
        Filters: [{ Name: "name", Values: [osBaseName]}],
        Owners: ["amazon"]
    };
 
    console.log( "Calling describeImages...");
    
    // Get the available AMIs for the specified Windows version.
    ec2.describeImages(describeImagesParams, function(err, describeImagesResult) {
        if (err) {
            responseData = {Error: "DescribeImages call failed"};
            console.log(responseData.Error + ":\n", err);
        }
        else {
            console.log( "Got a response back from the server");
            
            var images = describeImagesResult.Images;

            console.log( "Got " + images.length + " images back" );
            
    		// Sort the images by descending creation date order so the
	    	// most recent image is first in the array.
		    images.sort(function(x,y){
			    return x.CreationDate < y.CreationDate;
		    });
		    
            for (var imageIndex = 0; imageIndex < images.length; imageIndex++) {
                responseStatus = "SUCCESS";
                responseData["Id"] = images[imageIndex].ImageId;
                responseData["Name"] = images[imageIndex].Name;
                console.log( "Found: " + images[imageIndex].Name + ", " + images[imageIndex].ImageId);
                break;
            }
        }
        sendResponse(event, context, responseStatus, responseData);
    });
};