Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfiguration von Netzwerken für AWS Lambda Web-Funktionen
Eine Webfunktion akzeptiert Anfragen von Clients. Es kann auch auf andere Ressourcen zugreifen, um seine Arbeit zu erledigen, z. B. eine Datenbank in Ihrer VPC, eine interne API oder einen Dienst im öffentlichen Internet. Sie konfigurieren diese beiden Richtungen unabhängig voneinander. Sie können einen Endpunkt für Anrufer verfügbar machen, ohne ihm VPC-Zugriff zu gewähren, oder einer Funktion privaten ausgehenden Zugriff gewähren, ohne zu ändern, wer sie aufrufen kann.
Eingehender Datenverkehr erreicht eine Webfunktion über einen Endpunkt. Der Endpunkt definiert seinen Domainnamen, seinen Endpunkttyp, seine Regionen und seine Autorisierungskonfiguration. Ausgehender Datenverkehr ist in einer Revision konfiguriert. Eine Version ohne ausgehenden Netzwerkconnector erreicht öffentliche IPv4 Ziele direkt. Eine Revision, die auf einen Connector verweist, sendet seinen ausgehenden Datenverkehr über Ihre VPC. Eine Webfunktion läuft auf der Infrastruktur, die Lambda besitzt und verwaltet, nicht in Ihrer VPC. Ein ausgehender Netzwerkconnector ermöglicht nur ausgehenden VPC-Zugriff. Es ändert nichts daran, wie Clients den Endpunkt erreichen oder wer ihn aufrufen darf.
Anmerkung
Die Domainnamen der Webfunktions-Endpunkte sind über das öffentliche Internet erreichbar. AWS PrivateLink Schnittstellen-Endpunkte sind für Webfunktions-Endpunkt-Domainnamen nicht verfügbar. Verwenden Sie die Autorisierungskonfiguration des Endpunkts, um den Zugriff zu kontrollieren.
Eingehende Konnektivität
Clients rufen eine Webfunktion über einen Lambda-managed öffentlichen HTTPS-Endpunkt auf. Lambda beendet TLS und leitet die Anfrage an den HTTP-Server Ihrer Anwendung weiter. Der verwaltete Endpunkt unterstützt. HTTP/1.1 Es macht keine private VPC-Adresse verfügbar und akzeptiert keine direkten Verbindungen zur Ausführungsumgebung.
IamAuthsteuert, wer einen Endpunkt aufrufen kann, macht den Endpunkt auf Netzwerkebene jedoch nicht privat. Informationen zu Autorisierungsoptionen finden Sie unterEndpunktzugriffskontrolle mit Lambda Web Function.
Der Endpunkt steuert das Routing, die Autorisierung, die Drosselung und die Skalierung von Anfragen. Der Endpunkttyp und die eingestellte Region sind bei der Erstellung festgelegt. Um eine der Eigenschaften zu ändern, erstellen Sie einen neuen Endpunkt und verschieben Sie die Clients auf den neuen Domänennamen.
Die Endpunktkonfiguration ist unabhängig vom VPC-Ausgang. Das Hinzufügen eines ausgehenden Netzwerkconnectors zu einer Version macht den Endpunkt nicht privat und schränkt eingehende Anfragen nicht ein.
Wichtig
Sie können ausgehende Netzwerkconnectors nur mit Endpunkten verwenden. HomeRegion Lambda lehnt Versuche ab, einen MultiRegion PerRegion OR-Endpunkt an eine Revision weiterzuleiten, die auf einen ausgehenden Netzwerkconnector verweist.
Wenn Revisionsgewichte den Datenverkehr zwischen Versionen mit unterschiedlichen Konnektorkonfigurationen aufteilen, verwenden Anfragen unterschiedliche Netzwerkpfade. Wenn Sie eine intermittierende Konnektivität diagnostizieren, überprüfen Sie zuerst den automatischen Bereitstellungsmodus und die Revisionsgewichte des Endpunkts. Informationen darüber, wie Anfragen an Revisionen weitergeleitet werden, finden Sie unter. Bereitstellungsmuster
Fügen Sie eine HTTP-Vordertür vor einem Endpunkt hinzu
Eine Vordertür ist ein Dienst, der Kundenanfragen entgegennimmt und sie an Ihren Endpunkt weiterleitet. Er fügt Funktionen wie eine benutzerdefinierte Domäne, Caching oder Firewall-Schutz für Webanwendungen hinzu. Webfunktions-Endpunkte unterstützen keine benutzerdefinierten Domainnamen oder direkte AWS WAF Verknüpfungen. Verwenden Sie Amazon CloudFront vor dem Endpunkt, wenn Sie eine benutzerdefinierte Domain, Edge-Caching HTTP/2 oder HTTP/3 zwischen dem Viewer und dem Edge, Antwortkomprimierung oder AWS WAF Kontrollen benötigen.
Das folgende Diagramm zeigt eine Produktionstür. Ein Client stellt eine Verbindung zu einer CloudFront benutzerdefinierten Domäne her, die durch geschützt ist AWS WAF. CloudFront sendet die Anfrage an einen geschützten Webfunktions-Endpunkt, der sie an eine Ausführungsumgebung weiterleitet. Ohne einen Ausgangsnetzwerkanschluss kann die Anwendung öffentliche AWS Dienste oder Internet-Endpunkte aufrufen. Es kann keine Ressourcen erreichen, die nur private VPC-Adressen haben. Informationen zum Erreichen dieser Ressourcen finden Sie unterEine Webfunktion mit Ihrer VPC verbinden. Mit IamAuth CloudFront signiert jede ursprüngliche Anfrage, und Lambda autorisiert die Anfrage, bevor Ihre Funktion aufgerufen wird. Lambda behält den ursprünglichen Authorization Header des Viewers bei und leitet ihn an Ihre Funktion weiter. Die Lambda-provided Domain akzeptiert nur signierte Anfragen von Principals, die berechtigt sind, sie aufzurufen, und lehnt unsignierte direkte Anfragen ab, z. B. wenn ein Browser die Domain direkt aufruft. Um sicherzustellen, dass der Endpunkt nur Anrufe von Ihrer Distribution akzeptiert, fügen Sie eine ressourcenbasierte Richtlinie hinzu, die dem CloudFront Service Principal die Aufrufberechtigung erteilt und sie auf den Amazon-Ressourcennamen (ARN) Ihrer Distribution mit einer Quell-ARN-Bedingung beschränkt. Mit ApplicationManaged ist der Endpunkt öffentlich und direkte Anfragen umgehen und. CloudFront AWS WAF
Konfigurieren Sie die Web Function-Domain als benutzerdefinierten HTTPS-Ursprung.
Hängen Sie das Zertifikat und den alternativen Domainnamen an die Distribution an und verweisen Sie Ihre DNS-Einträge (Domain Name System) auf die Distribution.
Leiten Sie nur die Header, Cookies und Abfragezeichenfolgen weiter, die die Anwendung benötigt. Leiten Sie den
HostHeader des Viewers nicht weiter, da Lambda HTTP 404 weiterleitetHostund zurückgibt, wenn es sich nicht um die Endpunktdomäne handelt. Wenn Sie eine verwaltete Origin-Anforderungsrichtlinie verwenden, die alle Viewer-Header weiterleitet, wählen Sie.AllViewerExceptHostHeaderDie Grenzwerte für Endpunkt-Header beinhalten weitergeleitete Header.(Optional) Fügen Sie eine AWS WAF Web-ACL hinzu, wenn Sie eine IP-, Bot-, ratenbasierte oder verwaltete Regelprüfung benötigen.
Schützen Sie den Ursprung, sodass Clients die Verteilung nicht umgehen können. Gewähren Sie einem IAM-authorized Endpunkt nur Zugriff auf die vorgesehene Front-Door-Identität. Für eine anwendungsverwaltete Autorisierung benötigen und validieren Sie einen geheimen Ursprungsnachweis oder einen anderen Nachweis auf Anwendungsebene, dass die Anfrage über die Distribution eingegangen ist.
Informationen zum CloudFront Autorisierungsverfahren finden Sie unter. CloudFront Integration
Browserzugriff und CORS
Lambda fügt keine Cross-Origin Resource Sharing (CORS) -Header für Webfunktionen hinzu. Ihre Anwendung oder Ihr Front-Door muss Preflight- und tatsächliche Anfragen bearbeiten.
Gibt den zulässigen Ursprung zurück, anstatt jeden
OriginWert wiederzugeben.Erlaubt nur die Methoden und Anforderungsheader, die die Anwendung verwendet.
Wenn Browser Anmeldeinformationen senden, verwenden Sie einen expliziten Ursprung und geben Sie ihn zurück
Access-Control-Allow-Credentials: true. Kombinieren Sie Anmeldeinformationen nicht mit einem Platzhalter-Ursprung.Testen Sie
OPTIONSPreflight-Anfragen getrennt von der Anwendungsmethode.Authentifizieren und autorisieren Sie jede geschützte Anfrage. CORS ist keine Authentifizierungskontrolle.
Streaming- und Protokolleinschränkungen
Webfunktionen streamen Anfragetexte an Ihre Anwendung, sobald sie eintreffen, und streamen Antworten zurück an den Client HTTP/1.1. Der Anforderungspfad ist Halbduplex: Lambda leitet den gesamten Anfragetext weiter, bevor es die Antwort Ihrer Anwendung liefert. Lesen Sie den Anfragetext vollständig, bevor Sie die Antwort schreiben. Stellen timeoutSeconds Sie ein, dass es das Streaming in beide Richtungen abdeckt: Empfangen des Anfragetextes und Senden der Antwort. Wenn das Timeout abgelaufen ist, beendet Lambda die Antwort. Der Client erhält den Statuscode, der bereits gesendet wurde, mit einem gekürzten Hauptteil. Beenden Sie die Upstream-Arbeit, wenn der Client die Verbindung trennt.
Lambda unterstützt keine WebSocket Upgrades. Lambda entfernt verbindungsspezifische Upgrade-Header, bevor die Anfrage weitergeleitet wird. Verwenden Sie vom Server gesendete Ereignisse, wenn ein unidirektionales Server-zu-Client-Streaming ausreichend ist.
Den vollständigen Header- und Methodenvertrag finden Sie unter. HTTP-Anfragen und -Antworten
Ausgehende Konnektivität
Sie wählen den ausgehenden Netzwerkpfad für jede Revision.
-
Ohne Ausgangsnetzwerkanschluss — Die Revision erreicht öffentliche
IPv4Ziele direkt, ohne Ihre VPC zu durchqueren. Die Quelladresse ist Lambda-managed, ist nicht stabil und eignet sich nicht für eine Zulassungsliste. Die Revision hat keine Route zu privaten Ressourcen in Ihrer VPC. -
Mit einem ausgehenden Netzwerkconnector — Die Revision sendet ausgehenden Datenverkehr über elastische Netzwerkschnittstellen in den Subnetzen des Connectors. Es gelten Ihre VPC-Routing-Tabellen, Sicherheitsgruppen und Network Access Control Lists (ACLs). Verwenden Sie diese Option, um private VPC-Ressourcen, lokale Netzwerke, die über Direct Connect oder VPN verbunden sind, oder Ziele zu erreichen, die Datenverkehr aus Ihrem Adressraum benötigen.
Das Verweisen auf einen Connector ersetzt den standardmäßigen ausgehenden Pfad. Ein Connector leitet Traffic in Ihre VPC, bietet aber keinen Internetzugang. Um öffentliche IPv4 Ziele zu erreichen, benötigen die Connector-Subnetze eine Route zu einem NAT-Gateway. Um öffentliche IPv6 Ziele zu erreichen, benötigen sie eine Route zu einem Internet-Gateway, das nur für ausgehende Verbindungen bestimmt ist.
Es gibt keine stabile Quell-IP-Adresse für den Connector-Verkehr. Konfigurieren Sie die Zielsicherheitsgruppen so, dass sie die Sicherheitsgruppen des Connectors zulassen. Wenn ein Ziel keine Sicherheitsgruppenverweise unterstützt, lassen Sie die CIDR-Blöcke des Connector-Subnetzes anstelle einer einzelnen Adresse zu.
Lambda führt Connector-Operationen asynchron aus. Ein Konnektor meldet, PENDING während Lambda seine Netzwerkschnittstellen erstellt und ACTIVE wann Revisionen darauf verweisen können. Zu den anderen Staaten gehörenINACTIVE, FAILEDDELETING, und. DELETE_FAILED
Suchen Sie nach einem Update LastUpdateStatus nach InProgressSuccessful, oderFailed. Wenn ein Vorgang fehlschlägt, identifizieren Sie anhand des Zustandsgrundes und des Ursachencodes das betroffene Subnetz, die Sicherheitsgruppe, die betroffenen Berechtigungen oder die betroffene IP-Adresskapazität.
DNS-Auflösung
Aktivieren Sie für private DNS-Namen die DNS-Unterstützung und DNS-Hostnamen in der VPC des Connectors. Ordnen Sie dieser VPC alle erforderlichen privaten Hosting-Zonen von Route 53 zu.
In jeder Ausführungsumgebung werden DNS-Antworten zwischengespeichert. Nach der Änderung eines DNS-Eintrags verwenden bestehende Umgebungen weiterhin die alte Antwort, bis der zwischengespeicherte Wert abläuft oder Lambda die Umgebung ersetzt. Um einen sauberen Rollout zu erzwingen, erstellen Sie eine neue Version und verlagern Sie den Endpunktdatenverkehr auf diese Version.
Testen Sie bei der Fehlerbehebung die Namensauflösung und die Erreichbarkeit über das Netzwerk getrennt. Stellen Sie über die IP-Adresse eine Connect zu einem Ziel her, um den Netzwerkpfad zu überprüfen, und testen Sie dann den DNS-Namen.
Eine Webfunktion mit Ihrer VPC verbinden
Ein ausgehender Netzwerkkonnektor ist eine wiederverwendbare Lambda-Ressource. Sie erstellen den Connector einmal und verweisen auf eine veröffentlichte Connector-Version aus jeder Webfunktions-Revision, die VPC-Zugriff benötigt.
Für Web Functions hat die Connector-Referenz die folgenden Eigenschaften:
-
Eine Revision verweist auf keinen oder einen Konnektor.
-
Der Connector-ARN muss einen Versionskennzeichner enthalten.
-
Der Connector muss sich im selben AWS Konto und in derselben Region wie die Webfunktion befinden.
-
Dem Connector muss ein
WebFunctionComputing-Ressourcentyp zugeordnet sein. -
Nur ein
HomeRegionEndpunkt unterstützt Revisionen, die auf einen ausgehenden Netzwerkconnector verweisen. -
Sie können die Referenz nicht mehr ändern, nachdem Sie sie festgelegt haben. Um sie hinzuzufügen, zu ändern oder zu entfernen, erstellen Sie eine neue Revision.
Voraussetzungen
Bevor Sie den Konnektor erstellen:
-
Wählen Sie mindestens zwei Subnetze in verschiedenen Availability Zones mit verfügbaren IP-Adressen aus.
-
Wählen Sie Sicherheitsgruppen aus, die den erforderlichen ausgehenden Datenverkehr zulassen.
-
Lassen Sie eingehenden Datenverkehr von den Sicherheitsgruppen des Connectors an jedem Ziel zu.
-
Konfigurieren Sie Routen von den Connector-Subnetzen zu den erforderlichen privaten, lokalen oder öffentlichen Zielen.
-
Erstellen Sie eine Operatorrolle, die Lambda die Berechtigung zur Verwaltung von Netzwerkschnittstellen gewährt.
-
Stellen Sie sicher, dass die Identität, die den Konnektor und die Revision erstellt, über die erforderlichen Berechtigungen verfügtBerechtigungen für die Netzwerkkonfiguration, auch
lambda:PassNetworkConnectorfür den Konnektor undiam:PassRoledie Operatorrolle.
Die Operatorrolle des Connectors und die Ausführungsrolle der Revision dienen unterschiedlichen Zwecken. Die Operatorrolle verwaltet Netzwerkschnittstellen in Ihrer VPC. Die Ausführungsrolle erteilt Ihrer Anwendung die Erlaubnis, AWS APIs aufzurufen. Sie fügen der Ausführungsrolle keine Connector-Netzwerkschnittstellenberechtigungen hinzu.
Berechtigungen für die Operatorrolle
Lambda übernimmt die Betreiberrolle des Connectors zur Verwaltung der Netzwerkschnittstellen des Connectors. Die Vertrauensrichtlinie der Rolle muss es dem Lambda-Serviceprinzipal, ermöglichenlambda.amazonaws.com, sie zu übernehmen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Fügen Sie der Operatorrolle des Connectors eine Berechtigungsrichtlinie wie die folgende hinzu. Diese Richtlinie ermöglicht es Lambda, die Netzwerkschnittstellen des Connectors zu erstellen und zu kennzeichnen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateENI", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": [ "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "TagENI", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:ManagedResourceOperator": "network-connectors.lambda.amazonaws.com" } } } ] }
Erstellen eines Connectors von
Der folgende AWS CLI Befehl erstellt einen IPv4 Connector für Webfunktionen. Ersetzen Sie den Connectornamen, die Subnetz-IDs, die Sicherheitsgruppen-ID und den ARN der Operatorrolle durch Ihre eigenen Werte.
aws lambda-core create-network-connector \ --name my-connector \ --configuration '{ "VpcEgressConfiguration": { "SubnetIds": [ "subnet-0ab1c2d3e4f5a6b78", "subnet-1bc2d3e4f5a6b7c89" ], "SecurityGroupIds": ["sg-0123456789abcdef0"], "NetworkProtocol": "IPv4", "AssociatedComputeResourceTypes": ["WebFunction"] } }' \ --operator-role arn:aws:iam::123456789012:role/NetworkConnectorOperatorRole
Ein Connector unterstützt einen Computing-Ressourcentyp. Ein Connector für Web Functions unterstützt keinen anderen Lambda-Berechnungstyp, und sein Rechenressourcentyp ist unveränderlich.
Lambda erstellt den Konnektor asynchron. Verwenden Sie diese get-network-connector Option, um zu warten, bis dies State der Fall istACTIVE, und notieren Sie sich die aktuelle Versionsnummer.
Referenzieren Sie den Stecker aus einer Revision
serviceConfig.egressNetworkConnectorArnWird festgelegt, wenn Sie die erste oder eine spätere Version der Web-Funktion erstellen. Verwenden Sie einen versionsqualifizierten ARN:
arn:aws:lambda:us-east-1:123456789012:network-connector:nc-0a1b2c3d4e5f6a7b8:4
Der folgende AWS CLI Befehl erstellt eine Revision, die auf Connector-Version 4 verweist. Ersetzen Sie den Funktionsnamen, den ARN der Ausführungsrolle, den Konnektor-ARN und die Region durch Ihre eigenen Werte.
aws lambda-web create-web-function-revision \ --function-name my-web-function \ --build-config file://build-config.json \ --service-config '{ "executionRoleArn": "arn:aws:iam::123456789012:role/WebFunctionExecutionRole", "timeoutSeconds": 30, "egressNetworkConnectorArn": "arn:aws:lambda:us-east-1:123456789012:network-connector:nc-0a1b2c3d4e5f6a7b8:4" }' \ --region us-east-1
Ein unqualifizierter ARN, Connectorname oder Connector-ID wird für eine Revision nicht akzeptiert. Nach dem Erstellen der Revision:
-
Warten Sie, bis der Status der Revision lautet
Active. -
Lesen Sie die Revision und vergewissern Sie sich, dass sie die erwartete Connector-Version
egressNetworkConnectorArnenthält. -
Vergewissern Sie sich, dass der Endpunkt den Datenverkehr an die Revision weiterleitet. Ein
HomeRegionEndpunkt imLatestRevisionModus nimmt die letzte aktive Revision automatisch auf. Aktualisieren Sie für einen Endpunkt imDisabledModus seine Revisionsgewichte. -
Testen Sie ein VPC-Ziel und bestätigen Sie den Datenverkehr mit VPC Flow Logs.
Der automatische Bereitstellungsmodus des Endpunkts bestimmt, ob das Routing beim Erstellen einer aktiven Version automatisch aktualisiert wird. Vergewissern Sie sich in allen Modi, welche Version verfügbar ist, bevor Sie den zugehörigen Konnektor testen.
VPC-Konnektivität aktualisieren oder entfernen
Beim Aktualisieren eines Connectors wird eine neue Version veröffentlicht. Bestehende Revisionen bleiben an die Version in ihrem Connector-ARN ARN.
So führen Sie einen Konnektorwechsel durch:
-
Aktualisieren Sie den Konnektor mit
update-network-connector. Der Anschluss muss seinACTIVE. Geben Sie die vollständige Konfiguration anVpcEgressConfiguration, einschließlich aller Subnetz-ID und Sicherheitsgruppen-ID, die Sie behalten möchten, da das Update die bestehende Konfiguration ersetzt. -
Warten Sie,
LastUpdateStatusbis der Connector wirdSuccessful. -
Holen Sie sich die neue Connector-Version.
-
Erstellen Sie eine Revision, die auf den neuen versionsqualifizierten ARN verweist.
-
Vergewissern Sie sich bei einem
HomeRegionEndpunkt imLatestRevisionModus, dass er die neue aktive Revision übernommen hat. Bei einem Endpunkt imDisabledModus verlagern Sie den Datenverkehr, indem Sie die Gewichtungen der Revision aktualisieren.
Wenn Sie den Connector aktualisieren, ohne eine Version zu erstellen, die auf die neue Version verweist, ändert sich nichts an der Netzwerkkonfiguration der laufenden Webfunktionen.
Um die VPC-Konnektivität zu entfernen, erstellen Sie eine Version ohneegressNetworkConnectorArn. Ein HomeRegion Endpunkt im LatestRevision Modus nimmt ihn auf, wenn er aktiv wird. Bei einem Endpunkt im Disabled Modus können Sie den Datenverkehr verlagern, indem Sie seine Revisionsgewichte aktualisieren. Die neue Version verwendet Lambda-managed öffentlichen IPv4 Ausgang und hat keinen privaten VPC-Zugriff mehr.
Anmerkung
Bevor Sie einen ausgehenden Netzwerkconnector löschen, verlagern Sie den Endpunktdatenverkehr von allen Web Function-Revisionen, die auf eine beliebige Version des Connectors verweisen, und löschen Sie dann diese Revisionen. Wenn Sie einen Connector löschen, während eine aktive Version noch auf ihn verweist, wird die Netzwerkkonnektivität sowohl für bestehende als auch für neue Ausführungsumgebungen, die diese Revision bereitstellen, unterbrochen.
IPv6-Support
Nur der standardmäßige ausgehende Pfad und ein IPv4 Connector werden unterstütztIPv4. Um ihn zu verwendenIPv6, konfigurieren Sie den Connector mit der NetworkProtocol Einstellung aufDualStack.
Für Dual-Stack-Konnektivität:
-
Die VPC- und Connector-Subnetze müssen über
IPv6CIDR-Blöcke verfügen. -
Routentabellen müssen Routen für die erforderlichen Ziele enthalten.
IPv6 -
Sicherheitsgruppen und Netzwerk-ACLs müssen
IPv6Datenverkehr zulassen. -
Für
IPv6den öffentlichen Zugriff ist eine: :/0-Route zu einem Internet-Gateway nur für ausgehenden Datenverkehr erforderlich. -
Verweisen Sie auf die Connector-Version, die erstellt wurde, als Sie den Connector auf aktualisiert haben.
DualStack
Ermitteln Sie die IPv6 Verfügbarkeit nicht, indem Sie Schnittstellen innerhalb einer Ausführungsumgebung überprüfen. Überprüfen Sie dies, indem Sie eine IPv6 Verbindung über den Anwendungscode herstellen und die VPC Flow Logs überprüfen.