Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在上传到S3之前替换文件中的字符串_Amazon Web Services_Amazon S3_Terraform_Terraform Provider Aws - Fatal编程技术网

Amazon web services 在上传到S3之前替换文件中的字符串

Amazon web services 在上传到S3之前替换文件中的字符串,amazon-web-services,amazon-s3,terraform,terraform-provider-aws,Amazon Web Services,Amazon S3,Terraform,Terraform Provider Aws,我有下面的terraform脚本,它将一堆文件上传到AWSS3 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_upl

我有下面的terraform脚本,它将一堆文件上传到AWSS3

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}"
}
在上传之前,是否有办法将文件内容中的一个字符串替换为另一个字符串?我确实尝试过使用
内容
而不是
源代码
——类似这样的东西

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
显示整个文件的内容,这可能相当大。理想情况下,此替换应仅应用于集合中的一个文件,其余文件应按原样上载,并跳过该文件。

我最终通过shell脚本在terraform之外执行此操作