• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

431
Views
¿Cómo ejecutar el archivo .jar desde AWS Lambda Serverless?

He intentado con el siguiente código.

 var exec = require('child_process').execFile; var runCmd = 'java -jar ' + process.env.LAMBDA_TASK_ROOT + '/src/' + 'myjar.jar' exec(runCmd, function (err, resp) { if (err) { cb(null, { err: err}) } else { cb(null, { resp: resp}) } )

Aquí, he puesto mi archivo jar en la carpeta raíz y también en la carpeta src. pero me está dando el siguiente error. Ya agregué el archivo .jar con el código, pero recibí el siguiente error.

 "err": { "code": "ENOENT", "errno": "ENOENT", "syscall": "spawn java -jar /var/task/src/myjar.jar", "path": "java -jar /var/task/src/myjar.jar", "spawnargs": [], "cmd": "java -jar /var/task/src/myjar.jar" }

Entonces, ¿cómo puedo ejecutar este archivo .jar en el entorno de AWS Lambda? Por favor, ayúdame.

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

Con Lambda Layers, ahora puede incorporar múltiples tiempos de ejecución.

https://github.com/lambci/yumda y https://github.com/mthenw/awesome-layers tienen muchos paquetes preconstruidos que puede usar para crear una capa para tener un segundo tiempo de ejecución disponible en su entorno .

Por ejemplo, actualmente estoy trabajando en un proyecto que utiliza el tiempo de ejecución de Ruby 2.5 sobre una capa personalizada creada a partir de lambci/yumbda para proporcionar Java.

 mkdir dependencies docker run --rm -v "$PWD"/dependencies:/lambda/opt lambci/yumda:1 yum install -y java-1.8.0-openjdk-devel.x86_64 cd dependencies zip -yr ../javaLayer .
  1. cargue javaLayer.zip en aws lambda como una capa
  2. agregar capa a su función
  3. dentro de su función, java estará ubicado en /opt/lib/jvm/{YOUR_SPECIFIC_JAVA_VERSION}/jre/bin/java
about 3 years ago · Santiago Trujillo Report

0

AWS Lambda le permite seleccionar un tiempo de runtime en el momento de la creación de esa función lambda, o luego puede cambiarlo nuevamente. ingrese la descripción de la imagen aquí

Por lo tanto, mientras ejecuta la función Lambda con el tiempo de ejecución de NodeJs , el contenedor no tendrá disponible el tiempo de ejecución de Java .

Solo puede tener un tipo de tiempo de runtime en un contenedor en el caso de AWS Lambda.

Entonces, cree un Lambda separado con el archivo Jar que desea ejecutar con Java como tiempo de runtime y luego puede activar esa función lambda desde su función lambda actual de NodeJS si eso es lo que finalmente desea.

El siguiente es un ejemplo de cómo puede llamar a otra función Lambda usando NodeJS

 var aws = require('aws-sdk'); var lambda = new aws.Lambda({ region: 'put_your_region_here' }); lambda.invoke({ FunctionName: 'lambda_function_name', Payload: JSON.stringify(event, null, 2) }, function(error, data) { if (error) { context.done('error', error); } if(data.Payload){ context.succeed(data.Payload) } });

Puede consultar la documentación oficial para obtener más detalles.

about 3 years ago · Santiago Trujillo Report

0

Además de las otras respuestas: desde diciembre de 2020, Lambda admite imágenes de contenedores: https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/

Ej.: Creé una imagen de contenedor usando la imagen base de código abierto de AWS para python, agregando una línea para instalar java. Una cosa que hizo mi código python fue ejecutar un archivo .jar usando una llamada al sistema.

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error