Why do the CDK APIGWV2/Route53 docs say generate an A record rather than CNAME?


Why in the example from @aws-cdk-aws-route53-targets does the apigwv2 sample generate an A record rather than a CNAME record?

/* Example from @aws-cdk-aws-route53-targets, doesn't work - makes CDK hang */
import * as apigwv2 from '@aws-cdk/aws-apigatewayv2';

declare const zone: route53.HostedZone;
declare const domainName: apigwv2.DomainName;

new route53.ARecord(this, 'AliasRecord', {
    target: route53.RecordTarget.fromAlias(
        new targets.ApiGatewayv2DomainProperties(domainName.regionalDomainName, domainName.regionalHostedZoneId)

What I have always done (manually) is create a CNAME record to the API Gateway domain name listed under API Gateway / Custom Domain names in the console. I am not following this example or why you would want it to be an ARecord.

I changed the above code to this for my own and it seems to work:

/* my version, which works */
return new CnameRecord(this, `autofrog-phone-api-cname`, {
    recordName: 'phone',
    zone: this.zone,
    domainName: this.apiGatewayDomainName.regionalDomainName, /* instance of @aws-cdk/aws-apigatewayv2-alpha:IDomain */
    deleteExisting: false,
    comment: "added by cdk"
1 Answer
Accepted Answer

I didn't know what an Alias record was until a few minutes ago.

Now I understand what they were doing.

profile picture
answered a year ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions