在与Serverless一起玩了一段时间之后,我只是在学习AWS CDK。
无服务器具有deploy a static website的组件,该组件使用S3和CloudFront。如果finds one用于同一域,它将更新现有的CloudFront发行版。大概是这样做的原因是这样,您在设置CloudFront分发时不必等待40分钟。我想不出任何其他原因,例如费用似乎相同。
那么,您如何搜索和重用CDK中现有的CloudFront发行版?您实际上应该只创建一个新的吗?
答案 0 :(得分:1)
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发行版。
答案 1 :(得分:0)
const distribution = Distribution.fromDistributionAttributes(scope, 'distribution', {
distributionId: 'foo',
domainName: 'bar.cloudfront.net'
});