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-
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 layer-logical-id
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 dayaMetadata
dengan entriBuildMethod
, Anda membangun lapisan baik dengan membangun seluruh aplikasi menggunakan perintahsam build
atau dengan menentukan sumber daya fungsi menggunakan perintahsam 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
# Build the 'function-logical-id' resource and layers that this function depends onlayer-logical-id
$
sam build
# Build the entire application, including the layers that any function depends onfunction-logical-id
$
sam build