如何使用AWS CDK为现有CloudFront分发添加自定义域名别名
现有CloudFront分发添加自定义域名操作步骤
- 首先注意:通过
Distribution.fromDistributionAttributes导入的分发属于只读引用,无法直接通过L2Distribution类修改属性,你需要直接使用L1层CfnDistribution资源关联现有分发并更新配置 - 第二步:补充CDK代码配置别名和证书,示例如下:
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront'; // 你已有的导入逻辑 const distribution = cloudfront.Distribution.fromDistributionAttributes(this, 'ImportedDist', { domainName: 'd111111abcdef8.cloudfront.net', distributionId: '012345ABCDEF', }); const domainName = 'mysite.example.com'; const certificateArn = 'arn:aws:acm:us-east-1:123456789012:certificate/abcdefgh-1234-5678-9012-abcdefghujkl'; // 实例化CfnDistribution关联现有分发,更新配置 const cfnDistribution = new cloudfront.CfnDistribution(this, 'ModifyExistingDist', { distributionConfig: { // 保留原有分发的全量配置,此处仅列需要新增/修改的字段,原有字段不要遗漏 enabled: true, defaultCacheBehavior: { // 原样填写你原有分发的默认缓存行为配置,必须和现有配置一致 targetOriginId: '你的原有源站ID', viewerProtocolPolicy: 'redirect-to-https', allowedMethods: { quantity: 2, items: ['GET', 'HEAD'], cachedMethods: { quantity: 2, items: ['GET', 'HEAD'], } } }, origins: { quantity: 1, items: [ // 原样填写你原有分发的源站配置,必须和现有配置一致 { id: '你的原有源站ID', domainName: '你的源站域名', customOriginConfig: { httpPort: 80, httpsPort: 443, originProtocolPolicy: 'https-only', } } ] }, // 新增自定义域名配置 aliases: { quantity: 1, items: [domainName] }, viewerCertificate: { acmCertificateArn: certificateArn, sslSupportMethod: 'sni-only', minimumProtocolVersion: 'TLSv1.2_2021' } }, // 指定要修改的现有分发ID id: distribution.distributionId });
如果你不知道原有分发的完整配置,可以登录AWS CloudFront控制台查看现有分发的配置参数,原样填充到上述代码的对应位置,避免误改不需要调整的配置。
- 第三步:执行
cdk deploy提交栈变更,AWS会自动更新对应CloudFront分发的配置,变更全局生效通常需要5~10分钟。 - 第四步:配置域名解析
- 如果你的域名托管在Route53:添加A/AAAA类型的别名记录,记录值选择对应的CloudFront分发资源即可
- 如果域名托管在其他服务商:添加CNAME记录,主机记录为
mysite,记录值填写你的CloudFront分发域名dxxxxxx.cloudfront.net
注意事项:
- 关联的ACM证书必须位于us-east-1区域,且证书的使用者备用名称(SAN)已包含
mysite.example.com,证书状态为已签发- 如果你需要添加多个自定义域名,只需要在
aliases.items数组中补充对应的域名即可,同时确保证书覆盖所有添加的域名
内容的提问来源于stack exchange,提问作者Petra Barus
相关产品推荐
相关产品推荐

