You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform实现AWS CloudFront分发的缓存失效?

结论

可以实现,你在CloudFront分发的文档中没有找到相关说明是因为缓存失效是独立的资源,没有和分发配置写在同一文档下,目前有两种常用实现方式:

方案1:使用原生aws_cloudfront_invalidation资源(推荐)

这是AWS Provider官方提供的独立资源,适用于绝大多数场景,配置示例如下:

resource "aws_cloudfront_distribution" "example" {
  # 此处保留你原有CloudFront分发的全部配置
}

resource "aws_cloudfront_invalidation" "cache_purge" {
  distribution_id = aws_cloudfront_distribution.example.id
  paths = [
    "/*", # 失效所有路径,也可指定具体路径比如/static/*、/index.html
  ]

  # 可选配置:添加后每次执行terraform apply都会自动触发一次失效,不需要可移除
  triggers = {
    run_timestamp = timestamp()
  }
}

参数说明:

  • distribution_id 关联你要操作的CloudFront分发ID
  • paths 填写需要失效的缓存路径,支持通配符*

方案2:通过local-exec预置器调用AWS CLI实现(灵活自定义场景用)

如果需要搭配自定义触发逻辑(比如仅在分发配置更新后触发、仅在资源销毁时触发等),可以用该方案,配置示例如下:

resource "aws_cloudfront_distribution" "example" {
  # 此处保留你原有CloudFront分发的全部配置

  provisioner "local-exec" {
    command = "aws cloudfront create-invalidation --distribution-id ${self.id} --paths '/*'"
    # 可添加when = destroy等参数自定义触发时机
  }
}

注意:该方案需要执行Terraform的环境已经安装并配置好AWS CLI,且凭证拥有CloudFront失效操作的相关权限。

注意事项

  • CloudFront每月提供1000条免费失效路径额度,超出部分会产生额外费用,建议按需指定失效路径,避免直接全量失效产生不必要的成本
  • 缓存失效任务全局生效通常需要5~15分钟
  • 你也可以通过depends_on参数配置失效任务和其他资源的依赖关系,精准控制触发时机

内容的提问来源于stack exchange,提问作者Kavin404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:36:04