aws_cloudfront_distribution
或aws_cloudfront_cache_policy
资源中没有对缓存失效的内置支持。
作为最后的手段,可以使用
local_exec
配置器。
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 '...'"
}
}
这是清除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 '/*'"
}
}