From a3e281bd87c218ba038e6c0a03fe2ef41cb25168 Mon Sep 17 00:00:00 2001 From: Nicholas Chitty Date: Tue, 19 Mar 2024 21:59:40 -0400 Subject: [PATCH] Create alias record in route53 --- cdk/lib/application-layer.ts | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cdk/lib/application-layer.ts b/cdk/lib/application-layer.ts index 62b4be3..16390ba 100644 --- a/cdk/lib/application-layer.ts +++ b/cdk/lib/application-layer.ts @@ -7,7 +7,13 @@ import path = require('path'); import { TableV2 } from 'aws-cdk-lib/aws-dynamodb'; import { Certificate, CertificateValidation } from 'aws-cdk-lib/aws-certificatemanager'; import { Role } from 'aws-cdk-lib/aws-iam'; -import { CrossAccountZoneDelegationRecord, PublicHostedZone } from 'aws-cdk-lib/aws-route53'; +import { + ARecord, + CrossAccountZoneDelegationRecord, + PublicHostedZone, + RecordTarget, +} from 'aws-cdk-lib/aws-route53'; +import { ApiGateway } from 'aws-cdk-lib/aws-route53-targets'; export interface ApplicationLayerStackProps extends StackProps { readonly delegationRole: Role; @@ -65,19 +71,24 @@ export default class ApplicationLayerStack extends Stack { delegationRole: props.delegationRole, }); - const api = new LambdaRestApi(this, 'MealPlannerApi', { - handler, - proxy: true, - }); - const domainName = 'api.'.concat(props.domain); const certificate = new Certificate(this, 'ApiDomainCertificate', { domainName, validation: CertificateValidation.fromDns(hostedZone), }); - api.addDomainName('ApiDomain', { - domainName, - certificate, + const api = new LambdaRestApi(this, 'MealPlannerApi', { + handler, + proxy: true, + domainName: { + domainName, + certificate, + }, + }); + + new ARecord(this, 'ApiAliasRecord', { + zone: hostedZone, + recordName: 'api', + target: RecordTarget.fromAlias(new ApiGateway(api)), }); } }