UNPKG

mira

Version:

NearForm Accelerator for Cloud Native Serverless AWS

68 lines (58 loc) 1.67 kB
/** * IMPORTANT: do not use external packages here that are not bundled */ import https from 'https' interface SendResponseOptions { status: string requestId: string stackId: string reason: string logicalResourceId: string physicalResourceId: string data: object } /** * See the AWS documentation for more information on what needs to be contained in the * response of a custom resource. * * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-responses.html */ export const sendResponse = async ( responseUrl: string, options: SendResponseOptions ): Promise<void> => { const body = { Status: options.status, Reason: options.reason, PhysicalResourceId: options.physicalResourceId, StackId: options.stackId, RequestId: options.requestId, LogicalResourceId: options.logicalResourceId, Data: options.data } const responseBody = Buffer.from(JSON.stringify(body)) return new Promise((resolve, reject) => { let error: Error const req = https.request( responseUrl, { method: 'PUT', headers: { 'content-type': '', 'content-length': responseBody.byteLength } }, (res) => // eslint-disable-next-line @typescript-eslint/no-empty-function res.on('data', () => {}) ) req.once('error', (err) => (error = err)) req.once('close', () => (error ? reject(error) : resolve())) req.write(responseBody) req.end() }) // await fetch.put(options.responseUrl, responseBody, { // data: responseBody, // headers: { 'content-type': '', 'content-length': responseBody.length } // }) }