Aspectos generales

P: ¿Qué es AWS Lambda?

AWS Lambda le permite ejecutar código sin aprovisionar ni administrar servidores. Solo pagará por el tiempo de cómputo que consuma – no se cobra nada cuando el código no se está ejecutando. Con Lambda, puede ejecutar código para casi cualquier tipo de aplicación o servicio back-end – y todo sin administrar nada. Usted solo tiene que cargar el código. Lambda se encargará de todo lo necesario para ejecutar y escalar el código con alta disponibilidad. Puede configurar el código para que se active automáticamente desde otros servicios de AWS o puede llamarlo directamente desde cualquier aplicación web o móvil.

P: ¿Qué es la informática sin servidores?

La informática sin servidores le permite crear y ejecutar aplicaciones y servicios sin preocuparse de los servidores. Con la informática sin servidores, su aplicación todavía se ejecuta en servidores, pero AWS se encarga de toda la administración de los servidores. En el corazón de la informática sin servidores se encuentra AWS Lambda, que le permite ejecutar su código sin aprovisionar ni administrar servidores. Obtenga más información sobre la informática sin servidores aquí.

P: ¿Qué eventos puede activar una función de AWS Lambda?

Consulte nuestra documentación para ver la lista completa de orígenes de eventos.

P: ¿Cuándo debería utilizar AWS Lambda en lugar de Amazon EC2?

Amazon Web Services ofrece un conjunto de servicios informáticos para satisfacer una serie de necesidades.

Amazon EC2 ofrece flexibilidad, con un amplio abanico de tipos de instancias y la opción de personalizar la configuración del sistema operativo, de la red y de la seguridad, así como la pila completa de software, permitiéndole así mover fácilmente las aplicaciones existentes a la nube. Con Amazon EC2, el usuario es responsable de aprovisionar capacidad, monitorizar el estado y el desempeño de la flota y diseñar la escalabilidad y la tolerancia a errores. AWS Elastic Beanstalk ofrece un servicio fácil de utilizar para implementar y escalar aplicaciones web de las que conserva la titularidad y el pleno control de las instancias subyacentes de EC2. Amazon EC2 Container Service es un servicio de administración escalable que soporta ​contenedores de Docker que le permite ejecutar de manera sencilla aplicaciones distribuidas en un clúster administrado de instancias de Amazon EC2.

AWS Lambda facilita la ejecución de código como respuesta a eventos, como cambios en los buckets de Amazon S3, actualizaciones de una tabla de Amazon DynamoDB o eventos personalizados generados por las aplicaciones o los dispositivos. Con Lambda no tiene que aprovisionar sus propias instancias, ya que este servicio realiza por usted todas las actividades operativas y administrativas, como el aprovisionamiento de capacidad, la monitorización del estado de la flota, la aplicación de parches de seguridad a los recursos informáticos subyacentes, la implementación de código, la ejecución del servicio web front-end y la monitorización y el registro del código. AWS Lambda ofrece un escalado sencillo y alta disponibilidad del código sin que sea necesario un esfuerzo adicional por su parte.

P: ¿Qué tipo de código puede ejecutarse en AWS Lambda?

AWS Lambda constituye una manera sencilla de realizar numerosas actividades en la nube. Por ejemplo, puede utilizar AWS Lambda para crear entornos back-end móviles que recuperan y transforman los datos de Amazon DynamoDB, crear controladores que comprimen o transforman objetos a medida que se cargan en Amazon S3, inspeccionar e informar de las llamadas al API realizadas a cualquier servicio de Amazon Web Services y procesar sin servidor los datos de streaming utilizados por Amazon Kinesis.

P: ¿Qué lenguajes admite AWS Lambda?

AWS Lambda es compatible con código escrito en Node.js (JavaScript), Python, Java (compatible con Java 8) y C# (.NET Core). El código puede incluir las bibliotecas existentes, inclusive las nativas. Consulte nuestra documentación sobre el uso de Node.js, Python, Java y C#.

P: ¿Puedo obtener acceso a la infraestructura en la que se ejecuta AWS Lambda?

No. AWS Lambda opera la infraestructura informática en su nombre, lo que le permite ejecutar comprobaciones de estado, aplicar parches de seguridad y realizar otras tareas de mantenimiento rutinarias.

P: ¿De qué forma AWS Lambda aísla el código?

Cada función de AWS Lambda se ejecuta en su propio entorno aislado, con sus propios recursos y en su vista del sistema de archivos. AWS Lambda utiliza las mismas técnicas que Amazon EC2 para ofrecer seguridad y aislamiento en los niveles de infraestructura y ejecución.

P: ¿De qué forma protege AWS Lambda el código?

AWS Lambda almacena el código en Amazon S3 y lo cifra cuando está inactivo. AWS Lambda realiza controles de integridad adicionales mientras se usa el código.

Funciones de AWS Lambda

P: ¿Qué es una función de AWS Lambda?

El código que ejecuta en AWS Lambda se carga como una “función de Lambda”. Cada función tiene asociada información sobre la configuración, como su nombre, descripción, punto de entrada y requisitos en cuanto a recursos. El código debe escribirse en un estilo “sin estado”, es decir, que ha de asumirse que no existe afinidad con la infraestructura informática subyacente. El acceso al sistema de archivos local, los procesos secundarios y los elementos similares no deben extenderse más allá del ciclo de vida de la solicitud. Cualquier estado persistente debe almacenarse en Amazon S3, Amazon DynamoDB o en otro servicio de almacenamiento disponible en Internet. Las funciones de Lambda pueden incluir bibliotecas, incluso las nativas.

P: ¿AWS Lambda reutilizará las instancias de una función?

Para mejorar el desempeño, AWS Lambda puede optar por mantener una instancia de la función y reutilizarla para satisfacer una solicitud posterior, en lugar de crear una copia nueva. Para obtener más información acerca de cómo Lambda reutiliza instancias de funciones, consulte la documentación. No obstante, el código no debe asumir que siempre debe proceder de este modo.

P: ¿Qué sucede si necesito espacio de desecho en disco para la función de AWS Lambda?

Cada función de Lambda recibe 500 MB de espacio en disco no persistente en su propio directorio /tmp.

P: ¿Por qué las funciones de AWS Lambda no deben tener estado?

Mantener las funciones sin estado permite a AWS Lambda lanzar rápidamente tantas copias de la función como resulten necesarias para escalar hasta la tasa de eventos entrantes. A pesar de que el modelo de programación de AWS Lambda no tiene estado, el código puede obtener acceso a datos con estado al llamar a otros servicios web, como Amazon S3 o Amazon DynamoDB.

P: ¿Puedo usar subprocesos y procesos en el código de la función de AWS Lambda?

Sí. AWS Lambda le permite usar un lenguaje normal y las características del sistema operativo, como crear subprocesos y procesos adicionales. Los recursos asignados a la función de Lambda, entre otros, la memoria, el tiempo de ejecución, el disco y el uso de red, deben compartirse entre todos los subprocesos y procesos que esta utiliza. Puede lanzar procesos utilizando cualquier lenguaje compatible con Amazon Linux.

P: ¿Qué restricciones se aplican al código de la función de AWS Lambda?

Lambda trata de imponer las mínimas restricciones posibles al lenguaje normal y a las actividades del sistema operativo; sin embargo, algunas actividades están deshabilitadas: AWS Lambda bloquea las conexiones de red entrantes, solo se soportan los conectores TCP/IP para las conexiones de salida y se bloquean las llamadas al sistema ptrace (depuración). El tráfico a través del puerto TCP 25 también está bloqueado para evitar el spam.

P: ¿Cómo puedo crear una función de AWS Lambda con la consola de Lambda?

Si utiliza Node.js o Python, puede escribir el código para la función con el editor de código de la consola de AWS Lambda, que le permite crear y probar funciones, además de ver los resultados de las ejecuciones de funciones en un entorno sólido tipo IDE. Vaya a la consola para comenzar.

También puede comprimir el código (y cualquier biblioteca dependiente) en un archivo ZIP y cargarlo desde su entorno local mediante la consola de AWS Lambda, o bien especificar la ubicación de Amazon S3 en la que se encuentra el archivo ZIP. Las cargas no pueden tener un volumen superior a 50 MB (en formato comprimido). Puede utilizar el complemento de AWS Eclipse para diseñar e implementar funciones de Lambda en Java. Puede utilizar el complemento de Visual Studio para diseñar e implementar funciones de Lambda en C# y Node.js.

P: ¿Cómo puedo crear una función de AWS Lambda con la interfaz de línea de comandos (CLI) de Lambda?

Puede comprimir el código (y cualquier biblioteca dependiente) en un archivo ZIP y cargarlo desde su entorno local mediante la interfaz de línea de comandos (CLI) de AWS, o bien especificar la ubicación de Amazon S3 en la que se encuentra el archivo ZIP. Las cargas no pueden tener un volumen superior a 50 MB (en formato comprimido). Consulte la Guía de introducción a Lambda para comenzar.

P: ¿AWS Lambda admite las variables de entorno?

Sí. Puede crear y modificar variables de entorno de forma sencilla a través de la consola, la CLI o los SDK de AWS Lambda. Para obtener más información sobre las variables de entorno, consulte la documentación.

P: ¿Puedo almacenar información confidencial en las variables de entorno?

Para la información confidencial, como contraseñas de bases de datos, recomendamos que utilice el cifrado del lado del servidor con AWS Key Management Service y almacene los valores resultantes como texto cifrado en su variable de entorno. Para descifrar los valores, deberá incluir lógica en su código de la función AWS Lambda.

P: ¿Cómo puedo administrar las funciones de AWS Lambda?

Puede enumerar, eliminar, actualizar y monitorizar las funciones de Lambda con facilidad en el panel de la consola de AWS Lambda. También puede usar la CLI y el AWS SDK para administrar las funciones de Lambda. Consulte la Guía para desarrolladores de Lambda para obtener más información.

P: ¿Cómo puedo monitorear una función de AWS Lambda?

AWS Lambda monitorea automáticamente sus funciones e informa las métricas en tiempo real a través de Amazon CloudWatch, como las solicitudes totales, el uso simultáneo a nivel de funciones y a nivel de cuentas, la latencia, las tasas de error y las solicitudes limitadas. Puede consultar las estadísticas de cada una de sus funciones de Lambda mediante la consola de Amazon CloudWatch o la consola de AWS Lambda. También puede realizar llamadas a API de monitorización de terceros en la función de Lambda.

Consulte la resolución de problemas con métricas de CloudWatch para obtener más información. El uso de las métricas integradas de Lambda conlleva los cargos estándar de AWS Lambda.

P: ¿Cómo puedo solucionar los problemas derivados de errores en una función de AWS Lambda?

AWS Lambda se integra automáticamente con los logs de Amazon CloudWatch, creando un grupo de logs para cada función de Lambda y ofreciendo entradas básicas de logs de eventos del ciclo de vida de la aplicación, incluido el registro de los recursos consumidos cada vez que se usa esa función. Puede agregar declaraciones de registro adicionales al código con facilidad. También puede realizar llamadas a API de registro de terceros en la función de Lambda. Consulte la resolución de problemas con las funciones de Lambda para obtener más información. Se aplicarán las tarifas de los logs de Amazon CloudWatch.

P: ¿Cómo puedo escalar una función de AWS Lambda?

No tiene que escalar las funciones de Lambda – AWS Lambda se encarga de escalarlas automáticamente. Cada vez que se recibe una notificación de evento para una función, AWS Lambda encuentra rápidamente capacidad disponible en su flota informática y ejecuta el código. Dado que se trata de código sin estado, AWS Lambda puede iniciar tantas copias de la función como sean necesarias sin que se produzcan largos retrasos de implementación y configuración. No existen límites fundamentales para escalar una función. AWS Lambda asignará capacidad de manera dinámica para satisfacer la tasa de eventos entrantes.

P: ¿Cómo se asignan recursos informáticos a una función de AWS Lambda?

En el modelo de recursos de AWS Lambda, debe elegir la cantidad de memoria que desea para su función y, posteriormente, se asignará el volumen proporcional de potencia de CPU y de otros recursos. Por ejemplo, si selecciona 256 MB de memoria, se asigna aproximadamente el doble de la potencia de CPU a la función de Lambda que al solicitar 128 MB de memoria y la mitad de la potencia de CPU que al seleccionar 512 MB de memoria. Puede definir la memoria en incrementos de 64 MB, desde 128 MB hasta 3 GB.

P: ¿Durante cuánto tiempo puede ejecutarse una función de AWS Lambda?

Todas llamadas efectuadas a AWS Lambda se deben completar en un plazo de 300 segundos. El tiempo de espera predeterminado es de 3 segundos, pero puede definirlo en cualquier valor comprendido entre 1 y 300 segundos.

P: ¿Cómo se cobra el uso de las funciones de AWS Lambda?

Los precios de AWS Lambda se aplican en función del uso. Consulte la página de precios de AWS Lambda para obtener más detalles.

P: ¿AWS Lambda admite el control de versiones?

Sí. De forma predeterminada, cada función de AWS Lambda tiene una versión única y actualizada del código. Los clientes de la función de Lambda pueden llamar a una versión específica u obtener la última implementación. Consulte la documentación sobre el control de versiones de las funciones de Lambda.

P: ¿Cuánto tiempo debe transcurrir para poder llamar a la función de AWS Lambda después de cargar el código?

Los períodos de implementación pueden variar en función del tamaño del código, pero normalmente se pueden realizar llamadas a las funciones de AWS Lambda unos segundos después de cargar el código.

P: ¿Puedo utilizar mi propia versión de una biblioteca soportada?

Sí, puede incluir su propia copia de una biblioteca (incluido el AWS SDK) para utilizar una versión diferente a la que proporciona de forma predeterminada AWS Lambda.

Uso de AWS Lambda para procesar eventos de AWS

P: ¿Qué es un origen de eventos?

Un origen de eventos es un servicio de AWS o una aplicación creada por un desarrollador que produce eventos que activan la ejecución de una función de AWS Lambda. Algunos servicios publican estos eventos en Lambda al invocar directamente la función en la nube (por ejemplo, Amazon S3). Lambda también puede sondear recursos en otros servicios que no publican eventos en Lambda. Por ejemplo, Lambda puede extraer registros de una transmisión de Kinesis y ejecutar una función de Lambda para cada mensaje de la transmisión.

Muchos otros servicios, como AWS CloudTrail, pueden actuar como orígenes de eventos al registrarse en Amazon S3 y usar notificaciones del bucket de S3 para activar las funciones de AWS Lambda.

P: ¿Qué orígenes de eventos se pueden usar con AWS Lambda?

Consulte nuestra documentación para ver la lista completa de orígenes de eventos.

P: ¿Cómo se representan los eventos en AWS Lambda?

Los eventos se transfieren a una función de Lambda como un parámetro de entrada de evento. En el caso de fuentes cuyos eventos llegan por lotes, como Amazon Kinesis y Amazon DynamoDB Streams, el parámetro de eventos podría incluir varios eventos en una sola llamada, dependiendo del tamaño del lote solicitado. Para obtener más información sobre las notificaciones de eventos de Amazon S3, consulte Configuring Notifications for Amazon S3 Events. Para obtener más información sobre Amazon DynamoDB Streams, consulte la guía para desarrolladores DynamoDB Stream Developers Guide. Para obtener más información sobre cómo invocar funciones de Lambda mediante Amazon SNS, consulte la guía para desarrolladores Amazon SNS Developers Guide. Para obtener más información sobre los eventos de Amazon Cognito, consulte Amazon Cognito. Para obtener más información sobre los logs de AWS CloudTrail y cómo inspeccionar las llamadas al API en los servicios de AWS, consulte AWS CloudTrail.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a los cambios introducidos en un bucket de Amazon S3?

En la consola de AWS Lambda, puede seleccionar una función y asociarla con las notificaciones de un bucket de Amazon S3. De manera alternativa, puede usar la consola de Amazon S3 y configurar las notificaciones del bucket para enviarlas a la función de AWS Lambda. Esta misma funcionalidad también se encuentra disponible a través del SDK y la CLI de AWS.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a las actualizaciones de una tabla de Amazon DynamoDB?

Puede activar una función de Lambda en las actualizaciones de una tabla de DynamoDB si suscribe la función de Lambda a la transmisión de DynamoDB asociada con la tabla. Para asociar una transmisión de DynamoDB con una función de Lambda, puede usar la consola de Amazon DynamoDB, la consola de AWS Lambda o el API registerEventSource de Lambda.

P: ¿Qué debo hacer para que una función de AWS Lambda procese registros en una transmisión de Amazon Kinesis?

En la consola de AWS Lambda, puede seleccionar una función de Lambda y asociarla con una transmisión de Amazon Kinesis que pertenezca a la misma cuenta. Esta misma funcionalidad también se encuentra disponible a través del SDK y la CLI de AWS.

P: ¿Cómo procesa AWS Lambda datos de Amazon Kinesis Streams y Amazon DynamoDB Streams?

Los registros de las transmisiones de Amazon Kinesis y DynamoDB enviados a la función de AWS Lambda se serializan estrictamente por fragmento. Por lo tanto, si coloca dos registros en el mismo fragmento, Lambda garantiza que la función de Lambda se invoque correctamente con el primer registro antes de invocarse con el segundo. Si se agota el tiempo de espera de la invocación, esta se limita o se produce cualquier otro error, Lambda volverá a intentar realizarla hasta que se efectúe con éxito (o el registro venza a las 24 horas) antes de pasar al siguiente registro. El orden de los registros en los distintos fragmentos no se garantiza. El procesamiento de cada fragmento se realiza de manera simultánea.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a las notificaciones enviadas por Amazon Simple Notification Service (SNS)?

En la consola de AWS Lambda, puede seleccionar una función de Lambda y asociarla con un tema de Amazon SNS. Esta misma funcionalidad también se encuentra disponible a través del SDK y la CLI de AWS.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a los emails enviados por Amazon Simple Email Service (SES)?

Desde la consola de Amazon SES, puede configurar la regla de recepción para que Amazon SES entregue los mensajes a una función de AWS Lambda. La misma funcionalidad se encuentra disponible a través del SDK y la CLI de AWS.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a las alarmas de Amazon CloudWatch?

En primer lugar, configure la alarma para que envíe notificaciones de Amazon SNS. A continuación, en la consola de AWS Lambda, seleccione una función de Lambda y asóciela con ese tema de Amazon SNS. Consulte la Amazon CloudWatch Developer Guide para obtener más información sobre la configuración de alarmas de Amazon CloudWatch.

P: ¿Qué debo hacer para que una función de AWS Lambda responda a cambios en los datos de usuarios o dispositivos administrados por Amazon Cognito?

En la consola de AWS Lambda, seleccione la función que desee que se active cuando se sincronice cualquier conjunto de datos asociado con un grupo de identidades de Amazon Cognito. Esta misma funcionalidad también se encuentra disponible a través del SDK y la CLI de AWS. Visite la página de Amazon Cognito para obtener más información acerca de cómo utilizar Amazon Cognito para compartir y sincronizar datos en los dispositivos de un usuario.

P: ¿Cómo puede mi aplicación activar una función de AWS Lambda directamente?

Puede invocar una función de Lambda mediante el uso de un evento personalizado a través del API de invocación de Lambda de AWS. Solo el propietario de la función u otra cuenta de AWS a la que el propietario haya dado permiso pueden invocar la función. Consulte la Guía para desarrolladores de Lambda para obtener más información.

P: ¿Qué latencia tiene la invocación de una función de AWS Lambda para responder a un evento?

AWS Lambda es un servicio diseñado para procesar eventos en cuestión de milisegundos. La latencia aumentará inmediatamente después de crear o actualizar una función de Lambda, o bien si dicha función no se ha usado recientemente.

P: ¿Cómo se crea un entorno back-end móvil con AWS Lambda?

Cargue el código que desea que AWS Lambda ejecute y, a continuación, invóquelo desde la aplicación móvil usando el AWS SDK Lambda incluido en el SDK para móviles de AWS. Puede efectuar llamadas directas (síncronas) para recuperar o comprobar los datos en tiempo real, así como llamadas asíncronas. También puede definir un API personalizada mediante Amazon API Gateway e invocar las funciones de Lambda a través de cualquier cliente compatible con REST. Para obtener más información sobre el SDK para móviles de AWS, visite la página del SDK para móviles de AWS. Para obtener más información sobre Amazon API Gateway, visite la página de Amazon API Gateway.

P: ¿Cómo puedo invocar una función de AWS Lambda a través de HTTPS?

Puede invocar una función de Lambda a través de HTTPS mediante la definición de un API RESTful personalizada con Amazon API Gateway. Esto le proporciona un punto de enlace para la función que puede responder a llamadas de REST como GET, PUT y POST. Obtenga más información sobre el uso de AWS Lambda con Amazon API Gateway.

P: ¿Cómo puede la función de AWS Lambda personalizar su comportamiento de acuerdo con el dispositivo y la aplicación que efectúan la solicitud?

Cuando la llamada se efectúa mediante el SDK para móviles de AWS, las funciones de AWS Lambda obtienen detalles sobre el dispositivo y la aplicación que han efectuado la llamada a través del objeto "context" de manera automática.

P: ¿Cómo puede la función de AWS Lambda personalizar su comportamiento de acuerdo con la identidad del usuario final de una aplicación?

Cuando su aplicación utiliza la identidad de Amazon Cognito, los usuarios finales pueden autenticarse con una gama de proveedores de datos de inicio de sesión públicos, como Amazon, Facebook, Google y otros servicios compatibles con OpenID Connect. A continuación, la identidad del usuario se presenta de manera automática y segura a su función de Lambda en formato de identificador de Amazon Cognito, lo que le permite acceder a los datos de usuario desde Amazon Cognito, o como clave para almacenar y recuperar datos en Amazon DynamoDB u otros servicios web.

P: ¿Cómo puedo crear una habilidad de Alexa mediante AWS Lambda?

AWS Lambda se integra con Alexa Skills Kit, una colección de API, herramientas, documentación y código de muestra de autoservicio que facilita la creación de funcionalidades (o “habilidades”) de voz para Alexa. Simplemente tiene que cargar el código de la función de Lambda para la nueva habilidad de Alexa que vaya a crear y AWS Lambda hará el resto, es decir, ejecutará el código en respuesta a las interacciones de voz de Alexa y administrará automáticamente los recursos informáticos por usted. Para obtener más información, lea la documentación sobre Alexa Skills Kit.

P: ¿Qué sucede si la función experimenta un error al procesar un evento?

En el caso de eventos personalizados y notificaciones de los buckets de Amazon S3, AWS Lambda tratará de ejecutar la función tres veces si se produce alguna condición de error con el código o si excede algún límite establecido para algún servicio o recurso. Para fuentes de eventos solicitados que AWS Lambda sondea en nombre del usuario, como Amazon DynamoDB Streams y Amazon Kinesis Streams, Lambda seguirá intentando la ejecución en caso de que se produzca algún error con el código del desarrollador hasta que los datos venzan. Puede monitorizar el progreso a través de las consolas de Amazon Kinesis y Amazon DynamoDB, y mediante las métricas de Amazon CloudWatch que AWS Lambda genera para su función. También puede definir alarmas de Amazon CloudWatch en función de las tasas de error o de limitación controlada de la ejecución.

Uso de AWS Lambda para crear aplicaciones

P: ¿Qué es una aplicación sin servidor?

Las aplicaciones basadas en Lambda (también denominadas aplicaciones sin servidor) se componen de funciones activadas por eventos. Una aplicación sin servidor típica se compone de una o más funciones activadas por eventos, como la carga de objetos a Amazon S3, notificaciones de Amazon SNS o acciones de la API. Estas funciones pueden ser independientes o utilizar otros recursos, como tablas de DynamoDB o buckets de Amazon S3. La aplicación sin servidor más básica es sencillamente una función.

P: ¿Cómo puedo implementar y administrar una aplicación sin servidor?

Puede implementar y administrar sus aplicaciones sin servidor con AWS Serverless Application Model (AWS SAM). AWS SAM es una especificación que determina las reglas de expresión de aplicaciones sin servidor en AWS. Esta especificación se corresponde con la sintaxis utilizada por AWS CloudFormation en la actualidad y es compatible de forma nativa con AWS CloudFormation como conjunto de tipos de recursos (denominados "recursos sin servidor"). Estos recursos facilitan a los clientes de AWS el uso de CloudFormation para configurar e implementar aplicaciones sin servidor con API existentes de CloudFormation.

P: ¿Cómo puedo encontrar aplicaciones sin servidor existentes desarrolladas por la comunidad de AWS?

Puede elegir a partir de una colección de aplicaciones sin servidor publicadas por desarrolladores, compañías y socios de la comunidad de AWS con el servicio AWS Serverless Application Repository. Una vez que haya encontrado una aplicación, puede configurarla e implementarla directamente desde la consola de Lambda.

P: ¿Cómo puedo automatizar la implementación de una aplicación sin servidor?

Puede automatizar el proceso de lanzamiento de su aplicación sin servidor con AWS CodePipeline y AWS CodeDeploy. CodePipeline es un servicio de entrega continua que le permite modelar, visualizar y automatizar los pasos necesarios para lanzar su aplicación sin servidor. CodeDeploy ofrece un motor de automatización de implementaciones para las aplicaciones basadas en Lambda. CodeDeploy le permite organizar implementaciones de acuerdo con metodologías de prácticas recomendadas, como las implementaciones lineales y de valor controlado. Además, lo ayuda a definir las medidas necesarias para verificar que el código implementado recientemente sea seguro, estable y esté listo para implementarse plenamente en producción.

Para obtener más información sobre CI/CD sin servidor, consulte nuestra documentación.

P: ¿Cómo puedo comenzar a crear una aplicación sin servidor?

Para comenzar, visite la consola de AWS Lambda y descargue uno de nuestros planos. El archivo que descargue contendrá un archivo de AWS SAM file (que define los recursos de AWS de su aplicación) y un archivo .ZIP (que incluye el código de la función). A continuación, puede usar los comandos de AWS CloudFormation para empaquetar e implementar la aplicación sin servidor que acaba de descargar. Para obtener más detalles, consulte nuestra documentación.

P: ¿Cómo puedo coordinar llamadas entre varias funciones de AWS Lambda?

Puede utilizar AWS Step Functions para coordinar una serie de funciones de AWS Lambda en un orden específico. Puede invocar numerosas funciones de Lambda de manera secuencial, pasando la salida de una a otra, y/o simultáneamente, y Step Functions mantendrá el estado durante las ejecuciones.

P: ¿Cómo soluciono problemas de una aplicación sin servidor?

Puede habilitar su función Lambda para que rastree con AWS X-Ray añadiendo permisos de X-Ray al rol de ejecución de la función Lambda y cambiando el "modo de rastreo" de su función a "activo". Cuando X-Ray está habilitado para la función Lambda, AWS Lambda emitirá información de rastreo a X-Ray con respecto a la sobrecarga del servicio Lambda incurrida al invocar la función. Esto le proporcionará información sobre la sobrecarga del servicio Lambda, el tiempo de inicialización de la función y el tiempo de ejecución de la función. Además, puede incluir el SDK de X-Ray en el paquete de implementación Lambda para crear sus propios segmentos de rastreo, anotar los rastreos o ver segmentos de rastreo para llamadas descendentes realizadas desde su función Lambda. Los SDK de X-Ray están actualmente disponibles para Node.js y Java. Consulte la Resolución de problemas de aplicaciones basadas en Lambda para obtener más información. Se aplicarán las tarifas de AWS X-Ray.

P: ¿Cuál es la licencia de AWS SAM?

La especificación es de código abierto según Apache 2.0, que le permite a usted y a otras personas adoptar e incorporar AWS SAM a herramientas de creación, implementación, monitorización y administración con una licencia que admite el uso comercial. Puede acceder al repositorio de AWS SAM en GitHub aquí.

Lambda@Edge

P: ¿Qué es Lambda@Edge?

Lambda@Edge le permite ejecutar código en ubicaciones de AWS globalmente sin aprovisionar ni administrar servidores, y responder así a los usuarios finales con la menor latencia de red. Simplemente tiene que cargar su código Node.js en AWS Lambda y configurar su función para que se active como respuesta a solicitudes de Amazon CloudFront (es decir, cuando se reciba la solicitud de un espectador, cuando una solicitud se reenvíe o se reciba del origen y antes de responder al usuario final). A continuación, el código estará listo para ejecutarse en ubicaciones de AWS globalmente cuando se reciba una solicitud de contenido y ajustará su escala en función del volumen de solicitudes de CloudFront globales. Consulte la documentación para obtener más información.

P: ¿Cómo se utiliza Lambda@Edge?

Para usar Lambda@Edge, basta con cargar su código en AWS Lambda y asociar una versión de función para que se active como respuesta a solicitudes de Amazon CloudFront. El código debe atenerse a los límites de servicio de Lambda@Edge. Actualmente, Lambda@Edge solo admite Node.js para invocación global por parte de eventos de CloudFront. Consulte la documentación para obtener más información.

P: ¿Cuándo debo utilizar Lambda@Edge?

Lambda@Edge está optimizado para casos de uso en los que la latencia es un factor importante, ya que los espectadores finales están distribuidos globalmente. Idealmente, toda la información que necesita para tomar una decisión está disponible en el borde de CloudFront, dentro de la función y la solicitud. Por lo tanto, los casos de uso en los que desea tomar decisiones acerca de cómo proporcionar contenido en función de las características de los usuarios (p.ej., ubicación, dispositivo del cliente, etc.) ya se pueden ejecutar y proporcionar desde el borde en Node.js-6.10 sin tener que direccionarlos de regreso a un servidor centralizado.

P: ¿Puedo implementar mis funciones de Lambda existentes para invocación global?

Puede asociar funciones de Lambda en Node.js-6.10 existentes con eventos de CloudFront para invocación global si la función cumple los límites de servicio de Lambda@Edge. Aquí puede obtener más información sobre cómo actualizar las propiedades de su función.

P: ¿Qué eventos de Amazon CloudFront se pueden utilizar para disparar funciones?

Sus funciones se activarán automáticamente como respuesta a los siguientes eventos de Amazon CloudFront:

  • Solicitud del espectador: este evento tiene lugar cuando un usuario final o dispositivo en Internet realiza una solicitud HTTP(S) a CloudFront y la solicitud llega a la ubicación de borde más cercana a ese usuario.
  • Respuesta del espectador: este evento tiene lugar cuando el servidor de CloudFront situado en el borde está listo para responder al usuario final o dispositivo que realizó la solicitud.
  • Solicitud del origen: este evento tiene lugar cuando el servidor de CloudFront situado en el borde todavía no tiene el objeto solicitado en su caché y la solicitud del espectador está lista para enviarse a su servidor web de origen del backend (p. ej., Amazon EC2, Application Load Balancer o Amazon S3).
  • Respuesta del origen: este evento tiene lugar cuando el servidor de CloudFront situado en el borde recibe una respuesta del servidor web de origen del backend.

P: ¿Cuál es la diferencia entre AWS Lambda@Edge y usar AWS Lambda con Amazon API Gateway subyacente?

La diferencia es que API Gateway y Lambda son servicios regionales. La utilización de Lambda@Edge y Amazon CloudFront le permite ejecutar tareas lógicas en varias ubicaciones de AWS localizadas donde se encuentran los espectadores finales.

Escalabilidad y disponibilidad

P: ¿Cuál es la disponibilidad de las funciones de AWS Lambda?

AWS Lambda está diseñado para hacer uso de la replicación y la redundancia a fin de ofrecer una disponibilidad excelente al servicio y a las funciones de Lambda que opera. No hay periodos de mantenimiento ni tiempos de inactividad programados para ninguno de los dos.

P: ¿Permanecerán disponibles mis funciones de AWS Lambda si modifico el código o su configuración?

Sí. Cuando actualiza una función de Lambda, habrá un periodo de tiempo, normalmente inferior a un minuto, durante el que ni la versión nueva ni la versión antigua de su función podrá abastecer las solicitudes.

P: ¿Existe algún límite respecto a la cantidad de funciones de AWS Lambda que se pueden ejecutar a la vez?

No. AWS Lambda es un servicio diseñado para ejecutar numerosas instancias de sus funciones simultáneamente. Sin embargo, AWS Lambda tiene una limitación de seguridad predeterminada para el número de ejecuciones simultáneas por cuenta por región (consulte aquí para obtener información acerca de las limitaciones de seguridad predeterminadas). También puede controlar el número máximo de ejecuciones simultáneas para funciones de AWS Lambda individuales que puede usar para reservar un subconjunto del límite de simultaneidad de cuentas para funciones críticas, o índice de tráfico CAP para recursos descendentes.

Si desea enviar una solicitud para aumentar el límite, puede visitar el Centro de soporte, hacer clic en "Open a new case" (Abrir un caso nuevo) y enviar una solicitud de incremento del límite de servicio.

P: ¿Qué sucede si mi cuenta excede el límite predeterminado de ejecuciones simultáneas?

Si excede la limitación, las funciones de AWS Lambda invocadas de manera sincrónica mostrarán un error de limitación controlada (código de error 429). Las funciones de Lambda invocadas de manera asíncrona pueden absorber picos de tráfico razonables durante unos 15-30 minutos, tras los cuales se rechazarán los eventos entrantes por motivos de limitación. En el caso de que la función de Lambda se invoque como respuesta a eventos de Amazon S3, Amazon S3 podrían retenerse los eventos rechazados por AWS Lambda durante 24 horas para volver a intentar enviarlos. Los eventos de Amazon Kinesis Streams y Amazon DynamoDB Streams intentan reenviarse hasta que la función de Lambda tiene éxito o los datos vencen. Amazon Kinesis y Amazon DynamoDB Streams retienen los datos durante 24 horas.

P: ¿Se aplica el límite predeterminado a nivel de función?

No, el límite predeterminado solo se aplica a nivel de cuenta.

P: ¿Qué sucede si la función de Lambda experimenta un error al procesar un evento?

Cuando se produce un error, las funciones de Lambda invocadas sincrónicamente responden con una excepción. Las funciones de Lambda que se invocan de manera asíncrona intentan reenviarse 3 veces como mínimo. Los eventos de Amazon Kinesis Streams y Amazon DynamoDB Streams intentan reenviarse hasta que la función de Lambda tiene éxito o los datos vencen. Kinesis y DynamoDB Streams retienen datos durante un mínimo de 24 horas.

P: ¿Qué pasa si las invocaciones de mi función de Lambda exceden la política disponible?

Si se excede la política de reintentos para invocaciones asíncronas, puede configurar una “cola de mensajes fallidos” (DLQ) en la que se colocará el evento. Si no existe ninguna DLQ, es posible que se rechace el evento. Si se excede la política de invocaciones basadas en transmisiones, los datos habrían vencido ya y por lo tanto se rechazarán.

P: ¿Qué recursos puedo configurar como cola de mensajes fallidos para una función de Lambda?

Puede configurar una cola de Amazon SQS o un tema de Amazon SNS como cola de mensajes fallidos.

Control de acceso y seguridad

P: ¿Cómo puedo permitir que una función de AWS Lambda tenga acceso a otros recursos de AWS?

El usuario puede conceder permisos a su función de Lambda para que obtenga acceso a otros recursos utilizando una función de IAM. AWS Lambda asume la función mientras ejecuta la función de Lambda, para que siempre tenga un control absoluto y seguro de los recursos de AWS concretos que puede utilizar. Consulte la sección de configuración de AWS Lambda para obtener más información sobre las funciones.

P: ¿Cómo puedo controlar qué depósitos de Amazon S3 pueden llamar a qué funciones de AWS Lambda?

Cuando configure un bucket de Amazon S3 para que envíe mensajes a una función de AWS Lambda, se creará una norma de política de recursos que concederá el acceso. Consulte la guía para desarrolladores Lambda Developers Guide para obtener más información sobre las políticas de recursos y controles de acceso para las funciones de Lambda.

P: ¿Cómo puedo controlar qué tabla de Amazon DynamoDB o qué transmisión de Amazon Kinesis puede sondear una función de AWS Lambda?

El papel de la función de Lambda administra los controles de acceso. El papel que asigna a su función de Lambda también determina los recursos que AWS Lambda puede sondear por su parte. Consulte la guía para desarrolladores Lambda Developer's Guide para obtener más información.

P: ¿Puedo obtener acceso a los recursos de Amazon VPC con la función de AWS Lambda?

Sí. Puede obtener acceso a los recursos que hay tras Amazon VPC.

P: ¿Cómo habilito y deshabilito la compatibilidad de VPC para una función Lambda?

Para habilitar la compatibilidad de VPC, tiene que especificar una o varias subredes en una sola VPC y un grupo de seguridad como parte de la configuración de su función. Para deshabilitar el soporte de VPC, tiene que actualizar la configuración de la función y especificar una lista vacía para la subred y el grupo de seguridad. Puede cambiar estos ajustes usando las API de AWS, la CLI o la consola de administración de AWS Lambda.

P: ¿Una única función de Lambda puede tener acceso a varias VPC?

No. Las funciones Lambda solo proporcionan acceso a una VPC. Si se especifican varias subredes, todas ellas deben estar en la misma VPC. Puede conectarse a otras VPC interconectando las VPC.

P: ¿Las funciones de Lambda de una VPC también pueden obtener acceso a Internet y a puntos de conexión de servicios de AWS?

Las funciones Lambda configuradas para obtener acceso a los recursos de una VPC determinada no tendrán acceso a Internet como configuración predeterminada. Si necesita obtener acceso a puntos de conexión externos, tendrá que crear una NAT en la VPC para reenviar este tráfico y configurar el grupo de seguridad para permitir el tráfico saliente.

Funciones de AWS Lambda en Java

P: ¿Cómo puedo compilar el código Java de la función de AWS Lambda?

Puede usar herramientas estándares como Mavel o Gradle para compilar la función de Lambda. Su proceso de creación debería ser idéntico al proceso de creación que utilizaría para compilar cualquier código de Java que dependa del AWS SDK. Ejecute la herramienta de compilación de Java en los archivos fuente e incluya el AWS SDK 1.9 o superior con dependencias transitivas en el classpath. Para obtener más detalles, consulte nuestra documentación.

P: ¿Qué entorno JVM utiliza Lambda para ejecutar una función?

Lambda proporciona la versión para Linux de Amazon de openjdk 1.8.

Funciones de AWS Lambda en Node.js

P: ¿Puedo usar paquetes con AWS Lambda?

Sí. Puede utilizar paquetes NPM, así como paquetes a medida. Obtenga más información aquí.

P: ¿Puedo ejecutar otros programas desde mi función de AWS Lambda escritos en Node.js?

Sí. El entorno de pruebas integrado de Lambda le permite ejecutar scripts por lotes (“shell”), otros tiempos de ejecución de lenguajes, rutinas de utilidades y ejecutables. Obtenga más información aquí.

P: ¿Es posible utilizar módulos nativos con las funciones de AWS Lambda escritas en Node.js?

Sí. Todos los módulos nativos enlazados estáticamente se pueden incluir en el archivo ZIP que cargue, así como los módulos enlazados dinámicamente compilados con un rpath que apunte al directorio raíz de su función Lambda. Obtenga más información aquí.

P: ¿Puedo ejecutar binarios con AWS Lambda escrito en Node.js?

Sí. Puede utilizar el comando child_process de Node.js para ejecutar un binario que haya incluido en su función o cualquier ejecutable de Amazon Linux que su función pueda ver. De forma alternativa, existen varios paquetes NPM que contienen binarios de líneas de comando como node-ffmpeg. Obtenga más información aquí.

P: ¿Cómo puedo implementar el código de una función de AWS Lambda escrita en Node.js?

Para implementar una función de Lambda escrita en Node.js, comprima el código Javascript y las bibliotecas dependientes en un archivo ZIP. Puede cargar el archivo ZIP desde su entorno local, o bien, especificar la ubicación de Amazon S3 en la que se encuentra el archivo ZIP. Para obtener más detalles, consulte nuestra documentación.

Funciones de AWS Lambda en Python

P: ¿Puedo usar paquetes de Python con AWS Lambda?

Sí. Puede usar pip para instalar los paquetes de Python que necesite.

Funciones de AWS Lambda en C#

P: ¿Cómo empaqueto e implemento una función de AWS Lambda en C#?

Puede crear una función de Lambda en C# con el IDE de Visual Studio si selecciona "Publish to AWS Lambda" en Solution Explorer. También puede ejecutar directamente el comando "dotnet lambda publish" a partir de la CLI del dotnet que tiene el [parche de herramientas de la CLI de Lambda #] instalado, que crea un ZIP del código fuente de C# junto con todas las dependencias NuGet así como también los ensamblajes DLL publicados, y lo carga automáticamente a AWS Lambda con el parámetro de tiempo de ejecución "dotnetcore1.0"

Otros temas

P: ¿Qué versiones de Amazon Linux, Node.js, Python, JDK, .NET Core, SDK y de otras bibliotecas admite AWS Lambda?

Puede ver la lista de versiones compatibles aquí.

P: ¿Puedo cambiar la versión de Amazon Linux o cualquier tiempo de ejecución de lenguaje?

No, AWS Lambda ofrece una única versión del sistema operativo y del tiempo de ejecución del lenguaje para todos los usuarios del servicio.

P: ¿Cómo puedo registrar e inspeccionar llamadas realizadas a la API de AWS Lambda?

AWS Lambda se integra con AWS CloudTrail. AWS CloudTrail puede registrar y entregar al bucket de Amazon S3 logs que detallan el uso de la API por parte de su cuenta.

P: ¿Cómo puedo coordinar llamadas entre varias funciones de Lambda?

Puede usar Amazon Step Functions para coordinar varias funciones de Lambda de invocación. Puede invocar numerosas funciones de Lambda de manera secuencial, pasando la salida de una a otra, y/o simultáneamente. Consulte la documentación para obtener más detalles.

Obtenga más información sobre los precios de AWS Lambda

Visite la página de precios
¿Listo para comenzar?
Inscribirse
¿Tiene más preguntas?
Contacte con nosotros