es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Localstack desordena las variables de entorno de Lambda que contienen: (dos puntos)

Estoy utilizando localstack con docker-compose.

version: '3.8'

localstack:
  container_name: localstack
  image: localstack:0.12.11
  volumes:
    - "/var/run/docker.sock:/var/run/docker.sock"
  ports:
    - "4566:4566"
  environment:
    SERVICES: sqs,lambda
    LAMBDA_EXECUTOR: docker
    DOCKER_HOST: unix:///var/run/docker.sock
    DEBUG: "1"
    ENFORCE_IAM: "1"
  healthcheck:
    test: [ "CMD-SHELL", "awslocal sqs list-queues && awslocal lambda list-functions" ]
    interval: 10s

Usando terraform 0.11.15, estoy configurando la variable de entorno para el lambda de la siguiente manera:

resource "aws_lambda_function" "lambda" {
  function_name = "lambda"
  role          = ""

  filename          = "${data.archive_file.pack_lambda_code.output_path}"
  source_code_hash  = "${data.archive_file.pack_lambda_code.output_base64sha256}"

  handler = "#HIDDEN#"
  runtime = "dotnetcore3.1"
  timeout = 60

  environment {
    variables = {
      CategoryId      = "123"
      "Types:Apples" = "ABC"
    }
  }
}

Necesito pasar una variable de entorno como un mapa al Lambda, por eso estoy declarando “Types:Apples” de esa manera.

El problema es que Localstack pasa esta variable de entorno al nuevo contenedor de docker en el que vivirá el Lambda con este argumento -e Types:Apples=$Types:Apples, lo que resulta en el siguiente valor de la variable de entorno dentro del Lambda:

Types
     Apples = :Apples

Buscando una solución o solución alternativa.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución alternativa para este problema es usar dos guiones bajos en lugar de dos puntos en la clave de la variable de entorno. Por ejemplo, en lugar de declarar "Types:Apples", se puede declarar "Types__Apples". Esto debería evitar que el dos puntos sea interpretado como un carácter especial y cause que la variable de entorno sea incorrectamente pasada al contenedor de Docker.

    Otra opción podría ser establecer la variable de entorno directamente en el contenedor de Docker en lugar de pasarla a través de Localstack. Esto requeriría modificar el Dockerfile usado para construir el contenedor y luego reconstruirlo. Una vez que la variable de entorno esté configurada dentro del contenedor, debería ser accesible para la Lambda sin problemas.

    También podría valer la pena verificar si hay alguna actualización de Localstack o de la imagen de Docker que pueda abordar este problema. Alternativamente, contactar a los desarrolladores de Localstack o de la imagen de Docker podría proporcionar más información o una posible solución.

Comments are closed.