

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

# 範例：從 RDS for PostgreSQL 資料庫執行個體叫用 Lambda 函數
<a name="PostgreSQL-Lambda-examples"></a>

以下提供幾個呼叫 [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 函數的範例。大部分範例使用您在 [步驟 4：搭配 RDS for PostgreSQL 資料庫執行個體使用 Lambda helper 函數 (選用)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function) 中建立的複合結構 `aws_lambda_arn_1` 來簡化函數詳細資訊的傳遞。如需非同步叫用的範例，請參閱[範例：Lambda 函數的非同步 (Event) 叫用](#PostgreSQL-Lambda-Event)。列出的所有其他範例都使用同步叫用。

若要進一步了解 Lambda 叫用類型，請參閱《*AWS Lambda 開發人員指南*》中的[叫用 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html)。如需 `aws_lambda_arn_1` 的相關資訊，請參閱 [aws\$1commons.create\$1lambda\$1function\$1arn](PostgreSQL-Lambda-functions.md#aws_commons.create_lambda_function_arn)。

**Topics**
+ [範例：Lambda 函數的同步 (RequestResponse) 叫用](#PostgreSQL-Lambda-RequestResponse)
+ [範例：Lambda 函數的非同步 (Event) 叫用](#PostgreSQL-Lambda-Event)
+ [範例：在函數回應中擷取 Lambda 執行日誌](#PostgreSQL-Lambda-log-response)
+ [範例：在 Lambda 函數中包含用戶端內容](#PostgreSQL-Lambda-client-context)
+ [範例：叫用特定版本的 Lambda 函數](#PostgreSQL-Lambda-function-version)

## 範例：Lambda 函數的同步 (RequestResponse) 叫用
<a name="PostgreSQL-Lambda-RequestResponse"></a>

下面是同步 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 for PostgreSQL 資料庫執行個體使用 Lambda helper 函數 (選用)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function) 中使用 `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) 叫用
<a name="PostgreSQL-Lambda-Event"></a>

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

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

## 範例：在函數回應中擷取 Lambda 執行日誌
<a name="PostgreSQL-Lambda-log-response"></a>

在 `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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) `log_type` 函數的 `Tail` 參數設定為在回應中包含執行日誌。`log_type` 參數的預設值為 `None`。

`log_result` 傳回的是 `base64` 編碼字串。您可以使用 `decode` 和 `convert_from` PostgreSQL 函數的組合，來解碼內容。

如需 `log_type` 的相關資訊，請參閱 [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke)。

## 範例：在 Lambda 函數中包含用戶端內容
<a name="PostgreSQL-Lambda-client-context"></a>

`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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 函數的 `context` 參數。

如需 `context` 參數的詳細資訊，請參閱 [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 參考。

## 範例：叫用特定版本的 Lambda 函數
<a name="PostgreSQL-Lambda-function-version"></a>

使用 `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\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 參考。