

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tingkatkan efisiensi menggunakan lapisan Lambda dengan AWS SAM
<a name="serverless-sam-cli-layers"></a>

Menggunakan AWS SAM, Anda dapat menyertakan lapisan dalam aplikasi tanpa server Anda. AWS Lambda layer memungkinkan Anda untuk mengekstrak kode dari fungsi Lambda ke lapisan Lambda yang kemudian dapat digunakan di beberapa fungsi Lambda. Melakukan hal ini memungkinkan Anda untuk mengurangi ukuran paket penerapan Anda, memisahkan logika fungsi inti dari dependensi, dan berbagi dependensi di beberapa fungsi. Untuk informasi selengkapnya tentang layer, lihat [layer Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) di Panduan *AWS Lambda Pengembang*.

Bagian ini menyediakan informasi tentang hal berikut:
+ Termasuk lapisan dalam aplikasi Anda
+ Bagaimana lapisan di-cache secara lokal

Untuk informasi lebih lanjut tentang membuat lapisan kustom, lihat [Membangun lapisan Lambda di AWS SAM](building-layers.md).

## Termasuk lapisan dalam aplikasi Anda
<a name="including-layers"></a>

Untuk menyertakan lapisan dalam aplikasi Anda, gunakan `Layers` Properti dari [AWS::Serverless::Function](sam-resource-function.md) jenis sumber daya.

Berikut ini adalah contoh AWS SAM template dengan fungsi Lambda yang mencakup lapisan:

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

## Bagaimana lapisan di-cache secara lokal
<a name="local-testing-with-layers"></a>

Ketika Anda meminta fungsi Anda menggunakan salah satu `sam local`, paket lapisan fungsi Anda diunduh dan di-cache pada host lokal Anda.

Tabel berikut menunjukkan lokasi direktori cache default untuk sistem operasi yang berbeda.


****  

| OS | Lokasi | 
| --- | --- | 
| 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 | 

Setelah paket di-cache, lapisan AWS SAMCLI melapisi layer ke image Docker yang digunakan untuk memanggil fungsi Anda. Itu AWS SAMCLI menghasilkan nama-nama gambar yang dibangunnya, serta LayerVersions yang disimpan di cache. Anda dapat menemukan detail lebih lanjut tentang skema di bagian berikut.

Untuk memeriksa lapisan overlay, jalankan perintah berikut untuk memulai sesi bash pada gambar yang ingin Anda periksa:

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

**Skema nama Direktori Caching Layer**

Mengingat LayerVersionArn yang didefinisikan dalam template Anda, AWS SAMCLI ekstrak LayerName dan Versi dari ARN. Ini menciptakan sebuah direktori untuk menempatkan isi lapisan di dalam nama `LayerName-Version-<first 10 characters of sha256 of ARN>`.

Contoh:

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

**Skema tag Gambar Docker**

Untuk menghitung hash layer unik, gabungkan semua nama layer unik dengan pembatas '-', ambil SHA256 hash, lalu ambil 10 karakter pertama.

Contoh:

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

Nama-nama unik dikomputasi sama dengan skema nama pada Lapisan Direktori Caching:

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

Untuk komputasi lapisan unik hash, gabungkan semua nama lapisan unik dengan tanda pembatas '-', ambil hash sha256, kemudian ambil 25 karakter pertama:

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

Kemudian gabungkan nilai ini dengan runtime dan arsitektur fungsi, dengan pembatas '-':

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