Estoy aprendiendo lambda y actualmente estoy tratando de entender las variables de entorno. A continuación se muestra un código muy simple para mostrar mi pregunta. (Una función de nodejs que simplemente imprimirá el valor de la constante de nombre).
exports.handler = async function(event, context) { const name = process.env.NAME; return name; };Ya he definido una variable de entorno en lambda de la siguiente manera
Ahora, esta lambda seguramente imprimirá "xyz" después de completarse. Pero, ¿cómo podemos sobrescribir/cambiar el valor de la variable "Nombre" mientras ejecutamos Lambda. entonces, al invocarlo, ¿mostrará el nuevo valor? Por ejemplo algo como --NOMBRE = "abc" o --NOMBRE abc
No puede cambiar la configuración (incluidas las variables de entorno) ni el código de función en una versión de función de Lambda publicada. Solo puede cambiar la versión actual de la función no publicada ($ÚLTIMO).
Entonces, a menos que su Lambda se conecte a la API de AWS y publique una versión completamente nueva de sí mismo, no puede.
Parece que está tratando de usar variables de entorno como un espacio de almacenamiento local que, fundamentalmente, no lo son. Probablemente estaría mejor con una base de datos. Buscaría usar DynamoDB para esto.
De la pregunta original y los comentarios, reuní los siguientes requisitos para su Lambda:
La forma más fácil y probablemente más adecuada de lograr esto es pasar el dominio como datos de "evento" en cada invocación.
exports.handler = async (event) => { const domain = event["domain"]; console.log("Domain: %s", domain); // your Route53 code goes here... };Para ejecutar Lambda y pasar el "dominio" tiene muchas opciones.
Puede ir a la consola de AWS, abrir Lambda, cambiar a la pestaña "Prueba" y simplemente usar el siguiente JSON de entrada:
{ "domain": "www.google.com" }Desde la línea de comandos, puede invocar ese Lambda utilizando la CLI de AWS .
aws \ lambda \ invoke \ --cli-binary-format raw-in-base64-out \ --function-name <function-name> \ --payload '{"domain":"www.google.com"}' \ outfile.txtTambién puede escribir algún código en otro Lambda, en un script en su máquina local o de cualquier otra forma que pueda usar AWS Lambda e invocar a Lambda de esta manera.
El siguiente es un ejemplo de "código" CLI de NodeJS simple que utiliza la versión 3 del SDK de AWS.
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda"; async function main() { const client = new LambdaClient({ region: "<your-region>" }); const payload = JSON.stringify({ "domain": "www.google.com" }); const input = { "FunctionName": "<function-name>", "Payload": payload }; const command = new InvokeCommand(input); const response = await client.send(command); console.log(response); } main() Si ejecuta node index.js , invocará Lambda con la carga útil dada.
Para configurar el nodo:
npm init npm install @aws-sdk/client-lambda Recuerde establecer type en module en el package.json .