

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.

# Installation de Guard en tant que AWS Lambda fonction
<a name="setting-up-lambda"></a>

Vous pouvez l'installer AWS CloudFormation Guard via Cargo, le gestionnaire de paquets de Rust. *Guard as an AWS Lambda* function (`cfn-guard-lambda`) est une enveloppe légère autour de Guard (`cfn-guard`) qui peut être utilisée comme fonction Lambda.

## Conditions préalables
<a name="guard-as-lambda-prerequisites"></a>

Avant de pouvoir installer Guard en tant que fonction Lambda, vous devez remplir les conditions préalables suivantes :
+ AWS Command Line Interface (AWS CLI) configuré avec les autorisations nécessaires pour déployer et invoquer des fonctions Lambda. Pour plus d’informations, consultez [Configuration de l’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Un rôle AWS Lambda d'exécution dans Gestion des identités et des accès AWS (IAM). Pour plus d'informations, consultez la section [rôle AWS Lambda d'exécution](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html).
+ Dans CentOS/RHEL les environnements, ajoutez le référentiel de `musl-libc` packages à votre configuration yum. Pour plus d'informations, consultez [ngompa/musl-libc](https://copr.fedorainfracloud.org/coprs/ngompa/musl-libc/).

## Installez le gestionnaire de paquets Rust
<a name="install-rust-and-cargo"></a>

Cargo est le gestionnaire de paquets de Rust. Procédez comme suit pour installer Rust, qui inclut Cargo.

1. Exécutez la commande suivante depuis un terminal, puis suivez les instructions à l'écran pour installer Rust.

   ```
   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
   ```

   1. (Facultatif) Pour les environnements Ubuntu, exécutez la commande suivante.

     ```
     sudo apt-get update; sudo apt install build-essential
     ```

1. Configurez votre variable d'`PATH`environnement et exécutez la commande suivante.

   ```
   source $HOME/.cargo/env
   ```

## Installez Guard en tant que fonction Lambda (Linux, macOS ou Unix)
<a name="to-isntall-guard-as-a-lambda"></a>

Pour installer Guard en tant que fonction Lambda, procédez comme suit.

1. Depuis votre terminal de commande, exécutez la commande suivante.

   ```
   cargo install cfn-guard-lambda
   ```

   1. (Facultatif) Pour confirmer l'installation de Guard en tant que fonction Lambda, exécutez la commande suivante.

     ```
     cfn-guard-lambda --version
     ```

     La commande renvoie le résultat suivant.

     ```
     cfn-guard-lambda 3.1.2
     ```

1. Pour installer `musl` le support, exécutez la commande suivante.

   ```
   rustup target add x86_64-unknown-linux-musl
   ```

1. Compilez avec`musl`, puis exécutez la commande suivante dans votre terminal.

   ```
   cargo build --release --target x86_64-unknown-linux-musl
   ```

   Pour un [environnement d'exécution personnalisé](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), AWS Lambda nécessite un exécutable dont le nom figure `bootstrap` dans le fichier .zip du package de déploiement. Renommez le `cfn-lambda` fichier exécutable généré en, `bootstrap` puis ajoutez-le à l'archive .zip.

   1. Pour les environnements macOS, créez votre fichier de configuration de chargement à la racine du projet Rust ou dans`~/.cargo/config`.

     ```
     [target.x86_64-unknown-linux-musl]
     linker = "x86_64-linux-musl-gcc"
     ```

1. Accédez au répertoire `cfn-guard-lambda` racine.

   ```
   cd ~/.cargo/bin/cfn-guard-lambda
   ```

1. Exécutez la commande suivante dans votre terminal.

   ```
   cp ./../target/x86_64-unknown-linux-musl/release/cfn-guard-lambda ./bootstrap && zip lambda.zip bootstrap && rm bootstrap
   ```

1. Exécutez la commande suivante pour l'envoyer `cfn-guard` en tant que fonction Lambda à votre compte.

   ```
   aws lambda create-function --function-name cfnGuard \
    --handler guard.handler \
    --zip-file fileb://./lambda.zip \
    --runtime provided \
    --role arn:aws:iam::444455556666:role/your_lambda_execution_role \
    --environment Variables={RUST_BACKTRACE=1} \
    --tracing-config Mode=Active
   ```

## Pour créer et exécuter Guard en tant que fonction Lambda
<a name="build-and-run-lambda"></a>

Pour appeler la fonction soumise `cfn-guard-lambda` en tant que fonction Lambda, exécutez la commande suivante.

```
aws lambda invoke --function-name cfnGuard \
  --payload '{"data":"input data","rules":["rule1","rule2"]}' \
  output.json
```

## Pour appeler la structure de demande de la fonction Lambda
<a name="calling-the-lambda-function"></a>

Demandes visant à `cfn-guard-lambda` exiger les champs suivants :
+ `data`— La version sous forme de chaîne du modèle YAML ou JSON
+ `rules`— La version sous forme de chaîne du fichier d'ensemble de règles