Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen von Lambda-Funktionen mit benutzerdefinierten Laufzeiten in AWS SAM
Sie können den sam build
Befehl verwenden, um benutzerdefinierte Laufzeiten zu erstellen, die für Ihre Lambda-Funktion erforderlich sind. Sie deklarieren Ihre Lambda-Funktion so, dass sie eine benutzerdefinierte Laufzeit verwendet, indem Sie Runtime: provided
für die Funktion angeben.
Um eine benutzerdefinierte Laufzeit zu erstellen, deklarieren Sie das Metadata
Ressourcenattribut mit einem BuildMethod: makefile
Eintrag. Sie stellen ein benutzerdefiniertes Makefile bereit, in dem Sie ein Build-Ziel in der Form deklarierenbuild-
, das die Build-Befehle für Ihre Laufzeit enthält. Ihr Makefile ist dafür verantwortlich, falls erforderlich, die benutzerdefinierte Runtime zu kompilieren und die Build-Artefakte an den richtigen Ort zu kopieren, der für nachfolgende Schritte in Ihrem Workflow erforderlich ist. Der Speicherort des Makefiles wird durch die function-logical-id
CodeUri
Eigenschaft der Funktionsressource angegeben und muss benannt werden. Makefile
Beispiele
Beispiel 1: Benutzerdefinierte Laufzeit für eine in Rust geschriebene Funktion
Anmerkung
Wir empfehlen, Lambda-Funktionen zu erstellen mit Cargo Lambda. Weitere Informationen finden Sie unterAufbau von Rust Lambda-Funktionen mit Cargo Lambda in AWS SAM.
Die folgende AWS SAM Vorlage deklariert eine Funktion, die eine benutzerdefinierte Laufzeit für eine in Rust geschriebene Lambda-Funktion verwendet, und weist sam build
an, die Befehle für das build-HelloRustFunction
Build-Ziel auszuführen.
Resources: HelloRustFunction: Type: AWS::Serverless::Function Properties: FunctionName: HelloRust Handler: bootstrap.is.real.handler Runtime: provided MemorySize: 512 CodeUri: . Metadata: BuildMethod: makefile
Das folgende Makefile enthält das Build-Ziel und die Befehle, die ausgeführt werden. Beachten Sie, dass die CodeUri
Eigenschaft auf gesetzt ist.
, sodass sich das Makefile im Stammverzeichnis des Projekts befinden muss (d. h. im selben Verzeichnis wie die AWS SAM Vorlagendatei der Anwendung). Der Dateiname muss sein. Makefile
build-HelloRustFunction: cargo build --release --target x86_64-unknown-linux-musl cp ./target/x86_64-unknown-linux-musl/release/bootstrap $(ARTIFACTS_DIR)
Weitere Informationen zum Einrichten Ihrer Entwicklungsumgebung zur Ausführung des cargo build
Befehls aus dem vorherigen makefile
Abschnitt finden Sie im AWS Lambda Blogbeitrag Rust Runtime for
Beispiel 2: Makefile-Builder für Python 3.12 (Alternative zur Verwendung des mitgelieferten Builders)
Möglicherweise möchten Sie eine Bibliothek oder ein Modul verwenden, das nicht in einem gebündelten Builder enthalten ist. Dieses Beispiel zeigt eine AWS SAM Vorlage für eine Python3.12-Laufzeit mit einem Makefile-Builder.
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: makefile
Das folgende Makefile enthält das Build-Ziel und die Befehle, die ausgeführt werden. Beachten Sie, dass die CodeUri
Eigenschaft auf hello_world
gesetzt ist. Das Makefile muss sich also im Stammverzeichnis des hello_world
Unterverzeichnisses befinden, und der Dateiname muss sein. Makefile
build-HelloWorldFunction: cp *.py $(ARTIFACTS_DIR) cp requirements.txt $(ARTIFACTS_DIR) python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR) rm -rf $(ARTIFACTS_DIR)/bin