All files / lib/dns cross-account-zone-delegation-record.ts

100% Statements 9/9
50% Branches 2/4
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 473x 3x                           3x     1x   1x 1x       1x 1x           1x                            
import * as core from "@aws-cdk/core";
import {CrossAccountZoneDelegationRecordProvider} from "./cross-account-zone-delegation-record-provider";
 
export interface CrossAccountZoneDelegationRecordProps {
    targetAccount?: string;
    targetRoleToAssume?: string;
    targetHostedZoneId?: string;
    recordName: string;
    toDelegateNameServers: string[];
    currentAccountId: string;
}
 
/**
 * Create a NS zone delegation record in the target account
 */
export class CrossAccountZoneDelegationRecord extends core.Construct {
 
    constructor(scope: core. Construct, id: string, props: CrossAccountZoneDelegationRecordProps) {
        super(scope, id);
 
        const { targetAccount, targetRoleToAssume } = props;
        const roleArnToAssume = targetAccount && targetRoleToAssume ? 
        `arn:aws:iam::${targetAccount}:role/${targetRoleToAssume}`
        :undefined;
 
        const stack = core.Stack.of(this);
        const crossAccountZoneDelegationRecordProvider = new CrossAccountZoneDelegationRecordProvider(
            stack,
            'CrossAccountZoneDelegationRecordProvider',
            roleArnToAssume,
        );
 
        new core.CustomResource(
            this,
            `CrossAccountZoneDelegationRecord-${props.recordName}`,
            {
                serviceToken: crossAccountZoneDelegationRecordProvider.provider.serviceToken,
                resourceType: "Custom::CrossAccountZoneDelegationRecord",
                properties: {
                    ...props
                },
            }
        );
 
    }
}