برنامه نویسی

نحوه ایجاد یک انتشار و استفاده از لایه ها برای توابع جاوا 21 Lambda

Summarize this content to 400 words in Persian Lang

معرفی

به عنوان آمادگی برای بررسی چگونگی تأثیر استفاده از لایه های Lambda با عملکرد Lambda و زمان اجرا جاوا 21 بر زمان شروع سرد (با و بدون فعال کردن SnapStart) و گرم، می خواهم مقدمه ای در مورد نحوه ایجاد، انتشار و استفاده ارائه کنم. لایه ها برای جاوا (21) تابع Lambda در قالب SAM.

لایه لامبدا چیست؟

لایه Lambda یک آرشیو فایل .zip است که حاوی کد یا داده های تکمیلی است. لایه ها معمولاً شامل وابستگی های کتابخانه، زمان اجرا سفارشی یا فایل های پیکربندی هستند.

مزایای استفاده از لایه لامبدا

دلایل متعددی وجود دارد که چرا می توانید از لایه ها استفاده کنید:

برای کاهش اندازه بسته های استقرار خود. به جای اینکه همه وابستگی های تابع خود را به همراه کد تابع در بسته استقرار خود وارد کنید، آنها را در یک لایه قرار دهید. این امر بسته های استقرار را کوچک و سازماندهی می کند.
برای جدا کردن منطق تابع اصلی از وابستگی ها. با لایه ها، می توانید وابستگی های تابع خود را مستقل از کد تابع خود به روز کنید و بالعکس. این امر جداسازی نگرانی ها را ترویج می کند و به شما کمک می کند تا بر منطق عملکرد خود تمرکز کنید.
برای به اشتراک گذاشتن وابستگی ها در چندین عملکرد. پس از ایجاد یک لایه، می توانید آن را به هر تعداد از توابع موجود در حساب خود اعمال کنید. بدون لایه‌ها، باید وابستگی‌های یکسانی را در هر بسته استقرار مجزا بگنجانید.
برای استفاده از ویرایشگر کد کنسول Lambda. ویرایشگر کد ابزار مفیدی برای آزمایش سریع به‌روزرسانی‌های جزئی کد عملکرد است. با این حال، اگر اندازه بسته استقرار شما خیلی بزرگ باشد، نمی توانید از ویرایشگر استفاده کنید. استفاده از لایه ها اندازه بسته شما را کاهش می دهد و می تواند قفل استفاده از ویرایشگر کد را باز کند.

نحوه ایجاد، انتشار و استفاده از لایه ها برای توابع Java 21 Lambda با AWS CLI v2 و قالب SAM

به منظور کاوش، از برنامه نمونه برای ایجاد لایه Lambda با جاوا 21 زمان اجرا استفاده خواهیم کرد که وابستگی های زیر را در لایه بسته بندی می کند:

aws-lambda-java-core
aws-lambda-java-events
org-crac
slf4j-ساده
jackson-dataformat-xml

برای ایجاد لایه Lambda ما نیاز داریم:

زمان اجرا جاوا 21
نسخه Maven (3.8.6 یا بالاتر) قادر به ساخت و بسته بندی برنامه های جاوا 21 است
AWS CLI نسخه 2

لایه لامبدا نیاز دارد که وابستگی ها در یک uber-jar ساخته شوند. برای این منظور از دو افزونه در pom.xml استفاده می کنیم. افزونه maven-compiler کد منبع را کامپایل می کند. پلاگین maven-shade مصنوعات ما را در یک uber-jar بسته بندی می کند. سپس باید اجرا کنیم

mvn clean package

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای ساخت اپلیکیشن ما

وقتی یک لایه به تابع Lambda با زمان اجرا جاوا اضافه می کنیم، Lambda محتوای لایه را در آن بارگذاری می کند /انتخاب دایرکتوری آن محیط اجرا برای هر زمان اجرا Lambda، متغیر PATH از قبل شامل مسیرهای پوشه خاصی در پوشه /opt است. برای اطمینان از اینکه متغیر PATH محتوای لایه ما را دریافت می کند، فایل .zip لایه ما باید وابستگی های خود را در مسیرهای پوشه زیر داشته باشد: java/lib

به عنوان مثال، فایل زیپ لایه حاصل که با برنامه نمونه خود ایجاد می کنیم، ساختار دایرکتوری زیر را دارد:

aws-pure-java-21-common-lambda-layer-content.zip
└ java
└ lib
└ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

که با اجرای دستورات زیر در لینوکس قابل دستیابی است:

mkdir جاوا
mkdir java/lib
cp -r target/aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar java/lib/
zip -r aws-pure-java-21-common-lambda-layer-content.zip java

برای انتشار این لایه Lambda با زمان اجرا جاوا 21، باید دستور زیر را با AWS CLI v2 اجرا کنیم:

aws lambda publish-layer-version –layer-name aws-pure-java-21-common-lambda-layer –zip-file fileb://aws-pure-java-21-common-lambda-layer-content.zip –compatible-runtimes java21

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با پارامتر اضافی –compatible-architectures “x86” می توانیم معماری های سخت افزاری سازگار مانند x86 (پیش فرض) یا arm64 را تعریف کنیم.

به عنوان پاسخ، AWS لایه Lambda ARN را ارائه می دهد که بعداً باید به آن ارجاع دهیم، که شبیه به این است:

arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1

لطفاً توجه داشته باشید که آخرین پارامتر نسخه لایه لامبدا است که زمانی که لایه را برای اولین بار منتشر می‌کنیم همیشه 1 است و با به‌روزرسانی‌های بعدی لایه Lambda موجود، یک عدد افزایش می‌یابد.

برای اینکه لایه را به تابع خود متصل کنیم، می توانیم کارهای زیر را انجام دهیم:

هنگام استفاده از AWS CLI v2 و فراخوانی aws lambda create-function دستور اضافه کردن –لایه های پارامتر با لایه ARN مانند arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
هنگام استفاده از الگوی AWS SAM مانند آنچه در مقاله بعدی خود بررسی خواهیم کرد (این مثال عینی است) پارامتر Layers را به تابع Lambda به این صورت اضافه کنید:

Type: AWS::Serverless::Function
Properties:
FunctionName: GetProductByIdWithPureJava21LambdaWithCommonLayer
AutoPublishAlias: liveVersion
Layers:
– !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

در این مقاله مقدمه ای در مورد نحوه ایجاد، انتشار و استفاده از لایه ها برای توابع Java 21 Lambda AWS CLI v2 و قالب SAM ارائه کردم. در مقاله بعدی که تحت سری AWS Lambda SnapStart منتشر شده است، چگونگی تأثیر استفاده از لایه‌های (متفاوت) Lambda با عملکرد دارای زمان اجرا جاوا 21 بر زمان شروع سرد (با و بدون فعال کردن SnapStart) و گرم را بررسی خواهم کرد.

معرفی

به عنوان آمادگی برای بررسی چگونگی تأثیر استفاده از لایه های Lambda با عملکرد Lambda و زمان اجرا جاوا 21 بر زمان شروع سرد (با و بدون فعال کردن SnapStart) و گرم، می خواهم مقدمه ای در مورد نحوه ایجاد، انتشار و استفاده ارائه کنم. لایه ها برای جاوا (21) تابع Lambda در قالب SAM.

لایه لامبدا چیست؟

لایه Lambda یک آرشیو فایل .zip است که حاوی کد یا داده های تکمیلی است. لایه ها معمولاً شامل وابستگی های کتابخانه، زمان اجرا سفارشی یا فایل های پیکربندی هستند.

مزایای استفاده از لایه لامبدا

دلایل متعددی وجود دارد که چرا می توانید از لایه ها استفاده کنید:

  • برای کاهش اندازه بسته های استقرار خود. به جای اینکه همه وابستگی های تابع خود را به همراه کد تابع در بسته استقرار خود وارد کنید، آنها را در یک لایه قرار دهید. این امر بسته های استقرار را کوچک و سازماندهی می کند.
  • برای جدا کردن منطق تابع اصلی از وابستگی ها. با لایه ها، می توانید وابستگی های تابع خود را مستقل از کد تابع خود به روز کنید و بالعکس. این امر جداسازی نگرانی ها را ترویج می کند و به شما کمک می کند تا بر منطق عملکرد خود تمرکز کنید.
  • برای به اشتراک گذاشتن وابستگی ها در چندین عملکرد. پس از ایجاد یک لایه، می توانید آن را به هر تعداد از توابع موجود در حساب خود اعمال کنید. بدون لایه‌ها، باید وابستگی‌های یکسانی را در هر بسته استقرار مجزا بگنجانید.
  • برای استفاده از ویرایشگر کد کنسول Lambda. ویرایشگر کد ابزار مفیدی برای آزمایش سریع به‌روزرسانی‌های جزئی کد عملکرد است. با این حال، اگر اندازه بسته استقرار شما خیلی بزرگ باشد، نمی توانید از ویرایشگر استفاده کنید. استفاده از لایه ها اندازه بسته شما را کاهش می دهد و می تواند قفل استفاده از ویرایشگر کد را باز کند.

نحوه ایجاد، انتشار و استفاده از لایه ها برای توابع Java 21 Lambda با AWS CLI v2 و قالب SAM

به منظور کاوش، از برنامه نمونه برای ایجاد لایه Lambda با جاوا 21 زمان اجرا استفاده خواهیم کرد که وابستگی های زیر را در لایه بسته بندی می کند:

  • aws-lambda-java-core
  • aws-lambda-java-events
  • org-crac
  • slf4j-ساده
  • jackson-dataformat-xml

برای ایجاد لایه Lambda ما نیاز داریم:

  • زمان اجرا جاوا 21
  • نسخه Maven (3.8.6 یا بالاتر) قادر به ساخت و بسته بندی برنامه های جاوا 21 است
  • AWS CLI نسخه 2

لایه لامبدا نیاز دارد که وابستگی ها در یک uber-jar ساخته شوند. برای این منظور از دو افزونه در pom.xml استفاده می کنیم. افزونه maven-compiler کد منبع را کامپایل می کند. پلاگین maven-shade مصنوعات ما را در یک uber-jar بسته بندی می کند. سپس باید اجرا کنیم

mvn clean package
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای ساخت اپلیکیشن ما

وقتی یک لایه به تابع Lambda با زمان اجرا جاوا اضافه می کنیم، Lambda محتوای لایه را در آن بارگذاری می کند /انتخاب دایرکتوری آن محیط اجرا برای هر زمان اجرا Lambda، متغیر PATH از قبل شامل مسیرهای پوشه خاصی در پوشه /opt است. برای اطمینان از اینکه متغیر PATH محتوای لایه ما را دریافت می کند، فایل .zip لایه ما باید وابستگی های خود را در مسیرهای پوشه زیر داشته باشد: java/lib

به عنوان مثال، فایل زیپ لایه حاصل که با برنامه نمونه خود ایجاد می کنیم، ساختار دایرکتوری زیر را دارد:

aws-pure-java-21-common-lambda-layer-content.zip
└ java
    └ lib
        └ aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

که با اجرای دستورات زیر در لینوکس قابل دستیابی است:

  • mkdir جاوا
  • mkdir java/lib
  • cp -r target/aws-pure-java-21-common-lambda-layer-1.0.0-SNAPSHOT.jar java/lib/
  • zip -r aws-pure-java-21-common-lambda-layer-content.zip java

برای انتشار این لایه Lambda با زمان اجرا جاوا 21، باید دستور زیر را با AWS CLI v2 اجرا کنیم:

aws lambda publish-layer-version --layer-name aws-pure-java-21-common-lambda-layer --zip-file fileb://aws-pure-java-21-common-lambda-layer-content.zip --compatible-runtimes java21
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با پارامتر اضافی –compatible-architectures “x86” می توانیم معماری های سخت افزاری سازگار مانند x86 (پیش فرض) یا arm64 را تعریف کنیم.

به عنوان پاسخ، AWS لایه Lambda ARN را ارائه می دهد که بعداً باید به آن ارجاع دهیم، که شبیه به این است:

arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1

لطفاً توجه داشته باشید که آخرین پارامتر نسخه لایه لامبدا است که زمانی که لایه را برای اولین بار منتشر می‌کنیم همیشه 1 است و با به‌روزرسانی‌های بعدی لایه Lambda موجود، یک عدد افزایش می‌یابد.

برای اینکه لایه را به تابع خود متصل کنیم، می توانیم کارهای زیر را انجام دهیم:

  • هنگام استفاده از AWS CLI v2 و فراخوانی aws lambda create-function دستور اضافه کردن –لایه های پارامتر با لایه ARN مانند arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
  • هنگام استفاده از الگوی AWS SAM مانند آنچه در مقاله بعدی خود بررسی خواهیم کرد (این مثال عینی است) پارامتر Layers را به تابع Lambda به این صورت اضافه کنید:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: GetProductByIdWithPureJava21LambdaWithCommonLayer
      AutoPublishAlias: liveVersion
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
      Handler: software.amazonaws.example.product.handler.GetProductByIdHandler::handleRequest
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

در این مقاله مقدمه ای در مورد نحوه ایجاد، انتشار و استفاده از لایه ها برای توابع Java 21 Lambda AWS CLI v2 و قالب SAM ارائه کردم. در مقاله بعدی که تحت سری AWS Lambda SnapStart منتشر شده است، چگونگی تأثیر استفاده از لایه‌های (متفاوت) Lambda با عملکرد دارای زمان اجرا جاوا 21 بر زمان شروع سرد (با و بدون فعال کردن SnapStart) و گرم را بررسی خواهم کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا