首页 > 解决方案 > 如何使用 Terraform 将文件夹/文件从 Git 存储库上传到 S3 存储桶?

问题描述

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

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

}

标签: bashterraformterraform-provider-awsterraform0.12+

解决方案


不幸的是,GitHub Terraform 提供程序没有提供任何数据源来获取存储库中的文件列表或检索单个文件。

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

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


推荐阅读