Совместное использование AMI для дополнительных учетных записей с использованием Terraform и источника данных aws_ami_ids
Я хочу использовать Terraform для обмена AMI между учетными записями в AWS. У меня есть следующий модуль;
data "aws_ami_ids" "wh_ami_ids" {
owners = "${var.owner_id}"
name_regex = "${var.name_regex}"
}
resource "aws_ami_launch_permission" "ami_shared" {
count = "${length(data.aws_ami_ids.wh_ami_ids.ids)}"
image_id = "${data.aws_ami_ids.wh_ami_ids.ids[count.index]}"
account_id = "${var.account_id}"
}
Проблема в том, что источник данных aws_ami_ids
возвращает ami_id
список в порядке убывания даты создания.
Так что, если вы добавили новый AMI, он, кажется, изменяет уже созданный aws_ami_launch_permissions
так как новый AMI вставляется в начало списка, меняя порядок.
Это может привести к возможным условиям гонки, если субсчет может не иметь доступа к AMI, пока ресурсы обновляются.
Похоже, не существует способа указания порядка сортировки источника данных, чтобы новые AMI всегда добавлялись в конце, что означало бы, что будут созданы только новые ресурсы.
Есть мысли о том, как обойти эту проблему?
1 ответ
Вы можете перебирать их в обратном порядке, используя вычисления внутри интерполяции:
resource "aws_ami_launch_permission" "ami_shared" {
count = "${length(data.aws_ami_ids.wh_ami_ids.ids)}"
image_id = "${data.aws_ami_ids.wh_ami_ids.ids[length(data.aws_ami_ids.wh_ami_ids.ids) - count.index - 1]}"
account_id = "${var.account_id}"
}