Ruby를 사용하여 Lambda 함수 빌드 - AWS Lambda

Ruby를 사용하여 Lambda 함수 빌드

AWS Lambda에서 Ruby 코드를 실행할 수 있습니다. Lambda는 이벤트 처리를 위해 코드를 실행하는 Ruby를 위한 런타임을 제공합니다. 코드는 사용자가 관리하는 AWS Identity and Access Management(IAM) 역할의 자격 증명을 사용하여 AWS SDK for Ruby가 포함된 환경에서 실행됩니다. Ruby 런타임에 포함된 SDK 버전에 대해 자세히 알아보려면 런타임에 포함된 SDK 버전 섹션을 참조하세요.

Lambda는 다음과 같은 Ruby 런타임을 지원합니다.

Ruby
명칭 식별자 운영 체제 사용 중단 날짜 블록 함수 생성 블록 함수 업데이트

Ruby 3.3

ruby3.3

Amazon Linux 2023

Ruby 3.2

ruby3.2

Amazon Linux 2

Ruby 함수를 만들려면
  1. Lambda 콘솔을 엽니다.

  2. 함수 생성(Create function)을 선택합니다.

  3. 다음 설정을 구성합니다:

    • 함수 이름: 함수의 이름을 입력합니다.

    • 런타임: Ruby 3.2를 선택합니다.

  4. 함수 생성(Create function)을 선택합니다.

  5. 테스트 이벤트를 구성하려면 테스트를 선택합니다.

  6. 이벤트 이름test를 입력합니다.

  7. Save changes(변경 사항 저장)를 선택합니다.

  8. 함수를 호출하려면 테스트를 선택합니다.

콘솔은 lambda_function.rb(이)라는 단일 소스 파일로 Lambda 함수를 생성합니다. 이 파일을 편집하고 기본 제공 코드 편집기에서 더 많은 파일을 추가할 수 있습니다. 변경 사항을 저장하려면 [Save]를 선택합니다. 그런 다음 코드를 실행하려면 테스트를 선택합니다.

참고

Lambda 콘솔은 AWS Cloud9를 사용하여 브라우저에서 통합 개발 환경(IDE)을 제공합니다. AWS Cloud9을 사용하면 자신의 환경에서 Lambda 함수를 개발할 수도 있습니다. 자세한 내용은 AWS Cloud9 사용 설명서의 Working with AWS Lambda functions using the AWS Toolkit을 참조하세요.

lambda_function.rb 파일은 이벤트 객체와 컨텍스트 객체를 취하는 lambda_handler라는 이름의 함수를 내보냅니다. 이는 함수가 호출될 때 Lambda가 호출하는 핸들러 함수입니다. Ruby 함수 런타임은 Lambda에서 호출 이벤트를 가져와 핸들러로 전달합니다. 함수 구성에서 핸들러 값은 lambda_function.lambda_handler입니다.

함수 코드를 저장하면 Lambda 콘솔에서 .zip 파일 아카이브 배포 패키지를 만듭니다. 콘솔 외부에서 (IDE를 사용해) 함수 코드를 개발하는 경우 Lambda 함수에 코드를 업로드하려면 배포 패키지를 생성해야 합니다.

참고

로컬 환경에서 애플리케이션 개발을 시작하려면 이 가이드의 GitHub 리포지토리에서 사용할 수 있는 샘플 애플리케이션 중 하나를 배포하세요.

Ruby의 샘플 Lambda 애플리케이션
  • blank-ruby – 로깅, 환경 변수, AWS X-Ray 추적, 계층, 단위 테스트 및 AWS SDK를 사용하는 방법을 보여주는 Ruby 함수입니다.

  • AWS Lambda용 Ruby 코드 샘플 – AWS Lambda와 상호 작용하는 방법을 보여주는 Ruby로 작성된 코드 샘플입니다.

함수 런타임은 호출 이벤트 외에도 컨텍스트 객체를 핸들러에 전달합니다. 컨텍스트 객체에는 호출, 함수 및 실행 환경에 관한 추가 정보가 포함되어 있습니다. 자세한 내용은 환경 변수에서 확인할 수 있습니다.

Lambda 함수는 CloudWatch Logs 로그 그룹을 함께 제공됩니다. 함수 런타임은 각 호출에 대한 세부 정보를 CloudWatch Logs에 보냅니다. 호출 중 함수가 출력하는 로그를 전달합니다. 함수가 오류를 반환하면 Lambda은 오류에 서식을 지정한 후 이를 호출자에게 반환합니다.

런타임에 포함된 SDK 버전

Ruby 런타임에 포함된 AWS SDK 버전은 런타임 버전 및 사용자의 AWS 리전에 따라 달라집니다. AWS SDK for Ruby는 모듈식으로 설계되었으며 AWS 서비스와 구분됩니다. 사용 중인 런타임에 포함된 특정 서비스 gem의 버전 번호를 찾으려면 다음 형식의 코드를 사용하여 Lambda 함수를 생성합니다. aws-sdk-s3Aws::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

또 다른 Ruby JIT(YJIT) 활성화

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

YJIT는 기본적으로 활성화되어 있지 않습니다. Ruby 3.2 함수에 대해 YJIT를 활성화하려면 RUBY_YJIT_ENABLE 환경 변수를 1로 설정합니다. YJIT가 활성화되었는지 확인하려면 RubyVM::YJIT.enabled? 메서드의 결과를 인쇄합니다.

예 - YJIT가 활성화되어 있는지 확인
puts(RubyVM::YJIT.enabled?()) # => true