Saltar al contenido
CLF-C02Sesión 9 · Escalado y serverless

Hazlo tú (20 min)

Creas una función Lambda, la ejecutas con un evento de prueba, lees su registro en CloudWatch Logs y la borras.

Costo: $0 a tu tarjeta, sin tocar tus créditos. Lambda da cada mes 1 millón de peticiones y 400.000 GB-segundos gratis en los dos planes; tus pruebas usan unas pocas peticiones de milisegundos. CloudWatch Logs incluye 5 GB al mes, y tu registro pesa unos KB. IAM no tiene cargo. No crees balanceadores ni grupos de Auto Scaling: un balanceador cobra cada hora que existe.

Plan gratuito: Lambda, CloudWatch Logs e IAM figuran entre los servicios gratuitos del registro simplificado, pero AWS no lo confirma para toda cuenta del plan gratuito. Si tu cuenta no te deja crear la función, no pases al plan de pago: haz la parte D.

El problema del rol. Una función necesita un rol de ejecución, y al crearla le “pasas” ese rol: eso exige el permiso iam:PassRole. Tu rol laboratorio-escritura no lo tiene ni puede crear roles, porque PowerUserAccess excluye IAM. estudio-diario solo lee. Como en la parte A de la Sesión 5, la única identidad con permisos de IAM en tu cuenta de práctica es el usuario raíz. Crear roles no es una tarea exclusiva del raíz: en una empresa lo haría un administrador. Entras como raíz una sola vez, para dos cambios de IAM, y sales.

Por qué no es una escalada de privilegios. El rol lambda-basico solo permite escribir registros. laboratorio-escritura podrá pasar ese único rol, y solo a Lambda: con él no gana más que lo que ya tenía. Ambos se quedan para sesiones futuras. El permiso va como política en línea del rol laboratorio-escritura: pertenece solo a esa identidad y se borra con ella (Sesión 5).

Parte A · Crear el rol y el permiso (como usuario raíz, 5 min).

  1. Entra como Root user, con su MFA, y abre IAM. Anota tu número de cuenta de 12 dígitos, en el menú de arriba a la derecha.

  2. En Roles, elige Create role. En Trusted entity type elige AWS service; en Service or use case, Lambda. Elige Next.

  3. En Permissions policies, busca y marca solo AWSLambdaBasicExecutionRole. Elige Next.

  4. En Role name escribe lambda-basico. Comprueba que la política de confianza nombra a lambda.amazonaws.com y elige Create role.

  5. En Roles, abre laboratorio-escritura, pestaña Permissions, y elige Add permissions › Create inline policy. Cambia el editor a JSON, borra lo que trae y pega esto, con tu número de cuenta en lugar de 111122223333:

    {
     "Version": "2012-10-17",
     "Statement": [{
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource":
       "arn:aws:iam::111122223333:role/lambda-basico",
      "Condition": {
       "StringEquals": {
        "iam:PassedToService": "lambda.amazonaws.com"
       }
      }
     }]
    }
  6. Elige Next, escribe pasar-lambda-basico como nombre y elige Create policy. Para que Lambda liste los roles no hace falta más: PowerUserAccess ya permite iam:ListRoles.

  7. Cierra la sesión del usuario raíz.

Parte B · Crear y probar la función (con el rol).

  1. Entra con estudio-diario, elige tu Región de la Sesión 2 y luego Switch role › laboratorio.

  2. Abre Lambda y elige Create function. Deja Author from scratch. En Function name escribe hola-s09 y en Runtime elige el Python más reciente, como Python 3.14.

  3. En Permissions, elige usar un rol existente (Use another role o Use an existing role, según la consola) y selecciona lambda-basico. No elijas que Lambda cree un rol: tu rol no puede. Elige Create function. Si la consola asignó otro rol, cámbialo en Configuration › Permissions › Edit.

  4. En la pestaña Code, reemplaza el código por este y elige Deploy:

    def lambda_handler(event, context):
        nombre = event.get("nombre", "mundo")
        print(f"Hola, {nombre}")
        return {"mensaje": f"Hola, {nombre}"}
  5. Elige Create test event. En Event Name escribe prueba, reemplaza el JSON por {"nombre": "Nébula"} y elige Save. Ejecútalo con Test o con el botón de ejecutar junto a su nombre.

  6. En el resultado verás la respuesta Hola, Nébula y una línea REPORT con Duration, Billed Duration y Memory Size: así cobra Lambda.

Parte C · Leer el registro (con el rol).

  1. En la función, pestaña Monitor, elige View CloudWatch logs. Se abre el grupo de registros /aws/lambda/hola-s09.
  2. Abre el flujo de registros (log stream) más reciente: ahí están Hola, Nébula y la línea REPORT.

Comprueba: explicas quién escribió ese registro y con qué permisos: la función, con el rol lambda-basico, no tú.

Limpieza (con el rol, antes de Switch back):

  1. En Lambda › Functions, marca hola-s09 y elige Actions › Delete. Escribe confirm y confirma.
  2. En CloudWatch › Log groups, marca /aws/lambda/hola-s09 y elige Actions › Delete log group(s). Confirma. Si no lo borras, los registros se guardan para siempre.
  3. Elige Switch back. Conserva el rol lambda-basico y la política pasar-lambda-basico: volverás a usarlos. Si abandonas el curso, bórralos como raíz junto con el rol de la Sesión 5.

Parte D · En papel (5 min). Boletos Faro quiere su web en alta disponibilidad, con 2 instancias de noche y hasta 80 en una venta. Dibuja el balanceador, el grupo de Auto Scaling, sus AZ y la política.

Comprueba: ALB, porque es HTTP; grupo con mínimo 2, deseado 2 y máximo 80 en dos o más AZ; política por objetivo de CPU y otra programada antes de la venta; comprobaciones de estado del ALB para reemplazar instancias.

113