You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CDK为Fargate配置固定自定义DNS名称?

为Fargate配置静态DNS名称(C# CDK)

问题背景

使用C# CDK部署Elastic Beanstalk时,只需设置CnamePrefix属性,就能得到如beanstalk-dev.ap-southeast-2.elasticbeanstalk.com的固定前缀域名,后续可将自定义域名指向它。但Fargate默认生成的负载均衡器域名带有随机后缀(如LB-71455902.ap-southeast-2.elb.amazonaws.com),无法直接设置固定前缀,需要额外配置实现静态DNS名称。

解决方案:通过Route53绑定自定义静态域名

AWS负载均衡器的原生域名无法自定义前缀,但可以通过Route53创建固定的自定义域名记录,指向Fargate的负载均衡器。无论堆栈创建/销毁多少次,这个自定义域名都保持不变,只需确保记录始终指向当前LB的域名即可。

步骤1:获取或创建Route53托管区域

如果已有自定义域名的Route53托管区域,直接通过域名查找复用;如果没有,先创建托管区域(需确保域名DNS服务器指向Route53)。

// 查找现有托管区域
var hostedZone = HostedZone.FromLookup(this, "MyCustomDomainZone", new HostedZoneLookupOptions
{
    DomainName = "your-custom-domain.com" // 替换为你的域名
});

// 若需新建托管区域(可选)
// var hostedZone = new HostedZone(this, "NewHostedZone", new HostedZoneProps
// {
//     ZoneName = "your-custom-domain.com"
// });

步骤2:为Fargate LB创建固定的别名记录

推荐使用别名记录(A/AAAA),因为它是AWS原生的记录类型,免费且能自动同步LB的IP变化,比CNAME更可靠。

// 为Fargate负载均衡器创建A类型别名记录
new ARecord(this, "FargateStaticDnsRecord", new ARecordProps
{
    Zone = hostedZone,
    RecordName = "fargate-dev.your-custom-domain.com", // 自定义的静态域名
    Target = RecordTarget.FromAlias(new LoadBalancerTarget(fargate.LoadBalancer))
});

备选:使用CNAME记录(不推荐)

如果无法使用别名记录(比如托管区域不在Route53),可以创建CNAME记录指向LB的原生域名:

new CnameRecord(this, "FargateStaticCnameRecord", new CnameRecordProps
{
    Zone = hostedZone,
    RecordName = "fargate-dev.your-custom-domain.com",
    DomainName = fargate.LoadBalancer.DnsName
});

额外说明

  • 若无需自定义域名,仅需类似EB的AWS前缀域名,这种需求无法直接实现——Fargate的LB原生域名由AWS自动生成,带有随机标识符,无法自定义前缀。
  • 如果使用第三方域名服务商,只需将第三方域名的DNS记录(A/CNAME)指向上述Route53的自定义域名,或者直接指向Fargate LB的原生域名(但LB重建后需手动更新记录)。

内容的提问来源于stack exchange,提问作者user1419778

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:20:40