

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Aumente a eficiência usando camadas Lambda com AWS SAM
<a name="serverless-sam-cli-layers"></a>

Usando AWS SAM, você pode incluir camadas em seus aplicativos sem servidor. AWS Lambda camadas permitem que você extraia código de uma função Lambda em uma camada Lambda que pode ser usada em várias funções Lambda. Fazer isso permite a redução do tamanho dos pacotes de implantação, a separação da lógica da função de núcleo das dependências e o compartilhamento de dependências em várias funções. Para obter informações sobre camadas, consulte [Camadas do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) no *Guia do desenvolvedor do AWS Lambda *.

Este tópico fornece informações sobre o seguinte:
+ Incluindo camadas em seu aplicativo
+ Como as camadas são armazenadas em cache localmente

Para obter informações sobre como construir camadas personalizadas, consulte [Construindo camadas Lambda em AWS SAM](building-layers.md).

## Incluindo camadas em seu aplicativo
<a name="including-layers"></a>

Para incluir camadas em seu aplicativo, use a propriedade `Layers` do tipo de recurso [AWS::Serverless::Function](sam-resource-function.md).

Veja a seguir um exemplo AWS SAM de modelo com uma função Lambda que inclui uma camada:

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

## Como as camadas são armazenadas em cache localmente
<a name="local-testing-with-layers"></a>

Quando você invoca sua função usando um dos `sam local` comandos, o pacote de camadas da sua função é baixado e armazenado em cache no seu host local.

A tabela a seguir mostra os locais padrão dos diretórios de cache de diferentes sistemas operacionais.


****  

| SO | Local | 
| --- | --- | 
| 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 | 

Depois que o pacote é armazenado em cache, as camadas são AWS SAMCLI sobrepostas em uma imagem do Docker usada para invocar sua função. Ele AWS SAMCLI gera os nomes das imagens que ele cria, bem como as LayerVersions que são mantidas no cache. Você pode encontrar mais detalhes sobre o esquema nas seções a seguir.

Para inspecionar as camadas sobrepostas, execute o seguinte comando para iniciar uma sessão bash na imagem que você deseja inspecionar:

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

**Esquema de nome do diretório de cache de camadas**

Dado LayerVersionArn que está definido em seu modelo, o AWS SAMCLI extrai a versão LayerName e do ARN. Ele cria um diretório para colocar o conteúdo da camada em chamado `LayerName-Version-<first 10 characters of sha256 of ARN>`.

Exemplo:

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

**Esquema de tags do Docker Images**

Para calcular o hash de camadas exclusivo, combine todos os nomes de camadas exclusivos com um delimitador de '-', pegue o SHA256 hash e, em seguida, use os 10 primeiros caracteres.

Exemplo:

```
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
```

Os nomes exclusivos são computados da mesma forma que o esquema de nomes do Layer Caching Directory:

```
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
```

Para calcular o hash de camadas exclusivo, combine todos os nomes de camadas exclusivos com um delimitador de '-', use o hash sha256 e, em seguida, use os primeiros 25 caracteres:

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

Em seguida, combine esse valor com o tempo de execução e a arquitetura da função, com um delimitador de '-':

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