Création de fonctions Lambda avec des environnements d'exécution personnalisés - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création de fonctions Lambda avec des environnements d'exécution personnalisés

Vous pouvez utiliser la commande sam build pour créer des exécutions personnalisées requises pour votre fonction Lambda. Vous déclarez votre fonction Lambda pour utiliser une exécution personnalisée en spécifiant Runtime: provided pour la fonction.

Pour créer une exécution personnalisée, déclarez l'attribut de ressource Metadata avec une entrée BuildMethod: makefile. Vous fournissez un makefile personnalisé, où vous déclarez une cible de génération du formulaire build-function-logical-id qui contient les commandes de création de votre exécution. Votre makefile est responsable de la compilation de l'exécution personnalisée si nécessaire, et de la copie des artefacts de construction dans l'emplacement approprié requis pour les étapes suivantes de votre flux. L'emplacement du makefile est spécifié par la propriété CodeUri de la ressource de fonction, et doit être nommé Makefile.

Exemples

Exemple 1 : exécution personnalisée pour une fonction écrite en Rust

Note

Nous vous recommandons de créer des fonctions Lambda avec Cargo Lambda. Pour en savoir plus, veuillez consulter la section Création de fonctions Lambda Rust avec Cargo Lambda.

Le AWS SAM modèle suivant déclare une fonction qui utilise un environnement d'exécution personnalisé pour une fonction Lambda écrite en Rust et demande d'exécuter les sam build commandes pour la build-HelloRustFunction cible de construction.

Resources: HelloRustFunction: Type: AWS::Serverless::Function Properties: FunctionName: HelloRust Handler: bootstrap.is.real.handler Runtime: provided MemorySize: 512 CodeUri: . Metadata: BuildMethod: makefile

Le makefile suivant contient la cible de génération et les commandes qui seront exécutées. Notez que la propriété CodeUri est définie sur .. Le makefile doit donc se trouver dans le répertoire racine du projet (c'est-à-dire dans le même répertoire que le fichier de modèle de l'application AWS SAM ). Le nom de fichier doit être Makefile.

build-HelloRustFunction: cargo build --release --target x86_64-unknown-linux-musl cp ./target/x86_64-unknown-linux-musl/release/bootstrap $(ARTIFACTS_DIR)

Pour de plus amples informations sur la configuration de votre environnement de développement afin d'exécuter la commande cargo build dans le makefile précédent, consultez l'article de blog Exécution Rust pour AWS Lambda.

Exemple 2 : générateur de fichiers Makefile pour Python3.12 (alternative à l'utilisation du générateur groupé)

Vous pouvez utiliser une bibliothèque ou un module qui n'est pas inclus dans un générateur groupé. Cet exemple montre un AWS SAM modèle pour un environnement d'exécution Python3.12 avec un générateur de makefile.

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: makefile

Le makefile suivant contient la cible de génération et les commandes qui seront exécutées. Notez que la propriété CodeUri est définie sur hello_world. Le makefile doit donc se trouver dans la racine du répertoire hello_world, et le nom de fichier doit être 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