Erstellen von Lambda-Funktionen mit Ruby - AWS Lambda

Erstellen von Lambda-Funktionen mit Ruby

Sie können Ruby-Code in AWS Lambda ausführen. Lambda bietet Laufzeiten für Ruby, die Ihren Code ausführen, um Ereignisse zu verarbeiten. Ihr Code wird in einer Umgebung ausgeführt, der das AWS SDK for Ruby enthält, mit Anmeldeinformationen von einer von Ihnen verwalteten AWS Identity and Access Management (IAM)-Rolle. Weitere Informationen zu den SDK-Versionen, die in den Laufzeiten von Ruby enthalten sind, finden Sie unter SDK-Versionen, die zur Laufzeit enthalten sind.

Lambda unterstützt die folgenden Ruby-Laufzeiten.

Name ID Betriebssystem Datum der Veraltung Blockfunktion erstellen Blockfunktion aktualisieren

Ruby 3.3

ruby3.3

Amazon Linux 2023

Nicht geplant

Nicht geplant

Nicht geplant

Ruby 3.2

ruby3.2

Amazon Linux 2

Nicht geplant

Nicht geplant

Nicht geplant

So erstellen Sie eine Ruby-Funktion
  1. Öffnen Sie die Lambda-Konsole.

  2. Wählen Sie Funktion erstellen aus.

  3. Konfigurieren Sie die folgenden Einstellungen:

    • Funktionsname: Geben Sie einen Namen für die Funktion ein.

    • Laufzeit: Wählen Sie Ruby 3.2 aus.

  4. Wählen Sie Funktion erstellen aus.

Die Konsole erstellt eine Lambda-Funktion mit einer einzigen Quelldatei mit dem Namen lambda_function.rb. Mit dem integrierten Code-Editor können Sie diese Datei bearbeiten und weitere Dateien hinzufügen. Wählen Sie im Abschnitt DEPLOY die Option Deploy aus, um den Code Ihrer Funktion zu aktualisieren. Um Ihren Code auszuführen, wählen Sie anschließend im Abschnitt TESTEREIGNISSE die Option Testereignis erstellen aus.

Die lambda_function.rb-Datei exportiert eine Funktion mit dem Namen lambda_handler, die ein Ereignisobjekt und ein Kontext-Objekt übernimmt. Dies ist die Handler-Funktion, die bei einem Aufruf der Funktion von Lambda aufgerufen wird. Die Ruby-Funktionslaufzeit ruft Aufrufereignisse von Lambda ab und leitet sie an den Handler weiter. In der Konfiguration der Funktion lautet der Wert für den Handler lambda_function.lambda_handler.

Wenn Sie Ihren Funktionscode speichern, erstellt die Lambda-Konsole ein Bereitstellungspaket für das ZIP-Dateiarchiv. Wenn Sie Ihren Funktionscode außerhalb der Konsole (mit einer IDE) entwickeln, müssen Sie ein Bereitstellungspaket erstellen, um Ihren Code in die Lambda-Funktion hochzuladen.

Die Funktionslaufzeit übergibt neben dem Aufrufereignis ein Context-Objekt an den Handler. Das Context-Objekt enthält zusätzliche Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung. Weitere Informationen erhalten Sie über die Umgebungsvariablen.

Ihre Lambda-Funktion verfügt über eine CloudWatch-Logs-Protokollgruppe. Die Funktionslaufzeit sendet Details zu jedem Aufruf an CloudWatch Logs. Es leitet alle Protokolle weiter, die Ihre Funktion während des Aufrufs ausgibt. Wenn Ihre Funktion einen Fehler zurückgibt, formatiert Lambda den Fehler und gibt ihn an den Aufrufer zurück.

SDK-Versionen, die zur Laufzeit enthalten sind

Die Version des AWS-SDK, die in der Laufzeit von Ruby enthalten ist, hängt von der Laufzeitversion und Ihrer AWS-Region ab. Das AWS-SDK for Ruby ist modular konzipiert und wird durch AWS-Service getrennt. Um die Versionsnummer eines bestimmten Dienst-Gems zu ermitteln, das in der von Ihnen verwendeten Laufzeitumgebung enthalten ist, erstellen Sie eine Lambda-Funktion mit Code in folgendem Format. Ersetzen Sie aws-sdk-s3 und Aws::S3 durch den Namen der Service-Gems, die Ihr Code verwendet.

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

Aktivieren von Yet Another Ruby JIT (YJIT)

Die Ruby-3.2-Laufzeit unterstützt YJIT, einen einfachen, minimalistischen Ruby-JIT-Compiler. YJIT bietet eine deutlich höhere Leistung, benötigt aber auch mehr Speicher als der Ruby-Interpreter. YJIT wird für Ruby-on-Rails-Workloads empfohlen.

YJIT ist standardmäßig nicht aktiviert. Um YJIT für eine Ruby-3.2-Funktion zu aktivieren, setzen Sie die Umgebungsvariable RUBY_YJIT_ENABLE auf 1. Um sicherzustellen, dass YJIT aktiviert ist, drucken Sie das Ergebnis der RubyVM::YJIT.enabled?-Methode aus.

Beispiel – Sicherstellen, dass YJIT aktiviert ist
puts(RubyVM::YJIT.enabled?()) # => true