如何使用 AWS CDK 将域别名添加到现有 CloudFront 分配
Posted
技术标签:
【中文标题】如何使用 AWS CDK 将域别名添加到现有 CloudFront 分配【英文标题】:How to add domain alias to existing CloudFront distribution using AWS CDK 【发布时间】:2022-01-09 16:49:19 【问题描述】:我刚刚从 AWS 解决方案部署了 CloudFormation 解决方案。这些解决方案包括一个新的 CloudFront 发行版。我的挑战是我想将自定义域 mysite.example.com
添加到 dxxxxxx.cloudfront.net
分发中。我已经使用证书管理器创建了别名和证书。我的问题是如何将新域添加到现有 CloudFront。
我知道我们可以使用 Distribution.fromDistributionAttributes 导入现有发行版。
例如
const distribution = cloudfront.Distribution.fromDistributionAttributes(this, 'ImportedDist',
domainName: 'd111111abcdef8.cloudfront.net',
distributionId: '012345ABCDEF',
);
假设我已经准备好使用别名域名和证书 ARN。
const domainName = 'mysite.example.com';
const certificateArn = 'arn:aws:acm:us-east-1: 123456789012:certificate/abcdefgh-1234-5678-9012-abcdefghujkl';
我从这里去哪里?
【问题讨论】:
【参考方案1】:通过更新您的“AWS 解决方案”CDK 应用程序来添加您的域和证书。 CDK 应用程序旨在修改和重新部署。
Distribution construct 接受 certificate?:ICertificate
和 domainNames?: string[]
作为构造函数的道具。
实例还暴露了一个addBehavior(pathPattern, origin, behaviorOptions?)
,看起来很方便。
如果应用正在生产中,请注意更新有时会导致 resource replacement or interruption。
CloudFormation docs 记录每个服务属性的更新行为。在快乐的情况下,您将看到Update requires: No interruption
。运行cdk diff
命令预览更改
CloudFormation 将利用您的资源。
cloudfront.Distribution.fromDistributionAttributes
呢? 许多 CDK 类都有 static from...
方法
获取对现有 AWS 资源的引用。这些方法在应用程序之间共享资源时很方便(甚至是必要的),但仅应在您无法修改原始 CDK 结构时使用。
【讨论】:
以上是关于如何使用 AWS CDK 将域别名添加到现有 CloudFront 分配的主要内容,如果未能解决你的问题,请参考以下文章
如何将生命周期策略添加到 AWS CDK Typescript 中的现有 S3 存储桶