如何使用 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?:ICertificatedomainNames?: 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 存储桶

与现有代码管道一起使用的 AWS CDK 管道

如何将现有资源从不同的 AWS 账户导入 AWS CDK

Letsencrypt将域添加到现有证书[关闭]

在将 aws cdk 与 appsync 一起使用时,如何将突变添加到 graphql 架构并防止部署失败?

通过 API 将域添加到 AWS Cloudfront 分发