Ich möchte eine EC2-Instanz auf einem privaten VPC einrichten. Er kann sich von der privaten VPC aus mit dem Internet verbinden, kann jedoch nicht von außen darauf zugreifen. Und es gibt eine Lambda-Funktion, die den EC2 veranlasst, einige Interaktionen mit externen Ressourcen (S3, Dynamo, Internet) zu initiieren.AWS Lambda Verbindung zu internen ELB mit privaten Hostzone DNS
Ich habe eine VPC wie folgend aufgebaut:
- einer EC2 Instanz läuft Andockfensters in einem privaten VPC Subnetzes
- Ein ALB (Anwendungslast-Balancer) konfiguriert, wie interne und in privaten Subnetzen (das gleiche wie das EC2-Subnetz)
- ein NAT-Gateway, die
- eine Lambda-Funktion arbeitet, die mit dem Internet und ALB ein Rekord, dass die Route „HTTPs GET und POST tun
- Route53 Privat Hostzone hat abc d.internal/api "an den ALB.
Hier ist das Problem. Die Lambda-Funktion kann mit HTTPs eine Verbindung zum Internet herstellen, aber wenn es nicht gelingt, HTTPs GET zum ALB mit dem privaten Hostzone-Datensatz ("abcd.internal").
Mein Verständnis ist meine ALB, EC2, Lambda, NAT-Gateway und Route53 sind in der gleichen VPC konfiguriert, sollten sie in der Lage sein miteinander mit dem privaten DNS-Namen zu sprechen. Ich weiß nicht, warum es scheitert.
Hinweis: Bevor Sie einen internen ALB einrichten, habe ich versucht, einen Internet-gerichteten ALB in einem öffentlichen Subnetz einzurichten und dann einen öffentlichen Hostzone-Datensatz "abcd.public" für diesen ALB zu konfigurieren. Es kann mit der EC2-Instanz kommunizieren und die EC2-Instanz kann über das NAT-Gateway mit dem Internet interagieren. Also funktioniert der "EC2 to Internet" -Teil.
Update: ich endlich einige Fehlermeldungen in Lambda log graben wie folgt:
Fehler: Hostname/IP nicht mit Zertifikat des altnames: „Host:. Abcd.internal ist nicht in der altnames des cert: DNS : .public "] Grund: 'Host: abcd.internal. ist nicht in den Altnamen des Zertifikats: DNS:. public ', host:' abcd.internal. ',
Das ist interessant. Ich habe eine öffentliche Hostzone mit der privaten Hostzone koexistieren, aber die öffentliche Hostzone ist für andere Zwecke. Ich weiß nicht, warum die Lambda-Funktion das öffentliche DNS anstatt das private DNS verwendet, da es in einem privaten Subnetz konfiguriert wurde.
Die Lambda-Funktion ist so konfiguriert, dass sie in einem privaten Subnetz der VPC mit einer Route zum NAT-Gateway läuft? –
Sie können einen Datensatz für 'abcd.internal/api' nicht konfigurieren und erwarten, dass er etwas unternimmt. DNS funktioniert nicht so. Pfade werden nicht auf DNS-Ebene behandelt. –
@MarkB Ja, und ich habe bestätigt, dass es eine Verbindung zum Internet herstellen kann. – flyblade