Auto-Scaling グループと、それを AWS でサポートするために必要なすべてのインフラストラクチャをプロビジョニングする Terraform モジュールがあります。通常、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:elasticloadbalancing:us-east-1:199344973012:loadbalancer/app/rafa-lizzie-alb/ccbf16e255c2f904' は有効なロード バランサー ARN ステータス コードではありません: 400、リクエスト ID: 8b28f0d8-2ec2-11e9- 896a-4ffb7ae94bb8
リージョンを変更することはあまり一般的ではないことは承知していますが、いずれにしても発生する可能性がありますよね? これが Terraform の予想される動作なのか、それともバグなのかについても知りたいです。