【问题标题】:How to upload folders/files from Git repositories to S3 bucket with Terraform?如何使用 Terraform 将文件夹/文件从 Git 存储库上传到 S3 存储桶?
【发布时间】:2021-09-04 05:26:43
【问题描述】:

主要关注的是如何创建到这些文件夹的映射,因为文件夹和 terraform 模块位于不同的存储库中。

resource "aws_s3_bucket_object "upload" {
  bucket = "bucketname"
  key = "how_to_procede"
  source = "how_to_procede"

}

【问题讨论】:

  • 您必须提供更多详细信息和一些示例,说明您到底想做什么以及问题所在。

标签: bash terraform terraform-provider-aws terraform0.12+


【解决方案1】:

很遗憾,GitHub Terraform provider 不提供任何数据源来获取存储库中的文件列表或检索单个文件。

因此,如果存储库是私有的,唯一可行的方法是将存储库克隆到运行 Terraform 的机器上,然后使用 fileset 函数获取存储库中的文件列表,然后使用该列表在aws_s3_bucket_object 资源上的for_each 中上传每个文件。您需要在外部 shell 命令中进行克隆;您可以使用诸如this one 之类的模块来完成此操作。

如果存储库是公开的,并且您提前知道要将哪些文件发送到 S3,那么您可以使用 HTTP provider 从其 GitHub URL 下载文件,解析响应正文以提取文件内容,然后在aws_s3_bucket_object 资源的content 字段中指定这些内容。

【讨论】:

  • 谢谢。你说的对。这就是我们最终实现的。
  • 很高兴你把它整理好了。如果问题得到解决,您可以接受将问题标记为已关闭的答案。另外,警告说明:如果存储库中有很多(超过几百个)文件,请谨慎使用 aws_s3_bucket_object 资源。 Terraform 将单独刷新每一个的状态,这会大大减慢计划/应用的速度。考虑使用我建议通过 shell 从 AWS CLI 使用 s3 sync 的相同模块。
  • 感谢您的建议!如果文件数量会增加,很高兴知道将来。
猜你喜欢
  • 1970-01-01
  • 2018-02-16
  • 2019-09-14
  • 2022-08-17
  • 2018-02-07
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多