例: Aurora PostgreSQL DB クラスターから Lambda 関数を呼びだす
以下に、aws_lambda.invoke 関数の呼び出し例をいくつか示します。ほとんどの例では、関数の詳細を簡単に渡せるように、ステップ 4: Aurora PostgreSQL DB クラスターで Lambda のヘルパー関数を使用する (オプション) で作成した複合構造 aws_lambda_arn_1
を使用しています。非同期呼び出しの例については、「例: Lambda 関数の (Event による) 非同期呼び出し」を参照してください。ここに示されたその他の例はすべて、同期呼び出しを使用します。
Lambda 呼び出しタイプの詳細については、「AWS Lambdaデベロッパーガイド」の「Lambda 関数を呼び出す」を参照してください。aws_lambda_arn_1
の詳細については、「aws_commons.create_lambda_function_arn」を参照してください。
サンプルリスト
例: Lambda 関数の (RequestResponse による) 同期呼び出し
以下に、Lambda 関数の同期呼び出しの例を 2 つ示します。これらの 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: Aurora PostgreSQL DB クラスターで Lambda のヘルパー関数を使用する (オプション) で作成される複合構造を識別します。この構造は、次のように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 実行ログのキャプチャリング
関数レスポンスに実行ログの最後の 4 KB を含めるには、log_type
パラメーターを使用しながら aws_lambda.invoke
関数を呼び出します。デフォルトでは、このパラメータには None
が設定されています。レスポンス内の Lambda 実行ログの結果をキャプチャする場合は、以下のように Tail
を指定します。
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');
クライアントコンテキストを含めるときは、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」でリファレンスを参照してください。