Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Invoquer un AWS Lambda fonction d'un cluster de SQL base de données Aurora Postgre RDS
AWS Lambda est un service de calcul piloté par les événements qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Il est disponible pour une utilisation avec de nombreux AWS services, y compris Aurora Postgre SQL RDS . Par exemple, vous pouvez utiliser des fonctions Lambda pour traiter les notifications d'événements à partir d'une base de données ou pour charger des données à partir de fichiers chaque fois qu'un nouveau fichier est chargé sur Amazon S3. Pour en savoir plus sur Lambda, consultez Qu'est-ce que AWS Lambda? dans le AWS Lambda Guide du développeur.
Note
Invoquer AWS Lambda les fonctions sont prises en charge dans Aurora Postgre SQL 11.9 et versions ultérieures (y compris Aurora Serverless v2).
La configuration d'Aurora Postgre SQL RDS fonctionne avec SQL les fonctions Lambda est un processus en plusieurs étapes impliquant AWS Lambda, votre IAMVPC, et votre cluster de base de données Aurora Postgre RDS pour SQL instance Vous trouverez ci-après des résumés des étapes nécessaires.
Pour plus d'informations sur les fonctions Lambda, consultez Getting started with Lambda et AWS Les fondations Lambda dans le AWS Lambda Guide du développeur.
Rubriques
- Étape 1 : configurer votre cluster de SQL base de données Aurora Postgre pour une les connexions sortantes vers AWS Lambda
- Étape 2 : Configuration de votre cluster IAM de SQL base de données Aurora Postgre RDS et AWS Lambda
- Étape 3 : Installation de l'aws_lambdaextension pour un cluster de base de données Aurora Postgre RDS pour une SQL instance
- Étape 4 : Utiliser les fonctions d'assistance Lambda avec votre cluster de SQL base de données Aurora Postgre RDS (facultatif)
- Étape 5 : Invoquer une fonction Lambda depuis votre cluster de SQL base de données Aurora Postgre RDS une instance de base de données Postgre SQL
- Étape 6 : accorder aux autres utilisateurs l'autorisation d'appeler les fonctions Lambda
- Exemples : Invocation de fonctions Lambda depuis votre de base de données Aurora SQL Postgre pour une instance de base de données Postgre SQL
- Messages d'erreur de fonction Lambda
- AWS Lambdaréférence de fonction et de paramètre
Étape 1 : configurer votre cluster de SQL base de données Aurora Postgre pour une les connexions sortantes vers AWS Lambda
Les fonctions Lambda s'exécutent toujours dans un Amazon VPC appartenant au AWS Lambda service. Lambda applique des règles d'accès et de sécurité au réseau, VPC et les gère et les VPC surveille automatiquement. Votre envoie le trafic réseau au service Lambda. VPC La façon dont vous configurez cela dépend de si votre instance de base de données primaire du cluster de base de données Aurora est publique ou privée.
Cluster de SQL base de données Aurora Postgre de base de données Postgre — L'instance de base de données principale d'un cluster de de données est publique si elle se trouve dans un sous-réseau public de votre VPC instance et si la propriété « PubliclyAccessible » de l'instance est.
true
Pour connaître la valeur de cette propriété, vous pouvez utiliser le describe-db-instances AWS CLI commande. Vous pouvez également utiliser le AWS Management Console pour ouvrir l'onglet Connectivité et sécurité et vérifier que l'option Accessible au public est Oui. Pour vérifier que l'instance se trouve dans le sous-réseau public de votreVPC, vous pouvez utiliser le AWS Management Console ou le AWS CLI.Pour configurer l'accès à Lambda, vous utilisez le AWS Management Console ou le AWS CLI pour créer une règle de trafic sortant sur votre groupe VPC de sécurité. La règle de sortie indique que le port 443 TCP peut être utilisé pour envoyer des paquets à n'importe quelle IPv4 adresse (0.0.0.0/0).
Cluster de SQL base de données Aurora Postgre de base de données Postgre — Dans ce cas, la propriété « PubliclyAccessible » de l'instance est
false
ou se trouve dans un sous-réseau privé. Pour permettre à l'instance de fonctionner avec Lambda, vous pouvez utiliser une passerelle (traduction d'adresses réseau). NAT Pour plus d'informations, consultez la section NATPasserelles. Vous pouvez également le configurer VPC avec un VPC point de terminaison pour Lambda. Pour plus d'informations, consultez la section VPCendpoints dans le guide de l'VPCutilisateur Amazon. Le point de terminaison répond aux appels passés par votre cluster de SQL base de données Aurora Postgre RDS à vos fonctions Lambda.
Vous VPC pouvez désormais interagir avec le AWS Lambda VPCau niveau du réseau. Ensuite, vous configurez les autorisations à l'aide deIAM.
Étape 2 : Configuration de votre cluster IAM de SQL base de données Aurora Postgre RDS et AWS Lambda
L'appel de fonctions Lambda depuis votre . Pour configurer les privilèges nécessaires, nous vous recommandons de créer une IAM politique permettant d'appeler des fonctions Lambda, d'attribuer cette politique à un rôle, puis d'appliquer le rôle à votre instance de base de données de de base de données. Cette approche accorde au cluster de base de données des privilèges pour appeler la fonction Lambda spécifiée en votre nom. Les étapes suivantes vous montrent comment procéder à l'aide du AWS CLI.
Pour configurer IAM les autorisations d'utilisation de votre de cluster avec Lambda
Utilisez la politique de création
AWS CLI commande pour créer une IAM politique qui permet à votre d'appeler la fonction Lambda spécifiée. (L'ID d'instruction (Sid) est une description facultative pour votre instruction de politique et n'a aucun effet sur l'utilisation.) Cette politique accorde à votre cluster de base de données Aurora les autorisations minimales requises pour appeler la fonction Lambda spécifiée. 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-functionVous pouvez également utiliser la politique
AWSLambdaRole
prédéfinie qui vous permet d'appeler n'importe laquelle de vos fonctions Lambda. Pour plus d'informations, voir IAMPolitiques basées sur l'identité pour LambdaUtiliser le rôle de création
AWS CLI commande pour créer un IAM rôle que la politique peut assumer lors de l'exécution. 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" } ] }'Appliquez la politique au rôle à l'aide du attach-role-policy
AWS CLI commande. aws iam attach-role-policy \ --policy-arn arn:aws:iam::
444455556666
:policy/rds-lambda-policy
\ --role-namerds-lambda-role
--regionaws-region
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/add-role-to-db-cluster.html
AWS CLI commande. Cette dernière étape permet aux utilisateurs de base de données de votre cluster de base de données d'appeler des fonctions Lambda. aws rds add-role-to-db-cluster \ --db-cluster-identifier
my-cluster-name
\ --feature-name Lambda \ --role-arn arn:aws:iam::444455556666:role/rds-lambda-role
\ --regionaws-region
Une fois VPC les IAM configurations terminées, vous pouvez maintenant installer l'aws_lambda
extension. (Notez que vous pouvez installer l'extension à tout moment, mais tant que vous n'avez pas configuré le VPC support et les IAM privilèges appropriés, l'aws_lambda
extension n'ajoute rien aux fonctionnalités de l'.)
Étape 3 : Installation de l'aws_lambda
extension pour un cluster de base de données Aurora Postgre RDS pour une SQL instance
Pour utiliser AWS Lambda avec votre cluster de SQL base de données Aurora Postgre RDS de SQLbase de données Aurora Postgre instance de base de données Postgre. SQL Cette extension permet à votre cluster de SQL base de données Aurora Postgre RDS d'appeler des fonctions Lambda depuis Postgre. SQL
Pour installer l'aws_lambda
extension dans votre cluster de base de données Aurora Postgre RDS pour une SQL instance
Utilisez la SQL psql
ligne de commande Postgre ou l' pgAdmin outil pour vous connecter à votre instance de SQLbase de données Aurora Postgre Postgre. SQL
Connectez-vous à votre cluster de SQL base de données Aurora Postgre RDS en tant qu'utilisateur doté
rds_superuser
de privilèges. L'utilisateurpostgres
par défaut est illustré dans l'exemple.psql -h
cluster-instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
-
Installez l'extension
aws_lambda
. L'extensionaws_commons
est également requise. Il fournit des fonctions d'assistanceaws_lambda
et de nombreuses autres extensions Aurora pour SQL Postgre. S'il ne figure pas déjà sur votre , il est installéaws_lambda
comme indiqué ci-dessous.CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
NOTICE: installing required extension "aws_commons" CREATE EXTENSION
L'aws_lambda
extension est installée dans l'instance de base de données principale de votre SQL cluster de base de données Aurora Postgre. Vous pouvez désormais créer des structures de commodité pour appeler vos fonctions Lambda.
Étape 4 : Utiliser les fonctions d'assistance Lambda avec votre cluster de SQL base de données Aurora Postgre RDS (facultatif)
Vous pouvez utiliser les fonctions d'assistance de l'aws_commons
extension pour préparer des entités que vous pouvez appeler plus facilement depuis SQL Postgre. Pour ce faire, vous avez besoin des informations suivantes concernant vos fonctions Lambda :
-
Nom de la fonction : nom, Amazon Resource Name (ARN), version ou alias de la fonction Lambda. La IAM politique créée dans Étape 2 : Configuration IAM pour votre de cluster et Lambda nécessite leARN. Nous vous recommandons donc d'utiliser celle de votre fonctionARN.
-
AWS Région — (Facultatif) La AWS Région dans laquelle se trouve la fonction Lambda si elle ne se trouve pas dans la même région que votre cluster de SQL base de données Aurora Postgre RDS .
Pour conserver les informations de nom de la fonction Lambda, utilisez la fonction aws_commons.create_lambda_function_arn. Cette fonction d'assistance crée une structure composite aws_commons._lambda_function_arn_1
avec les détails requis par la fonction d'appel. Vous trouverez ci-dessous trois autres approches pour configurer cette structure composite.
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
N'importe laquelle de ces valeurs peut être utilisée dans les appels à la fonction aws_lambda.invoke. Pour obtenir des exemples, consultez Étape 5 : Invoquer une fonction Lambda depuis votre cluster de SQL base de données Aurora Postgre RDS une instance de base de données Postgre SQL.
Étape 5 : Invoquer une fonction Lambda depuis votre cluster de SQL base de données Aurora Postgre RDS une instance de base de données Postgre SQL
La fonction aws_lambda.invoke
se comporte de manière synchrone ou asynchrone, en fonction du invocation_type
. Les deux alternatives à ce paramètre sont RequestResponse
(valeur par défaut) et Event
, comme suit.
-
RequestResponse
— Ce type d'appel est synchrone. Il s'agit du comportement par défaut lorsque l'appel est effectué sans spécifier de type d'appel. La charge utile de réponse inclut les résultats de la fonctionaws_lambda.invoke
. Utilisez ce type d'appel lorsque votre flux de travail nécessite la réception des résultats de la fonction Lambda avant de continuer. -
Event
— Ce type d'appel est asynchrone. La réponse n'inclut pas de charge utile contenant des résultats. Utilisez ce type d'appel lorsque votre flux de travail n'a pas besoin de résultat de la fonction Lambda pour continuer le traitement.
Pour tester simplement votre configuration, vous pouvez vous connecter à votre instance de base de données en utilisant psql
et appeler un exemple de fonction depuis la ligne de commande. Supposons que l'une des fonctions de base soit configurée sur votre service Lambda, telle que la fonction simple Python affichée dans la capture d'écran suivante.
Pour invoquer un exemple de fonction
Connectez-vous à votre instance de base de données principale à l'aide de
psql
oupgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Invoquez la fonction en utilisant sonARN.
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 );La réponse se présente comme suit.
status_code | payload | executed_version | log_result -------------+-------------------------------------------------------+------------------+------------ 200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST | (1 row)
Si votre tentative d'appel ne réussit pas, veuillez consulter la section Messages d'erreur de fonction Lambda .
Étape 6 : accorder aux autres utilisateurs l'autorisation d'appeler les fonctions Lambda
À ce stade des procédures, vous êtes le seul, en tant que rds_superuser
, à pouvoir appeler vos fonctions Lambda. Pour permettre à d'autres utilisateurs d'appeler les fonctions que vous avez créées, vous devez leur accorder des autorisations.
Pour accorder à d'autres personnes l'autorisation d'appeler les fonctions Lambda
Connectez-vous à votre instance de base de données principale à l'aide de
psql
oupgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Exécutez les SQL commandes suivantes :
postgres=>
GRANT USAGE ON SCHEMA aws_lambda TOdb_username
; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TOdb_username
;