in source/aws-bootstrap-kit/lib/dns/delegation-record-handler/index.ts [128:196]
export async function onEventHandler(event: any): Promise<OnEventResponse> {
console.log("Event: %j", event);
const {
targetAccount,
targetRoleToAssume,
targetHostedZoneId,
toDelegateNameServers,
recordName,
currentAccountId
} = event.ResourceProperties;
const roleArn =
targetAccount && targetRoleToAssume
? `arn:aws:iam::${targetAccount}:role/${targetRoleToAssume}`
: await resolveRoleArn(recordName, currentAccountId);
const roleSessionName = event.LogicalResourceId.substr(0, 64);
const route53 = await assumeRoleAndGetRoute53Client(
roleArn,
roleSessionName
);
const _targetHostedZoneId = targetHostedZoneId?targetHostedZoneId:await resolveParentHostedZoneId(route53, recordName);
console.log("roleArn = ", roleArn);
console.log("targetHostedZoneId = ", _targetHostedZoneId);
console.log("toDelegateNameServers = ", toDelegateNameServers);
console.log("recordName = ", recordName);
const baseChangeRecordProps = {
route53,
targetHostedZoneId: _targetHostedZoneId,
recordName,
toDelegateNameServers,
};
switch (event.RequestType) {
case "Create":
await changeRecord({
...baseChangeRecordProps,
changeAction: Route53ChangeAction.UPSERT,
});
break;
case "Update":
await changeRecord({
...baseChangeRecordProps,
changeAction: Route53ChangeAction.DELETE,
});
await changeRecord({
...baseChangeRecordProps,
changeAction: Route53ChangeAction.UPSERT,
});
break;
case "Delete":
// Delete an existing one
await changeRecord({
...baseChangeRecordProps,
changeAction: Route53ChangeAction.DELETE,
});
}
let physicalResourceId = `cross-account-record-${targetAccount?targetAccount:roleArn.split(':')[4]}-${recordName}`;
return {
PhysicalResourceId: physicalResourceId,
};
}