aws-delivlib
Version:
A fabulous library for defining continuous pipelines for building, testing and releasing code libraries.
85 lines • 7.2 kB
JavaScript
;
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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