예제: RDS for PostgreSQL DB 인스턴스에서 Lambda 함수 호출 - Amazon Relational Database Service

예제: RDS for PostgreSQL DB 인스턴스에서 Lambda 함수 호출

다음에서 aws_lambda.invoke 함수를 호출하는 몇 가지 예를 찾을 수 있습니다. 예제 대부분은 4단계: RDS for PostgreSQL DB 인스턴스와 함께 Lambda 도우미 함수 사용(선택 사항)에서 생성한 복합 구조 aws_lambda_arn_1을 사용하여 함수 세부 정보 전달을 단순화합니다. 비동기 호출의 예는 예제: Lambda 함수의 비동기 (이벤트) 호출 섹션을 참조하세요. 나열된 다른 모든 예에서 동기 호출을 사용합니다.

Lambda 호출 유형에 대한 자세한 내용은 AWS 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' - 이 파라미터는 4단계: RDS for PostgreSQL DB 인스턴스와 함께 Lambda 도우미 함수 사용(선택 사항)에서 생성된 복합 구조를 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 함수의 비동기 (이벤트) 호출

다음은 비동기 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 파라미터를 사용하여 함수 응답에 실행 로그의 마지막 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_lambda.invoke 함수의 log_type 파라미터를 Tail로 설정합니다. log_type 파라미터의 기본값은 None입니다.

반환 문자열 log_resultbase64 인코딩된 문자열입니다. decodeconvert_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 레퍼런스를 참조하세요.