aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
2 lines (1 loc) • 1.36 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.handler=void 0;const client_route_53_1=require("@aws-sdk/client-route-53");async function handler(event){const resourceProps=event.ResourceProperties;if(event.RequestType!=="Create")return;const route53=new client_route_53_1.Route53,existingRecord=(await route53.listResourceRecordSets({HostedZoneId:resourceProps.HostedZoneId,StartRecordName:resourceProps.RecordName,StartRecordType:resourceProps.RecordType})).ResourceRecordSets?.find(r=>r.Name===resourceProps.RecordName&&r.Type===resourceProps.RecordType);if(!existingRecord)return;const changeResourceRecordSets=await route53.changeResourceRecordSets({HostedZoneId:resourceProps.HostedZoneId,ChangeBatch:{Changes:[{Action:"DELETE",ResourceRecordSet:removeUndefinedAndEmpty({Name:existingRecord.Name,Type:existingRecord.Type,TTL:existingRecord.TTL,AliasTarget:existingRecord.AliasTarget,ResourceRecords:existingRecord.ResourceRecords})}]}});return await(0,client_route_53_1.waitUntilResourceRecordSetsChanged)({client:route53,maxWaitTime:890},{Id:changeResourceRecordSets?.ChangeInfo?.Id}),{PhysicalResourceId:`${existingRecord.Name}-${existingRecord.Type}`}}exports.handler=handler;function removeUndefinedAndEmpty(obj){const ret={};for(const[k,v]of Object.entries(obj))v&&(!Array.isArray(v)||v.length!==0)&&(ret[k]=v);return ret}