UNPKG

aws-delivlib

Version:

A fabulous library for defining continuous pipelines for building, testing and releasing code libraries.

85 lines 7.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateProperties = exports.RequestType = exports.Status = exports.sendResponse = exports.customResourceHandler = void 0; const https = require("https"); const url = require("url"); function customResourceHandler(handleEvent) { return async (event, context) => { try { console.log(`Input event: ${JSON.stringify(event)}`); const attributes = await handleEvent(event, context); console.log(`Attributes: ${JSON.stringify(attributes)}`); await exports.sendResponse(event, Status.SUCCESS, attributes.Ref, attributes); } catch (e) { console.error(e); await exports.sendResponse(event, Status.FAILED, event.PhysicalResourceId, {}, e.message); } }; } exports.customResourceHandler = customResourceHandler; function sendResponse(event, status, physicalResourceId = event.PhysicalResourceId || event.LogicalResourceId, data, reason) { const responseBody = JSON.stringify({ Data: data, LogicalResourceId: event.LogicalResourceId, PhysicalResourceId: physicalResourceId, Reason: reason, RequestId: event.RequestId, StackId: event.StackId, Status: status, }, null, 2); console.log(`Response body: ${responseBody}`); const parsedUrl = url.parse(event.ResponseURL); const options = { headers: { 'content-length': responseBody.length, 'content-type': '', }, hostname: parsedUrl.hostname, method: 'PUT', path: parsedUrl.path, port: parsedUrl.port || 443, }; return new Promise((ok, ko) => { console.log('Sending response...'); const req = https.request(options, resp => { console.log(`Received HTTP ${resp.statusCode} (${resp.statusMessage})`); if (resp.statusCode === 200) { return ok(); } ko(new Error(`Unexpected error sending resopnse to CloudFormation: HTTP ${resp.statusCode} (${resp.statusMessage})`)); }); req.once('error', ko); req.write(responseBody); req.end(); }); } exports.sendResponse = sendResponse; var Status; (function (Status) { Status["SUCCESS"] = "SUCCESS"; Status["FAILED"] = "FAILED"; })(Status = exports.Status || (exports.Status = {})); var RequestType; (function (RequestType) { RequestType["CREATE"] = "Create"; RequestType["UPDATE"] = "Update"; RequestType["DELETE"] = "Delete"; })(RequestType = exports.RequestType || (exports.RequestType = {})); function validateProperties(props, validProps) { validProps.ServiceToken = validProps.ServiceToken || false; validProps.ResourceVersion = validProps.ResourceVersion || false; for (const property of Object.keys(props)) { if (!(property in validProps)) { throw new Error(`Unexpected property: ${property}`); } } for (const property of Object.keys(validProps)) { if (validProps[property] && !(property in props)) { throw new Error(`Missing required property: ${property}`); } } return props; } exports.validateProperties = validateProperties; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2Nsb3VkLWZvcm1hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fY2xvdWQtZm9ybWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFhM0IsU0FBZ0IscUJBQXFCLENBQUMsV0FBNEI7SUFDaEUsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzlCLElBQUk7WUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFHckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXpELE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQy9FO1FBQUMsT0FBTyxDQUFNLEVBQUU7WUFFZixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRjtJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFsQkQsc0RBa0JDO0FBZ0JELFNBQWdCLFlBQVksQ0FBQyxLQUFZLEVBQ3ZDLE1BQWMsRUFDZCxxQkFBNkIsS0FBSyxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFDaEYsSUFBNEMsRUFDNUMsTUFBZTtJQUNmLE1BQU0s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