amazon web services - servicios - ¿Cómo puedo usar variables ambientales en AWS Lambda?
porque usar lambda aws (5)
No hay forma de configurar variables de env para la ejecución de lambda ya que cada invocación es disjunta y no se almacena información de estado. Sin embargo, hay formas de lograr lo que quieres.
AWS credentials
: puede evitar almacenar eso en variables env. En su lugar, otorgue los privilegios a su función LambdaExec
. De hecho, AWS recomienda usar roles en lugar de credenciales de AWS.
Database details
: una sugerencia es almacenarla en un archivo conocido en un contenedor privado. Lambda puede descargar ese archivo cuando se invoca, leer los contenidos que pueden contener detalles de la base de datos y otra información. Como el depósito es privado, otros no pueden acceder al archivo. La función LambdaExec
necesita privilegios de IAM para acceder al LambdaExec
privado.
Estoy escribiendo una aplicación que quiero ejecutar como una función AWS Lambda pero también siguiendo las pautas de la aplicación Twelve-Factor. En particular, la Parte III. Configuración que requiere el uso de variables ambientales para la configuración.
Sin embargo, no puedo encontrar una forma de establecer variables ambientales para las instancias de AWS Lambda. ¿Alguien puede señalarme en la dirección correcta?
Si no es posible usar variables ambientales, puede recomendar una forma de usar variables ambientales para el desarrollo local y transformarlas en un sistema de configuración válido al que se pueda acceder utilizando el código de la aplicación en AWS.
Gracias.
Tal vez la función de ''variables de entorno personalizadas'' de node-lambda abordaría sus preocupaciones:
https://www.npmjs.com/package/node-lambda
https://github.com/motdotla/node-lambda
"AWS Lambda no le permite establecer variables de entorno para su función, pero en muchos casos necesitará configurar su función con valores seguros que no desea verificar en el control de la versión, por ejemplo, una cadena de conexión DB o clave de cifrado Utilice el archivo deploy.env de muestra en combinación con el indicador --configFile para establecer los valores que se agregarán a su función Lambda compilada como variables de entorno process.env antes de que se cargue en S3. "
También teníamos este requisito para nuestra función Lambda y lo "resolvimos" generando un archivo env en nuestra plataforma CI (en nuestro caso esto es CircleCI). Este archivo se incluye en el archivo que se implementa en Lambda. Ahora en tu código puedes incluir este archivo y usar las variables.
La secuencia de comandos que utilizo para generar un archivo JSON a partir de variables de entorno CircleCI es:
cat >dist/env.json <<EOL
{
"CLIENT_ID": "$CLIENT_ID",
"CLIENT_SECRET": "$CLIENT_SECRET",
"SLACK_VERIFICATION_TOKEN": "$SLACK_VERIFICATION_TOKEN",
"BRANCH": "$CIRCLE_BRANCH"
}
EOL
Me gusta este enfoque porque de esta manera no tiene que incluir variables específicas del entorno en su repositorio.
A partir del 18 de noviembre de 2016, AWS Lambda admite variables de entorno.
Las variables de entorno se pueden especificar tanto con AWS console como con AWS CLI. Así es como crearía un Lambda con una LD_LIBRARY_PATH
entorno LD_LIBRARY_PATH
usando AWS CLI:
aws lambda create-function /
--region us-east-1
--function-name myTestFunction
--zip-file fileb://path/package.zip
--role role-arn
--environment Variables={LD_LIBRARY_PATH=/usr/bin/test/lib64}
--handler index.handler
--runtime nodejs4.3
--profile default
AWS acaba de agregar soporte para la configuración de las funciones de Lambda a través de los parámetros del entorno. Echa un vistazo aquí