通过AWS CDK重用现有的CloudFront发行版

时间:2019-10-08 12:09:33

标签: amazon-web-services amazon-cloudfront serverless-framework serverless aws-cdk

在与Serverless一起玩了一段时间之后,我只是在学习AWS CDK。

无服务器具有deploy a static website的组件,该组件使用S3和CloudFront。如果finds one用于同一域,它将更新现有的CloudFront发行版。大概是这样做的原因是这样,您在设置CloudFront分发时不必等待40分钟。我想不出任何其他原因,例如费用似乎相同。

那么,您如何搜索和重用CDK中现有的CloudFront发行版?您实际上应该只创建一个新的吗?

2 个答案:

答案 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'
    });