View a markdown version of this page

Self-managed Stockage de code S3 - AWS Lambda

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 un espace de stockage. Lambda-managed Chaque AWS compte dispose d'un quota de Lambda-managed stockage de 300 Go par région.

Grâce au stockage de code S3 autogéré, vous pouvez configurer Lambda pour qu'il référence 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é).

Configuration d'un stockage de code S3 autogéré

Pour utiliser le stockage de code S3 autogéré, procédez comme suit :

  1. Créez un compartiment S3 ou utilisez un compartiment existant dans votre compte.

  2. Activez le versionnement S3 pour le compartiment. Lambda nécessite la gestion des versions S3 pour suivre 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.

  3. Téléchargez votre package de déploiement .zip dans le compartiment S3.

  4. Accordez le principal du service Lambda s3:GetObject et s3:GetObjectVersion les autorisations pour l'objet source. Consultez la section Configuration des autorisations.

  5. Créez ou mettez à jour votre fonction ou couche, en spécifiant l'objet S3, la clé S3, la version de l'objet S3 et en le définissant S3ObjectStorageMode surREFERENCE.

Configuration des autorisations

Pour utiliser le stockage de code S3 autogéré, accordez au Lambda service principal 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 du AWS CLI ou AWS CloudFormation.

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-bucket my-bucket \ --s3-key my-function.zip \ --s3-object-version abc123def456 \ --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 et COPY Lambda stocke votre code dans un espace de stockage. Lambda-managed

Utilisation AWS CloudFormation

Dans votre CloudFormation modèle, définissez S3ObjectStorageMode la Code propriété REFERENCE de la AWS::Lambda::Function ressource comme suit :

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-bucket S3Key: my-function.zip S3ObjectVersion: abc123def456 S3ObjectStorageMode: REFERENCE

Utilisation d'un stockage S3 autogéré avec plusieurs couches

Vous pouvez également utiliser le stockage de code S3 autogéré pour les versions de couches. 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 votre code de fonction ou que vous publiez une nouvelle version de couche. Réglez sur S3ObjectStorageMode l'une COPY ou l'autre des REFERENCE options suivantes

  • COPY(par défaut) — Lambda copie votre code source dans le stockage. Lambda-managed

  • REFERENCE— Lambda référence votre code source directement à partir de votre compartiment S3 sans en stocker de 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 Lambda-managed le stockage. Le passage à l'COPYoption é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 afin de réoptimiser votre code de 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, la fonction passe à l'Inactiveétat. Pour restaurer la fonction, rétablissez l'accès à l'objet source et mettez à jour la fonction.

  • 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 de fonction 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 entre régions

Vous pouvez créer des fonctions et des couches à partir du code source dans des compartiments S3 de différents comptes et de 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 de S3 pour plus de détails.

Considérations

  • Self-managed Le stockage de code S3 est uniquement disponible 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) reste inchangée.

  • Vous payez les tarifs de stockage standard d'Amazon S3 pour le code stocké dans vos buckets 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.