Как описано в заголовке, я пытаюсь создать несколько AWS EBS из общих снимков.
Я использую data "aws_ebs_snapshot_ids" , чтобы получить список снимков, а затем использовать for_each для создания томов EBS. Итак, что-то вроде этого
data "aws_ebs_snapshot_ids" "shared_snapshot_ids" {
filter {
name = "description"
values = ["snap-test*"]
}
}
resource "aws_ebs_volume" "shared_snapshot_volume" {
for_each = toset(data.aws_ebs_snapshot_ids.shared_snapshot_ids.ids)
snapshot_id = each.value
availability_zone = "us-west-1b"
Теперь я хочу пометить эти тома описанием моментального снимка, но data "aws_ebs_snapshot_ids не возвращает описание, просто список идентификаторов. Итак, у меня есть использовать data "aws_ebs_snapshot" с for_each l oop, чтобы получить описание, и он возвращает карту для снимков.
data "aws_ebs_snapshot" "shared_snapshot" {
for_each = toset(data.aws_ebs_snapshot_ids.shared_snapshot_ids.ids)
snapshot_ids = ["${each.value}"]
}
output "shared_snapshot" {
value = data.aws_ebs_snapshot.shared_snapshot
}
"snap-0000000000001" = {
"data_encryption_key_id" = ""
"description" = "snap-test-2"
"encrypted" = false
"id" = "snap-0000000000001"
"kms_key_id" = ""
"most_recent" = false
"owner_alias" = ""
"owner_id" = ""
"snapshot_id" = "snap-0000000000001"
"snapshot_ids" = [
"snap-0000000000001",
]
"state" = "completed"
"tags" = {}
"volume_id" = ""
"volume_size" = 100
}
"snap-0000000000000" = {
"data_encryption_key_id" = ""
"description" = "snap-test-1"
"encrypted" = false
"id" = "snap-0000000000000"
"kms_key_id" = ""
"most_recent" = false
"owner_alias" = ""
"owner_id" = ""
"snapshot_id" = "snap-0000000000000"
"snapshot_ids" = [
"snap-0000000000000",
]
"state" = "completed"
"tags" = {}
"volume_id" = "vol-0000000000000"
"volume_size" = 8
}
}
Дон Не знаю, как или если Terraform может сделать это, но я думаю, что это должно быть что-то вроде
resource "aws_ebs_volume" "shared_snapshot_volume" {
for_each = toset(data.aws_ebs_snapshot_ids.shared_snapshot_ids.ids)
snapshot_id = each.value
availability_zone = "us-west-1b"
tags = {
Name = data.aws_ebs_snapshot.shared_snapshot.[${each.value}].description
}
}
Это не работает, так как это вложенная интерполяция. Пожалуйста, дайте мне знать, если это возможно для Terraform или мне нужно использовать что-то еще.