【问题标题】:Terraform: How to copy files from s3 to ec2Terraform:如何将文件从 s3 复制到 ec2
【发布时间】:2021-03-23 04:18:54
【问题描述】:

我有一个 terraform 配置,它创建了一个 autoscaling group 和一个 launch configuration 以及一个 s3 bucket 并使用多个文件填充存储桶。

考虑到 s3 bucket 的名称在创建后才会知道,有没有办法将文件从 s3 bucket 复制到 ec2 instance?

ec2 instance 有一个具有正确权限的iam profile。我的绊脚石是直到创建时间才知道存储桶名称,所以我不确定我是否通过user_data 完成此操作

【问题讨论】:

    标签: amazon-s3 amazon-ec2 terraform user-data terraform0.12+


    【解决方案1】:

    您可以尝试在depends_on aws_instance 资源中指定存储桶资源。

    resource "aws_instance" "instance" {
      ...
      user_data = <<-EOT
        BUCKET_URL=${aws_s3_bucket.bucket_domain_name}
        s3 cp s3://$BUCKET_NAME/ ./ --recursive
      EOT
    }
    

    如果我错了就打我,但我认为this link 会有所帮助

    【讨论】:

      【解决方案2】:

      你的 terraform 脚本应该是这样的

      provider "aws" {
        region = "us-east-1"
      }
      
      resource "aws_s3_bucket" "myBucket" {
        bucket = "${var.my_bucket_name}"
        acl    = "private"
      
        tags = {
          Name        = "My bucket"
          Environment = "Dev"
        }
      }
      
      data "template_file" "user_data" {
        template = "${file("${path.module}/templates/user_data.sh")}"
      
        vars = {
            aws_s3_bucket = "${var.my_bucket_name}"
        }
      }
      
      resource "aws_launch_configuration" "launch" {
        name_prefix          = "my-launch-config"
        image_id             = "${var.aws_ami}"
        instance_type        = "${var.instance_type}"
        security_groups      = ["${aws_security_group.instance.id}"]
        user_data            = "${data.template_file.user_data.rendered}"
        iam_instance_profile = "${aws_iam_instance_profile.ecs.name}"
      
        lifecycle {
          create_before_destroy = true
        }
      
        depends_on = ["aws_s3_bucket.myBucket"]
      }
      
      ==========================
      
      templates/user_data.sh
      
      ==========================
      
      #!/bin/bash
      
      s3 cp s3://${aws_s3_bucket}/ ./ --recursive
      

      【讨论】:

        猜你喜欢
        • 2020-09-04
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 2020-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多