使用 Ruby 建置 Lambda 函數 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Ruby 建置 Lambda 函數

您可以在 AWS Lambda中執行 Ruby 程式碼。Lambda 提供用於執行程式碼來處理事件的 Ruby 執行期。您的程式碼會在包含您管理之 AWS SDK for Ruby AWS Identity and Access Management (IAM) 角色的登入資料的環境中執行。若要進一步瞭解 Ruby 執行階段隨附的 SDK 版本,請參閱包含執行階段的 SDK 版本

Lambda 支援以下 Ruby 執行期。

Ruby
名稱 識別符 作業系統 取代日期 封鎖函數建立 封鎖函數更新

Ruby 3.2

ruby3.2

Amazon Linux 2

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

  2. 選擇建立函數

  3. 進行下列設定:

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

    • 執行期:選擇 Ruby 3.2

  4. 選擇建立函數

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

  6. 事件名稱輸入 test

  7. 選擇儲存變更

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

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

注意

Lambda 主控台用 AWS Cloud9 來在瀏覽器中提供整合式開發環境。您也可以使用 AWS Cloud9 在自己的環境中開發 Lambda 函數。若要取得更多資訊,請參閱使用指南 AWS 工具組中的〈使用 AWS Lambda 函數〉。 AWS Cloud9

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

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

注意

若要在您的本機環境中開始進行應用程式開發,請部署本指南 GitHub 儲存庫中提供的其中一個範例應用程式。

以 Ruby 編寫的範例 Lambda 應用程式
  • 空白紅寶石 — 一個 Ruby 函數,顯示日誌記錄,環境變量, AWS X-Ray 跟踪,圖層,單元測試和 SDK 的使用。 AWS

  • 適用於 AWS Lambda 的 Ruby 程式碼範例 — 以 Ruby 撰寫的程式碼範例,示範如何與 AWS Lambda 互動。

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

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

包含執行階段的 SDK 版本

Ruby 執行階段中包含的 AWS SDK 版本取決於執行階段版本和您的 AWS 區域. AWS SDK for 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

啟用 Yet Another Ruby JIT (YJIT)

Ruby 3.2 執行期支援 YJIT,一個輕量級、簡約 Ruby JIT 編譯器。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