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 dans AWS SAM
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-
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é function-logical-id
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 recommandons de créer des fonctions Lambda avec Cargo Lambda. Pour en savoir plus, consultezCréation de fonctions Rust Lambda avec Cargo Lambda dans AWS SAM.
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