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:
- Innestilte stakker - støtter ikke flere AWS-kontoer
- Kryss-stakk referanser - støtter ikke flere AWS-kontoer
- 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å?