【发布时间】:2020-06-05 05:55:19
【问题描述】:
我有以下将一堆文件上传到 AWS S3 的 terraform 脚本
resource "aws_s3_bucket_object" "website_files" {
for_each = fileset(var.client_upload_directory, "**/*.*")
bucket = aws_s3_bucket.ada-website.bucket
key = replace(each.value, var.client_upload_directory, "")
source = "${var.client_upload_directory}${each.value}"
}
有没有办法在上传之前将文件内容中的一个字符串替换为另一个字符串?我确实尝试过使用content 而不是source - 类似这样的
resource "aws_s3_bucket_object" "website_files" {
for_each = fileset(var.client_upload_directory, "**/*.*")
bucket = aws_s3_bucket.ada-website.bucket
key = replace(each.value, var.client_upload_directory, "")
content = replace(file("${var.client_upload_directory}${each.value}"), "string 1", "string 2"))
}
但缺点是 - plan 或 apply 显示整个文件的内容 - 这可能非常大。理想情况下,此替换应仅应用于集合中的一个文件,其余文件应按原样上传,并跳过该文件。
【问题讨论】:
标签: amazon-web-services amazon-s3 terraform terraform-provider-aws