Elysia Tools

Explora herramientas, ejemplos, explicaciones visuales y guías temáticas en un solo espacio claro.

Categorías populares

Temas

Idioma
ZHESPTRUFRDEEN

Elysia Tools

Navegación

Arquitectura en la nube

Ejemplos de Arquitectura Serverless

Ejemplos de computación serverless con AWS Lambda, Azure Functions y Google Cloud Functions

Ejemplos

Entradas de esta colección

CódigojavascriptSimple

AWS Lambda Hello World

Función básica de AWS Lambda con runtime Node.js

Dificultad

3/10

Tiempo estimado

10 min

Etiquetas

serverless, aws, lambda, nodejs

Requisitos previos

Basic Node.js knowledge

javascript
// AWS Lambda Hello World Example
exports.handler = async (event) => {
    console.log('Event: ', JSON.stringify(event, null, 2));

    const response = {
        statusCode: 200,
        headers: {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*',
        },
        body: JSON.stringify({
            message: 'Hello from AWS Lambda!',
            input: event,
            timestamp: new Date().toISOString(),
        }),
    };

    return response;
};

// Handler with different HTTP methods
exports.apiHandler = async (event) => {
    const httpMethod = event.httpMethod;
    const path = event.path;

    switch (httpMethod) {
        case 'GET':
            return {
                statusCode: 200,
                body: JSON.stringify({
                    message: 'GET request received',
                    path: path,
                }),
            };
        case 'POST':
            const requestBody = JSON.parse(event.body);
            return {
                statusCode: 201,
                body: JSON.stringify({
                    message: 'POST request processed',
                    receivedData: requestBody,
                }),
            };
        default:
            return {
                statusCode: 405,
                body: JSON.stringify({
                    error: 'Method not allowed',
                }),
            };
    }
};

// Lambda function with environment variables
exports.envHandler = async (event) => {
    const environment = process.env.ENVIRONMENT || 'development';
    const region = process.env.AWS_REGION || 'us-east-1';

    return {
        statusCode: 200,
        body: JSON.stringify({
            environment,
            region,
            allEnvVars: Object.keys(process.env).filter(key =>
                key.startsWith('AWS_') || key.startsWith('LAMBDA_')
            ),
        }),
    };
};
ConfiguraciónyamlIntermedio

Configuración de Serverless Framework

Configuración de Serverless Framework para desplegar múltiples funciones

Dificultad

6/10

Tiempo estimado

20 min

Etiquetas

serverless, configuration, deployment, aws

Requisitos previos

AWS account, Serverless Framework CLI

yaml
# serverless.yml
service: my-serverless-app

frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs18.x
  region: us-east-1
  stage: dev
  environment:
    NODE_ENV: ${self:custom.currentStage}
    TABLE_NAME: ${self:service}-${self:custom.currentStage}

  iam:
    role:
      statements:
        - Effect: Allow
          Action:
            - dynamodb:Query
            - dynamodb:Scan
            - dynamodb:GetItem
            - dynamodb:PutItem
            - dynamodb:UpdateItem
            - dynamodb:DeleteItem
          Resource:
            - "arn:aws:dynamodb:${self:provider.region}:*:table/${self:provider.environment.TABLE_NAME}"

functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get
          cors: true

  users:
    handler: handler.users
    events:
      - http:
          path: users
          method: get
          cors: true
      - http:
          path: users
          method: post
          cors: true

  getUser:
    handler: handler.getUser
    events:
      - http:
          path: users/{id}
          method: get
          cors: true

  processImage:
    handler: handler.processImage
    events:
      - s3:
          bucket: my-image-bucket
          event: s3:ObjectCreated:*
          existing: true
    timeout: 30
    memorySize: 1024

  scheduledTask:
    handler: handler.scheduledTask
    events:
      - schedule:
          rate: rate(5 minutes)
          enabled: true

resources:
  Resources:
    UsersTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: ${self:provider.environment.TABLE_NAME}
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: S
        KeySchema:
          - AttributeName: id
            KeyType: HASH
        BillingMode: PAY_PER_REQUEST
        PointInTimeRecoverySpecification:
          PointInTimeRecoveryEnabled: true
        SSESpecification:
          SSEEnabled: true
        StreamSpecification:
          StreamViewType: NEW_AND_OLD_IMAGES

plugins:
  - serverless-offline
  - serverless-dotenv-plugin
  - serverless-webpack

custom:
  currentStage: ${opt:stage, 'dev'}
  webpack:
    webpackConfig: 'webpack.config.js'
    includeModules: true

  serverless-offline:
    httpPort: 3000
    babelOptions:
      presets: ["env"]

  dotenv:
    path: ./.env
    include:
      - API_KEY
      - DATABASE_URL

package:
  individually: true

  exclude:
    - .git/**
    - .vscode/**
    - node_modules/**
    - "*.log"
CódigocsharpIntermedio

Azure Functions con C#

Ejemplos de Azure Functions usando C# y .NET

Dificultad

7/10

Tiempo estimado

25 min

Etiquetas

serverless, azure, csharp, dotnet, functions

Requisitos previos

C# and .NET knowledge, Azure subscription

csharp
// Azure Functions with C#
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace MyServerlessApp
{
    public static class HttpFunctions
    {
        [FunctionName("HelloWorld")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            return name != null
                ? (ActionResult)new OkObjectResult($"Hello, {name}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
    }

    public static class QueueFunctions
    {
        [FunctionName("ProcessQueueMessage")]
        public static void Run(
            [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");

            // Process the queue message
            var message = JsonConvert.DeserializeObject<MessageData>(myQueueItem);

            // Business logic here
            log.LogInformation($"Processing message for user: {message.UserId}");
        }
    }

    public static class TimerFunctions
    {
        [FunctionName("DailyCleanup")]
        public static void Run(
            [TimerTrigger("0 0 3 * * *")] TimerInfo myTimer,
            ILogger log)
        {
            log.LogInformation($"Daily cleanup function executed at: {DateTime.Now}");

            if (myTimer.IsPastDue)
            {
                log.LogInformation("Timer is running late!");
            }

            // Cleanup logic here
            PerformDailyCleanup();
        }

        private static void PerformDailyCleanup()
        {
            // Implement cleanup logic
            // e.g., delete old files, clean up database, etc.
        }
    }

    public static class BlobFunctions
    {
        [FunctionName("ProcessImageUpload")]
        public static void Run(
            [BlobTrigger("images/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob,
            string name,
            ILogger log)
        {
            log.LogInformation($"C# Blob trigger function processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");

            // Process uploaded image
            ProcessImage(myBlob, name);
        }

        private static void ProcessImage(Stream imageStream, string fileName)
        {
            // Implement image processing logic
            // e.g., resize, add watermark, generate thumbnails
        }
    }

    public static class CosmosDBFunctions
    {
        [FunctionName("CreateUser")]
        public static async Task<IActionResult> CreateUser(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "users")] HttpRequest req,
            [CosmosDB(
                databaseName: "MyDatabase",
                collectionName: "Users",
                ConnectionStringSetting = "CosmosDBConnection")] IAsyncCollector<User> usersOut,
            ILogger log)
        {
            log.LogInformation("Creating a new user");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var user = JsonConvert.DeserializeObject<User>(requestBody);

            user.Id = Guid.NewGuid().ToString();
            user.CreatedAt = DateTime.UtcNow;

            await usersOut.AddAsync(user);

            return new CreatedResult($"/users/{user.Id}", user);
        }

        [FunctionName("GetUser")]
        public static IActionResult GetUser(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "users/{id}")] HttpRequest req,
            [CosmosDB(
                databaseName: "MyDatabase",
                collectionName: "Users",
                Id = "{id}",
                PartitionKey = "{id}",
                ConnectionStringSetting = "CosmosDBConnection")] User user,
            ILogger log)
        {
            log.LogInformation($"Getting user with id: {req.RouteValues["id"]}");

            if (user == null)
            {
                return new NotFoundResult();
            }

            return new OkObjectResult(user);
        }
    }

    // Data models
    public class MessageData
    {
        public string UserId { get; set; }
        public string Message { get; set; }
        public DateTime Timestamp { get; set; }
    }

    public class User
    {
        [JsonProperty("id")]
        public string Id { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("email")]
        public string Email { get; set; }

        [JsonProperty("createdAt")]
        public DateTime CreatedAt { get; set; }
    }
}
CódigopythonIntermedio

Google Cloud Functions con Python

Ejemplos de Google Cloud Functions usando runtime Python

Dificultad

7/10

Tiempo estimado

25 min

Etiquetas

serverless, gcp, python, cloud functions

Requisitos previos

Python knowledge, Google Cloud Platform account

python
# Google Cloud Functions with Python
import functions_framework
from flask import jsonify, request
import json
import logging
import os
from datetime import datetime
from google.cloud import storage
from google.cloud import datastore

# Configure logging
logging.basicConfig(level=logging.INFO)

@functions_framework.http
def hello_world(request):
    """HTTP Cloud Function that returns a JSON greeting."""

    request_json = request.get_json(silent=True)
    request_args = request.args

    if request_json and 'name' in request_json:
        name = request_json['name']
    elif request_args and 'name' in request_args:
        name = request_args['name']
    else:
        name = 'World'

    response_data = {
        'message': f'Hello, {name}!',
        'timestamp': datetime.utcnow().isoformat(),
        'method': request.method,
        'headers': dict(request.headers)
    }

    return jsonify(response_data), 200

@functions_framework.http
def process_data(request):
    """HTTP Cloud Function that processes incoming data."""

    if request.method != 'POST':
        return jsonify({'error': 'Method not allowed'}), 405

    try:
        data = request.get_json()

        if not data:
            return jsonify({'error': 'No data provided'}), 400

        # Validate required fields
        if 'user_id' not in data or 'event_type' not in data:
            return jsonify({'error': 'Missing required fields'}), 400

        # Process the data
        processed_data = {
            'user_id': data['user_id'],
            'event_type': data['event_type'],
            'processed_at': datetime.utcnow().isoformat(),
            'metadata': {
                'source_ip': request.remote_addr,
                'user_agent': request.headers.get('User-Agent', ''),
            }
        }

        # Add additional processing logic here
        if data.get('payload'):
            processed_data['payload_size'] = len(json.dumps(data['payload']))

        # Save to Datastore (optional)
        save_to_datastore(processed_data)

        return jsonify({
            'status': 'success',
            'processed_data': processed_data
        }), 200

    except Exception as e:
        logging.error(f"Error processing data: {str(e)}")
        return jsonify({'error': 'Internal server error'}), 500

@functions_framework.cloud_event
def process_pubsub_message(cloud_event):
    """Background Cloud Function to handle Pub/Sub messages."""

    try:
        # Extract message data
        message_data = cloud_event.data.get('message', {})

        if 'data' in message_data:
            # Decode base64 message
            import base64
            decoded_message = base64.b64decode(message_data['data']).decode('utf-8')
            message_json = json.loads(decoded_message)
        else:
            message_json = message_data

        logging.info(f"Received Pub/Sub message: {message_json}")

        # Process the message
        result = process_message(message_json)

        logging.info(f"Message processed successfully: {result}")

    except Exception as e:
        logging.error(f"Error processing Pub/Sub message: {str(e)}")
        raise

@functions_framework.cloud_event
def process_gcs_event(cloud_event):
    """Background Cloud Function to handle GCS object changes."""

    try:
        # Extract bucket and file information
        bucket = cloud_event.data.get('bucket')
        name = cloud_event.data.get('name')
        generation = cloud_event.data.get('generation')
        eventType = cloud_event.type

        logging.info(f"GCS Event: {eventType} for gs://{bucket}/{name} (generation: {generation})")

        if eventType == 'google.storage.object.finalize':
            # Process new file
            process_uploaded_file(bucket, name)
        elif eventType == 'google.storage.object.delete':
            # Handle file deletion
            logging.info(f"File deleted: gs://{bucket}/{name}")

    except Exception as e:
        logging.error(f"Error processing GCS event: {str(e)}")
        raise

def save_to_datastore(data):
    """Save data to Google Cloud Datastore."""
    try:
        client = datastore.Client()
        kind = 'ProcessedEvent'

        # Create a new entity
        key = client.key(kind)
        entity = datastore.Entity(key=key)

        # Set entity properties
        entity.update(data)

        # Save the entity
        client.put(entity)

        logging.info(f"Data saved to Datastore with key: {entity.key}")

    except Exception as e:
        logging.error(f"Error saving to Datastore: {str(e)}")

def process_message(message):
    """Process incoming Pub/Sub message."""
    # Add your business logic here
    return {
        'processed': True,
        'message_type': message.get('type', 'unknown'),
        'timestamp': datetime.utcnow().isoformat()
    }

def process_uploaded_file(bucket_name, file_name):
    """Process uploaded file in GCS."""
    try:
        client = storage.Client()
        bucket = client.bucket(bucket_name)
        blob = bucket.blob(file_name)

        # Get file metadata
        blob.reload()
        file_size = blob.size
        content_type = blob.content_type

        logging.info(f"Processing file: {file_name} ({file_size} bytes, {content_type})")

        # Add file processing logic here
        if content_type and content_type.startswith('image/'):
            # Process image
            process_image_file(bucket_name, file_name)
        elif content_type and 'csv' in content_type:
            # Process CSV file
            process_csv_file(bucket_name, file_name)

    except Exception as e:
        logging.error(f"Error processing uploaded file: {str(e)}")

def process_image_file(bucket_name, file_name):
    """Process uploaded image file."""
    # Add image processing logic
    logging.info(f"Processing image: {file_name}")
    # e.g., resize, add watermark, generate thumbnails

def process_csv_file(bucket_name, file_name):
    """Process uploaded CSV file."""
    # Add CSV processing logic
    logging.info(f"Processing CSV: {file_name}")
    # e.g., parse data, save to database

# Environment configuration helper
def get_config():
    """Get configuration from environment variables."""
    return {
        'project_id': os.getenv('GCP_PROJECT'),
        'environment': os.getenv('ENVIRONMENT', 'development'),
        'log_level': os.getenv('LOG_LEVEL', 'INFO')
    }
ConfiguraciónyamlComplejo

Integración de API Gateway Serverless

Configuración de API Gateway para funciones serverless

Dificultad

9/10

Tiempo estimado

35 min

Etiquetas

serverless, api gateway, cloudformation, sam

Requisitos previos

AWS CloudFormation knowledge, API Gateway concepts

yaml
# AWS API Gateway with Lambda Integration
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Serverless API with API Gateway

Globals:
  Function:
    Timeout: 30
    MemorySize: 256
    Runtime: python3.9

Parameters:
  Stage:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - staging
      - prod
    Description: Deployment stage

Resources:
  # API Gateway REST API
  ApiGatewayRestApi:
    Type: AWS::Serverless::Api
    Properties:
      Name: !Sub '${AWS::StackName}-api-${Stage}'
      StageName: !Ref Stage
      DefinitionUri: s3://api-definition-bucket/openapi.yaml
      Variables:
        LambdaFunctionName: !Ref MyApiFunction
      Cors:
        AllowMethods: "'GET,POST,PUT,DELETE,OPTIONS'"
        AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
        AllowOrigin: "'*'"

  # Lambda Functions
  MyApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub '${AWS::StackName}-api-${Stage}'
      CodeUri: src/
      Handler: app.lambda_handler
      Runtime: python3.9
      Environment:
        Variables:
          TABLE_NAME: !Ref DataTable
          REGION: !Ref AWS::Region
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref DataTable
      Events:
        ApiEvents:
          Type: Api
          Properties:
            RestApiId: !Ref ApiGatewayRestApi
            Path: /{proxy+}
            Method: ANY

  # DynamoDB Table
  DataTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: !Sub '${AWS::StackName}-data-${Stage}'
      AttributeDefinitions:
        - AttributeName: id
          AttributeType: S
        - AttributeName: type
          AttributeType: S
      KeySchema:
        - AttributeName: id
          KeyType: HASH
        - AttributeName: type
          KeyType: RANGE
      BillingMode: PAY_PER_REQUEST
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true

  # Lambda Authorizer
  ApiAuthorizer:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub '${AWS::StackName}-authorizer-${Stage}'
      CodeUri: authorizer/
      Handler: authorizer.lambda_handler
      Runtime: python3.9
      Environment:
        Variables:
          JWT_SECRET: !Ref JwtSecret
      Policies:
        - Statement:
            Effect: Allow
            Action:
              - secretsmanager:GetSecretValue
            Resource: !Sub arn:aws:secretsmanager:${AWS::Region}:${AWS::AccountId}:secret:${JwtSecret}*

  # Custom Domain
  ApiDomainName:
    Type: AWS::ApiGateway::DomainName
    Properties:
      DomainName: !Sub 'api-${Stage}.example.com'
      EndpointConfiguration:
        Types:
          - REGIONAL
      RegionalCertificateArn: !Ref SslCertificate
      SecurityPolicy: TLS_1_2

  # API Gateway Base Path Mapping
  BasePathMapping:
    Type: AWS::ApiGateway::BasePathMapping
    Properties:
      DomainName: !Ref ApiDomainName
      RestApiId: !Ref ApiGatewayRestApi
      Stage: !Ref Stage

  # CloudWatch Log Group
  ApiLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Sub '/aws/lambda/${MyApiFunction}'
      RetentionInDays: 30

# Output values
Outputs:
  ApiEndpoint:
    Description: API Gateway endpoint URL
    Value: !Sub 'https://${ApiGatewayRestApi}.execute-api.${AWS::Region}.amazonaws.com/${Stage}'

  ApiFunction:
    Description: Lambda function ARN
    Value: !GetAtt MyApiFunction.Arn

  TableName:
    Description: DynamoDB table name
    Value: !Ref DataTable

# OpenAPI Specification for API Gateway
# openapi.yaml
openapi: 3.0.0
info:
  title: Serverless API
  version: 1.0.0
  description: Serverless API with Lambda backend

servers:
  - url: https://{domain}/prod
    variables:
      domain:
        default: api.example.com

paths:
  /health:
    get:
      summary: Health check endpoint
      responses:
        '200':
          description: API is healthy
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  timestamp:
                    type: string

  /users:
    get:
      summary: Get all users
      security:
        - ApiKeyAuth: []
      responses:
        '200':
          description: List of users
    post:
      summary: Create new user
      security:
        - ApiKeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '201':
          description: User created
        '400':
          description: Invalid input

  /users/{userId}:
    get:
      summary: Get user by ID
      security:
        - ApiKeyAuth: []
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: User details
        '404':
          description: User not found
    put:
      summary: Update user
      security:
        - ApiKeyAuth: []
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
      responses:
        '200':
          description: User updated
        '404':
          description: User not found
    delete:
      summary: Delete user
      security:
        - ApiKeyAuth: []
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: User deleted
        '404':
          description: User not found

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

  schemas:
    User:
      type: object
      required:
        - name
        - email
      properties:
        id:
          type: string
          readOnly: true
        name:
          type: string
        email:
          type: string
          format: email
        role:
          type: string
          enum: [user, admin]
          default: user

Herramientas

Herramientas que suelen usarse con este ejemplo

Relacionado

Colecciones de ejemplos relacionadas

Guía de uso de la herramienta

Contexto para entender esta colección de ejemplos

Título

Ejemplos de Arquitectura Serverless

Descripción

Ejemplos de computación serverless con AWS Lambda, Azure Functions y Google Cloud Functions

Resumen

Ejemplos de computación serverless con AWS Lambda, Azure Functions y Google Cloud Functions

Cuándo usarlo

  • Use this sample set when you want reference inputs for Ejemplos de Arquitectura Serverless.
  • Use it to preview output formats and compare related sample variants.

Cómo funciona

  1. 1Open a sample entry to inspect the prepared example payload or asset.
  2. 2Compare it with related tools to understand how the workflow connects.

Casos de uso

  • AWS Lambda Hello World
  • Configuración de Serverless Framework
  • Azure Functions con C#
  • Google Cloud Functions con Python
  • Integración de API Gateway Serverless

Preguntas frecuentes

What is included in Ejemplos de Arquitectura Serverless?

This page includes curated sample entries, related tools, and neighboring sample collections for Ejemplos de Arquitectura Serverless.

Inicio
Herramientas3197
Ejemplos593
Visualizaciones461
Visores de archivos103
Temas229
Etiquetas333
Imágenes, audio y video655

Herramientas de procesamiento, conversión y optimización de imágenes, audio y video

Matemáticas, fechas y finanzas644

Calculadoras, herramientas numéricas, lógica de fechas, estadística y finanzas

Diseño y color296

Herramientas de color, maquetación, gráficos, estilo visual y apoyo al diseño

Texto y redacción209

Herramientas de redacción, limpieza, formato, extracción y análisis de texto

Desarrollo y Web193

Utilidades para desarrolladores, red, depuración web y automatización

Conversión y codificación175

Herramientas de conversión de formatos, archivos, unidades, archivos comprimidos y codificación

Estructurar una captura de interfaz, revisarla y entregarla a desarrollo
Boceto de piano, revisión MIDI y entrega de una maqueta de escucha
Revisión de texturas retro y entrega de recursos
Revisión y entrega de guías de procedimiento con capturas
Revisión visual de un rediseño adaptable y entrega de evidencias

© 2026 Elysia Tools. Todos los derechos reservados.

DocumentaciónPreciosAcerca deTérminos de servicioPolítica de privacidadCookiesContacto

Development

Diff semántico de archivos de configuración

Compara configuraciones JSON, YAML, TOML y dotenv por ruta de clave, ignorando el orden y el ruido de formato.

Development

Visualizador de diferencias de configuracion

Compara configuraciones JSON, YAML, TOML y ENV entre entornos, resaltando drift, claves faltantes y sugerencias de limpieza.

Format Conversion

Conversor HCL-YAML

Convierte entre HashiCorp Configuration Language (HCL) y formatos YAML para configuraciones de Terraform

Data Processing

Estudio de consultas y transformaciones JSONata

Previsualiza consultas y transformaciones estilo JSONata, compara resultados y exporta en JSON, CSV, YAML o Markdown.

Development

OpenAPI a Postman Collection

Convierte una spec OpenAPI 3.x o Swagger 2.0 (JSON/YAML) en una Postman Collection v2.1.0 importable con carpetas, variables, auth y respuestas de ejemplo.

Format Conversion

Puente de formatos de configuración: TOML / INI / HCL / .env / Nix / dotenv / ConfigMap / Secret de Kubernetes

Convierte configuraciones entre dotenv .env, TOML, INI, Java .properties, YAML, JSON, HCL (sintaxis nativa de Terraform/Vagrant) y atributos Nix, y genera manifiestos ConfigMap / Secret de Kubernetes; conserva los marcadores ${VAR} / {{var}} y la interpolación estilo envsubst, registra el origen de la inferencia de tipos (string/int/float/bool/list), pliega las etiquetas de bloques HCL en claves anidadas y un diff de ida y vuelta destaca los ajustes no equivalentes (claves perdidas, cambios de tipo, valores reescritos), con YAML apto para parches de Kustomize.

Format Conversion

Conversor TOML-YAML

Convierte entre formatos TOML y YAML con soporte para estructuras de datos complejas y archivos de configuración

Format Conversion

Formateador YAML

Formatea y embellece YAML. Nota: los comentarios se pierden (limitación de js-yaml)

Observabilidad

Muestras de Trazado Distribuido

Ejemplos completos de trazado distribuido usando Jaeger, OpenTelemetry y herramientas de observabilidad modernas

Monitoreo

Muestras Avanzadas de Grafana

Muestras comprensivas de Grafana cubriendo diseño avanzado de dashboards, configuración de alertas, integración de fuentes de datos y desarrollo de plugins

Computación en la nube

Ejemplos DigitalOcean

Ejemplos de DigitalOcean incluyendo Droplets, Kubernetes, Spaces y App Platform

Computación en la nube

Ejemplos Linode Cloud Service

Ejemplos de Linode incluyendo instancias, Object Storage, Load Balancers y Kubernetes

Observabilidad y monitoreo

Monitoreo Prometheus

Ejemplos completos de monitoreo y alertas de Prometheus incluyendo exportadores de métricas personalizadas, configuración de reglas de alerta, consultas PromQL e integración con dashboards de Grafana

Servicios en la nube

Ejemplos de AWS EventBridge

Ejemplos de AWS EventBridge incluyendo buses de eventos, reglas, objetivos, registro de esquemas, eventos personalizados y enrutamiento de eventos entre cuentas para arquitectura serverless event-driven