aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
3 lines (2 loc) • 1.49 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.handler=exports.invoke=void 0;const AWS=require("aws-sdk");exports.invoke=async functionName=>{const lambda=new AWS.Lambda,invokeRequest={FunctionName:functionName};console.log({invokeRequest});let retryCount=0;const delay=5e3;let invokeResponse;for(;;)try{invokeResponse=await lambda.invoke(invokeRequest).promise();break}catch(error){if(error instanceof Error&&error.code==="AccessDeniedException"&&retryCount<12){retryCount++,await new Promise(resolve=>{setTimeout(resolve,delay)});continue}throw error}return console.log({invokeResponse}),invokeResponse};async function handler(event){if(console.log({...event,ResponseURL:"..."}),event.RequestType==="Delete"){console.log("not calling trigger on DELETE");return}const handlerArn=event.ResourceProperties.HandlerArn;if(!handlerArn)throw new Error('The "HandlerArn" property is required');const invokeResponse=await exports.invoke(handlerArn);if(invokeResponse.StatusCode!==200)throw new Error(`Trigger handler failed with status code ${invokeResponse.StatusCode}`);if(invokeResponse.FunctionError)throw new Error(parseError(invokeResponse.Payload?.toString()))}exports.handler=handler;function parseError(payload){if(console.log(`Error payload: ${payload}`),!payload)return"unknown handler error";try{const error=JSON.parse(payload),concat=[error.errorMessage,error.trace].filter(x=>x).join(`
`);return concat.length>0?concat:payload}catch{return payload}}