本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:從 Aurora PostgreSQL 資料庫叢集叫用 Lambda 函數
以下提供幾個呼叫 aws_lambda.invoke 函數的範例。大部分範例使用您在 步驟 4:搭配 Aurora PostgreSQL 資料庫叢集使用 Lambda helper 函數 (選用) 中建立的複合結構 aws_lambda_arn_1,來簡化函數詳細資訊的傳遞。如需非同步叫用的範例,請參閱範例:Lambda 函數的非同步 (Event) 叫用。列出的所有其他範例都使用同步叫用。
若要進一步了解 Lambda 叫用類型,請參閱《AWS Lambda開發人員指南》中的叫用 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:搭配 Aurora PostgreSQL 資料庫叢集使用 Lambda helper 函數 (選用) 中使用aws_commons.create_lambda_function_arnhelper 函數建立的複合結構。您也可以在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 編碼字串。您可以使用 decode 和 convert_from PostgreSQL 函數的組合,來解碼內容。
如需 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');
若要包含用戶端內容,請使用 JSON 物件作為 aws_lambda.invoke 函數的 context 參數。
如需 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 參考。