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

Kav*_*404 9 amazon-web-services amazon-cloudfront terraform terraform-provider-aws

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

我在文档中找不到任何信息。

这可能吗?如果可能的话,如何实现?

Erm*_*ary 12

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

作为最后的手段,local_exec可以使用配置器。


根据我的经验,通常情况下,缓存会使用 AWS CLIcreate-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 '...'"
  }
}
Run Code Online (Sandbox Code Playgroud)