typescript - AWS CDK opprett Route 53-alias i en annen AWS-konto


Det finnes mange eksempler på å lage statiske nettsteder ved bruk av CDK som distribueres til samme AWS-konto: https://github.com/aws-samples/aws-cdk-examples/blob/master/typescript/static-site/static-site.ts https://github.com/awslabs/aws-solutions-constructs/blob/master/source/use_cases/aws-s3-static-website/lib/s3-static-site-stack.ts

Jeg må imidlertid distribuere S3-bøtten/CloudFront-distribusjonen til den første kontoen, og distribuere Route53-aliaset i en annen konto.

Alternativer prøvd:

  1. Innestilte stakker - støtter ikke flere AWS-kontoer
  2. Kryss-stakk referanser - støtter ikke flere AWS-kontoer
  3. Separate stakker - Trenger en måte å lage en Route 53-alias ved å bruke en hardkodet CloudFront-URL. Eksempel nedenfor

Nettsted.ts

const staticStack = new StaticStack(app, 'StaticStack', {
  env: {
    account: '0123456789',
    region: 'us-east-1',
  }
});

const domainStack = new DomainStack(app, 'DomainStack', {
  env: {
    account: '987654321',
    region: 'us-east-1',
  },
  domainName: 'mydomain.com',
  recordName: 'dev.mydomain.com',
  dnsName: 'https://abcdefghijklmn.cloudfront.net',
});

StaticStack.ts

export class StaticStack extends cdk.Stack {
  public readonly target: RecordTarget;

  constructor(scope: cdk.Construct, id: string, props: WebsiteStackProps) {
    super(scope, id, props);

    const construct = new CloudFrontToS3(this, 'CloudFrontToS3');
  }
}

DomainStack.ts

export class DomainStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props: DomainStackProps) {
    super(scope, id, props);

    const zone = HostedZone.fromLookup(this, 'HostedZone', {
      domainName: props.domainName,
      privateZone: false
    });

    new AaaaRecord(this, 'AaaaRecord', {
      recordName: props.recordName,
      target: RecordTarget.fromAlias({
        bind: (): AliasRecordTargetConfig => ({
          dnsName: props.dnsName,
          hostedZoneId: zone.hostedZoneId,
        }),
      }),
      zone: zone,
    });
  }
}

Har ikke klart å få dette til å fungere, hva er den beste måten å gjøre dette på?