範例:對 Postgre 資料庫執行個體從 Aurora Postgre SQL 資料庫叢集叫用 Lambda 函數 SQL - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

範例:對 Postgre 資料庫執行個體從 Aurora Postgre SQL 資料庫叢集叫用 Lambda 函數 SQL

以下提供幾個呼叫 aws_lambda.invoke 函數的範例。大多數範例都使用您在中建立aws_lambda_arn_1的複合結構步驟 4:集 (選用)來簡化傳遞函數詳細資訊。如需非同步叫用的範例,請參閱範例:Lambda 函數的非同步 (Event) 叫用。列出的所有其他範例都使用同步叫用。

若要進一步了解 Lambda 叫用類型,請參閱叫用 Lambda 函數 AWS Lambda 開發人員指南。如需 aws_lambda_arn_1 的詳細資訊,請參閱 aws_commons.create_lambda_function_arn

範例:Lambda 函數的同步 (RequestResponse) 叫用

下面是同步 Lambda 函數叫用的兩個範例。這些 aws_lambda.invoke 函數的結果相同。

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');

參數說明如下:

  • :'aws_lambda_arn_1' – 此參數識別 步驟 4:集 (選用) 中使用 aws_commons.create_lambda_function_arn helper 函數建立的複合結構。您也可以在 aws_lambda.invoke 呼叫中建立這個結構,如下所示。

    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— 要傳遞給 Lambda 函數的JSON有效載荷。

  • 'RequestResponse' – Lambda 叫用類型。

範例:Lambda 函數的非同步 (Event) 叫用

以下是非同步 Lambda 函數叫用的範例。Event 叫用類型會使用指定的輸入承載,來排程 Lambda 函數叫用並立即傳回。在某些工作流程中,使用不依賴於 Lambda 函數結果的 Event 叫用類型。

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

範例:在函數回應中擷取 Lambda 執行日誌

aws_lambda.invoke 函數呼叫中使用 log_type 參數,即可讓函數回應中包含執行日誌的最後 4 KB。此參數預設為 None,但您可指定 Tail 以在回應中擷取 Lambda 執行日誌的結果,如下所示。

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');

aws_lambda.invoke log_type 函數的 Tail 參數設定為在回應中包含執行日誌。log_type 參數的預設值為 None

log_result 傳回的是 base64 編碼字串。您可以使用decodeconvert_from Postgre SQL 函數的組合來解碼內容。

如需 log_type 的詳細資訊,請參閱 aws_lambda.invoke

範例:在 Lambda 函數中包含用戶端內容

aws_lambda.invoke 函數具有 context 參數,可用來獨立於承載之外傳遞資訊,如下所示。

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');

要包含客戶端上下文,請為aws_lambda.invokecontext數的參數使用JSON對象。

如需 context 參數的詳細資訊,請參閱 aws_lambda.invoke 參考。

範例:叫用特定版本的 Lambda 函數

使用 aws_lambda.invoke 呼叫加入 qualifier 參數,即可指定特定版本的 Lambda 函數。以下提供使用 'custom_version' 作為版本別名的範例。

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

也可改為提供含有函數名稱的 Lambda 函數限定詞,如下所示。

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

如需 qualifier 和其他參數的詳細資訊,請參閱 aws_lambda.invoke 參考。