Rumah > Java > javaTutorial > teks badan

Cara membuat, menerbitkan dan menggunakan lapisan untuk fungsi Java Lambda

WBOY
Lepaskan: 2024-07-18 13:59:57
asal
633 orang telah melayarinya

How to create, publish and use layers for Java Lambda functions

pengenalan

Sebagai persediaan kepada penyiasatan tentang cara penggunaan lapisan Lambda dengan fungsi Lambda dan masa jalan Java 21 mempengaruhi masa sejuk (dengan dan tanpa mendayakan SnapStart) dan masa mula hangat, saya ingin memberikan pengenalan tentang cara mencipta, terbitkan dan gunakan lapisan untuk Java (21) fungsi Lambda dalam templat SAM.

Apakah lapisan Lambda

Lapisan Lambda ialah arkib fail .zip yang mengandungi kod atau data tambahan. Lapisan biasanya mengandungi kebergantungan perpustakaan, masa jalan tersuai atau fail konfigurasi.

Faedah menggunakan lapisan Lambda

Terdapat beberapa sebab mengapa anda mungkin mempertimbangkan untuk menggunakan lapisan:

  • Untuk mengurangkan saiz pakej penggunaan anda. Daripada memasukkan semua kebergantungan fungsi anda bersama-sama dengan kod fungsi anda dalam pakej penggunaan anda, letakkannya dalam satu lapisan. Ini memastikan pakej penggunaan kecil dan teratur.
  • Untuk memisahkan logik fungsi teras daripada kebergantungan. Dengan lapisan, anda boleh mengemas kini kebergantungan fungsi anda bebas daripada kod fungsi anda, dan sebaliknya. Ini menggalakkan pengasingan kebimbangan dan membantu anda menumpukan pada logik fungsi anda.
  • Untuk berkongsi kebergantungan merentas pelbagai fungsi. Selepas anda membuat lapisan, anda boleh menggunakannya pada sebarang bilangan fungsi dalam akaun anda. Tanpa lapisan, anda perlu memasukkan kebergantungan yang sama dalam setiap pakej penggunaan individu.
  • Untuk menggunakan editor kod konsol Lambda. Editor kod ialah alat yang berguna untuk menguji kemas kini kod fungsi kecil dengan cepat. Walau bagaimanapun, anda tidak boleh menggunakan editor jika saiz pakej penggunaan anda terlalu besar. Menggunakan lapisan mengurangkan saiz pakej anda dan boleh membuka kunci penggunaan editor kod.

Cara membuat, menerbitkan dan menggunakan lapisan untuk fungsi Java 21 Lambda dengan AWS CLI v2 dan templat SAM

Demi penerokaan kami akan menggunakan aplikasi sampel untuk mencipta lapisan Lambda dengan Java 21 runtime pembungkusan kebergantungan berikut ke dalam lapisan :

  • aws-lambda-java-core
  • aws-lambda-java-events
  • org-crac
  • slf4j-simple
  • jackson-dataformat-xml

Untuk mencipta lapisan Lambda kita perlukan:

  • Java 21 masa jalan
  • Versi Maven (3.8.6 atau lebih baru) mampu membina dan membungkus aplikasi Java 21
  • AWS CLI v2

Lapisan Lambda memerlukan kebergantungan untuk dibina ke dalam satu uber-jar. Untuk tujuan ini, kami menggunakan dua pemalam dalam pom.xml. Maven-compiler-plugin menyusun kod sumber. Maven-shade-plugin membungkus artifak kami ke dalam satu uber-jar. Kemudian kita perlu melaksanakan

mvn clean package
Salin selepas log masuk

untuk membina aplikasi kami.

Apabila kami menambah lapisan pada fungsi Lambda dengan masa jalan Java, Lambda memuatkan kandungan lapisan ke dalam direktori /opt bagi persekitaran pelaksanaan tersebut. Untuk setiap masa jalan Lambda, pembolehubah PATH sudah termasuk laluan folder tertentu dalam direktori /opt. Untuk memastikan pembolehubah PATH mengambil kandungan lapisan kami, fail .zip lapisan kami harus mempunyai kebergantungan dalam laluan folder berikut: java/lib

Sebagai contoh, fail .zip lapisan yang terhasil yang kami buat dengan aplikasi sampel kami mempunyai struktur direktori berikut:

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

yang boleh dicapai dengan melaksanakan arahan berikut pada Linux:

  • mkdir java
  • 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

Untuk menerbitkan lapisan Lambda ini dengan masa jalan Java 21 kita perlu melaksanakan arahan berikut dengan 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
Salin selepas log masuk

Dengan parameter tambahan --compatible-architectures "x86" kita boleh mentakrifkan seni bina perkakasan yang serasi seperti x86 (lalai) atau arm64.

Memandangkan respons AWS akan menyampaikan lapisan Lambda ARN yang perlu kami rujuk kemudian, yang kelihatan serupa dengan yang ini:

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

Sila ambil perhatian bahawa parameter terakhir ialah versi lapisan Lambda yang sentiasa 1 apabila kami mula-mula menerbitkan lapisan dan akan meningkat satu dengan kemas kini berikutnya bagi lapisan Lambda sedia ada.

Untuk melampirkan lapisan pada fungsi anda, kami boleh melakukan perkara berikut:

  • when using AWS CLI v2 and invoking aws lambda create-function command add --layers paramater with layer ARN like arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:aws-pure-java-21-common-lambda-layer:1
  • when using AWS SAM template like we'll explore in our next article (here is the concrete example) add Layers parameter to the Lambda function like this:
    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
Salin selepas log masuk

Conclusion

In this article I gave an introduction about how to create, publish and use layers for Java 21 Lambda functions AWS CLI v2 and the SAM template. In the next article published under the AWS Lambda SnapStart series I'll explore how the usage of the (different) Lambda layers with function having Java 21 runtime affects the cold (with and without enabling SnapStart) and warm start times.

Atas ialah kandungan terperinci Cara membuat, menerbitkan dan menggunakan lapisan untuk fungsi Java Lambda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!