本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:RDS針對 Postgre 資料庫執行個體從 叫用 Lambda 函數 SQL
以下提供幾個呼叫 aws_lambda.invoke 函數的範例。大多數範例都使用您在中建立aws_lambda_arn_1
的複合結構步驟 4:RDS針對 Postgre 資料庫執行個體使用 Lambda 協助程式函數搭配 Aurora Postgre SQL 資料SQL庫叢 (選用)來簡化傳遞函數詳細資訊。如需非同步叫用的範例,請參閱範例: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:RDS針對 Postgre 資料庫執行個體使用 Lambda 協助程式函數搭配 Aurora Postgre SQL 資料SQL庫叢 (選用) 中使用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
編碼字串。您可以使用decode
和 convert_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.invoke函context
數的參數使用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 參考。