我有以下配置文件:
environment/main.tf:
resource "aws_vpc_peering_connection" "sb_vpc_peering" {
vpc_id = var.vpc_id
peer_vpc_id = var.peer_vpc_id
peer_region = var.peer_region
#Other vars
}
resource "aws_vpc_peering_connection_accepter" "sb_vpc_peering_accepter" {
vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id
auto_accept = true
}
resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id
accepter {
allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
}
requester {
allow_remote_vpc_dns_resolution = var.requester_dns_resolution
}
}这里的问题是resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options"中的最后一个块:
accepter {
allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
}
requester {
allow_remote_vpc_dns_resolution = var.requester_dns_resolution
}这将导致以下错误:
Error: error modifying VPC Peering Connection (pcx-084fe8578b2935b6a) Options: OperationNotPermitted: Peering pcx-084fe8578b2935b6a is not active. Peering options can be added only to active peerings.
status code: 400, request id: 2aa0a163-e9db-4c55-aee5-4f7ffbbf8b9f
on ../../../aws/vpc/peering-connection-accepter/main.tf line 15, in resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options":
15: resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {如果我给它几分钟时间,然后再次运行terraform apply,它就会工作,因为VPC已经有了激活的时间。
最初,我在aws_vpc_peering_connection资源本身中使用了DNS解析位,但是同样的错误发生了,所以我像这样将它们分开,但这并没有解决问题。
在应用这些选项之前,我是否需要某种程度的睡眠?
发布于 2020-05-01 13:17:57
弄明白了!问题是,在aws_vpc_peering_connection_options中设置的DNS设置在对等连接激活(已批准)之前无法设置。它只依赖于现有的aws_vpc_peering_connection,因此在aws_vpc_peering_connection_accepter之前或同时运行。
在aws_vpc_peering_connection_options中,这只是通过从aws_vpc_peering_connection_accepter而不是aws_vpc_peering_connection获取vpc_peering_connection_id来修正的,因此terraform依赖树将自动以正确的顺序进行依赖工作。
在此之前:
resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id
accepter {
allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
}
requester {
allow_remote_vpc_dns_resolution = var.requester_dns_resolution
}
}之后:
resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
vpc_peering_connection_id = aws_vpc_peering_connection_accepter.sb_vpc_peering_accepter.id
accepter {
allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
}
requester {
allow_remote_vpc_dns_resolution = var.requester_dns_resolution
}
}https://devops.stackexchange.com/questions/11476
复制相似问题