Esempi: Richiamo delle funzioni Lambda dall'istanza database RDS for PostgreSQL - Amazon Relational Database Service

Esempi: Richiamo delle funzioni Lambda dall'istanza database RDS for PostgreSQL

Di seguito, è possibile trovare diversi esempi di chiamate alla funzione aws_lambda.invoke. Nella maggior parte degli esempi viene utilizzata la struttura composita aws_lambda_arn_1 creata in Fase 4: utilizzo delle funzioni di supporto Lambda con l'istanza database RDS for PostgreSQL (facoltativo) per semplificare il passaggio dei dettagli della funzione. Per un esempio di chiamata asincrona, consulta Esempio: richiamo (di eventi) asincroni di funzioni Lambda. Tutti gli altri esempi elencati utilizzano il richiamo sincrono.

Per ulteriori informazioni sui tipi di chiamata Lambda, consulta Richiamo di funzioni Lambda nella Guida per gli sviluppatori di AWS Lambda. Per ulteriori informazioni su aws_lambda_arn_1, consulta aws_commons.create_lambda_function_arn.

Esempio: richiamo sincrono (RequestResponse) di funzioni Lambda

Di seguito sono riportati due esempi di una chiamata di funzione Lambda sincrona. I risultati di queste chiamate di funzione aws_lambda.invoke sono gli stessi.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json);
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse');

I parametri sono descritti come segue:

  • :'aws_lambda_arn_1': questo parametro identifica la struttura composita creata in Fase 4: utilizzo delle funzioni di supporto Lambda con l'istanza database RDS for PostgreSQL (facoltativo) con la funzione di supporto di aws_commons.create_lambda_function_arn. Puoi anche creare questa struttura in linea all'interno della chiamata aws_lambda.invoke come segue:

    SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function', 'aws-region'), '{"body": "Hello from Postgres!"}'::json );
  • '{"body": "Hello from PostgreSQL!"}'::json: il payload JSON da passare alla funzione Lambda.

  • 'RequestResponse': il tipo di richiamo Lambda.

Esempio: richiamo (di eventi) asincroni di funzioni Lambda

Di seguito è riportato un esempio di una chiamata di funzione Lambda asincrona. Il tipo di richiamo Event pianifica il richiamo della funzione Lambda con il payload di input specificato e restituisce immediatamente un risultato. Utilizza il tipo di chiamata Event in determinati flussi di lavoro che non dipendono dai risultati della funzione Lambda.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'Event');

Esempio: acquisizione del registro di esecuzione Lambda in una risposta di funzione

È possibile includere gli ultimi 4 KB del registro di esecuzione nella risposta della funzione utilizzando il parametro log_type nella chiamata di funzione aws_lambda.invoke. Per impostazione predefinita, questo parametro è impostato su None, ma puoi specificare Tail per acquisire i risultati del registro di esecuzione Lambda nella risposta, come illustrato di seguito.

SELECT *, select convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');

Impostare il parametro aws_lambda.invoke della funzione log_type su Tail per includere il log di esecuzione nella risposta. Il valore predefinito per il parametro log_type è None.

Il log_result che viene restituito è una stringa base64 codificata. È possibile decodificare i contenuti utilizzando una combinazione delle funzioni PostgreSQL decode e convert_from.

Per ulteriori informazioni su log_type, consulta aws_lambda.invoke.

Esempio: inclusione del contesto client in una funzione Lambda

La funzione aws_lambda.invoke ha un parametro context che puoi utilizzare per passare le informazioni separate dal payload, come illustrato di seguito.

SELECT *, convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');

Per includere il contesto client, utilizzare un oggetto JSON per il parametro aws_lambda.invoke della funzione context.

Per ulteriori informazioni sul parametro context, consulta la documentazione di riferimento di aws_lambda.invoke.

Esempio: richiamo di una versione specifica di una funzione Lambda

Puoi specificare una determinata versione di una funzione Lambda includendo il parametro qualifier con la chiamata aws_lambda.invoke. Di seguito puoi trovare un esempio in cui viene utilizzato 'custom_version' come alias per la versione.

SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'None', NULL, 'custom_version');

Puoi inoltre fornire un qualificatore di funzione Lambda con i dettagli relativi al nome della funzione, come mostrato di seguito.

SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function:custom_version', 'us-west-2'), '{"body": "Hello from Postgres!"}'::json);

Per ulteriori informazioni su qualifier e altri parametri, consulta documentazione di riferimento di aws_lambda.invoke.