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

问题描述 投票:0回答:2

在尝试了一下 Serverless 之后,我刚刚开始学习 AWS CDK。

Serverless 有一个组件来部署静态网站,它使用 S3 和 CloudFront。如果它找到一个同一域,它会更新现有的CloudFront发行版。这样做的原因大概是为了让您不必在设置 CloudFront 发行版时等待 40 分钟。我想不出任何其他原因,例如看起来费用是一样的。

那么如何在 CDK 中搜索并重用现有的 CloudFront 发行版?你真的应该创建一个新的吗?

amazon-web-services amazon-cloudfront serverless-framework serverless aws-cdk
2个回答
2
投票

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
投票
const distribution = Distribution.fromDistributionAttributes(scope, 'distribution', {
      distributionId: 'foo',
      domainName: 'bar.cloudfront.net'
    });

AWS 文档链接:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront-readme.html#importing-distributions

值得注意的是“导入的发行版无法修改”

© www.soinside.com 2019 - 2024. All rights reserved.