AWS Load Balancer - изменить регион (с помощью Terraform) - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть модуль 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, или это ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...