UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 1.91 kB
"use strict";var a=Object.defineProperty,f=Object.getOwnPropertyDescriptor,Z=Object.getOwnPropertyNames,N=Object.prototype.hasOwnProperty,P=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},h=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Z(e))!N.call(t,n)&&n!==r&&a(t,n,{get:()=>e[n],enumerable:!(o=f(e,n))||o.enumerable});return t},E=t=>h(a({},"__esModule",{value:!0}),t),T={};P(T,{handler:()=>D}),module.exports=E(T);var c=require("@aws-sdk/client-route-53"),u=require("@aws-sdk/credential-providers");async function D(t){let e=t.ResourceProperties;switch(t.RequestType){case"Create":return s(e,!1);case"Update":return w(e,t.OldResourceProperties);case"Delete":return s(e,!0)}}async function w(t,e){e&&t.DelegatedZoneName!==e.DelegatedZoneName&&await s(e,!0),await s(t,!1)}async function s(t,e){let{AssumeRoleArn:r,ParentZoneId:o,ParentZoneName:n,DelegatedZoneName:d,DelegatedZoneNameServers:m,TTL:g}=t;if(!o&&!n)throw Error("One of ParentZoneId or ParentZoneName must be specified");let l=new Date().getTime(),i=new c.Route53({credentials:(0,u.fromTemporaryCredentials)({clientConfig:{region:S(process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION??"")},params:{RoleArn:r,RoleSessionName:`cross-account-zone-delegation-${l}`}})}),R=o??await A(n,i);await i.changeResourceRecordSets({HostedZoneId:R,ChangeBatch:{Changes:[{Action:e?"DELETE":"UPSERT",ResourceRecordSet:{Name:d,Type:"NS",TTL:g,ResourceRecords:m.map(p=>({Value:p}))}}]}})}async function A(t,e){let o=(await e.listHostedZonesByName({DNSName:t})).HostedZones?.filter(n=>n.Name===`${t}.`)??[];if(o&&o.length!==1)throw Error(`Expected one hosted zone to match the given name but found ${o.length}`);return o[0].Id}function S(t){let e={cn:"cn-northwest-1","us-gov":"us-gov-west-1","us-iso":"us-iso-east-1","us-isob":"us-isob-east-1"};for(let[r,o]of Object.entries(e))if(t.startsWith(`${r}-`))return o;return"us-east-1"}