Membangun lapisan Lambda di 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.

Membangun lapisan Lambda di AWS SAM

Anda dapat menggunakan AWS SAM untuk membangun lapisan Lambda kustom. Lapisan Lambda memungkinkan Anda mengekstrak kode dari fungsi Lambda yang kemudian dapat digunakan kembali di beberapa fungsi Lambda. Membangun hanya lapisan Lambda (alih-alih membangun seluruh aplikasi Anda) dapat menguntungkan Anda dalam beberapa cara. Ini dapat membantu Anda mengurangi ukuran paket penerapan Anda, memisahkan logika fungsi inti dari dependensi, dan memungkinkan Anda untuk berbagi dependensi di beberapa fungsi. Untuk informasi tentang lapisan, lihat Lapisan Lambda AWS di Panduan Developer AWS Lambda .

Cara membangun lapisan Lambda di AWS SAM

catatan

Sebelum Anda dapat membangun layer Lambda, Anda harus terlebih dahulu menulis layer Lambda di template Anda. AWS SAM Untuk informasi dan contoh tentang melakukan ini, lihatTingkatkan efisiensi menggunakan lapisan Lambda dengan AWS SAM.

Untuk membangun lapisan kustom, deklarasikan dalam file template AWS Serverless Application Model (AWS SAM) Anda dan sertakan bagian atribut Metadata resource dengan entri. BuildMethod Nilai yang valid untuk BuildMethod adalah pengidentifikasi pada waktu aktif AWS Lambda, atau makefile. Sertakan BuildArchitecture entri untuk menentukan arsitektur set instruksi yang didukung lapisan Anda. Nilai yang valid untuk BuildArchitecture adalah arsitektur set instruksi Lambda.

Jika Anda menentukan makefile, sediakan makefile kustom, tempat Anda menyatakan target bangunan formulir build-layer-logical-id yang berisi perintah pembangunan untuk lapisan Anda. Makefile Anda bertanggung jawab untuk menyusun lapisan jika diperlukan, dan menyalin artefak bangunan ke lokasi yang tepat yang diperlukan untuk langkah-langkah berikutnya dalam alur kerja Anda. Lokasi makefile ditentukan oleh properti ContentUri dari sumber daya lapisan dan harus diberi nama Makefile.

catatan

Ketika Anda membuat lapisan kustom, AWS Lambda tergantung pada variabel lingkungan untuk menemukan kode lapisan Anda. Waktu aktif Lambda termasuk jalur di direktori /opt tempat kode lapisan Anda disalin. Struktur folder artefak bangunan Anda harus sesuai dengan struktur folder yang diharapkan waktu aktif sehingga kode lapisan kustom Anda dapat ditemukan.

Contohnya, untuk Python, Anda dapat menempatkan kode di subdirektori python/. Untuk NodeJS, Anda dapat menempatkan kode Anda di subdirektori nodejs/node_modules/.

Untuk informasi selengkapnya, lihat Menyertakan dependensi pustaka dalam lapisan di Panduan Developer AWS Lambda .

Berikut ini adalah contoh bagian atribut sumber daya Metadata.

Metadata: BuildMethod: python3.8 BuildArchitecture: arm64
catatan

Jika Anda tidak menyertakan bagian atribut Metadata sumber daya, AWS SAM tidak membangun lapisan. Sebaliknya, artefak bangunan akan disalin dari lokasi yang ditentukan dalam properti CodeUri sumber daya lapisan. Untuk informasi selengkapnya, lihat ContentUriproperti jenis AWS::Serverless::LayerVersion sumber daya.

Ketika Anda menyertakan bagian atribut Metadata sumber daya, Anda dapat menggunakan sam build perintah untuk membangun lapisan, baik sebagai objek independen, atau sebagai ketergantungan AWS Lambda fungsi.

  • Sebagai objek independen. Anda mungkin hanya ingin membangun objek lapisan, misalnya ketika Anda sedang menguji perubahan kode secara lokal pada lapisan dan tidak perlu membangun seluruh aplikasi Anda. Untuk membangun lapisan secara independen, tentukan sumber daya lapisan dengan perintah sam build layer-logical-id.

  • Sebagai ketergantungan fungsi Lambda. Bila Anda menyertakan ID logis lapisan di properti Layers dari fungsi Lambda di file templat AWS SAM yang sama, lapisan merupakan dependensi dari fungsi Lambda tersebut. Ketika lapisan tersebut juga menyertakan bagian atribut sumber daya Metadata dengan entri BuildMethod, Anda membangun lapisan baik dengan membangun seluruh aplikasi menggunakan perintah sam build atau dengan menentukan sumber daya fungsi menggunakan perintah sam build function-logical-id.

Contoh

Contoh template 1: Bangun layer terhadap lingkungan runtime Python 3.9

Contoh AWS SAM template berikut membangun lapisan terhadap lingkungan runtime Python 3.9.

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.9 Metadata: BuildMethod: python3.9 # Required to have AWS SAM build this layer

Contoh templat 2: Bangun lapisan menggunakan makefile kustom

Contoh AWS SAM template berikut menggunakan custom makefile untuk membangun layer.

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile

Hal makefile berikut berisi target build dan perintah yang akan dieksekusi. Perhatikan bahwa properti ContentUri diatur ke my_layer, sehingga makefile harus terletak di root subdirektori my_layer, dan nama file harus Makefile. Perhatikan juga bahwa artefak build disalin ke python/ subdirektori sehingga AWS Lambda akan dapat menemukan kode layer.

build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"

Contoh perintah pembangunan sam

Perintah sam build berikut ini membangun lapisan yang mencakup bagian atribut sumber daya Metadata.

# Build the 'layer-logical-id' resource independently $ sam build layer-logical-id # Build the 'function-logical-id' resource and layers that this function depends on $ sam build function-logical-id # Build the entire application, including the layers that any function depends on $ sam build