Profile image
**CSI: Miami… ¡en la Nube! Desvelando los Misterios de AWS Serverless**🕵️‍♂️🔍

**CSI: Miami… ¡en la Nube! Desvelando los Misterios de AWS Serverless**🕵️‍♂️🔍

Wed Sep 18 2024
Desarrollo

¡Hola Chiquis!👋🏻 Hoy les traigo una nueva entrega, donde combinaremos la emoción de una serie de televisión popular con la complejidad de un tema técnico como AWS Serverless. Imagina que Horatio Caine y su equipo están resolviendo un caso, pero en lugar de pistas y criminales, están manejando funciones, eventos y servicios en la nube. 🌴🔍

Horatio Caine estaría orgulloso de este caso. Imagina que cada línea de código es una pista, cada función lambda es un testigo clave y la nube de AWS es la escena del crimen. ¿Listo para resolver el misterio de Serverless?

El Escenario del Crimen: AWS 🏖️ La ciudad de Miami, con su ambiente vibrante y lleno de misterios, es el escenario perfecto para nuestras investigaciones. En el mundo de AWS, nuestra “ciudad” es la nube, un lugar donde los datos fluyen como el agua y las aplicaciones se ejecutan sin servidores físicos.

Horatio Caine: El Arquitecto Serverless 😎 Nuestro protagonista, Horatio Caine, es ahora un arquitecto serverless. Con su lupa digital y su mirada penetrante, investiga cada detalle de la arquitectura sin servidor. Su objetivo: construir aplicaciones escalables, eficientes y sin preocuparse por la gestión de servidores.

// Horatio entra en acción
exports.handler = async (event) => {
    console.log("Horatio está en la escena del crimen");
    const response = {
        statusCode: 200,
        body: JSON.stringify('Caso resuelto'),
    };
    return response;
};

Horatio es el líder del equipo, siempre listo para actuar cuando se le necesita. 

import json

def lambda_handler(event, context):
    # Horatio entra en acción
    print("Horatio está en la escena del crimen")
    return {
        'statusCode': 200,
        'body': json.dumps('Caso resuelto')
    }

Calleigh Duquesne: La Experta en Lambda 💁🏼 La Dra. Calleigh Duquesne, nuestra química forense favorita, ahora es una experta en funciones Lambda. Con su precisión y atención al detalle, analiza cada función Lambda como si fuera una muestra en el laboratorio. Cada función es una pequeña pieza de código que se ejecuta de forma independiente, sin necesidad de un servidor dedicado.

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

const subirArchivo = async (fileName, bucket) => {
    const params = {
        Bucket: bucket,
        Key: fileName,
        Body: 'Contenido del archivo'
    };
    await s3.upload(params).promise();
    console.log(`Archivo ${fileName} subido al bucket ${bucket}`);
};

subirArchivo('evidencia.txt', 'bucket-de-evidencias');

Amazon S3 Calleigh es la experta en balística, siempre almacenando y analizando pruebas. Amazon S3 también es como Calleigh: almacena grandes cantidades de datos de manera segura y accesible.

import boto3

s3 = boto3.client('s3')
def subir_archivo(file_name, bucket):
    # Calleigh almacena la evidencia
    s3.upload_file(file_name, bucket, file_name)
    print(f"Archivo {file_name} subido al bucket {bucket}")
subir_archivo('evidencia.txt', 'bucket-de-evidencias')

Ryan Wolfe: El Analista de Datos 🕵️‍♂️🔍 Ryan Wolfe, el joven y entusiasta analista de datos, ahora se encarga de explorar los vastos océanos de datos en la nube de AWS. Con sus herramientas de análisis, descubre patrones y tendencias que ayudan a optimizar las aplicaciones sin servidor.

  1. Amazon Athena: Consultas SQL en la Nube Ryan utiliza Amazon Athena para ejecutar consultas SQL directamente en los datos almacenados en Amazon S3. Esto le permite analizar rápidamente grandes conjuntos de datos sin necesidad de configurar servidores.
// Configuración de AWS SDK
const AWS = require('aws-sdk');
const athena = new AWS.Athena({ region: 'us-east-1' });

const ejecutarConsulta = async (query) => {
    const params = {
        QueryString: query,
        ResultConfiguration: {
            OutputLocation: 's3://bucket-de-resultados/'
        }
    };
    const result = await athena.startQueryExecution(params).promise();
    console.log(`Consulta ejecutada con ID: ${result.QueryExecutionId}`);
};
const query = 'SELECT * FROM evidencias WHERE tipo = "huella digital"';
ejecutarConsulta(query);
  1. AWS Glue: Preparación y Transformación de Datos Ryan también utiliza AWS Glue para preparar y transformar los datos antes de analizarlos. AWS Glue es un servicio de ETL (Extract, Transform, Load) que facilita la preparación de datos para el análisis.
const AWS = require('aws-sdk');
const glue = new AWS.Glue({ region: 'us-east-1' });

const crearTrabajoETL = async () => {
    const params = {
        Name: 'TrabajoETL',
        Role: 'rol-de-glue',
        Command: {
            Name: 'glueetl',
            ScriptLocation: 's3://bucket-de-scripts/etl-script.py'
        },
        DefaultArguments: {
            '--TempDir': 's3://bucket-de-temporales/',
            '--job-bookmark-option': 'job-bookmark-enable'
        }
    };
    const result = await glue.createJob(params).promise();
    console.log(`Trabajo ETL creado con ID: ${result.Name}`);
};
crearTrabajoETL();
  1. Análisis de Datos con Amazon QuickSight Finalmente, Ryan utiliza Amazon QuickSight para visualizar los datos y descubrir patrones y tendencias. QuickSight permite crear dashboards interactivos y compartir insights con el equipo.
const AWS = require('aws-sdk');
const quicksight = new AWS.QuickSight({ region: 'us-east-1' });

const crearDashboard = async () => {
    const params = {
        AwsAccountId: 'tu-cuenta-aws',
        DashboardId: 'dashboard-csi',
        Name: 'Dashboard CSI',
        SourceEntity: {
            SourceTemplate: {
                Arn: 'arn:aws:quicksight:us-east-1:tu-cuenta-aws:template/plantilla-csi',
                DataSetReferences: [
                    {
                        DataSetArn: 'arn:aws:quicksight:us-east-1:tu-cuenta-aws:dataset/dataset-csi',
                        DataSetPlaceholder: 'Evidencias'
                    }
                ]
            }
        }
    };
    const result = await quicksight.createDashboard(params).promise();
    console.log(`Dashboard creado con ID: ${result.DashboardId}`);
};
crearDashboard();

Ryan Wolfe, con sus habilidades de análisis de datos y las poderosas herramientas de AWS, puede descubrir patrones y tendencias que son cruciales para resolver casos. Utilizando Amazon Athena, AWS Glue y Amazon QuickSight, Ryan puede transformar datos en valiosos insights de manera eficiente y efectiva.

Eric Delko: El Especialista en Seguridad 👨‍🦱 Eric Delko, nuestro experto en seguridad, ahora protege las aplicaciones sin servidor de amenazas externas. Con sus conocimientos en seguridad informática, implementa medidas de protección para garantizar la confidencialidad y la integridad de los datos.

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();

const agregarEvidencia = async (id, descripcion) => {
    const params = {
        TableName: 'Evidencias',
        Item: {
            ID: id,
            Descripcion: descripcion
        }
    };
    await dynamodb.put(params).promise();
    console.log(`Evidencia ${id} agregada: ${descripcion}`);
};

agregarEvidencia('123', 'Huella digital encontrada en la escena');

(Amazon DynamoDB) Amazon DynamoDB es como Eric: una base de datos NoSQL rápida y flexible para almacenar y consultar datos.

import boto3

dynamodb = boto3.resource('dynamodb')
tabla = dynamodb.Table('Evidencias')

def agregar_evidencia(id, descripcion):
    # Eric analiza la evidencia
    tabla.put_item(
        Item={
            'ID': id,
            'Descripcion': descripcion
        }
    )
    print(f"Evidencia {id} agregada: {descripcion}")

agregar_evidencia('123', 'Huella digital encontrada en la escena')

Alexx Woods 👩🏾 Alexx es la forense, conectando las piezas del rompecabezas.

const AWS = require('aws-sdk');
const apigateway = new AWS.APIGateway();

const crearApi = async (nombre) => {
    const params = {
        name: nombre,
        description: 'API para el caso CSI'
    };
    const response = await apigateway.createRestApi(params).promise();
    console.log(`API ${nombre} creada con ID: ${response.id}`);
};

crearApi('CSI_API');

(Amazon API Gateway) Amazon API Gateway es como Alexx: crea y gestiona APIs que permiten a diferentes servicios comunicarse entre sí.

import boto3

client = boto3.client('apigateway')

def crear_api(nombre):
    # Alexx conecta las piezas
    response = client.create_rest_api(
        name=nombre,
        description='API para el caso CSI'
    )
    print(f"API {nombre} creada con ID: {response['id']}")

crear_api('CSI_API')

Frank Tripp (AWS Step Functions) 👨🏻‍🦲 Frank es el detective que coordina las operaciones. AWS Step Functions es como Frank: orquesta múltiples servicios en flujos de trabajo complejos.

{
  "Comment": "Flujo de trabajo para resolver el caso",
  "StartAt": "RecogerEvidencia",
  "States": {
    "RecogerEvidencia": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:RecogerEvidencia",
      "Next": "AnalizarEvidencia"
    },
    "AnalizarEvidencia": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:AnalizarEvidencia",
      "End": true
    }
  }
}

El Caso: Desvelando los Misterios de Serverless 💻

  • Imaginemos que nuestro equipo de CSI: Miami tiene que investigar un caso de “pico de tráfico inesperado”. Al igual que en una escena del crimen, deben recopilar todas las pistas posibles: logs, métricas, y rastrear la ejecución de las funciones Lambda.
  • La escena del crimen: Una función Lambda se está ejecutando más de lo esperado, consumiendo recursos excesivos.
  • Las pruebas: Los logs indican que la función está siendo invocada por un servicio externo con mayor frecuencia de lo normal.
  • La hipótesis: Un cambio en el código del servicio externo está causando un aumento en las invocaciones de la función Lambda.

La Solución Serverless 🔎 Utilizando las herramientas de AWS, nuestro equipo de CSI: Miami es capaz de identificar la causa del problema y aplicar una solución rápida y efectiva. Por ejemplo, pueden escalar automáticamente la función Lambda para manejar el aumento de tráfico o implementar una función de desencadenamiento más eficiente.

¿Por qué elegir Serverless? 👨🏽‍💻

  • Escalabilidad: Las aplicaciones sin servidor se adaptan automáticamente a las variaciones de carga.
  • Pago por uso: Solo pagas por los recursos que realmente consumes.
  • Desarrollo ágil: Puedes desarrollar y desplegar aplicaciones más rápido.
  • Menor mantenimiento: AWS se encarga de la gestión de la infraestructura.

Conclusión 🕵🏻 AWS Serverless es como un laboratorio forense digital, donde cada línea de código es una pista y cada función Lambda es un testigo clave. Al igual que en CSI: Miami, la clave para resolver los misterios de la nube está en el análisis de los datos y en la aplicación de las mejores prácticas.

Al igual que el equipo de CSI: Miami, los servicios serverless de AWS trabajan juntos para resolver problemas de manera eficiente y efectiva. AWS Lambda, Amazon S3, DynamoDB, API Gateway, Step Functions, entre otros, son tus aliados en la nube, listos para actuar cuando los necesites. ¡Así que ponte tus gafas de sol y prepárate para resolver casos en el mundo de la computación sin servidor! 😎🌴

¡Gracias por leer y déjame tus comentarios! 👇🏻

🚀 ¿Te ha gustado? Comparte tu opinión.  Artículo completo, visita: https://lnkd.in/ewtCN2Mn  https://lnkd.in/eAjM_Smy 👩‍💻 https://lnkd.in/eKvu-BHe  https://dev.to/orlidev https://lnkd.in/ecHHabTD ¡No te lo pierdas!

Referencias: Imágenes creadas con: Copilot ( microsoft.com )

#PorUnMillóndeAmigos #MakeYourselfVisible #AWS #Serverless

img112