【发布时间】:2019-07-11 03:36:32
【问题描述】:
我想为所有 gp2 类型的 EBS 卷创建快照。我有以下代码:
data "aws_ebs_volume" "ebs_volumes" {
filter {
name = "volume-type"
values = ["gp2"]
}
}
resource "aws_ebs_snapshot" "ebs_snapshot" {
count = "${length(data.aws_ebs_volume.ebs_volumes.ids)}"
volume_id = "${element(data.ebs_volume.ebs_volumes.ids, count.index)}"
}
相反,我收到以下错误:
terraform plan
Error: resource 'aws_ebs_snapshot.ebs_snapshot' config: unknown resource 'data.ebs_volume.ebs_volumes' referenced in variable data.ebs_volume.ebs_volumes.ids
由于我使用的是数据源,data.aws_ebs_volume 返回的列表是动态的,而不是Create snapshots of multiple EBS volumes using Terraform 中讨论的静态variable。
使用terraform show:
data.aws_ebs_volume.ebs_volumes:
id = vol-00b3eaaf04b9377cb
arn = arn:aws:ec2:us-east-1:ACCOUNT_ID:volume/vol-00b3eaaf04b9377cb
availability_zone = us-east-1c
encrypted = false
filter.# = 1
filter.3737401200.name = volume-type
filter.3737401200.values.# = 1
filter.3737401200.values.0 = gp2
iops = 100
kms_key_id =
most_recent = false
size = 8
snapshot_id = snap-01d81204beb02804b
tags.% = 0
volume_id = vol-00b3eaaf04b9377cb
volume_type = gp2
【问题讨论】:
-
您是否有理由希望直接使用 Terraform 执行此操作,而不是使用 AWS Backup 或 AWS 的 Data Lifecycle Manager?
-
嗨。是的。 Lifecycle 仅每 12/24 小时拍摄一次快照。我正在编写一个可以使用 TF 的测试,并且对玩 TF 很感兴趣。感谢您的提问!
-
您是否可以扩展您的问题以包括您将针对每个卷执行的操作(例如,您将如何过滤要快照的卷?)即使您必须静态地执行它然后解释你希望如何动态地做到这一点?
-
@ydaetskcoR 你好。我编辑了我的问题,不确定这是否更明确。由于有数百台机器,我需要按需计算 EBS 卷列表。
-
值得一提的是,DLM 现在支持每 2 小时运行一次快照:aws.amazon.com/about-aws/whats-new/2019/02/…
标签: amazon-web-services terraform