

# 예제: RDS for PostgreSQL DB 인스턴스에서 Lambda 함수 호출
<a name="PostgreSQL-Lambda-examples"></a>

다음에서 [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 함수를 호출하는 몇 가지 예를 찾을 수 있습니다. 예제 대부분은 [4단계: RDS for PostgreSQL DB 인스턴스와 함께 Lambda 도우미 함수 사용(선택 사항)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function)에서 생성한 복합 구조 `aws_lambda_arn_1`을 사용하여 함수 세부 정보 전달을 단순화합니다. 비동기 호출의 예는 [예제: Lambda 함수의 비동기 (이벤트) 호출](#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 함수의 비동기 (이벤트) 호출](#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 DB 인스턴스와 함께 Lambda 도우미 함수 사용(선택 사항)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function)에서 생성된 복합 구조를 `aws_commons.create_lambda_function_arn` 도우미 함수와 함께 식별합니다. 다음과 같이 `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 함수의 비동기 (이벤트) 호출
<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` 파라미터를 사용하여 함수 응답에 실행 로그의 마지막 4KB를 포함할 수 있습니다. 기본적으로 이 파라미터는 `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');
```

클라이언트 컨텍스트를 포함하려면 [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) 함수의 `context` 파라미터에 JSON 객체를 사용하세요.

`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) 레퍼런스를 참조하세요.