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.
Aufrufen eines AWS Lambda Funktion aus einem
AWS Lambda ist ein ereignisgesteuerter Rechendienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er ist für die Verwendung mit vielen verfügbar AWS Dienste, einschließlich für SQL Postgre. Sie können beispielsweise Lambda-Funktionen verwenden, um Ereignisbenachrichtigungen aus einer Datenbank zu verarbeiten oder Daten aus Dateien zu laden, wann immer eine neue Datei in Amazon S3 hochgeladen wird. Weitere Informationen zu Lambda finden Sie unter Was ist AWS Lambda? in der AWS Lambda Leitfaden für Entwickler.
Anmerkung
Aufrufen eines AWS Lambda Die Funktion wird in diesen RDS für Postgre-Versionen unterstützt: SQL
Alle Postgre-16-Versionen SQL
Alle Postgre-15-Versionen SQL
Nebenversionen von Postgre SQL 14.1 und höher
-
Nebenversionen von Postgre SQL 13.2 und höher
-
Nebenversionen von Postgre SQL 12.6 und höher
Die Einrichtung von für die Arbeit mit Lambda-Funktionen ist ein mehrstufiger Prozess, der Folgendes umfasst AWS Lambda IAMVPC, Ihr und Ihr . Im Folgenden finden Sie Zusammenfassungen der notwendigen Schritte.
Weitere Informationen zu Lambda-Funktionen finden Sie unter Erste Schritte mit Lambda und AWS Lambda-Stiftungen in der AWS Lambda Leitfaden für Entwickler.
Themen
- Schritt 1: Konfigurieren Sie Ihren für die SQL Postgre-DB-Instance für ausgehende Verbindungen zu AWS Lambda
- Schritt 2: Konfigurieren Sie IAM Ihren und AWS Lambda
- Schritt 3: Installieren Sie die aws_lambda Erweiterung für einen
- Schritt 4: Verwenden Sie Lambda-Hilfsfunktionen mit Ihrem für die SQL Postgre-DB-Instance (optional)
- Schritt 5: Rufen Sie eine Lambda-Funktion von Ihrem auf SQL
- Schritt 6: Erteilen der Berechtigung, Lambda-Funktionen aufzurufen, für andere Benutzer
- Beispiele: Aufrufen von Lambda-Funktionen aus Ihrem SQL
- Fehlermeldungen von Lambda-Funktionen
- AWS Lambda -Funktion und Parameterreferenz
Schritt 1: Konfigurieren Sie Ihren für die SQL Postgre-DB-Instance für ausgehende Verbindungen zu AWS Lambda
Lambda-Funktionen laufen immer in einem AmazonVPC, das dem gehört AWS Lambda Dienst. Lambda wendet darauf Netzwerkzugriffs- und Sicherheitsregeln an VPC und verwaltet und überwacht diese VPC automatisch. Ihr für die SQL Postgre-DB-Instance sendet Netzwerkverkehr an die Lambda-Services. VPC Wie Sie dies konfigurieren, hängt davon ab, ob die primäre DB-Instance Ihres öffentlich oder privat ist.
Öffentlicher für SQL Postgre-DB-Instance — ist öffentlichVPC, wenn sie sich in einem öffentlichen Subnetz in Ihrem befindet und wenn die Eigenschaft "PubliclyAccessible" der Instance lautet.
true
Um den Wert dieser Eigenschaft zu ermitteln, können Sie den describe-db-instances AWS CLI Befehl. Oder Sie können das verwenden AWS Management Console um den Tab Konnektivität und Sicherheit zu öffnen und zu überprüfen, ob für Öffentlich zugänglich die Option Ja ausgewählt ist. Um zu überprüfen, ob sich die Instance im öffentlichen Subnetz Ihres befindetVPC, können Sie den AWS Management Console oder das AWS CLI.Um den Zugriff auf Lambda einzurichten, verwenden Sie AWS Management Console oder das AWS CLI um eine Regel für ausgehenden Datenverkehr für Ihre Sicherheitsgruppe VPC zu erstellen. Die Regel für ausgehende Nachrichten gibt an, dass Port 443 verwendet TCP werden kann, um Pakete an beliebige IPv4 Adressen (0.0.0.0/0) zu senden.
Privater für SQL Postgre-DB-Instance — In diesem Fall befindet sich die Eigenschaft "PubliclyAccessible" der Instance in einem privaten Subnetz
false
oder sie befindet sich in einem privaten Subnetz. Damit die Instance mit Lambda funktioniert, können Sie ein NAT Gateway (Network Address Translation) verwenden. Weitere Informationen finden Sie unter NATGateways. Oder Sie können Ihren VPC mit einem VPC Endpunkt für Lambda konfigurieren. Weitere Informationen finden Sie unter VPCEndpoints im VPCAmazon-Benutzerhandbuch. Der Endpunkt reagiert auf Aufrufe Ihres für die SQL Postgre-DB-Instance an Ihre Lambda-Funktionen. Der VPC Endpunkt verwendet seine eigene private Auflösung. DNS RDSfür Postgre SQL kann der VPC Lambda-Endpunkt erst verwendet werden, wenn Sie den Wert vonrds.custom_dns_resolution
von seinem Standardwert 0 (nicht aktiviert) auf 1 ändern. Gehen Sie hierzu wie folgt vor:Erstellen Sie eine benutzerdefinierte DB-Parametergruppe.
Ändern Sie den Wert des Parameters
rds.custom_dns_resolution
von seinem Standardwert0
zu1
.Ändern Sie Ihre DB-Instance, um Ihre benutzerdefinierte DB-Parametergruppe zu verwenden.
Starten Sie die DB-Instance neu, damit der bearbeitete Parameter in Kraft tritt.
Sie VPC können jetzt mit dem interagieren AWS Lambda VPCauf Netzwerkebene. Als Nächstes konfigurieren Sie die Berechtigungen mitIAM.
Schritt 2: Konfigurieren Sie IAM Ihren und AWS Lambda
Das Aufrufen von Lambda-Funktionen aus Ihrem für die SQL Postgre-DB-Instance erfordert bestimmte Rechte. Um die erforderlichen Rechte zu konfigurieren, empfehlen wir Ihnen, eine IAM Richtlinie zu erstellen, die das Aufrufen von Lambda-Funktionen ermöglicht, diese Richtlinie einer Rolle zuzuweisen und die Rolle dann auf Ihre anzuwenden. Dieser Ansatz gewährt der DB-Instance Berechtigungen zum Aufrufen der angegebenen Lambda-Funktion in Ihrem Namen. Die folgenden Schritte zeigen Ihnen, wie Sie dies mit dem tun AWS CLI.
So konfigurieren Sie IAM Berechtigungen für die Verwendung Ihrer mit Lambda
Verwenden Sie die Create-Policy
AWS CLI Befehl zum Erstellen einer IAM Richtlinie, die es Ihrem für die SQL Postgre-DB-Instance ermöglicht, die angegebene Lambda-Funktion aufzurufen. (Die Anweisungs-ID (Sid) ist eine optionale Beschreibung für Ihre Richtlinienanweisung und hat keine Auswirkungen auf die Verwendung.) Diese Richtlinie gewährt Ihrer DB-Instance die Mindestberechtigungen zum Aufrufen der angegebenen Lambda-Funktion. aws iam create-policy --policy-name
rds-lambda-policy
--policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToExampleFunction", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:
" } ] }'aws-region
:444455556666:function:my-functionAlternativ können Sie die vordefinierte
AWSLambdaRole
-Richtlinie verwenden, mit der Sie alle Ihre Lambda-Funktionen aufrufen können. Weitere Informationen finden Sie unter Identitätsbasierte IAM Richtlinien für LambdaVerwenden Sie die Create-Role
AWS CLI Befehl, um eine IAM Rolle zu erstellen, die die Richtlinie zur Laufzeit annehmen kann. aws iam create-role --role-name
rds-lambda-role
--assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'Wenden Sie die Richtlinie auf die Rolle an, indem Sie attach-role-policy
AWS CLI Befehl. aws iam attach-role-policy \ --policy-arn arn:aws:iam::
444455556666
:policy/rds-lambda-policy
\ --role-namerds-lambda-role
--regionaws-region
AWS CLI Befehl. Dieser letzte Schritt erlaubt den Datenbankbenutzern Ihrer DB-Instances, Lambda-Funktionen aufzurufen.
aws rds add-role-to-db-instance \ --db-instance-identifier
my-instance-name
\ --feature-name Lambda \ --role-arn arn:aws:iam::444455556666:role/rds-lambda-role
\ --regionaws-region
Wenn der VPC und die IAM Konfigurationen abgeschlossen sind, können Sie jetzt die aws_lambda
Erweiterung installieren. (Beachten Sie, dass Sie die Erweiterung jederzeit installieren können, aber bis Sie den richtigen VPC Support und die richtigen IAM Rechte eingerichtet haben, fügt die aws_lambda
Erweiterung den Funktionen Ihres für die SQL Postgre-DB-Instance nichts hinzu.)
Schritt 3: Installieren Sie die aws_lambda
Erweiterung für einen
Zur Verwendung AWS Lambda fügen Sie mit Ihrem für SQL Postgre-DB-Instance die SQL Postgre-DB-Erweiterung zu Ihrem hinzu. SQL Diese Erweiterung bietet Ihrem für die SQL Postgre-DB-Instance die Möglichkeit, Lambda-Funktionen von Postgre aus aufzurufen. SQL
So installieren Sie die aws_lambda
Erweiterung in Ihrem
Verwenden Sie die SQL psql
Postgre-Befehlszeile oder das pgAdmin Tool, um eine Verbindung zu Ihrem herzustellen. SQL
Stellen Sie als Benutzer mit Rechten eine Connect zu Ihrem für die SQL Postgre-DB-Instance her.
rds_superuser
Im Beispiel wird derpostgres
-Standardbenutzer dargestellt.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
-
Installieren Sie die
aws_lambda
-Erweiterung. Dieaws_commons
-Erweiterung ist auch erforderlich. Es bietet Hilfsfunktionen füraws_lambda
und viele andere Aurora-Erweiterungen für PostgreSQL. Wenn es sich noch nicht auf Ihrem für die SQLDB Postgre-Instanz befindet, wird esaws_lambda
wie folgt installiert.CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
NOTICE: installing required extension "aws_commons" CREATE EXTENSION
Die aws_lambda
Erweiterung ist in der installiert. Sie können jetzt praktische Strukturen für den Aufruf Ihrer Lambda-Funktionen erstellen.
Schritt 4: Verwenden Sie Lambda-Hilfsfunktionen mit Ihrem für die SQL Postgre-DB-Instance (optional)
Sie können die Hilfsfunktionen in der aws_commons
Erweiterung verwenden, um Entitäten vorzubereiten, die Sie einfacher von Postgre aus aufrufen können. SQL Hierzu sind die folgenden Informationen zu Ihren Lambda-Funktionen erforderlich:
-
Funktionsname — Der Name, der Amazon-Ressourcenname (ARN), die Version oder der Alias der Lambda-Funktion. Die in erstellte IAM Richtlinie Schritt 2: Konfiguration IAM für Ihre und Lambda erfordert dasARN, daher empfehlen wir Ihnen, die Ihrer Funktion zu verwenden. ARN
-
AWS Region — (optional) Die AWS Region, in der sich die Lambda-Funktion befindet, wenn sie sich nicht in derselben Region wie Ihr befindet. SQL
Um die Daten zum Lambda-Funktionsnamen zu speichern, verwenden Sie die aws_commons.create_lambda_function_arn-Funktion. Diese Hilfsfunktion erstellt eine zusammengesetzte aws_commons._lambda_function_arn_1
-Struktur mit den Details, die von der Aufruffunktion benötigt werden. Im Folgenden finden Sie drei alternative Ansätze zum Einrichten dieser zusammengesetzten Struktur.
SELECT aws_commons.create_lambda_function_arn( 'my-function', '
aws-region
' ) AS aws_lambda_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( '111122223333:function:my-function', '
aws-region
' ) AS lambda_partial_arn_1 \gset
SELECT aws_commons.create_lambda_function_arn( 'arn:aws:lambda:
aws-region
:111122223333:function:my-function' ) AS lambda_arn_1 \gset
Jeder dieser Werte kann in Aufrufen der aws_lambda.invoke-Funktion verwendet werden. Beispiele finden Sie unter Schritt 5: Rufen Sie eine Lambda-Funktion von Ihrem auf SQL.
Schritt 5: Rufen Sie eine Lambda-Funktion von Ihrem auf SQL
Die aws_lambda.invoke
-Funktion verhält sich synchron oder asynchron, je nach invocation_type
. Die beiden Alternativen für diesen Parameter sind RequestResponse
(der Standardwert) und Event
, wie folgt.
-
RequestResponse
– Dieser Aufrufstyp ist synchron. Dies ist das Standardverhalten, wenn der Aufruf erfolgt, ohne einen Aufruftyp anzugeben. Die Antwort-Nutzlast beinhaltet die Ergebnisse deraws_lambda.invoke
-Funktion. Verwenden Sie diesen Aufruftyp, wenn Ihr Workflow Ergebnisse von der Lambda-Funktion erhalten muss, bevor er fortfährt. -
Event
– Dieser Aufrufstyp ist asynchron. Die Antwort umfasst keine Nutzlast, die Ergebnisse enthält. Verwenden Sie diesen Aufruftyp, wenn Ihr Workflow kein Ergebnis der Lambda-Funktion benötigt, um die Verarbeitung fortzusetzen.
Als einfacher Test Ihres Setups können Sie mittels psql
eine Verbindung mit Ihrer DB-Instance herstellen und eine Beispielfunktion über die Befehlszeile aufrufen. Angenommen, Sie haben eine der Grundfunktionen Ihres Lambda-Services eingerichtet, z. B. die einfache Python-Funktion, die im folgenden Screenshot gezeigt wird.
Beispielfunktion aufrufen
Stellen Sie mit oder Connect zu Ihrer DB-Instance
psql
herpgAdmin.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Rufen Sie die Funktion mit ihrer ARN auf.
SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('arn:aws:lambda:
aws-region
:444455556666:function:simple', 'us-west-1'), '{"body": "Hello from Postgres!"}'::json );Die Antwort sieht wie folgt aus.
status_code | payload | executed_version | log_result -------------+-------------------------------------------------------+------------------+------------ 200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST | (1 row)
Schlägt der Aufruf fehl, siehe Fehlermeldungen von Lambda-Funktionen .
Schritt 6: Erteilen der Berechtigung, Lambda-Funktionen aufzurufen, für andere Benutzer
An dieser Stelle in den Prozeduren können nur Sie als rds_superuser
Ihre Lambda-Funktionen aufrufen. Damit andere Benutzer alle von Ihnen erstellten Funktionen aufrufen können, müssen Sie ihnen die entsprechende Berechtigung erteilen.
Gewähren der Berechtigung zum Aufrufen von Lambda-Funktionen
Stellen Sie mit oder Connect zu Ihrer DB-Instance
psql
herpgAdmin.psql -h
instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Führen Sie die folgenden SQL Befehle aus:
postgres=>
GRANT USAGE ON SCHEMA aws_lambda TOdb_username
; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TOdb_username
;