将EBS快照从一个区域复制到另一区域

时间:2018-11-04 07:44:31

标签: amazon-web-services terraform terraform-provider-aws aws-ebs

我想将我的EBS快照从一个区域复制到另一个区域。但是,在过滤快照ID时,它将返回名为1411205605的ID,但我希望它返回的内容类似于:snap -.....

这是我的代码:

data "aws_ebs_snapshot_ids" "ebs_volumes" {

  filter {
    name   = "tag:Name"
    values = ["EBS1_snapshot"]
  }

  filter {
    name   = "volume-size"
    values = ["2"]
  }
}

output "ebs_snapshot_ids"{
    value = ["${data.aws_ebs_snapshot_ids.ebs_volumes.ids}"]
}


resource "aws_ebs_snapshot_copy" "example_copy" {
  source_snapshot_id = "${data.aws_ebs_snapshot_ids.ebs_volumes.id}"
  source_region      = "ap-southeast-1"

  tags {
    Name = "aaa_copy_snap"
  }

}

运行Terraform Apply时的输出为:

  

aws_ebs_snapshot_copy.example_copy:InvalidParameterValue:值   (1411205605)参数快照ID无效。预期:   “快点...”。状态码:400,请求ID:   bd577049-8b4e-45bc-8415-59e22b4d26d5

我不知道我在哪里犯了错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是因为“数据源:aws_ebs_snapshot_ids” 返回属性“ ids” ,该属性设置为EBS快照ID列表,按创建时间降序排列

现在您可以假设“ ID” 包含一个快照ID,因为您使用名称作为过滤器。因此,如下所示更改代码以检索该ID。

source_snapshot_id = "${data.aws_ebs_snapshot_ids.ebs_volumes.ids.0}"

此处使用的“ 0”是从ID列表中检索第一个元素。就您而言,这是唯一的要素。