示例:从 RDS for PostgreSQL 数据库实例调用 Lambda 函数
在下文中,您可以找到调用 aws_lambda.invoke 函数的一些示例。大多数示例都使用您在 步骤 4:将 Lambda 帮助程序函数与 RDS for PostgreSQL 数据库实例搭配使用(可选) 中创建的复合结构 aws_lambda_arn_1
来简化函数详细信息的传递。有关异步调用的示例,请参阅 示例:Lambda 函数的异步(事件)调用。列出的其他示例均使用同步调用。
要了解有关 Lambda 调用类型的更多信息,请参阅《Amazon 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'
:此参数使用aws_commons.create_lambda_function_arn
帮助程序函数标识在 步骤 4:将 Lambda 帮助程序函数与 RDS for PostgreSQL 数据库实例搭配使用(可选) 中创建的复合结构。您还可以通过内联方式在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 函数的异步(事件)调用
以下是异步 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 函数名称详细信息的 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 参考。