如何使用 Terraform 使 AWS CloudFront 分发缓存失效?

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

我正在寻找一种使用 Terraform 使 CloudFront 分发缓存失效的方法。

我在docs中找不到任何信息。

这可能吗?如果可以,如何实现?

amazon-web-services terraform amazon-cloudfront terraform-provider-aws
2个回答
16
投票

aws_cloudfront_distribution
aws_cloudfront_cache_policy
资源中没有对缓存失效的内置支持。

作为最后的手段,可以使用

local_exec
配置器。


根据我的经验,通常会使用 AWS CLI

create-invalidation
命令使 CI/CD 管道中的缓存失效。

但是,如果必须在 Terraform 中完成此操作,则可以在创建/更新资源后使用

local-exec
配置程序在运行 Terraform 的本地计算机上运行命令。

我们可以使用它来运行上述 CLI 失效命令以使分发缓存失效。

使用

self
对象访问 CloudFront 分配的所有属性,包括
self.id
来引用用于失效的 CloudFront 分配 ID


示例:

resource "aws_cloudfront_distribution" "s3_distribution" {
  # ...

  provisioner "local-exec" {
    command = "aws cloudfront create-invalidation --distribution-id ${self.id} --paths '...'"
  }
}

0
投票

这是清除cloudfronts缓存的示例。每次执行 terraform apply 时都会运行该命令。

resource "null_resource" "run_command" {
  # Optional: define triggers to ensure this command runs
  # when certain conditions change, for example:
  triggers = {
    run_id = timestamp()
  }

  provisioner "local-exec" {
    command = "aws cloudfront create-invalidation --distribution-id ${aws_cloudfront_distribution.frontend_distribution.id} --paths '/*'"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.