Despliegue de Funciones Lambda en AWS: Guía Completa

Clase 35 de 38Curso de Infraestructura Como Código en AWS

Resumen

¿Cómo se despliega una función Lambda en AWS?

Desplegar funciones Lambda en AWS es fundamental para cualquier desarrollador que busque aprovechar las arquitecturas serverless. Este proceso no solo amplía las capacidades, sino que también simplifica la gestión de aplicaciones. A lo largo de este artículo, exploraremos las diferencias clave entre los dos métodos principales para desplegar una función Lambda, enfocándonos en su implementación con AWS CloudFormation y AWS SAM.

¿Qué es AWS Lambda?

AWS Lambda es un servicio de cómputo en la nube que permite ejecutar código en respuesta a eventos sin necesidad de administrar servidores. Dentro de AWS, la función Lambda actúa como una unidad fundamental en la arquitectura serverless.

¿Cuáles son las formas de desplegar una función Lambda?

Existen dos formas de desplegar una función Lambda en AWS:

  1. Serverless function (función Lambda): Utilizando AWS Lambda directamente.
  2. AWS SAM (Serverless Application Model): Herramienta que permite simplificar la infraestructura y gestionar aplicaciones basadas en servidor de manera eficiente.

¿Cómo desplegar utilizando AWS CloudFormation?

Cuando optamos por desplegar una función Lambda mediante CloudFormation, estamos creando un template (plantilla) que define los recursos de AWS necesarios. Dentro de esta plantilla:

  • Es fundamental especificar el código almacenado en S3.
  • La documentación de AWS provee ejemplos en JSON y YAML para ilustrar su uso adecuado.
  • Componentes obligatorios incluyen el código de la función, el handler, y las configuraciones de memoria.
Resources:
  MyLambdaFunction:
    Type: 'AWS::Lambda::Function'
    Properties:
      Code: 
        S3Bucket: my-bucket
        S3Key: my-function-code.zip
      Handler: index.handler
      Role: arn:aws:iam::123456789012:role/lambda-role
      Runtime: nodejs14.x

¿Qué considerar al usar AWS SAM?

AWS SAM extiende CloudFormation, ofreciendo mayor simplicidad y eventos especializados para aplicaciones serverless. Al usar SAM, considera lo siguiente:

  • Los nombres de las funciones no deben ser hard-coded (quemados explícitamente) en el código, facilitando la replicación en otras cuentas.
  • Utilizar las funciones intrínsecas como Ref y GetAtt puede optimizar la gestión y reutilización de las plantillas.
MyServerlessFunction:
  Type: AWS::Serverless::Function
  Properties:
    CodeUri: s3://my-bucket/my-function-code.zip
    Handler: index.handler
    Runtime: nodejs14.x
    MemorySize: 128

¿Cuáles son las prácticas recomendadas para funciones Lambda?

  • No quemar nombres de funciones: En aplicaciones serverless, evita codificar nombres de recursos directamente en el código.
  • Entender los componentes obligatorios: Al usar CloudFormation o SAM, conoce qué campos son obligatorios. Por ejemplo, el handler y runtime son siempre necesarios.
  • Documentación y ejemplos: La documentación oficial brinda ejemplos detallados para cada recurso, fundamental para ensamblar plantillas correctamente.

¿Cómo optimizar el uso de funciones intrínsecas?

Al trabajar con CloudFormation y SAM, el uso de funciones intrínsecas como Ref y GetAtt permite acceder a atributos lógicos y físicos de los recursos:

  • Ref: Devuelve el nombre del recurso.
  • GetAtt: Obtiene un atributo específico del recurso.

Estas funciones son esenciales para establecer relaciones entre diferentes componentes del stack.

¿Qué tener en cuenta con el almacenamiento en S3?

  • Al desplegar funciones Lambda, es crucial detallar correctamente el bucket en S3 donde reside el código.
  • Asegúrate de especificar el bucket y el key del archivo en S3. Este archivo normalmente tiene la extensión .zip que contiene el código fuente.

¿Cómo mejorar la gestión al desplegar Lambda?

La gestión efectiva al desplegar Lambda se logra mediante:

  • Aprovechamiento de plantillas reutilizables.
  • Utilización de la infraestructura como código (IaC) para automatizar despliegues.
  • Implementación de good practices como la definición de roles y políticas adecuadas con IAM.

El mundo del despliegue de funciones Lambda en AWS es vasto y dinámico, lleno de oportunidades para innovar y mejorar procesos. Con estas estrategias y conocimientos, tendrás una base sólida para no solo desplegar, sino también optimizar y escalar tus funcionalidades en la nube. ¡Sigue explorando y ampliando tus habilidades en este apasionante campo!