在尝试了一下 Serverless 之后,我刚刚开始学习 AWS CDK。
Serverless 有一个组件来部署静态网站,它使用 S3 和 CloudFront。如果它找到一个同一域,它会更新现有的CloudFront发行版。这样做的原因大概是为了让您不必在设置 CloudFront 发行版时等待 40 分钟。我想不出任何其他原因,例如看起来费用是一样的。
那么如何在 CDK 中搜索并重用现有的 CloudFront 发行版?你真的应该创建一个新的吗?
AWS CDK 允许使用由 lambda 函数执行的自定义资源,这些函数运行 AWS 开发工具包操作并允许使用结果进行进一步处理。
这将允许以下方法搜索现有的 CF 分布(在
typescript
中)
const cloudFrontDistributions = new customResources.AwsCustomResource(this, 'cloud-front-distribution-list', {
onCreate: {
physicalResourceId: 'cloud-front-distribution-list',
service: 'CloudFront',
action: 'listDistributions',
}
});
const distributionList = JSON.parse(cloudFrontDistributions.getData('DistributionList'));
您可以使用打字稿搜索发行版。在其他 cdk 语言中也可以完成同样的操作。
应该可以使用与您提供的链接中相同的查找谓词:
const distribution = distributionList.Items.find((dist) =>
dist.Aliases.Items.includes(domain)
)
遗憾的是,目前似乎无法将发行版导入 AWS CDK,我将在 github 存储库上提出功能请求。一旦可以导入 CloudFront 发行版,我将尽快更新。
const distribution = Distribution.fromDistributionAttributes(scope, 'distribution', {
distributionId: 'foo',
domainName: 'bar.cloudfront.net'
});
值得注意的是“导入的发行版无法修改”