

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.

# Améliorez l'efficacité en utilisant les couches Lambda avec AWS SAM
<a name="serverless-sam-cli-layers"></a>

En utilisant AWS SAM, vous pouvez inclure des couches dans vos applications sans serveur. AWS Lambda les couches vous permettent d'extraire le code d'une fonction Lambda dans une couche Lambda qui peut ensuite être utilisée dans plusieurs fonctions Lambda. Cela vous permet de réduire la taille de vos packages de déploiement, de séparer la logique des fonctions de base des dépendances et de partager les dépendances entre plusieurs fonctions. Pour plus d'informations sur les couches, consultez la section [Couches Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) dans le Guide du *AWS Lambda développeur*.

Cette rubrique fournit des informations sur les éléments suivants :
+ Inclusion de couches dans votre application
+ Comment les couches sont mises en cache localement

Pour plus d'informations sur la création de couches personnalisées, consultez [Création de couches Lambda dans AWS SAM](building-layers.md).

## Inclusion de couches dans votre application
<a name="including-layers"></a>

Pour inclure des couches dans votre application, utilisez la propriété `Layers` du type de ressource [AWS::Serverless::Function](sam-resource-function.md).

Voici un exemple de AWS SAM modèle avec une fonction Lambda qui inclut une couche :

```
ServerlessFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: .
    Handler: my_handler
    Runtime: Python3.7
    Layers:
        - <LayerVersion ARN>
```

## Comment les couches sont mises en cache localement
<a name="local-testing-with-layers"></a>

Lorsque vous appelez votre fonction à l'aide de l'une des commandes `sam local`, le package de couches de votre fonction est téléchargé et mis en cache sur votre hôte local.

Le tableau suivant montre les emplacements de répertoire des mises en cache par défaut pour les différents systèmes d'exploitation.


****  

| Système d’exploitation | Location | 
| --- | --- | 
| Windows 7 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| Windows 8 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| Windows 10 | C:\$1Users\$1<user>\$1AppData\$1Roaming\$1AWS SAM | 
| macOS | \$1/.aws-sam/layers-pkg | 
| Unix | \$1/.aws-sam/layers-pkg | 

Une fois que le package est mis en cache, la CLI  AWS SAM superpose les couches sur une image Docker utilisée pour invoquer votre fonction. AWS SAMCLIGénère les noms des images qu'il crée, ainsi que celles LayerVersions qui sont conservées dans le cache. Vous trouverez davantage de détails sur le schéma dans les sections suivantes.

Pour inspecter les couches superposées, exécutez la commande suivante pour démarrer une séance bash dans l'image à inspecter :

```
docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i
```

**Schéma de nom de répertoire de mise en cache des couches**

Étant donné LayerVersionArn qu'un est défini dans votre modèle, la AWS SAMCLI version LayerName et est extraite de l'ARN. Elle crée un répertoire pour y placer le contenu de la couche, qui sera nommé `LayerName-Version-<first 10 characters of sha256 of ARN>`.

Exemple :

```
ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1
Directory name = myLayer-1-926eeb5ff1
```

**Schéma de balises pour les images Docker**

Pour calculer le hachage des couches uniques, combinez tous les noms de couches uniques avec un délimiteur « - », prenez le SHA256 hachage, puis les 10 premiers caractères.

Exemple :

```
ServerlessFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: .
    Handler: my_handler
    Runtime: Python3.7
    Layers:
        - arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1
        - arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1
```

Les noms uniques sont calculés de la même manière que le schéma de nom du répertoire de mise en cache des couches :

```
arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 = myLayer-1-926eeb5ff1
arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1 = mySecondLayer-1-6bc1022bdf
```

Pour calculer le hachage des couches uniques, combinez tous les noms de couches uniques avec un délimiteur de '-', prenez le hachage sha256, puis prenez les 25 premiers caractères.

```
myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef
```

Combinez ensuite cette valeur avec l'exécution et l'architecture de la fonction, avec un délimiteur de '-' :

```
python3.7-x86_64-2dd7ac5ffb30d515926aefffd
```