Introducción al cómputo en la nube

1

¿Qué es el cómputo en la nube?

2

¿Cómo puedo empezar a usar AWS?

3

Introducción a la oferta de servicios de AWS y sus aplicaciones

Introducción a la oferta de AWS y sus interacciones

4

Ejemplo de arquitectura con Elastic Beanstalk

5

¿Qué es Amazon EC2?

6

Creando una instancia de EC2

7

Conectándonos a nuestra instancia desde Windows

8

Conectándonos a nuestra instancia desde Linux

9

Conectándonos a nuestra instancia desde OSX

10

Subiendo un proyecto: Clonando un repositorio de GitHub a nuestra Instancia de EC2

11

Subiendo un proyecto a nuestra instancia de EC2: Ejecutar nuestro proyecto

12

¿Qué es Lambda y Serverless?

13

Creando una función Lambda

Elastic Beanstalk

14

Conociendo Elastic Beanstalk

15

Creando un ambiente en Elastic Beanstalk

16

Almacenamiento - S3

17

Almacenamiento con S3: Contenido Estatico

18

Almacenamiento con Glacier: Contenido duradero

Bases de Datos

19

Bases de Datos - RDS Aurora PG

20

Conociendo RDS PG

21

Creando una base de datos Platzi DB

22

Haciendo una migración a RDS PG

23

Conociendo Aurora PG (Postgres)

24

Haciendo una migración a Aurora DB

25

Mejores prácticas de Bases de Datos y RDS

Redes

26

Redes - Route53

Herramientas de administración

27

Herramientas de administración - IAM

28

Utilizando IAM

29

CloudWatch

30

CloudTrail

Seguridad

31

Certificate manager

32

GuardDuty

Bonus

33

AWS Rekognition

34

Creando nuestro servicio de Postgres

35

Accediendo a nuestra base de datos Postgres

Cierre del curso

36

Conclusiones del curso de Fundamentos de AWS Cloud

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
0 Hrs
34 Min
47 Seg
Curso Práctico de AWS Cloud

Curso Práctico de AWS Cloud

Mauro Parra Miranda

Mauro Parra Miranda

Creando una función Lambda

13/36
Resources

How to create a Lambda function in AWS using Python?

The growing Amazon Web Services (AWS) ecosystem presents itself as a powerful solution for developers looking to streamline processes and automate tasks. An essential component of this ecosystem is AWS Lambda, which allows you to run code without the need to manage servers, thanks to the serverless approach. In this tutorial, we will explore how to create a Lambda function using Python, from the AWS console.

What is AWS Lambda?

AWS Lambda is a compute service that allows you to run code without the need to provision or manage servers. It works through the on-demand execution model, allowing developers to upload and run code only when needed, making Lambda a very efficient and cost-effective option for a variety of applications.

How to get started with AWS Lambda?

  1. Access the AWS console: Go to the AWS console and make sure you are in the correct section:

    • Go to "All Services".
    • Find and select "Lambda" under the "Compute" category.
  2. Create a new Lambda function:

    • Select "Create a function" and choose "From scratch".
    • Assign a name to your function, for example, latsifond.
    • Choose Python 3.6 as the execution language, although AWS Lambda supports several languages such as C, Java, and Go.
  3. Configure the execution role: Define a role that allows your Lambda function to execute safely. This configuration is crucial to ensure that your function has the necessary permissions to interact with other AWS services.

How to write and deploy the code of a Lambda function in AWS?

Developing a function in AWS Lambda involves defining a controller function, known as lambda_handler, which takes two arguments: event and context.

def lambda_handler(event, context): # Code to handle the event what_to_print = event['what_to_print'] how_many_times = event['how_many_times']
 if how_many_times > 0: for _ in range(how_many_times): print(what_to_print)
  • what_to_print and how_many_times: These are environment variables that determine what is printed and how many times.
  • The code checks a simple condition and executes actions according to the parameters received.

How to configure environment variables and additional parameters?

  1. Environment variables: In AWS Lambda, you can set environment variables that will be accessible to your function without coding them directly. Example:

    • what_to_print = "Hello from Platzi".
    • how_many_times = 6
  2. Configure memory and concurrency:

    • Memory: you can set the RAM memory dedicated to your function, which defaults to 128 MB and can be expanded up to 3 GB. AWS Lambda automatically adjusts memory based on historical usage.
    • Concurrency: AWS Lambda allows up to 1000 concurrent executions by default. If you need more, you can contact AWS support to discuss your needs.

How to test and validate Lambda functions?

Once your function is configured, it is vital to make sure it works correctly by creating test events and executing the function. After execution, AWS Lambda provides detailed performance information, including execution time and memory used.

  1. Create a test event:

    • Create a new test event, name it appropriately, such as hello.
    • Execute the event to verify the output and performance of your function.
  2. Evaluate the results: Be sure to check the top area of the console for execution results, which indicate duration, memory usage, and other vital metrics.

Additional tips and troubleshooting.

  • Attention to detail: Run results are often displayed at the top in the console, which can be confusing at first. Scroll up to confirm that the results are displayed correctly.
  • Optimization: Observe resource usage and adjust the configuration according to your actual needs.
  • Feedback and support: If you have questions, contact AWS Support for guidance and adjust settings based on feedback received.

AWS Lambda and Python provide a powerful combination to automate processes and build efficient applications in the cloud. This tutorial is just a start; experiment and adapt these tools to meet your development goals.

Contributions 67

Questions 35

Sort by:

Want to see more contributions, questions and answers from the community?

Hola amigos, para quienes estén viendo este viseo recientemente y han notado que el entorno donde configuramos nuestro lamba en AWS ha cambiado con respecto al entorno que el tutor tiene, les comparto esto que les facilitara un poco la configuración.

  1. Configuración de las variables de entorno.
  2. Configuración de etiquetas.
  3. Dar un test o probar en código. (Antes de dar test, darle clic al botón color naranja que dice DEPLOY)

Me parece que hace falta aclarar por parte del tutor el porqué de estas funciones básicamente, y en qué ejemplos de la vida real deberían usarse y cuáles no. Para mi un ejemplo completo sería algo donde involucres costos, y el porqué sería mejor tener una API en contenedores y no en Lambda Functions, y viceversa, cuándo es que realmente se le saca provecho. Para mí queda muy confuso al momento de decidir si me voy por containers o Lambda Functions. Si alguien quiere brindar un ejemplo, bienvenido sea, me sería de mucha utilidad.

No había creado un rol por lo que seleccioné “Creación de un nuevo rol con permisos básicos de Lambda” y funcionó perfecto.

AWS: AWS Lambda
Microsoft Azure: Azure Functions
Google Cloud: Cloud Functions

Si alguno esta realizándolo recientemente, les recomiendo desde la parte de configuración del código de la función, darle en ‘deploy’ ya con esto nos permitirá darle en probar (test) y nos aparecerán los logs de que la ejecución fue exitosa (a pesar que en el diagrama no estés enviando a la Lambda a Amazon CloudWatch Logs)

El principal reto de las arquitecturas serverless es en diseñar las soluciones de una manera mas atómica y descentralizada, la combinación de AWS Lambda y AWS Stepfunctions te permite modelar los procesos de negocio como realmente son, pequeñas unidades de trabajo que realizan una única tarea y la hacen bien, y que combinadas completan un trabajo mas grande.

Al crear la función se escogió un role existente (service-role/text-platzi) pero quede perdido en que momento se creo dicho role

Si te sale algo como
{
“statusCode”: 200,
“body”: ““Hello from Lambda!””
}
Lo que debes de hacer es:
Paso1: darle clic en Implementar(deploy)
Paso2: darle clic en Probar

Listo

Hola, cuando ejecuto el test event, me dice
"Hello from Lambda" ¿Alguien más?

Gracias, muy didactico. Quisiera tener un ejemplo cotidiano para su uso. alguien tiene uno?

Antes de correr el Test debes darle deploy y las variables de entorno y las Tags están en el apartado de configuración.

Me perdí, ¿En que momento creamos el Rol? porque me aparece solamente
"Crear un rol a partir de una plantilla" o
"Crear un rol personalizado"

???
=(

Que no hay cursos actualizados? todos estos cursos son de 3 o 4 años de antiguedad, Actualicen los contenidos

Si despliego un API REst con LAMBDA, para ejecutarla desde otra aplicación, como haría con el tema de la seguridad? Para ejecutar un lambda por ejemplo con JWT ? Debo implementar la seguridad en el mismo lambda ?

Gracias.

Es algo difícil seguir este curso, esta clase ha sido muy confusa, algunas razones como:

  1. La interfaz ya no es la misma
  2. No habíamos creado un rol y el profesor ya lo tenía, así que no sabía que hacer ni como crear uno.
  3. Siento que el profesor va muy rápido y no da tiempo de que uno pueda visualizar la configuración. Hay que estar pausando para pausar en el momento justo donde se vea la configuración completa.
  4. El profesor solo dije, ponemos esto, esto y esto sin explicar el porque de eso.

DEsafotrunadamente es el problema de estos cursos que son algo viejos y el entorno de AWS ha cambiado desde entonces y seguir la linea de los cursos en cuanto a los laboratorios es dificl ya que se tiene que verificar donde seleccional las opciones para que el laboratorio sea exitoso y no frustrante como lo veo ahora.

Que plantillas debería elegir para crear el rol?.
En que momento se creo el rol?

En que casos se puede hacer uso de Lambda?
Ya que una funcion que se ejecuta alli la podria ejecutar en un servidor donde tengo una aplicacion, pero quisiera saber cual es el pro de usar Lambda, quiza su uso depende de la cantidad de peticiones que requiera la funcion, costo de cada peticion, etc

Antes de probar la función lambda ubícate en el IDE y dale click a la opción de deploy para que lambda tome tu función nueva y no la que estaba por defecto.

Como sería se escribí un algoritmo de ML en Jupyter Notebook, pero en este incluyo gráficas. Podría ejecutarlo en lambda quitandole las gráficas si solo quiero la predicción?

una consulta desde java se podría utilizar este tipo de funciones en aws y que tan complejo es la utilización de las mismas?

Hola, como podria hacer una funcion donde liste las instancias unicamente por nombre.

import boto3
import json
import pprint

region = "us-east-1"
ec2 = boto3.client(‘ec2’, region_name=region)

def lambda_handler(event,context):

response = ec2.describe_instances(
    Filters = [
        {'Name': 'instance-state-name', 'Values':['*']}
        ])
print(response)

En las nuevas versiones de la pagina de lambda de AWS el botón saved no viene y si das click en el botón de test no te toma tu último código asi le des saved desde el editor de código, tienes que darle deploy para que lo tome como el código mas reciente

import os


def lambda_handler(event, context):
    what_to_print = os.environ.get("what_to_print")
    how_many_times = int(os.environ.get("how_many_times"))

    # make sure what_to_print and how_many_times values exist
    if what_to_print and how_many_times > 0:
        for i in range(0, how_many_times):
            # formatted string literals are new in Python 3.6
            print(f"what_to_print: {what_to_print}.")
        return what_to_print
    return None

Ya no contamos con 1000 ejecuciones concurrentes, ahora por el contrario solo son 10

Información resumida de esta clase \#EstudiantesDePlatzi * Dentro de AWS es fácil encontrar este servicio * Es literalmente escribir código dentro del editor de código creado por AWS * De base en este servicio se obtienen 128Mb de RAM * Revisar hasta arriba

START RequestId: f164146e-d6ba-40a1-b0ad-ddf7648e994f Version: $LATEST
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
END RequestId: f164146e-d6ba-40a1-b0ad-ddf7648e994f
REPORT RequestId: f164146e-d6ba-40a1-b0ad-ddf7648e994f Duration: 0.29 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 42 MB Init Duration: 1.00 ms

Es viable usar lambdas para integración entre diferentes sistemas ?

Exponer un servicio web con seguridad, transformar el mensaje y consumir otro para la entrega el resultado?

Esto es como Docker?

Tengo la duda de, si ya tengo una lambda function en producción, cómo puedo crear un ambiente de desarrollo para hacer modificaciones a la lambda que ya está en producción? Cómo lo han trabajado?

Como comunico mi funcion lambda con mi backend?

Puedo hacer una Función lambda para que traiga datos de un Api y la guarde en una base de datos que esta en un servicios RDS ?,

En qué parte de los videos crea el rol? Creo que me perdí…

muy bien

si quisiera capturar tweets desde una función lambda podría? hay mejores formas de hacerlo desde aws?. gracias

No tiene autorización para realizar: iam:CreatePolicy.

Prueba realizada!

Request ID:
“345fade8-0c36-43fc-85b0-76c1f14d2e23”

Function Logs:
START RequestId: 345fade8-0c36-43fc-85b0-76c1f14d2e23 Version: $LATEST
what_to_print: Hola Edisson AWS.
what_to_print: Hola Edisson AWS.
what_to_print: Hola Edisson AWS.
what_to_print: Hola Edisson AWS.
what_to_print: Hola Edisson AWS.
what_to_print: Hola Edisson AWS.
END RequestId: 345fade8-0c36-43fc-85b0-76c1f14d2e23
REPORT RequestId: 345fade8-0c36-43fc-85b0-76c1f14d2e23 Duration: 0.30 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 42 MB Init Duration: 1.17 ms

Excelente curso, una pregunta saben como tener una lambda disponible, es decir no esperar hasta que la llamemos si no que este en un estado “precalentado”?? gracias

En caso que mi Lambda necesite otras dependencias… estas se pueden incluir ?? o debo usar otro tipo de servicio aws ?

Esto podria funcionar para la prueba de codigos de apps o paginas y que te diga la informacion de tiempo y ram ¿no?

Super! 😃 prueba realizada

Genial!

START RequestId: c455518b-33b8-4211-8259-eaa9bcbd9ee1 Version: $LATEST
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
what_to_print: Hola desde Platzi.
END RequestId: c455518b-33b8-4211-8259-eaa9bcbd9ee1
REPORT RequestId: c455518b-33b8-4211-8259-eaa9bcbd9ee1 Duration: 0.35 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 42 MB Init Duration: 1.02 ms

Tienes que pulsar el boton “Deploy” antes de realizar el Test

Excelente, ejecutado!

Debene pulsar el botón ‘Deploy’ o desplegar, para actualizar sus cambios en el código de la lambda, también para las configuraciones de variables de entorno, memoria, concurrencia, etc, lo encontrarán en el Tab ‘Configuration’ / ‘Configuraciones’ que se muestra en la parte superior de la ventana, esto a la fecha de julio 2021.

(posiblemente siga cambiando la interfaz gráfica, es cuestión de buscar las configuraciones que van nombrando en las clases, muy posible que no las encuentren en el mismo lugar del video del curso)

Estoy un poco confundido.

Las funciones Lambdas se utilizarían para manipular eventos y acciones de configuración para el servidor? O tambien podemos crear múltiples funciones Lambdas que funcionen como un servicio dentro de un API?

Hay una nueva opción que dice “Plantillas de política” y aparecen varias opciones, para el ejemplo que estamos haciendo estoy eligiendo “permisos de microservicios sencillos”, espero funcione.

Integración con lambda y dynamo.

Que tan buena práctica es el uso lambda para la ejecución de python como pipeline para la transformación de archivos dentro una arquitectura de data lake (para analitica)?
pd: toda la infraestructura se basa en s3, se definen múltiples simulando las diferentes etapas de transformación de los datos raw.

Wow.!! Por fin de veo valor a esta funcionalidad.! Se puede decir que para este es un tool mas para los DevOps.

Sería correcto aplicar una función lambda a un archivo de Python para ingestión de datos a una API que se conecta a una db de Mongo?

Actualmente en en la pestaña “Configuración” se encuentran las opciones de Variables de Entorno y Etiquetas entre otras opciones que menciona el tutor:

seria genial si actualizaran este curso, ya que veo que cambiaron algunas cosas.

RECIENTEMENTE dice el comentario en el que actualizan la consola de AWS, un comentario que tiene 3 años, vergüenza .

Puedo usar cualquier librería? Ejemplo pyspark o tesseract en una lambda?

Actualmente para ver la ejecución de nuestra función debemos dar clic en el botón “Deploy” y posteriormente en Test.

Gracias!

Mi experiencia: la primera vez del Test, demoró como 8 segundos en mostrar error “Calling the invoke API action failed with this message: Network Error”.
La segunda vez demoró como 5 segundos en mostrar el mismo error.
A la tercera vez ejecutó con éxito, y cada vez en menos tiempo.

Muy buen curso.

Espero poder entender este tema mas adelante, soy nuevo en AWS y no veo la funcionalidad de esto, depronto enfrentando un ejemplo de la vida real le sea mas claro a uno, seguimos 💪

Mar-2021 chequen que al guardar un cambio en el codigo tienen que dar clic en Deploy

Mi output fue el siguiente:

START RequestId: b7b49511-2aa3-44bd-a609-8f25025c58db Version: $LATEST
END RequestId: b7b49511-2aa3-44bd-a609-8f25025c58db
REPORT RequestId: b7b49511-2aa3-44bd-a609-8f25025c58db Duration: 0.29 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 43 MB

No ejecuto el codigo. que pudo fallar?

He visto por muchas partes scratch. Lo consulto en el traductor de google y significa rasguño. Mi pregunta es,
¿Qué significa una función from scratch?. Gracias!!!

Interesante, estas funciones podrían conectarse a una base de datos remota y retornar la data necesaria! Me gusta la idea de usarla con NodeJS, aunque me duele que no esté PHP ahí jaja

Para que sirve event y context?

En mi trabajo tuve que crear una función lambda que invoque por código una tarea, que levante un cluster asociado con un docker container.

Además tuve que guardar logs en una base de datos SQL, por lo que tuve que añadir un layer específico para incorporar la librería pyodbc.