本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Ruby 建置 Lambda 函數
您可以在 AWS Lambda中執行 Ruby 程式碼。Lambda 提供用於執行程式碼來處理事件的 Ruby 執行期。您的程式碼會在包含您管理 AWS Identity and Access Management (IAM) 角色的認證的環境中執行。 AWS SDK for Ruby若要深入瞭解 Ruby 執行階段所包含的SDK版本,請參閱包含執行階段SDK的版本。
Lambda 支援以下 Ruby 執行期。
Ruby | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
名稱 | 識別符 | 作業系統 | 取代日期 | 封鎖函數建立 | 封鎖函數更新 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
紅寶石 |
|
Amazon Linux 2023 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ruby 3.2 |
|
Amazon Linux 2 |
建立 Ruby 函式
-
開啟 Lambda 主控台
。 -
選擇建立函數。
-
進行下列設定:
-
函數名稱:輸入函數名稱。
-
執行期:選擇 Ruby 3.2。
-
-
選擇建立函數。
-
若要設定測試事件,請選擇 Test (測試)。
-
事件名稱輸入
test
。 -
選擇 Save changes (儲存變更)。
-
若要調用函數,請選擇 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
YJIT依預設不啟用。若要啟YJIT用 Ruby 3.2 函數,請將RUBY_YJIT_ENABLE
環境變數設定為1
。若要確認YJIT已啟用,請列印RubyVM::YJIT.enabled?
方法的結果。
範例 — 確認YJIT已啟用
puts(RubyVM::YJIT.enabled?()) # => true