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.
Self-managed Stockage de code S3
Par défaut, lorsque vous créez ou mettez à jour une fonction ou une couche Lambda à partir d'une archive de fichiers .zip, Lambda stocke une copie de votre code dans le stockage. Lambda-managed Chaque AWS compte dispose d'un quota de 300 Go de Lambda-managed stockage par région.
Grâce au stockage de code S3 autogéré, vous pouvez configurer Lambda pour référencer votre code directement à partir d'un compartiment S3 de votre compte. Lambda ne stocke pas de copie de votre code. Le code n'est donc pas pris en compte dans votre quota Lambda-managed de stockage. Lambda accède à votre code directement depuis votre compartiment S3.
Self-managed Le stockage de code S3 est disponible pour toutes les fonctions et couches créées et mises à jour à l'aide d'archives de fichiers .zip. Il est compatible avec toutes les classes de stockage S3 à l'exception des classes de stockage Glacier.
Note
Self-managed Le stockage du code S3 ne modifie pas la taille maximale du package de déploiement .zip, qui reste à 250 Mo (décompressé).
Rubriques
Configuration d'un stockage de code S3 autogéré
Pour utiliser le stockage de code S3 autogéré, procédez comme suit :
-
Créez un compartiment S3 ou utilisez un compartiment existant dans votre compte.
-
Activez la gestion des versions S3 pour le bucket. Lambda nécessite un contrôle de version S3 pour déterminer la version de votre objet source à utiliser. Chaque fois que vous chargez un nouveau package .zip, S3 crée une nouvelle version afin que Lambda puisse distinguer les mises à jour.
-
Téléchargez votre package de déploiement .zip dans le compartiment S3.
-
Accordez le principal de service Lambda
s3:GetObjectets3:GetObjectVersionles autorisations pour l'objet source. Consultez la section Configuration des autorisations. -
Créez ou mettez à jour votre fonction ou votre couche, en spécifiant l'objet S3, la clé S3, la version de l'objet S3 et en réglant
S3ObjectStorageModesurREFERENCE.
Configuration des autorisations
Pour utiliser le stockage de code S3 autogéré, accordez au principal du service Lambda (lambda.amazonaws.com) l'autorisation d'accéder à vos objets source. Ajoutez la politique de compartiment S3 suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaSelfManagedCodeAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::my-bucket/my-function.zip" ], "Principal": { "Service": "lambda.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:my-function" } } } ] }
Création d'une fonction avec un stockage S3 autogéré
Vous pouvez créer une fonction avec un stockage de code S3 autogéré à l'aide de la console AWS CLI, du ou AWS CloudFormation.
Note
L'éditeur de code de la console Lambda n'est pas disponible pour les fonctions qui utilisent le mode Référence. Pour modifier le code d'une fonction, mettez à jour le fichier .zip dans votre compartiment S3 et mettez à jour la fonction.
Utilisation de la console
Lorsque vous mettez à jour une fonction depuis un emplacement S3 dans la console Lambda, vous pouvez choisir le mode de stockage du code.
Pour mettre à jour une fonction afin d'utiliser le mode Référence (console)
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Sélectionnez la fonction à mettre à jour, puis choisissez l'onglet Code.
-
Sous Source de code, choisissez Mettre à jour, puis choisissez Mettre à jour à partir d'un fichier dans Amazon S3.
-
Pour l'URL du lien Amazon S3, entrez l'URL du lien S3 de votre fichier .zip.
-
Dans Mode de stockage du code, choisissez Mode de référence.
-
Choisissez Enregistrer.
Après avoir configuré le mode Référence, la section Propriétés du code de l'onglet Code de la fonction affiche le mode de stockage du code : Référence et l'emplacement S3 pointant vers votre compartiment S3.
Utilisation de AWS CLI
Utilisez la create-function commande avec le S3ObjectStorageMode=REFERENCE paramètre :
aws lambda create-function \ --function-name my-function \ --runtime python3.12 \ --role arn:aws:iam::111122223333:role/lambda-execution-role \ --handler lambda_function.lambda_handler \ --code S3Bucket=my-bucket,\ S3Key=my-function.zip,\ S3ObjectVersion=abc123def456,\ S3ObjectStorageMode=REFERENCE
Pour mettre à jour une fonction existante afin d'utiliser le stockage S3 autogéré :
aws lambda update-function-code \ --function-name my-function \ --s3-bucketmy-bucket\ --s3-keymy-function.zip\ --s3-object-versionabc123def456\ --s3-object-storage-mode REFERENCE
Important
Vous devez S3ObjectStorageMode=REFERENCE le spécifier à chaque appel àupdate-function-code. Si vous omettezS3ObjectStorageMode, la valeur par défaut est COPY et Lambda stocke votre code dans le stockage. Lambda-managed
Utilisation AWS CloudFormation
Dans votre CloudFormation modèle, définissez S3ObjectStorageMode sur REFERENCE dans la Code propriété de la AWS::Lambda::Function ressource :
Resources: MyFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-function Runtime: python3.12 Handler: lambda_function.lambda_handler Role: !GetAtt LambdaExecutionRole.Arn Code: S3Bucket:my-bucketS3Key:my-function.zipS3ObjectVersion:abc123def456S3ObjectStorageMode: REFERENCE
Utilisation du stockage S3 autogéré avec des couches
Vous pouvez également utiliser le stockage de code S3 autogéré pour les versions de couche. Utilisez la publish-layer-version commande avec S3ObjectStorageMode=REFERENCE :
aws lambda publish-layer-version \ --layer-name my-layer \ --content S3Bucket=my-bucket,S3Key=my-layer.zip,S3ObjectStorageMode=REFERENCE \ --compatible-runtimes python3.12
Vous pouvez utiliser n'importe quelle combinaison de Lambda-managed stockage autogéré pour le code de fonction et le code de couche.
Basculer entre les modes de stockage
Vous pouvez basculer entre le stockage Lambda-managed de code S3 autogéré lorsque vous mettez à jour le code de votre fonction ou que vous publiez une nouvelle version de couche. Réglez sur S3ObjectStorageMode l'un des deux COPY ou sur REFERENCE :
-
COPY(par défaut) — Lambda copie votre code source dans le Lambda-managed stockage. -
REFERENCE— Lambda référence votre code source directement à partir de votre compartiment S3 sans en stocker une copie.
Lorsque vous passez de COPY àREFERENCE, Lambda supprime la Lambda-managed copie de votre code source. Lorsque vous passez de REFERENCE àCOPY, Lambda crée une copie de votre code source dans le Lambda-managed stockage. Le passage en mode COPY échoue si vous dépassez la limite de stockage Lambda-managed du code.
Cycle de vie des fonctions avec stockage autogéré
Lambda accède régulièrement à l'objet source depuis votre compartiment S3 pour réoptimiser le code de votre fonction. Vous devez conserver l'accès à l'objet source pour que votre fonction reste active.
-
Si Lambda perd l'accès à l'objet source d'une fonction, celle-ci passe à l'
Inactiveétat. Pour restaurer la fonction, restaurez l'accès à l'objet source et mettez-la à jour. -
Si Lambda perd l'accès à l'objet source d'une couche, la fonction est conservée
Active. Vous pouvez mettre à jour la configuration des fonctions (sans mettre à jour les couches), mettre à jour le code des fonctions ou mettre à jour la configuration des fonctions avec de nouvelles couches. Cependant, la mise à jour de la configuration des fonctions avec la couche inaccessible échoue.
Cross-account et utilisation interrégionale
Vous pouvez créer des fonctions et des couches à partir du code source dans des compartiments S3 dans différents comptes et dans différentes régions. Cross-Region la récupération d'objets entraîne des coûts de transfert de données S3 supplémentaires. Consultez la tarification S3
Considérations
-
Self-managed Le stockage de code S3 est disponible uniquement pour les fonctions et les couches d'archivage de fichiers .zip. Les fonctions d'image de conteneur continuent d'utiliser Amazon ECR.
-
La taille maximale du package de déploiement .zip (250 Mo décompressés) est inchangée.
-
Vous payez les tarifs de stockage Amazon S3 standard pour le code stocké dans vos compartiments autogérés. Lambda ne facture pas la récupération d'objets S3 dans la même région.
-
Self-managed Le stockage de code S3 est compatible avec toutes les classes de stockage S3 à l'exception des classes de stockage Glacier.
-
Vous pouvez utiliser les fonctionnalités S3 telles que la Cross-Region réplication S3 pour partager des artefacts entre les régions et les politiques de cycle de vie S3 pour gérer les objets.