Configurer les fonctions durables de Lambda - 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.

Configurer les fonctions durables de Lambda

Pour permettre une exécution durable de votre fonction Lambda, vous devez configurer des paramètres spécifiques qui contrôlent la durée d'exécution de votre fonction, la durée de conservation des données d'état et les autorisations requises.

Permettre une exécution durable

Pour permettre une exécution durable de votre fonction Lambda, configurez-la DurableConfig dans la configuration de votre fonction. Ce paramètre contrôle le délai d'exécution, la conservation des états et le comportement de gestion des versions.

AWS CLI
aws lambda update-function-configuration \ --function-name my-durable-function \ --durable-config '{ "ExecutionTimeout": 3600, "RetentionPeriodInDays": 30, "AllowInvokeLatest": true }'
CloudFormation
Resources: MyDurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-durable-function Runtime: nodejs18.x Handler: index.handler Code: ZipFile: | // Your durable function code DurableConfig: ExecutionTimeout: 3600 RetentionPeriodInDays: 30 AllowInvokeLatest: true

Paramètres de configuration :

  • ExecutionTimeout- Temps d'exécution maximal en secondes (jusqu'à 31 536 000 pour un an)

  • RetentionPeriodInDays- Combien de temps faut-il conserver l'état et l'historique d'exécution (1 à 365 jours)

  • AllowInvokeLatest- Autoriser ou non l'invocation de la version $LATEST pour une exécution durable

Autorisations IAM pour des fonctions durables

Les fonctions durables nécessitent des autorisations IAM supplémentaires au-delà des rôles d'exécution Lambda standard. Le rôle d'exécution de votre fonction doit inclure des autorisations pour la gestion des états et l'exécution durable APIs.

Autorisations minimales requises :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ManageDurableState", "lambda:GetDurableExecution", "lambda:ListDurableExecutions" ], "Resource": "arn:aws:lambda:*:*:function:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }

CloudFormation exemple de rôle d'exécution :

DurableFunctionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Policies: - PolicyName: DurableFunctionPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:ManageDurableState - lambda:GetDurableExecution - lambda:ListDurableExecutions Resource: '*'

Bonnes pratiques en matière de configuration

Suivez les meilleures pratiques suivantes lors de la configuration de fonctions durables pour une utilisation en production :

  • Définissez des délais d'exécution appropriés - Configurez ExecutionTimeout en fonction de la durée maximale prévue de votre flux de travail. Ne fixez pas de délais d'attente inutilement longs, car ils affectent les coûts et l'allocation des ressources.

  • Équilibrez la rétention avec les coûts de stockage : définissez les RetentionPeriodInDays paramètres en fonction de vos exigences en matière de débogage et d'audit. Des périodes de conservation plus longues augmentent les coûts de stockage.

  • Utiliser le versionnement en production : configurez-le sur false dans AllowInvokeLatest les environnements de production et utilisez des versions de fonctions ou des alias spécifiques pour des exécutions durables.

  • Taille de l'état du moniteur : les objets à état volumineux augmentent les coûts de stockage et peuvent avoir un impact sur les performances. Maintenez l'état minimal et utilisez un stockage externe pour les données volumineuses.

  • Configurer une journalisation appropriée - Activez la journalisation détaillée pour résoudre les problèmes liés aux flux de travail de longue durée, tout en tenant compte du volume des journaux et des coûts.

Exemple de configuration de production :

{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }