메뉴 닫기

Amazon Redshift Python UDF 지원 종료와 Lambda UDF 전환 가이드

Amazon Redshift의 Python UDF 지원 종료 및 Lambda UDF로의 전환 가이드

2026년 6월 30일 이후 Amazon Redshift 내에서 Python 기반 사용자 정의 함수(UDF)는 더 이상 지원되지 않습니다. AWS는 이번 변경을 통해 더 안전하고 유연한 Lambda UDF로의 전환을 권장하고 있으며, 이에 따라 기존 Python UDF 사용자는 사전에 마이그레이션을 준비해야 합니다. 본 글에서는 Redshift Python UDF와 Lambda UDF의 비교, 전환 방법, 성능 및 비용 모니터링, 그리고 최적화 방안 등을 상세히 설명 드립니다.

Lambda UDF와 Python UDF 비교 및 장점

기존 Python UDF는 Redshift 엔진 내에서 직접 실행되며, 파이썬 라이브러리에 의존하는 경우가 많아 보안과 유지보수가 어렵고 확장성에 한계가 있었습니다. 반면, AWS Lambda와 통합된 Lambda UDF는 다음과 같은 이점을 제공합니다.

  • 외부 API 또는 서비스와의 유연한 연동
  • 다양한 Python 런타임 버전 지원 및 최신 보안 패치 반영
  • Redshift 컴퓨팅 리소스와 독립된 확장성 제공
  • 격리된 Sandbox 실행 환경으로 보안 우수

이러한 장점 덕분에 Lambda UDF는 데이터 처리 자동화 또는 외부 시스템 통합에 매우 적합하며 지속적인 운영 효율성을 제공합니다.

Python UDF의 Levenshtein Distance 구현 예시

기존 Python UDF를 활용해 Levenshtein 거리(문자열 간 변경 거리)를 계산하는 함수는 다음과 같습니다.

create or replace function fn_levenshtein_distance(a varchar, b varchar) returns integer as
$$

내부 Python 코드 생략

$$ immutable;

이를 활용한 쿼리는 다음과 같으며, 고객 이름의 유사도를 측정하는 데 활용할 수 있습니다.

SELECT c_customer_sk, c_customer_id, fn_levenshtein_distance(c_first_name, c_last_name) as distance FROM customer WHERE c_customer_sk in (1,2,3);

Lambda UDF로의 전환 절차

  1. AWS Lambda 함수 생성

AWS 콘솔 혹은 CLI를 통해 새로운 Lambda 함수를 생성합니다. 예제에서는 Python 3.12 기반으로 str1과 str2의 Levenshtein 거리를 계산하도록 구성되어 있습니다.

Lambda 함수 생성 화면

  1. IAM Role 권한 설정

Redshift에서 Lambda를 호출할 수 있도록 Lambda 함수 ARN 정보를 포함한 권한 정책을 IAM Role에 등록합니다.

  1. Lambda UDF 생성

Lambda 함수를 Redshift 외부 함수로 등록합니다.

CREATE or REPLACE EXTERNAL FUNCTION fn_lambda_levenshtein_distance(a varchar, b varchar) returns int
lambda 'levenshtein_distance_func' IAM_ROLE default STABLE;

  1. 기존 Python UDF 대체

기존 Python UDF를 삭제하거나 접근 권한을 회수하고, Lambda UDF 이름을 기존 함수 이름으로 변경해 애플리케이션 코드 변경 없이 전환이 완료됩니다.

ALTER FUNCTION fn_lambda_levenshtein_distance(varchar, varchar) RENAME TO fn_levenshtein_distance;

쿼리 성능 및 비용 모니터링

Amazon Redshift의 쿼리 히스토리 및 CloudWatch를 통해 Lambda UDF의 호출 패턴, 실행 시간, 에러 발생 여부, 비용 등을 종합적으로 모니터링할 수 있습니다.

CloudWatch 상의 Lambda UDF 비용 분석 예시

비용 계산은 각각의 Lambda 호출에 대한 실행 시간, 메모리 사용량 등을 기반으로 하며, 예제에서는 3천만 건의 레코드 처리에 $0.02 수준의 비용이 발생했습니다.

성능 최적화 및 고려사항

  • Row Batching: Redshift는 다수의 레코드를 하나의 Lambda 호출로 묶어 효율화합니다.
  • 병렬 실행: 데이터 슬라이스마다 병렬로 Lambda 호출이 이뤄져 대량 처리에도 효율적입니다.
  • Cold Start 지연 최소화를 위한 런타임 선택: Node.js 또는 Python이 적합
  • 에러 처리: Lambda 함수의 안전한 오류 반환이 필요합니다. JSON 결과에 success, error_msg, results를 명시적으로 포함해야 합니다.

레거시 Python UDF 대체 외에도 Lambda UDF는 API 연동, 외부 데이터 정제, 토큰화 및 암복호화 등의 작업에도 활용 가능하며, 이러한 자동화 요소를 활용한 구축 방법 또한 AWS 공식 예제에서 확인할 수 있습니다.

기존 Python UDF 실행 결과 예시

Lambda UDF 실행 결과 비교 예시

클린업 및 마무리

작업이 완료된 후, 사용하지 않는 Lambda 함수, Redshift 클러스터 또는 IAM 역할을 반드시 삭제해야 요금 발생을 방지할 수 있습니다.

결론

Lambda UDF는 기존 Redshift Python UDF 의존도를 줄이고, 더 안전하고 유연한 데이터 처리 환경으로 전환할 수 있는 훌륭한 선택입니다. 특히, Amazon Q Developer를 활용하면 기존 파이썬 코드를 손쉽게 Lambda 함수로 자동 변환할 수 있어 전환 시간을 대폭 줄일 수 있습니다.

향후 확장성과 유지보수, 데이터 보안 및 자동화 측면에서 Lambda UDF 도입은 필수적인 전략이라 할 수 있으며, 클라우드 기반 분석 구조 현대화의 핵심으로 평가받고 있습니다.

https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/

AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!

(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기


AI, Cloud 도입 상담 배너