Tingkatkan efisiensi menggunakan lapisan Lambda dengan AWS SAM - AWS Serverless Application Model

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

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

Termasuk lapisan dalam aplikasi Anda

Untuk menyertakan lapisan dalam aplikasi Anda, gunakan Layers Properti dari AWS::Serverless::Function 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

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:\Users\<user>\AppData\Roaming\AWS SAM
Windows 8 C:\Users\<user>\AppData\Roaming\AWS SAM
Windows 10 C:\Users\<user>\AppData\Roaming\AWS SAM
macOS ~/.aws-sam/layers-pkg
Unix ~/.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 komputasi lapisan unik hash, gabungkan semua nama lapisan unik dengan tanda pembatas '-', ambil hash SHA256, kemudian 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