У меня есть модуль Terraform, который предоставляет группу автоматического масштабирования и всю необходимую инфраструктуру для ее поддержки в AWS.Обычно Terraform довольно хорошо обнаруживает изменения в коде инфраструктуры.Однако сегодня я заметил, что , если Terraform управляет балансировщиком нагрузки, изменение региона приведет к ошибке.
Я создал минимальный пример для воспроизведения ошибки (этопример требует действительного профиля AWS)
# =========================================================================================
# PROVIDER
provider "aws" {
region = "${var.aws-region}"
profile = "${var.aws-profile}"
}
# =========================================================================================
# VARIABLES
variable "aws-region" {
description = "The AWS region"
type = "string"
default = "eu-west-3"
}
variable "aws-profile" {
description = "The name of the AWS shared credentials account."
type = "string"
}
# =========================================================================================
# LOAD BALANCER
resource "aws_lb" "alb" {
name = "load-balancer"
internal = false
load_balancer_type = "application"
enable_deletion_protection = false
subnets = ["${aws_subnet.subnet-1.id}", "${aws_subnet.subnet-2.id}"]
}
# =========================================================================================
# NETWORKING
resource "aws_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
}
resource "aws_subnet" "subnet-1" {
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "10.0.0.0/24"
availability_zone = "${var.aws-region}a"
}
resource "aws_subnet" "subnet-2" {
vpc_id = "${aws_vpc.vpc.id}"
cidr_block = "10.0.1.0/24"
availability_zone = "${var.aws-region}b"
}
resource "aws_internet_gateway" "ig" {
vpc_id = "${aws_vpc.vpc.id}"
}
Чтобы повторить ошибку:
- 1) запустите
terraform init; terraform apply
- 2) измените регион
- 3) повторите шаг 1), что приведет к ошибке
Ошибка выглядит следующим образом:
Ошибка: состояние обновления ошибки: 1 ошибка (и)произошло:
* module.asg-local.aws_lb.alb: 1 произошла ошибка:
* module.asg-local.aws_lb.alb: aws_lb.alb: ошибка при получении ALB:
ValidationError:
'arn: aws: эластичная балансировка нагрузки: us-east-1: 199344973012: loadbalancer / app / rafa-lizzie-alb / ccbf16e255c2f904' не является допустимым балансировщиком нагрузки Код состояния ARN: 400, идентификатор запроса: 8b28f0d8-2ec2-11e9-896a-4ffb7ae94bb8
Я знаю, что не очень нормально менять регионы, но в любом случае это может произойти, верно?Я также хотел бы знать, является ли это ожидаемым поведением от Terraform, или это ошибка.