Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

218
Views
¿Cómo pasar el valor de NODE_EXTRA_CA_CERTS a AWS Lambda implementado con Serverless?

Estoy implementando un nodo AWS Lambda con Serverless . Debido a los requisitos internos de la institución en la que se ejecutará este código, necesito aprobar certificados adicionales. La única solución que he podido encontrar es pasar NODE_EXTRA_CA_CERTS como argumento CLI. Usar variables ambientales típicas (definidas, por ejemplo, en dotenv ) no funciona porque para ese punto en Node ya se han configurado los certificados.

Mis certificados adicionales están en MyCerts.pem en la raíz del proyecto, y la función de Lambda que intento ejecutar se llama function1 . Ejecutar Lambda localmente con NODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke local -f function1 -l funciona correctamente. Sin embargo, una vez que implemento en AWS usando npx serverless deploy -v , no puedo encontrar una manera de incluir correctamente estos certificados adicionales, incluso invocando desde la CLI usando NODE_EXTRA_CA_CERTS=./MyCerts.pem npx serverless invoke -f function1 -l .

He intentado todo lo que puedo pensar y estoy perdido. ¿Alguien puede ayudar?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Creo que esto definitivamente debería ser posible en AWS Lambda.
Hay un ejemplo en dev.to [1] que es similar a su caso de uso. Sin embargo, están utilizando .NET Core y AWS SAM, pero debería ser fácil adaptar la solución a serverless y Node.js.

Básicamente, necesitas dos pasos:

  1. Cree una capa Lambda que contenga su archivo de certificado adicional [2][3]
  2. Agregue la variable de entorno NODE_EXTRA_CA_CERTS a su serverless.yml y apunte la ruta al archivo que cargó en su capa Lambda [4]

Referencias

[1] https://dev.to/leading-edje/aws-lambda-layer-for-private-certificates-465j
[2] https://www.serverless.com/plugins/serverless-layers
[3] https://www.serverless.com/blog/publish-aws-lambda-layers-serverless-framework
[4] https://www.sinservidor.com/blog/sinservidor-v1.2.0

over 4 years ago · Santiago Trujillo Report

0

No creo que NODE_EXTRA_CA_CERTS funcione en Lambda. Intenté configurarlo como una variable de entorno en un archivo ficticio que no existe. No generó una advertencia como se indica en la documentación , por lo que asumo que se ignoró.

Se emitirá un mensaje (una vez) con process.emitWarning() si el archivo falta o tiene un formato incorrecto, pero de lo contrario se ignorarán los errores.

Supongo que es por esta advertencia:

Esta variable de entorno se ignora cuando el nodo se ejecuta como setuid root o tiene capacidades de archivo de Linux configuradas.

Aquí hay otra pregunta que confirma que no funciona.

Pude hacer que Node.js prestara atención a NODE_EXTRA_CA_CERTS iniciando otro proceso de node desde la función Lambda. Ese segundo proceso me dio la advertencia que estaba buscando:

 Warning: Ignoring extra certs from `hello.pem`, load failed: error:02001002:system library:fopen:No such file or directory

Estoy seguro de que hay muchas desventajas para iniciar un proceso secundario para manejar la solicitud (la simultaneidad sería mi principal preocupación), pero es una solución que puede probar.

 const ca_env = Object.assign({NODE_EXTRA_CA_CERTS: "hello.pem"}, process.env);; require("child_process").execSync('node -e "console.log(\'hello\')"', {env: ca_env});
over 4 years ago · Santiago Trujillo Report

0

También me encontré con este problema y tomando las entradas de Martin Loper, había establecido la variable de entorno NODE_EXTRA_CA_CERTS con el prefijo /var/task/ y luego la ruta dentro de mi base de código lambda donde se encuentra realmente el certificado. por ejemplo, me gustaría /var/task/certs/myCustomCA.pem si tuviera una carpeta de certs en mi lambda con myCustomCA.pem .

over 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!