E Laptop verbënnt sech mam Client VPN-Endpunkt, an terraform apply schléit nach ëmmer op enger Route-Ressource fehl. D'Konfiguratioun huet meeschtens méi Zil-CIDRen wéi associéiert Subnetten, an de Routeblock wielt en Zil mat engem Index. Dat geet dovun aus, datt déi zwou Sammlungen parallel sinn. Si sinn et net, an de Feeler trëtt bei der Uwendung op an net bei der Iwwerpréiwung.

Nennt den Objet, dee fehlschléit

Dräi Ressourcen sinn involvéiert an all ee beäntwert eng aner Fro. D'Associatioun setzt d'Netzwierkinterfacë vum Endpunkt an e Subnet. D'Route seet, wéi ee Zilprefix un en Zilsubnet geliwwert gëtt. D'Autorisatiounsregel seet, wéi eng Benotzer wéi ee Prefix erreeche kënnen. Eng Route, déi op e Subnet weist, deen ni associéiert gouf, schléit fehl och wann béid Objeten existéieren, well d'Zil zu dësem Endpunkt gehéiere muss.

Lëscht d'Associatiounen als éischt op: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.

Denkt un déi lokal Route vum VPC

Déi éischt Associatioun füügt eng lokal Route fir de ganze VPC derbäi, sou datt all Subnet an deem VPC schonn ouni Route-Ressource erreechbar ass. Zousätzlech Route ginn et fir peered VPCen, Transit Gateway-Uschlëss an on-premises Prefixen, déi de VPC net besëtzt. Dofir kann en Endpunkt mat dräi Associatiounen legitim siwe Zilanträg droen.

Zielt d'Ziler baussent dem VPC, ier Dir Route bäifüügt. Wann dës Zuel manner ass wéi d'CIDR-Lëscht, beschreift d'Lëscht Subnetten, déi guer keng Route brauchen.

Ersetzt den Index duerch eng Kaart

Den Index an en Modulo-Operateur ze wéckelen, berouegt de Feeler a behält de Modelléierungsfeeler. En Zil, dat iwwer dat gewielten Zil net erreechbar ass, dréit nach ëmmer keen Traffic, egal wéi propper de Plang ugewannt gëtt. Späichert amplaz d'Relatioun, a loosst Terraform se préiwen, ier eppes erstallt gëtt. De Block hei drënner ass illustrativ a benotzt d'Endpunkt-Route-Argumenter vum Provider.

variable "client_vpn_destinations" {
  description = "Destination CIDR mapped to an associated subnet key"
  type        = map(string)
}

resource "aws_ec2_client_vpn_route" "this" {
  for_each               = var.client_vpn_destinations
  client_vpn_endpoint_id = aws_ec2_client_vpn_endpoint.this.id
  destination_cidr_block = each.key
  target_vpc_subnet_id   = aws_subnet.private[each.value].id

  lifecycle {
    precondition {
      condition     = contains(keys(aws_subnet.private), each.value)
      error_message = "Route target must be a subnet key in the associated map."
    }
  }
}

Wa d'Kaart nieft der Associatiounslëscht steet, erzwéngt d'Bäifüüge vun engem Zil eng Entscheedung, wéi ee Subnet et dréit. Dat ass d'Gespréich, dat den Index verstoppt huet.

En anere Feeler produzéiert onsënnlech Wäerter amplaz en Indexfeeler. Eng Konstruktioun op niddregerem Niveau do ze ginn, wou eng Interfacë op méi héijem Niveau erwaart gëtt, léisst d'Felder, déi d'API liest, onausgefëllt, an de resultéierende CIDR ass onbrauchbar. Terraform weist déi selwescht Form, wann eng Zeechenketten ukommt, wou en Objet erwaart gëtt. Préift de Schema vum Provider fir den Argumenttyp.

Beweist et vun engem Client

Frot terraform validate an e Plang géint de richtege Zustand aus, ier Dir uwenden. Vergläicht duerno d'Zilnetzwierklëscht vum Endpunkt mat der Kaart amplaz engem erfolgreichen apply ze vertrauen.

Den Akzeptanztest ass en ugeschlossene Client, deen all virgesi Prefix erreecht.

D'Autorisatiounsregel ass de Punkt, wou vill Konfiguratiounen fréi ophalen. Si ass op en Zil-CIDR an eng Grupp limitéiert, an eng Route ouni entspriechend Autorisatioun produzéiert en ugeschlossene Client, deen de Prefix net erreecht. Préift béid Objeten fir all Prefix, well en apply, deen d'Route erstellt an d'Regel vergësst, komplett ausgesäit. Testt mat engem Benotzer bannent der Grupp an engem dobaussen.

Wann ee Prefix fehlschléit, vergläicht säin Route-Antrag mat der Autorisatiounsregel. Eng fehlend Autorisatioun an eng fehlend Route gesinn am Client-Log ähnlech aus a ginn a verschiddene Ressourcen verbessert.

Ähnlech Artikelen