Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Invocare un AWS Lambda
AWS Lambda è un servizio di elaborazione basato sugli eventi che consente di eseguire codice senza fornire o gestire server. È disponibile per l'uso con molti AWS Ad esempio, è possibile utilizzare le funzioni Lambda per elaborare le notifiche di eventi da un database o per caricare dati da file ogni volta che un nuovo file viene caricato su Amazon S3. Per ulteriori informazioni su Lambda, consulta Cos'è AWS Lambda? nel AWS Lambda Guida per gli sviluppatori.
Nota
Invocando AWS Lambda le funzioni sono supportate in Aurora Postgre SQL 11.9 e versioni successive (tra cui Aurora Serverless v2).
La configurazione di Aurora Postgre SQL RDS per Postgre delle funzioni Lambda SQL è un processo in più fasi che prevede AWS Lambda, IAMVPC, il tuo e il tuo cluster Aurora Postgre DB l'istanza Postgre SQL DB. SQL Di seguito sono riportati i riepiloghi dei passaggi necessari.
Per ulteriori informazioni sulle funzioni Lambda, consulta Guida introduttiva a Lambda e AWS Fondamenti Lambda nel AWS Lambda Guida per gli sviluppatori.
Argomenti
Passaggio 1: configura il cluster Aurora Postgre SQL DB per l'istanza DB Postgre AWS Lambda
Le funzioni Lambda vengono sempre eseguite all'interno di un Amazon VPC di proprietà di AWS Lambda servizio. Lambda applica a ciò le regole di accesso e sicurezza alla rete VPC e le mantiene e le monitora automaticamente. VPC Il cluster Aurora Postgre SQL DB RDS invia il traffico di rete ai servizi Lambda. VPC La modalità di configurazione dipende dal fatto che l'istanza database principale del cluster database Aurora sia pubblica o privata.
Cluster DB Aurora Postgre pubblico RDS per istanza SQL DB dell'istanza DB principale di un cluster DB è pubblica se si trova in una sottorete pubblica dell' e se la proprietà "" VPC dell'istanza è. PubliclyAccessible
true
Per trovare il valore di questa proprietà, puoi usare describe-db-instances AWS CLI comando. Oppure puoi usare il AWS Management Console per aprire la scheda Connettività e sicurezza e verificare che l'opzione Accessibile al pubblico sia Sì. Per verificare che l'istanza si trovi nella sottorete pubblica del tuo VPC AWS Management Console o il AWS CLI.Per configurare l'accesso a Lambda, si utilizza il AWS Management Console o il AWS CLI per creare una regola in uscita sul tuo gruppo VPC di sicurezza. La regola in uscita specifica che è TCP possibile utilizzare la porta 443 per inviare pacchetti a qualsiasi IPv4 indirizzo (0.0.0.0/0).
Cluster Aurora Postgre SQL DB privato : in questo caso, la proprietà "PubliclyAccessible" dell'istanza si trova
false
o si trova in una sottorete privata. Per consentire all'istanza di funzionare con Lambda, puoi utilizzare un gateway (Network Address Translation)NAT. Per ulteriori informazioni, consulta i NATgateway. Oppure puoi configurarlo VPC con un VPC endpoint per Lambda. Per ulteriori informazioni, consulta gli VPCendpoint nella Amazon VPC User Guide. L'endpoint risponde alle chiamate effettuate dal cluster Aurora Postgre DB RDS per l'istanza Postgre SQL DB
Ora VPC puoi interagire con AWS Lambda VPCa livello di rete. Successivamente, si configurano le autorizzazioni utilizzandoIAM.
AWS Lambda
L'invocazione di funzioni Lambda dal . Questo approccio fornisce al cluster database privilegi per richiamare la funzione Lambda specificata per tuo conto. I passaggi seguenti mostrano come eseguire questa operazione utilizzando AWS CLI.
Per configurare le IAM autorizzazioni per l'utilizzo dell'del cluster con Lambda
Usa la create-policy
AWS CLI comando per creare una IAM policy che consenta al cluster Aurora Postgre SQL DB RDS per l'istanza Postgre DB . (L'ID dichiarazione (Sid) è una descrizione facoltativa per la dichiarazione di policy e non ha alcun effetto sull'utilizzo). Questa policy fornisce al cluster database Aurora le autorizzazioni minime necessarie per richiamare la funzione Lambda specificata. 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-functionIn alternativa, puoi utilizzare la policy
AWSLambdaRole
predefinita che ti consente di richiamare una qualsiasi delle tue funzioni Lambda. Per ulteriori informazioni, consulta Politiche basate sull'identità IAM per LambdaUsa
il create-role AWS CLI comando per creare un IAM ruolo che la policy può assumere in fase di esecuzione. 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" } ] }'Applica la politica al ruolo utilizzando attach-role-policy
AWS CLI comando. 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 comando. Quest'ultimo passaggio consente agli utenti del cluster database di richiamare le funzioni 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
Una volta VPC IAM completate le configurazioni, ora puoi installare l'aws_lambda
estensione. (Tieni presente che puoi installare l'estensione in qualsiasi momento, ma finché non configuri il VPC supporto e IAM i privilegi corretti, l'aws_lambda
estensione non aggiunge nulla al le funzionalità dell'istanza SQL Postgre DB.)
Per utilizzare AWS Lambda Questa estensione fornisce al cluster Aurora Postgre SQL DB RDS per l'istanza Postgre DB . SQL
Connect al cluster Aurora Postgre SQL DB come utente con privilegi.
rds_superuser
L'utentepostgres
predefinito viene visualizzato nell'esempio.psql -h
cluster-instance.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
-
Installa l'estensione
aws_lambda
. Anche l'estensioneaws_commons
è obbligatoria. Fornisce funzioni di supportoaws_lambda
e molte altre estensioni Aurora per Postgre. SQL Se non è già presente nel SQLDBcluster Aurora Postgre RDS per l'SQLDBistanza Postgre come illustrato di seguito.aws_lambda
CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
NOTICE: installing required extension "aws_commons" CREATE EXTENSION
L'aws_lambda
estensione viene installata nell'istanza DB principale del cluster Aurora Postgre SQL DB. Ora puoi creare strutture utili per richiamare le tue funzioni Lambda.
È possibile utilizzare le funzioni di supporto dell'aws_commons
estensione per preparare entità da richiamare più facilmente da Postgre. SQL Per farlo, devi disporre delle seguenti informazioni sulle funzioni Lambda:
-
Nome della funzione: il nome, Amazon Resource Name (ARN), la versione o l'alias della funzione Lambda. La IAM policy creata Fase 2: Configurazione IAM per l' del cluster e Lambda richiede ilARN, quindi ti consigliamo di utilizzare le tue funzioni. ARN
-
AWS Regione: (Facoltativo) AWS
Per mantenere le informazioni sul nome della funzione Lambda, puoi utilizzare la funzione aws_commons.create_lambda_function_arn. Questa funzione di supporto crea una struttura composita aws_commons._lambda_function_arn_1
con i dettagli necessari alla funzione di richiamo. Di seguito, puoi trovare tre approcci alternativi per l'impostazione di questa struttura composita.
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
Ognuno di questi valori può essere utilizzato nelle chiamate alla funzione aws_lambda.invoke. Per alcuni esempi, consulta .
La funzione aws_lambda.invoke
si comporta in modo sincrono o asincrono, a seconda del invocation_type
. Le due alternative per questo parametro sono RequestResponse
(il valore predefinito) e Event
, come di seguito riportato.
-
RequestResponse
: questo tipo di richiamo è sincrono. Questo è il comportamento predefinito quando viene effettuata la chiamata senza specificare un tipo di chiamata. Il payload di risposta include i risultati della funzioneaws_lambda.invoke
. Utilizza questo tipo di chiamata quando il flusso di lavoro richiede la ricezione dei risultati della funzione Lambda prima di procedere. -
Event
: questo tipo di richiamo è asincrono. La risposta non include un payload contenente i risultati. Utilizza questo tipo di richiamo quando il flusso di lavoro non ha bisogno di un risultato della funzione Lambda per continuare l'elaborazione.
Come semplice test della configurazione, puoi connetterti all'istanza database utilizzando psql
e richiamare una funzione di esempio dalla riga di comando. Supponiamo di avere una delle funzioni di base impostate sul tuo servizio Lambda, come la semplice funzione Python mostrata nello screenshot di seguito.
Per richiamare una funzione di esempio
Connect all'istanza DB principale utilizzando
psql
opgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Invoca la funzione usando la suaARN.
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 risposta è la seguente.
status_code | payload | executed_version | log_result -------------+-------------------------------------------------------+------------------+------------ 200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST | (1 row)
Se il tuo tentativo di richiamo non ha esito positivo, vedi Messaggi di errore della funzione Lambda .
Fase 6: concessione delle autorizzazioni ad altri utenti per richiamare le funzioni Lambda
A questo punto della procedura, solo tu in qualità di rds_superuser
puoi richiamare le funzioni Lambda. Per consentire ad altri utenti di richiamare le funzioni che crei, è necessario concedere loro l'autorizzazione.
Per concedere ad altri utenti l'autorizzazione per richiamare le funzioni Lambda
Connect all'istanza DB principale utilizzando
psql
opgAdmin.psql -h
cluster.444455556666.
.rds.amazonaws.com -U postgres -p 5432aws-region
Esegui i seguenti SQL comandi:
postgres=>
GRANT USAGE ON SCHEMA aws_lambda TOdb_username
; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TOdb_username
;