Загрузка файлов из S3 с использованием terraform локально - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь загрузить файлы из s3 корзины на сервер, на котором я работаю terraform, возможно ли это? я попробовал приведенный ниже код

data "aws_s3_bucket_objects" "my_objects" {
  bucket = "examplebucket"
}

data "aws_s3_bucket_object" "object_info" {
  key    = "${element(data.aws_s3_bucket_objects.my_objects.keys, count.index)}"
  bucket = "${data.aws_s3_bucket_objects.my_objects.bucket}"

}
provisioner "local-exec" {
    content = "${data.aws_s3_bucket_object.object_info.body}"
 }

Когда я запускаю terraform plan я получаю сообщение об ошибке ниже

Error: Unsupported block type

  on s3.tf line 11:
  11: provisioner "local-exec" {

Blocks of type "provisioner" are not expected here.

Я что-то здесь упускаю? Буду признателен за любую помощь в этом.

1 Ответ

3 голосов
/ 30 апреля 2020

Просто воспользуйтесь local провайдером

data "aws_s3_bucket_objects" "my_objects" {
  bucket = "examplebucket"
  //prefix = "your_prefix"
}    

data "aws_s3_bucket_object" "object_info" {
  count  = "${length(data.aws_s3_bucket_objects.my_objects.keys)}"
  key    = "${element(data.aws_s3_bucket_objects.my_objects.keys, count.index)}"
  bucket = "${data.aws_s3_bucket_objects.my_objects.bucket}"

}

resource "local_file" "foo" {
    count    = "${length(data.aws_s3_bucket_objects.my_objects.keys)}"
    content  = "${data.aws_s3_bucket_object.object_info[count.index].body}"
    filename = "/path/to/file-${count.index}"
}

PS: убедитесь, что ваши объекты имеют читабельный Content-Type, body поле доступно только для таких объектов.

...