Ruby로 Lambda 함수 구축

Ruby로 Lambda 함수 구축 (Building Lambda functions with Ruby)

AWS Lambda에서 Ruby 코드를 실행할 수 있어요. Lambda는 이벤트를 처리하도록 작성한 코드를 실행하는 Ruby용 런타임을 제공해요. 코드는 여러분이 관리하는 AWS Identity and Access Management(IAM) 역할의 자격 증명을 사용하는 AWS SDK for Ruby를 포함한 환경에서 실행돼요. Ruby 런타임에 포함된 SDK 버전에 대한 자세한 내용은 런타임 포함 SDK 버전을 참고하세요.

출처: AWS Lambda 개발자 안내서

본문

Lambda는 다음 Ruby 런타임을 지원해요.

이름 식별자 운영 체제 지원 종료 날짜 함수 생성 차단 함수 업데이트 차단
Ruby 4.0 ruby4.0 Amazon Linux 2023 2029년 3월 31일 2029년 4월 30일 2029년 5월 31일
Ruby 3.4 ruby3.4 Amazon Linux 2023 2028년 3월 31일 2028년 4월 30일 2028년 5월 31일
Ruby 3.3 ruby3.3 Amazon Linux 2023 2027년 3월 31일 2027년 4월 30일 2027년 5월 31일

Ruby 함수 생성

  1. Lambda 콘솔을 열어요.
  2. 함수 생성(Create function) 을 선택해요.
  3. 다음 설정을 구성해요.
    • 함수 이름(Function name) : 함수 이름을 입력해요.
    • 런타임(Runtime) : Ruby 4.0 을 선택해요.
  4. 함수 생성(Create function) 을 선택해요.

콘솔은 lambda_function.rb 라는 단일 소스 파일이 있는 Lambda 함수를 만들어요. 이 파일을 편집하고 내장 코드 편집기에서 파일을 더 추가할 수 있어요. 배포(DEPLOY) 섹션에서 배포(Deploy) 를 선택해 함수의 코드를 업데이트해요. 그리고 테스트 이벤트(TEST EVENTS) 섹션에서 테스트 이벤트 생성(Create test event) 을 선택해 코드를 실행해요.

lambda_function.rb 파일은 이벤트 객체와 컨텍스트 객체를 받는 lambda_handler 함수를 내보내요. 이것이 함수가 호출될 때 Lambda가 호출하는 핸들러 함수예요. Ruby 함수 런타임은 Lambda에서 호출 이벤트를 받아 핸들러에 전달해요. 함수 구성에서 핸들러 값은 lambda_function.lambda_handler 예요.

함수 코드를 저장하면 Lambda 콘솔이 .zip 파일 아카이브 배포 패키지를 만들어요. 콘솔 외부(IDE 사용)에서 함수 코드를 개발할 때는 코드를 Lambda 함수에 업로드하기 위해 배포 패키지를 만들어야 해요.

함수 런타임은 호출 이벤트와 함께 컨텍스트 객체를 핸들러에 전달해요. 컨텍스트 객체는 호출, 함수, 실행 환경에 대한 추가 정보를 담고 있어요. 환경 변수에서 더 많은 정보를 얻을 수 있어요.

Lambda 함수에는 CloudWatch Logs 로그 그룹이 함께 제공돼요. 함수 런타임은 각 호출에 대한 세부 정보를 CloudWatch Logs로 보내요. 호출 중 함수가 출력하는 로그도 중계해요. 함수가 오류를 반환하면 Lambda는 오류 형식을 지정해 호출자에게 반환해요.

런타임 포함 SDK 버전 (Runtime-included SDK versions)

Ruby 런타임에 포함된 AWS SDK 버전은 런타임 버전과 여러분의 AWS 리전에 따라 달라져요. AWS SDK for Ruby는 모듈식으로 설계되었으며 AWS 서비스별로 분리돼 있어요. 사용 중인 런타임에 포함된 특정 서비스 gem의 버전 번호를 찾으려면 다음 형식의 코드로 Lambda 함수를 만들어요. aws-sdk-s3 와 Aws::S3 를 코드가 사용하는 서비스 gem의 이름으로 바꿔요.

require 'aws-sdk-s3'

def lambda_handler(event:, context:)
  puts "Service gem version: #{Aws::S3::GEM_VERSION}"
  puts "Core version: #{Aws::CORE_GEM_VERSION}"
end

YJIT(Yet Another Ruby JIT) 활성화 (Enabling YJIT)

Ruby 런타임은 가볍고 최소한의 Ruby JIT 컴파일러인 YJIT를 지원해요. YJIT는 훨씬 더 높은 성능을 제공하지만 Ruby 인터프리터보다 더 많은 메모리를 사용해요. YJIT는 Ruby on Rails 워크로드에 권장돼요.

YJIT는 기본으로 활성화되지 않아요. Ruby 함수에 YJIT를 활성화하려면 RUBY_YJIT_ENABLE 환경 변수를 1 로 설정해요. YJIT가 활성화되었는지 확인하려면 RubyVM::YJIT.enabled? 메서드의 결과를 출력해요.

예제 — YJIT 활성화 확인

puts(RubyVM::YJIT.enabled?())
# => true

더 알아보기 (Learn more)