使用 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
名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

紅寶石

ruby3.3

Amazon Linux 2023

Ruby 3.2

ruby3.2

Amazon Linux 2

建立 Ruby 函式
  1. 開啟 Lambda 主控台

  2. 選擇建立函數

  3. 進行下列設定:

    • 函數名稱:輸入函數名稱。

    • 執行期:選擇 Ruby 3.2

  4. 選擇建立函數

  5. 若要設定測試事件,請選擇 Test (測試)

  6. 事件名稱輸入 test

  7. 選擇 Save changes (儲存變更)。

  8. 若要調用函數,請選擇 Test (測試)。

主控台將建立一個 Lambda 函數,其具有名為 lambda_function.rb 的單一來源檔案。您可以使用內建的程式碼編輯器編輯該檔案並加入更多檔案。選擇 Save (儲存) 以儲存變更。然後,若要執行程式碼,請選擇 Test (測試)。

lambda_function.rb 檔案匯出名為 lambda_handler 的函數,它接受事件物件與內容物件。這就是在調用函數時,Lambda 呼叫的處理常式函數。Ruby 函數執行期會從 Lambda 中取得調用事件並其傳遞至處理常式。在函式組態中,處理常式值為 lambda_function.lambda_handler

當您儲存函數程式碼時,Lambda 主控台會建立 .zip 封存檔部署套件。當您在主控台外部開發函數程式碼時 (使用IDE),您需要建立部署套件,將程式碼上傳至 Lambda 函數。

除了傳遞調用事件外,函式執行期還會傳遞內容物件至處理常式。內容物件包含了有關調用、函式以及執行環境的額外資訊。更多詳細資訊將另由環境變數提供。

您的 Lambda 函數隨附一個 CloudWatch 日誌記錄群組。函數運行時將有關每次調用的詳細信息發送到 CloudWatch 日誌。它在調用期間會轉送您的函數輸出的任何記錄。如果您的函數傳回錯誤,Lambda 會對該錯誤進行格式化之後傳回給調用端。

包含執行階段SDK的版本

Ruby 執行階段中 AWS SDK包含的版本取決於執行階段版本和您的 AWS 區域. 對 AWS SDK於 Ruby 的設計是模塊化的,並由 AWS 服務. 若要尋找您正在使用的執行階段中包含之特定服務 gem 的版本號碼,請使用下列格式的程式碼建立 Lambda 函數。將您Aws::S3的程式碼使用的服務 gem 名稱取代aws-sdk-s3和。

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

啟用另一個 RubyJIT(YJIT)

Ruby 3.2 運行時支持 YJIT,一個輕量級,簡約的 Ruby JIT 編譯器。YJIT提供了顯著更高的性能,但也比 Ruby 解釋器使用更多的內存。YJIT建議用於 Ruby on Rails 工作負載。

YJIT依預設不啟用。若要啟YJIT用 Ruby 3.2 函數,請將RUBY_YJIT_ENABLE環境變數設定為1。若要確認YJIT已啟用,請列印RubyVM::YJIT.enabled?方法的結果。

範例 — 確認YJIT已啟用
puts(RubyVM::YJIT.enabled?()) # => true