Amazon ec2 无法通过Terraform异步启动EC2实例

Amazon ec2 无法通过Terraform异步启动EC2实例,amazon-ec2,terraform,user-data,infrastructure-as-code,Amazon Ec2,Terraform,User Data,Infrastructure As Code,我愿意通过Terraform启动两个实例。第一个将生成一些证书文件,推送到S3 bucket。第二个实例将从特定的S3存储桶中提取这些证书。这两个操作都将由用户数据处理。这里的问题是第二个实例的用户数据中的pull命令(aws cli)不起作用。(当我尝试使用shell时,它正在工作)我认为问题在于terraform同步启动两个实例,以便在第一个实例将证书推送到S3之前启动第二个实例 我还试图通过在代码中添加“dependens_-on”来处理这个问题,但没有成功。我正在寻找一种异步启动实例的方

我愿意通过Terraform启动两个实例。第一个将生成一些证书文件,推送到S3 bucket。第二个实例将从特定的S3存储桶中提取这些证书。这两个操作都将由用户数据处理。这里的问题是第二个实例的用户数据中的pull命令(aws cli)不起作用。(当我尝试使用shell时,它正在工作)我认为问题在于terraform同步启动两个实例,以便在第一个实例将证书推送到S3之前启动第二个实例

我还试图通过在代码中添加“dependens_-on”来处理这个问题,但没有成功。我正在寻找一种异步启动实例的方法。第二个实例将在30秒后启动,然后第一个实例将启动。这里我粘贴代码的相关部分

data "template_file" "first_executor" {
  template = file("some_path/first_executor.sh")
}

resource "aws_instance" "first_instance" {
  ami = data.aws_ami.amazon-linux-2.id
  instance_type = "t2.micro"
  user_data = data.template_file.first_executor.rendered
  network_interface {
    device_index = 0
    network_interface_id = aws_network_interface.first_instance-network-interface.id
  }
}

###

data "template_file" "second_executor" {
  template = file("some_path/second_executor.sh")
}

resource "aws_instance" "second_instance" {
  depends_on = [aws_instance.first_instance]
  ami = data.aws_ami.amazon-linux-2.id
  instance_type = "t2.micro"
  user_data = data.template_file.second_executor.rendered
  network_interface {
    device_index = 0
    network_interface_id = aws_network_interface.second-network-interface.id
  }
}
答案是否定的。Terraform中的“依赖”意味着它将等待资源可用。这意味着,一旦触发第一个EC2,就会创建第二个EC2

Terraform不会等到您的第一个EC2处于“运行”状态或者用户数据被执行

我建议先打开depdens_,然后在第二个EC2用户数据脚本中添加一些逻辑来创建一个循环,该循环将查找S3并等待并重复,直到找到资源