

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.

# Déployez et invoquez des fonctions durables Lambda avec AWS CLI
<a name="durable-getting-started-cli"></a>

Utilisez le AWS CLI pour créer et déployer des fonctions Lambda durables avec des commandes impératives. Cette approche vous permet de contrôler directement chaque étape du processus de déploiement.

## Conditions préalables
<a name="durable-cli-prerequisites"></a>
+ Installez et configurez l’ AWS CLI. Pour obtenir des instructions, reportez-vous à la section [Installation du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Créez un package de déploiement avec votre code de fonction et le SDK d'exécution durable.
+ Créez un rôle d'exécution IAM avec des autorisations de point de contrôle.

## Créer le rôle d’exécution
<a name="durable-cli-create-role"></a>

Créez un rôle IAM avec des autorisations pour l'exécution Lambda de base et les opérations de point de contrôle.

**Pour créer le rôle d'exécution**

1. Créez un document de politique de confiance qui permet à Lambda d'assumer le rôle. Enregistrez ceci sous le nom `trust-policy.json` :

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Créez le rôle :

   ```
   aws iam create-role \
     --role-name {{durable-function-role}} \
     --assume-role-policy-document file://trust-policy.json
   ```

1. Joignez la politique d'exécution durable pour les opérations de point de contrôle et l'exécution de base :

   ```
   aws iam attach-role-policy \
     --role-name {{durable-function-role}} \
     --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
   ```

La politique `AWSLambdaBasicDurableExecutionRolePolicy` gérée inclut les autorisations requises pour les opérations de point de contrôle (`lambda:CheckpointDurableExecution`et`lambda:GetDurableExecutionState`) et l'exécution de base de Lambda.

## Créez une fonction durable
<a name="durable-cli-create-function"></a>

Créez votre fonction durable avec le `--durable-config` paramètre.

**Pour créer une fonction durable**

1. Package de votre code de fonction avec les dépendances dans un fichier .zip :

   ```
   zip -r function.zip index.mjs node_modules/
   ```
**Note**  
Pour les fonctions durables basées sur Java, vous devez compiler le code de votre fonction et ses dépendances dans un seul fichier .zip ou fichier Java Archive (JAR). Pour plus d'informations, voir [Déployer des fonctions Java Lambda avec des archives de fichiers .zip ou JAR](java-package.md).

1. Créez la fonction avec l'exécution durable activée :

   ```
   aws lambda create-function \
     --function-name {{myDurableFunction}} \
     --runtime nodejs22.x \
     --role {{arn:aws:iam::123456789012:role/durable-function-role}} \
     --handler index.handler \
     --zip-file fileb://function.zip \
     --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
   ```

**Note**  
Vous ne pouvez activer l'exécution durable que lors de la création de la fonction. Vous ne pouvez pas l'activer sur les fonctions existantes.

## Publier une version
<a name="durable-cli-publish-version"></a>

Bien que les fonctions durables puissent être invoquées à l'aide du qualificatif de `$LATEST` version, vous devez toujours utiliser un ARN qualifié pointant vers une version stable pour garantir une exécution déterministe de votre code.

```
aws lambda publish-version \
  --function-name {{myDurableFunction}} \
  --description "Initial version"
```

La commande renvoie l'ARN de la version. Notez le numéro de version (par exemple,`:1`) à la fin de l'ARN.

Vous pouvez éventuellement créer un alias pointant vers la version :

```
aws lambda create-alias \
  --function-name {{myDurableFunction}} \
  --name prod \
  --function-version 1
```

## Invoquez la fonction durable
<a name="durable-cli-invoke"></a>

Appelez votre fonction durable à l'aide de l'ARN qualifié (version ou alias).

**Note**  
**Invocations idempotentes :** pour éviter les doubles exécutions lors de nouvelles tentatives d'invocation infructueuses, vous pouvez fournir un nom d'exécution garantissant la sémantique d'exécution. at-most-once Voir [Idempotency](durable-execution-idempotency.md) pour plus de détails.

**Invocation synchrone**  
Pour les exécutions qui se terminent en 15 minutes, utilisez l'invocation synchrone :

```
aws lambda invoke \
  --function-name {{myDurableFunction:1}} \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

Ou en utilisant un alias :

```
aws lambda invoke \
  --function-name {{myDurableFunction:prod}} \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

**invocation asynchrone**  
Pour les exécutions de longue durée, utilisez l'invocation asynchrone :

```
aws lambda invoke \
  --function-name {{myDurableFunction:prod}} \
  --invocation-type Event \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

En cas d'invocation asynchrone, Lambda revient immédiatement. La fonction continue de s'exécuter en arrière-plan.

**Note**  
Vous pouvez l'utiliser `$LATEST` pour le prototypage et les tests dans la console. Pour les charges de travail de production, utilisez une version publiée ou un alias.

## Gérez des exécutions durables
<a name="durable-cli-manage-executions"></a>

Utilisez les commandes suivantes pour gérer et surveiller les exécutions de fonctions durables.

**Lister les exécutions**  
Répertoriez toutes les exécutions d'une fonction durable :

```
aws lambda list-durable-executions-by-function \
  --function-name {{myDurableFunction}}
```

**Obtenir les détails de l'exécution**  
Obtenez des informations sur une exécution spécifique :

```
aws lambda get-durable-execution \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

**Obtenir l'historique des exécutions**  
Consultez l'historique des points de contrôle d'une exécution :

```
aws lambda get-durable-execution-history \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

**Arrêter une exécution**  
Arrêtez une exécution durable en cours :

```
aws lambda stop-durable-execution \
  --durable-execution-arn {{arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id}}
```

## Mettre à jour le code de la fonction
<a name="durable-cli-update-function"></a>

Mettez à jour votre code de fonction durable et publiez une nouvelle version :

**Pour mettre à jour et publier une nouvelle version**

1. Mettez à jour le code de fonction :

   ```
   aws lambda update-function-code \
     --function-name {{myDurableFunction}} \
     --zip-file fileb://function.zip
   ```

1. Attendez que la mise à jour soit terminée :

   ```
   aws lambda wait function-updated \
     --function-name {{myDurableFunction}}
   ```

1. Publiez une nouvelle version :

   ```
   aws lambda publish-version \
     --function-name {{myDurableFunction}} \
     --description "Updated order processing logic"
   ```

1. Mettez à jour l'alias pour qu'il pointe vers la nouvelle version :

   ```
   aws lambda update-alias \
     --function-name {{myDurableFunction}} \
     --name prod \
     --function-version 2
   ```

**Important**  
Les exécutions en cours continuent à utiliser la version avec laquelle elles ont débuté. Les nouveaux appels utilisent la version mise à jour de l'alias.

## Affichage des journaux de fonctions
<a name="durable-cli-view-logs"></a>

Consultez les journaux de votre fonction durable dans CloudWatch Logs :

```
aws logs tail /aws/lambda/myDurableFunction --follow
```

Filtrez les journaux pour une exécution spécifique :

```
aws logs filter-log-events \
  --log-group-name /aws/lambda/myDurableFunction \
  --filter-pattern "exec-abc123"
```

## nettoyer des ressources ;
<a name="durable-cli-cleanup"></a>

Supprimez votre fonction durable et les ressources associées :

```
# Delete the function
aws lambda delete-function --function-name {{myDurableFunction}}

# Delete the IAM role policies
aws iam detach-role-policy \
  --role-name {{durable-function-role}} \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

aws iam detach-role-policy \
  --role-name {{durable-function-role}} \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

# Delete the role
aws iam delete-role --role-name {{durable-function-role}}
```

## Étapes suivantes
<a name="durable-cli-next-steps"></a>

Après avoir déployé votre fonction durable avec AWS CLI :
+ Surveillez les exécutions à l'aide `list-durable-executions-by-function` des `get-durable-execution` commandes et
+ Afficher les opérations des points de contrôle dans les événements de AWS CloudTrail données
+ Configurer des CloudWatch alarmes en cas d'échec d'exécution ou d'exécutions de longue durée
+ Automatisez les déploiements à l'aide de scripts shell ou CI/CD de pipelines

Pour plus d'informations sur AWS CLI les commandes pour Lambda, consultez la référence des [AWS CLI commandes](https://docs.aws.amazon.com/cli/latest/reference/lambda/index.html).