Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda