

# Solución de problemas en las implementaciones de Lambda
<a name="troubleshooting-deployment"></a>

Al actualizar su función, Lambda implementa el cambio iniciando nuevas instancias de la función con el código o la configuración actualizados. Los errores de implementación impiden que se utilice la nueva versión y pueden deberse a problemas con el paquete de implementación, el código, los permisos o las herramientas.

Cuando implementa actualizaciones en su función directamente con la API de Lambda o con un cliente como la AWS CLI, puede ver errores de Lambda directamente en la salida. Si utiliza servicios como AWS CloudFormation, AWS CodeDeploy o AWS CodePipeline, busque la respuesta de Lambda en los registros o en la secuencia de eventos del servicio.

Los temas siguientes proporcionan consejos para solucionar problemas de errores y problemas que puedan surgir al utilizar la API de Lambda, la consola o las herramientas. Si se encuentra con un problema que no aparezca en esta lista, puede utilizar el botón **Comentarios** de esta página para notificarlo.

Para obtener más consejos sobre la resolución de problemas y respuestas a preguntas comunes de soporte, visite el [Centro de conocimientos de AWS](https://aws.amazon.com/premiumsupport/knowledge-center/#AWS_Lambda).

Para obtener más información acerca de la depuración y la resolución de problemas de las aplicaciones de Lambda, consulte [Debugging](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/debugging-ops) en Serverless Land.

**Topics**
+ [General: Se deniega el permiso/No se puede cargar dicho archivo](#troubleshooting-deployment-denied)
+ [General: se produce un error al llamar al UpdateFunctionCode](#troubleshooting-deployment-updatefunctioncode)
+ [Amazon S3: Código de error PermanentRedirect.](#troubleshooting-deployment-PermanentRedirect)
+ [General: No se puede encontrar, no se puede cargar, no se puede importar, clase no encontrada, ningún archivo o directorio](#troubleshooting-deployment-functionHandler1)
+ [General: controlador de método no definido](#troubleshooting-deployment-functionHandler2)
+ [General: se superó el límite de almacenamiento de código de Lambda](#troubleshooting-deployment-CodeStorageExceeded)
+ [Lambda: error de conversión de la capa](#troubleshooting-deployment-LayerConversionFailed)
+ [Lambda: InvalidParameterValueException o RequestEntityTooLargeException](#troubleshooting-deployment-InvalidParameterValueException1)
+ [Lambda: InvalidParameterValueException](#troubleshooting-deployment-InvalidParameterValueException2)
+ [Lambda: cuotas de simultaneidad y memoria](#troubleshooting-deployment-quotas)
+ [Lambda: configuración de alias para la simultaneidad aprovisionada no válida](#troubleshooting-deployment-provisioned-concurrency)

## General: Se deniega el permiso/No se puede cargar dicho archivo
<a name="troubleshooting-deployment-denied"></a>

**Error:** *EACCES: permission denied, open '/var/task/index.js'*

**Error:** *cannot load such file -- function*

**Error:** *[Errno 13] Permission denied: '/var/task/function.py'*

El tiempo de ejecución de Lambda necesita permiso para leer los archivos del paquete de implementación. En la notación octal de permisos de Linux, Lambda necesita 644 permisos para archivos no ejecutables (rw-r--r--) y 755 permisos (rwxr-xr-x) para directorios y archivos ejecutables.

En Linux y macOS, utilice el comando `chmod` para cambiar los permisos de los archivos y directorios del paquete de implementación. Por ejemplo, para conceder a un archivo no ejecutable los permisos correctos, ejecute el siguiente comando.

```
chmod 644 <filepath>
```

Para cambiar los permisos de los archivos en Windows, consulte [Set, View, Change, or Remove Permissions on an Object](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc731667(v=ws.10)) en la documentación de Microsoft Windows.

**nota**  
Si no concede a Lambda los permisos necesarios para acceder a los directorios del paquete de implementación, Lambda establecerá los permisos de esos directorios en 755 (rwxr-xr-x).

## General: se produce un error al llamar al UpdateFunctionCode
<a name="troubleshooting-deployment-updatefunctioncode"></a>

**Error:** *An error occurred (RequestEntityTooLargeException) when calling the UpdateFunctionCode operation*

Cuando carga un paquete de implementación o un archivo de capa directamente en Lambda, el tamaño del archivo ZIP está limitado a 50 MB. Para cargar un archivo más grande, almacénelo en Amazon S3 y utilice los parámetros S3Bucket y S3Key.

**nota**  
Cuando carga un archivo directamente con la AWS CLI, el AWS SDK o de otro modo, el archivo ZIP binario se convierte a base64, que aumenta su tamaño en aproximadamente un 30 %. Para permitir esto y el tamaño de otros parámetros de la solicitud, el límite de tamaño de solicitud real que aplica Lambda es mayor. Por este motivo, el límite de 50 MB es aproximado.

## Amazon S3: Código de error PermanentRedirect.
<a name="troubleshooting-deployment-PermanentRedirect"></a>

**Error**: *se produjo un error mientras GetObject. Código de error S3: PermanentRedirect. Mensaje de error S3: el bucket está en esta región: us-east-2. Utilice esta región para volver a intentar la solicitud*

Cuando carga el paquete de implementación de una función desde un bucket Amazon S3, el bucket debe estar en la misma Región que la función. Este problema puede producirse cuando especifica un objeto Amazon S3 en una llamada a [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html), o utiliza el paquete y los comandos de implementación en la CLI de AWS CLI o en la CLI de AWS SAM. Cree un bucket de artefactos de implementación para cada Región donde desarrolle aplicaciones.

## General: No se puede encontrar, no se puede cargar, no se puede importar, clase no encontrada, ningún archivo o directorio
<a name="troubleshooting-deployment-functionHandler1"></a>

**Error:** *Cannot find module 'function'*

**Error:** *cannot load such file -- function*

**Error:** *Unable to import module 'function'*

**Error:** *Class not found: function.Handler*

**Error:** *fork/exec /var/task/function: no such file or directory*

**Error:** *Unable to load type 'Function.Handler' from assembly 'Function'.*

El nombre del archivo o clase en la configuración del controlador de su función no coincide con su código. Consulte la siguiente sección para obtener más información.

## General: controlador de método no definido
<a name="troubleshooting-deployment-functionHandler2"></a>

**Error:** *index.handler is undefined or not exported*

**Error:** *Handler 'handler' missing on module 'function'*

**Error:** *undefined method `handler' for \$1<LambdaHandler:0x000055b76ccebf98>*

**Error:** *No public method named handleRequest with appropriate method signature found on class function.Handler*

**Error:** *Unable to find method 'handleRequest' in type 'Function.Handler' from assembly 'Function'*

El nombre del método de controlador en la configuración del controlador de su función no coincide con su código. Cada motor de ejecución define una convención de nomenclatura para los controladores, como *nombredearchivo*.*nombredelmétodo*. El controlador es el método en el código de su función ejecutado por el motor de ejecución cuando se invoca la función.

En algunos idiomas, Lambda proporciona una biblioteca con una interfaz que espera que un método de controlador tenga un nombre específico. Para obtener información detallada sobre la nomenclatura de controladores para cada idioma, consulte los temas siguientes.
+ [Creación de funciones de Lambda con Node.js](lambda-nodejs.md)
+ [Creación de funciones de Lambda con Python](lambda-python.md)
+ [Creación de funciones de Lambda con Ruby](lambda-ruby.md)
+ [Creación de funciones de Lambda con Java](lambda-java.md)
+ [Creación de funciones de Lambda con Go](lambda-golang.md)
+ [Creación de funciones Lambda con C\$1](lambda-csharp.md)
+ [Creación de funciones de Lambda con PowerShell](lambda-powershell.md)

## General: se superó el límite de almacenamiento de código de Lambda
<a name="troubleshooting-deployment-CodeStorageExceeded"></a>

**Error:** se *superó el límite de almacenamiento de código*.

Lambda almacena el código de la función en un bucket interno de S3 privado para la cuenta. A cada cuenta de AWS se asignan 75 GB de almacenamiento en cada región. El almacenamiento de código incluye el almacenamiento total utilizado tanto por las funciones como por las capas de Lambda. Si alcanza la cuota, recibirá un error de *CodeStorageExceededException* cuando intente implementar nuevas funciones.

Para administrar el espacio de almacenamiento disponible, limpie las versiones antiguas de las funciones, elimine el código sin utilizar o utilice capas de Lambda. Además, se recomienda [utilizar cuentas de AWS separadas para cargas de trabajo distintas](concepts-application-design.md#multiple-accounts), a fin de facilitar la administración de las cuotas de almacenamiento.

Puede ver el uso total de almacenamiento en la consola de Lambda, en el submenú **Panel**:

![\[monitoreo y observabilidad (figura 26)\]](http://docs.aws.amazon.com/es_es/lambda/latest/dg/images/monitoring-observability-figure-26.png)




## Lambda: error de conversión de la capa
<a name="troubleshooting-deployment-LayerConversionFailed"></a>

**Error:** *error de conversión de la capa de Lambda. Para obtener consejos sobre cómo resolver este problema, consulte la página Solucionar problemas de implementación en Lambda en la Guía del usuario de Lambda.*

Al configurar una función de Lambda con una capa, Lambda la fusiona con el código de la función. Si este proceso no se completa, Lambda devuelve este error. Si encuentra este error, siga estos pasos: 
+ Eliminar cualquier archivo no utilizado de la capa
+ Eliminar cualquier enlace simbólico de la capa
+ Cambie el nombre de cualquier archivo que tenga el mismo nombre que un directorio en cualquiera de las capas de la función

## Lambda: InvalidParameterValueException o RequestEntityTooLargeException
<a name="troubleshooting-deployment-InvalidParameterValueException1"></a>

**Error**: *InvalidParameterValueException: Lambda no pudo configurar las variables de entorno porque las variables de entorno que ha proporcionado han excedido el límite de 4 KB. Cadena medida: \$1"A1":"uSFeY5cyPiPn7AtnX5BsM...*

**Error:** *RequestEntityTooLargeException: la solicitud debe ser menor de 5120 bytes para la operación UpdateFunctionConfiguration*

El tamaño máximo del objeto de variables que se almacena en la configuración de la función no debe exceder los 4096 bytes. Esto incluye nombres clave, valores, comillas, comas y corchetes. El tamaño total del cuerpo de la solicitud HTTP también es limitado.

```
{
    "FunctionName": "my-function",
    "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
    "Runtime": "nodejs24.x",
    "Role": "arn:aws:iam::123456789012:role/lambda-role",
    "Environment": {
        "Variables": {
            "BUCKET": "amzn-s3-demo-bucket",
            "KEY": "file.txt"
        }
    },
    ...
}
```

En este ejemplo, el objeto tiene 39 caracteres y ocupa 39 bytes cuando se almacena (sin espacios en blanco) como la cadena `{"BUCKET":"amzn-s3-demo-bucket","KEY":"file.txt"}`. Los caracteres ASCII estándar en valores de variables de entorno utilizan un byte cada uno. Los caracteres ASCII y Unicode extendidos pueden usar entre 2 y 4 bytes por carácter.

## Lambda: InvalidParameterValueException
<a name="troubleshooting-deployment-InvalidParameterValueException2"></a>

**Error:** *InvalidParameterValueException: Lambda no pudo configurar las variables de entorno porque las variables de entorno que ha proporcionado contienen claves reservadas que actualmente no se admiten para su modificación.*

Lambda reserva algunas claves de variables de entorno para uso interno. Por ejemplo, el motor de ejecución usa `AWS_REGION` para determinar la región actual y no se puede reemplazar. Otras variables, como `PATH`, son usadas por el tiempo de ejecución, pero se pueden extender en la configuración de su función. Para obtener una lista completa, consulte [Variables definidas de entorno de tiempo de ejecución](configuration-envvars.md#configuration-envvars-runtime).

## Lambda: cuotas de simultaneidad y memoria
<a name="troubleshooting-deployment-quotas"></a>

**Error:*** ConcurrentExecutions especificada para la función reduce UnreservedConcurrentExecution de la cuenta por debajo de su valor mínimo*

**Error:*** el valor ‘MemorySize’ no cumplió con la restricción de seguridad: el miembro debe tener un valor menor o igual a 3008*

Estos errores se producen cuando se supera la simultaneidad o las [cuotas](gettingstarted-limits.md) de memoria para su cuenta. Las nuevas cuentas de AWS tienen cuotas de simultaneidad y memoria reducidas. Para resolver errores relacionados a la simultaneidad, puede [solicitar un aumento de cuota](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html). No puede solicitar aumentos de cuota.
+ **Simultaneidad:** puede que se produzca un error si intenta crear una función mediante simultaneidad reservada o aprovisionada, o si la solicitud de simultaneidad por función ([PutFunctionConcurrency](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionConcurrency.html)) supera la cuota de simultaneidad de su cuenta.
+ **Memoria:** se producen errores si la cantidad de memoria asignada a la función supera la cuota de memoria de la cuenta.

## Lambda: configuración de alias para la simultaneidad aprovisionada no válida
<a name="troubleshooting-deployment-provisioned-concurrency"></a>

**Error:***configuración de alias para la simultaneidad aprovisionada no válida*

Este error se produce cuando se intenta actualizar el código o la configuración de una función de Lambda mientras un alias con simultaneidad aprovisionada apunta a una versión que tiene problemas. Lambda preinicializa entornos de ejecución para la simultaneidad aprovisionada y, si estos entornos no se pueden inicializar correctamente debido a errores de código, limitaciones de recursos o a una pila y un alias afectados, se produce un error en la implementación. Si encuentra este problema, siga estos pasos:

1. **Revierta el alias:** actualice de forma temporal el alias para que apunte a la versión que funcionaba anteriormente.

   ```
    aws lambda update-alias \
     --function-name <function-name> \
     --name <alias-name> \
     --function-version <known-good-version>
   ```

1. **Corrija el código de inicialización de Lambda:** asegúrese de que el código de inicialización que se ejecuta fuera del controlador no tenga excepciones no detectadas e inicialice los clientes y las conexiones.

1. **Vuelva a implementar la seguridad:** implemente el código fijo y publique una nueva versión. A continuación, actualice el alias para que apunte a la versión corregida. Opcionalmente, vuelva a habilitar la [simultaneidad aprovisionada](provisioned-concurrency.md), si es necesario.

Si utiliza AWS CloudFormation, actualice la definición de la pila `FunctionVersion:!GetAtt version.Version` para que el alias apunte a la versión que funciona:

```
alias:
 Type: AWS::Lambda::Alias
 Properties:
 FunctionName: !Ref function
FunctionVersion: !GetAtt version.Version
 Name: BLUE
 ProvisionedConcurrencyConfig:
 ProvisionedConcurrentExecutions: 1
```