本地使用 terraform 从 S3 下载文件

doc*_*oob 3 amazon-s3 terraform terraform-provider-aws

我正在尝试将文件从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}"
 }
Run Code Online (Sandbox Code Playgroud)

当我运行时terraform plan出现以下错误

Error: Unsupported block type

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

Blocks of type "provisioner" are not expected here.
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?对此的任何帮助将不胜感激。

dmk*_*kvl 5

只需使用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}"
}
Run Code Online (Sandbox Code Playgroud)

PS:确保您的对象具有人类可读的Content-Type,该body字段仅适用于此类对象。