

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éploiement de fonctions Lambda Rust avec des archives de fichiers .zip
<a name="rust-package"></a>

Cette page décrit comment compiler votre fonction Rust, puis déployer le binaire compilé à l' AWS Lambda aide de [Cargo Lambda](https://www.cargo-lambda.info/guide/what-is-cargo-lambda.html). Il montre également comment déployer le binaire compilé à l'aide de la CLI AWS Command Line Interface et de la AWS Serverless Application Model CLI.

**Topics**
+ [Conditions préalables](#rust-package-prerequisites)
+ [Création de fonctions Rust sur macOS, Windows ou Linux](#rust-package-build)
+ [Déploiement du binaire de la fonction Rust avec Cargo Lambda](#rust-deploy-cargo)
+ [Invocation de votre fonction Rust avec Cargo Lambda](#rust-invoke-function)

## Conditions préalables
<a name="rust-package-prerequisites"></a>
+ [Rust](https://www.rust-lang.org/tools/install)
+ [AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

## Création de fonctions Rust sur macOS, Windows ou Linux
<a name="rust-package-build"></a>

Les étapes suivantes montrent comment créer le projet de votre première fonction Lambda avec Rust et le compiler avec Cargo [Lambda](https://www.cargo-lambda.info/), une extension open source tierce de l'outil de ligne de commande Cargo qui simplifie la création et le déploiement des fonctions Rust Lambda.

1. Installez [Cargo Lambda](https://www.cargo-lambda.info/guide/what-is-cargo-lambda.html), une extension open source tierce de l'outil de ligne de commande Cargo qui simplifie la création et le déploiement des fonctions Rust Lambda :

   ```
   cargo install cargo-lambda
   ```

   Pour les autres options d'installation, consultez la section [Installation](https://www.cargo-lambda.info/guide/installation.html) dans la documentation de Cargo Lambda.

1. Créez la structure du package. Cette commande crée un code de fonction de base dans `src/main.rs`. Vous pouvez utiliser ce code pour le tester ou le remplacer par le vôtre.

   ```
   cargo lambda new my-function
   ```

1. À l’intérieur du répertoire racine du package, exécutez la sous-commande [build](https://www.cargo-lambda.info/commands/build.html) pour compiler le code de votre fonction.

   ```
   cargo lambda build --release
   ```

   (Facultatif) Si vous souhaitez utiliser AWS Graviton2 sur Lambda, ajoutez l'`--arm64`indicateur pour compiler votre code pour ARM. CPUs

   ```
   cargo lambda build --release --arm64
   ```

1. Avant de déployer votre fonction Rust, configurez les AWS informations d'identification sur votre machine.

   ```
   aws configure
   ```

## Déploiement du binaire de la fonction Rust avec Cargo Lambda
<a name="rust-deploy-cargo"></a>

Utilisez la sous-commande [deploy](https://www.cargo-lambda.info/commands/deploy.html) pour déployer le binaire compilé vers Lambda. Cette commande crée un [rôle d’exécution](lambda-intro-execution-role.md), puis la fonction Lambda. Pour spécifier un rôle d’exécution existant, utilisez l’[indicateur --iam-role](https://www.cargo-lambda.info/commands/deploy.html#iam-roles).

```
cargo lambda deploy my-function
```

### Déployer le binaire de votre fonction Rust avec le AWS CLI
<a name="rust-deploy-aws-cli"></a>

Vous pouvez également déployer votre binaire avec le AWS CLI.

1. Utilisez la sous-commande [build](https://www.cargo-lambda.info/commands/build.html) pour créer le package de déploiement .zip.

   ```
   cargo lambda build --release --output-format zip
   ```

1. Pour déployer le package .zip vers Lambda, exécutez la commande [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html).
   + Pour `--runtime`, spécifiez `provided.al2023`. Il s’agit d’un [environnement d’exécution réservé au système d’exploitation](runtimes-provided.md). Les environnements d’exécution réservés au système d’exploitation sont utilisés pour déployer des fichiers binaires compilés et des environnements d’exécution personnalisés sur Lambda.
   + Pour `--role`, spécifiez l’ARN du [rôle d’exécution](lambda-intro-execution-role.md).

   ```
   aws lambda create-function \
        --function-name my-function \
        --runtime provided.al2023 \
        --role arn:aws:iam::111122223333:role/lambda-role \
        --handler rust.handler \
        --zip-file fileb://target/lambda/my-function/bootstrap.zip
   ```

### Déploiement de votre fonction binaire Rust avec la AWS SAM CLI
<a name="rust-deploy-sam-cli"></a>

Vous pouvez également déployer votre binaire à l'aide de la AWS SAM CLI.

1. Créez un AWS SAM modèle avec la définition de la ressource et de la propriété. Pour `Runtime`, spécifiez `provided.al2023`. Il s’agit d’un [environnement d’exécution réservé au système d’exploitation](runtimes-provided.md). Les environnements d’exécution réservés au système d’exploitation sont utilisés pour déployer des fichiers binaires compilés et des environnements d’exécution personnalisés sur Lambda.

   Pour plus d'informations sur le déploiement de fonctions Lambda à l'aide de fonctions Lambda AWS SAM, consultez [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)le manuel du *AWS Serverless Application Model développeur*.  
**Example Définition des ressources et des propriétés SAM pour un binaire Rust**  

   ```
   AWSTemplateFormatVersion: '2010-09-09'
   Transform: AWS::Serverless-2016-10-31
   Description: SAM template for Rust binaries
   Resources:
     RustFunction:
       Type: AWS::Serverless::Function 
       Properties:
         CodeUri: target/lambda/my-function/
         Handler: rust.handler
         Runtime: provided.al2023
   Outputs:
     RustFunction:
       Description: "Lambda Function ARN"
       Value: !GetAtt RustFunction.Arn
   ```

1. Utilisez la sous-commande [build](https://www.cargo-lambda.info/commands/build.html) pour compiler la fonction.

   ```
   cargo lambda build --release
   ```

1. Utilisez la commande [sam deploy](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html) pour déployer la fonction vers Lambda.

   ```
   sam deploy --guided
   ```

*Pour plus d'informations sur la création de fonctions Rust avec la AWS SAM CLI, consultez la section [Création de fonctions Rust Lambda avec Cargo Lambda](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/building-rust.html) dans le manuel du développeur.AWS Serverless Application Model *

## Invocation de votre fonction Rust avec Cargo Lambda
<a name="rust-invoke-function"></a>

Utilisez la sous-commande [invoke](https://www.cargo-lambda.info/commands/invoke.html) pour tester votre fonction avec une charge utile.

```
cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}' my-function
```

### Invoquer votre fonction Rust avec le AWS CLI
<a name="rust-invoke-cli"></a>

Vous pouvez également utiliser le AWS CLI pour appeler la fonction.

```
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt
```

L'**cli-binary-format**option est obligatoire si vous utilisez AWS CLI la version 2. Pour faire de ce paramètre le paramètre par défaut, exécutez `aws configure set cli-binary-format raw-in-base64-out`. Pour plus d’informations, consultez les [options de ligne de commande globales prises en charge par l’AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) dans le *Guide de l’utilisateur AWS Command Line Interface version 2*.