

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Instrumentación de marcos de trabajo web implementados en entornos sin servidor
<a name="xray-sdk-python-serverless"></a>

**nota**  
Aviso de SDK/Daemon mantenimiento de X-Ray: el 25 de febrero de 2026, el AWS X-Ray SDKs/Daemon entrará en modo de mantenimiento, donde AWS se limitarán las versiones de X-Ray SDK y Daemon para abordar únicamente los problemas de seguridad. Para obtener más información sobre la cronología del soporte, consulte [Cronología de X-Ray SDK y Daemon Support](xray-sdk-daemon-timeline.md). Recomendamos migrar a. OpenTelemetry Para obtener más información sobre la migración a OpenTelemetry, consulte [Migración de una instrumentación de rayos X a una instrumentación](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html). OpenTelemetry 

El SDK de AWS X-Ray para Python admite la instrumentación de marcos web implementados en aplicaciones sin servidor. La arquitectura nativa de la nube carece de servidores, lo que le permite delegar más responsabilidades de gestión en AWS y mejorar la agilidad y la innovación.

La arquitectura sin servidor es un modelo de aplicaciones de software que permite crear y ejecutar aplicaciones y servicios sin preocuparse por los servidores. En esta arquitectura, ya no son necesarias las tareas de administración de la infraestructura, como el aprovisionamiento de servidores o clústeres, la aplicación de parches, el mantenimiento del sistema operativo y el aprovisionamiento de capacidad. Puede crear soluciones sin servidor para prácticamente cualquier tipo de aplicación o servicio de backend. Además, será usted quien se encargue de administrar todo lo necesario para ejecutar y escalar las aplicaciones con alta disponibilidad.

En este tutorial, se muestra cómo AWS X-Ray instrumentar automáticamente un marco web, como Flask o Django, que se implementa en un entorno sin servidor. La instrumentación de rayos X de la aplicación le permite ver todas las llamadas posteriores que se realizan, empezando por Amazon API Gateway y pasando por su AWS Lambda función, y las llamadas salientes que realiza la aplicación. 

El SDK de X-Ray para Python admite los siguientes marcos de trabajo de aplicaciones de Python:
+ Flask versión 0.8 o posteriores
+ Django versión 1.0 o posteriores

En este tutorial se desarrolla un ejemplo de aplicación sin servidor que está implementada en Lambda y se invoca a través de API Gateway. En este tutorial se utiliza Zappa para implementar automáticamente la aplicación en Lambda y para configurar el punto de conexión de API Gateway.

## Requisitos previos
<a name="xray-sdk-python-serverless-prereqs"></a>
+ [Zappa](https://github.com/Miserlou/Zappa)
+ [Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html): versión 2.7 o 3.6.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)— Compruebe que AWS CLI está configurada con la cuenta Región de AWS en la que va a implementar la aplicación. 
+ [Pip](https://pypi.org/project/pip/)
+ [Virtualenv](https://virtualenv.pypa.io/en/latest/)

## Paso 1: crear un entorno
<a name="xray-sdk-python-serverless-environment"></a>

En este paso, va a crear un entorno virtual utilizando `virtualenv` para hospedar la aplicación.

1. Con el AWS CLI, cree un directorio para la aplicación. A continuación, cambie al nuevo directorio. 

   ```
   mkdir {{serverless_application}}
   cd {{serverless_application}}
   ```

1. Cree un entorno virtual en este nuevo directorio. Utilice el comando siguiente para activarlo. 

   ```
   # Create our virtual environment
   virtualenv {{serverless_env}}
   
   # Activate it
   source {{serverless_env}}/bin/activate
   ```

1. Instale X-Ray, Flask, Zappa y la biblioteca de solicitudes en el entorno.

   ```
   # Install X-Ray, Flask, Zappa, and Requests into your environment
   pip install aws-xray-sdk flask zappa requests
   ```

1. Añada el código de la aplicación al directorio `serverless_application`. En este caso, puede utilizar como referencia el ejemplo [Hello World](https://flask.palletsprojects.com/en/3.0.x/quickstart/) de Flasks. 

   En el directorio `serverless_application`, cree un archivo llamado `my_app.py`. A continuación, utilice un editor de texto para añadir los siguientes comandos. Esta aplicación instrumenta la biblioteca de solicitudes, aplica parches en el middleware de la aplicación de Flask y abre el punto de enlace `'/'`.

   ```
   # Import the X-Ray modules
   from aws_xray_sdk.ext.flask.middleware import XRayMiddleware
   from aws_xray_sdk.core import patcher, xray_recorder
   from flask import Flask
   import requests
   
   # Patch the requests module to enable automatic instrumentation
   patcher.patch(('requests',))
   
   app = Flask(__name__)
   
   # Configure the X-Ray recorder to generate segments with our service name
   xray_recorder.configure(service='{{My First Serverless App}}')
   
   # Instrument the Flask application
   XRayMiddleware(app, xray_recorder)
    
   @app.route('/')
   def hello_world():
       resp = requests.get("https://aws.amazon.com")
       return 'Hello, World: %s' % resp.url
   ```

## Paso 2: Crear e implementar un entorno de Zappa
<a name="xray-sdk-python-serverless-zappa"></a>

En este paso, utilizará Zappa para configurar automáticamente un punto de conexión de API Gateway e implementarlo en Lambda.

1. Inicialice Zappa desde dentro del directorio `serverless_application`. En este ejemplo, hemos utilizado la configuración predeterminada. Sin embargo, si tiene sus propias preferencias de personalización, Zappa le mostrará las instrucciones de configuración.

   ```
   zappa init
   ```

   ```
   What do you want to call this environment (default 'dev'): {{dev}}
   ...
   What do you want to call your bucket? (default 'zappa-*******'): {{zappa-*******}}
   ...
   ...
   It looks like this is a Flask application.
   What's the modular path to your app's function?
   This will likely be something like 'your_module.app'.
   We discovered: my_app.app
   Where is your app's function? (default 'my_app.app'): {{my_app.app}}
   ...
   Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]: {{n}}
   ```

1. Habilite X-Ray. Abra el archivo `zappa_settings.json` y compruebe que sea similar al del ejemplo.

   ```
   {
       "dev": {
           "app_function": "my_app.app",
           "aws_region": "us-west-2",
           "profile_name": "default",
           "project_name": "serverless-exam",
           "runtime": "python2.7",
           "s3_bucket": "zappa-*********"
       }
   }
   ```

1. Añada `"xray_tracing": true` como entrada en el archivo de configuración.

   ```
   {
       "dev": {
           "app_function": "my_app.app",
           "aws_region": "us-west-2",
           "profile_name": "default",
           "project_name": "serverless-exam",
           "runtime": "python2.7",
           "s3_bucket": "zappa-*********",
           "xray_tracing": true
       }
   }
   ```

1. Implemente la aplicación . Esto configurará automáticamente el punto de conexión de API Gateway y cargará el código en Lambda.

   ```
   zappa deploy
   ```

   ```
   ...
   Deploying API Gateway..
   Deployment complete!: https://**********.execute-api.us-west-2.amazonaws.com/{{dev}}
   ```

## Paso 3: habilitar el rastreo de X-Ray para API Gateway
<a name="xray-sdk-python-serverless-xray"></a>

En este paso, interactuará con la consola de API Gateway para habilitar el rastreo de X-Ray.

1. Inicie sesión en la consola de API Gateway Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/). 

1. Busque la API que acaba de generar. La URL debería parecerse a esta: `serverless-exam-dev`.

1. Elija **Etapas**.

1. Seleccione el nombre de la etapa de implementación. El valor predeterminado es `dev`.

1. En la pestaña **Logs/Tracing (Registros/rastreo)**, active la casilla **Enable X-Ray Tracing (Habilitar rastreo de X-Ray)**.

1. Elija **Save changes (Guardar cambios)**.

1. Obtenga acceso al punto de enlace a través del navegador. Si utilizó la aplicación `Hello World` de ejemplo, debería aparecer lo siguiente.

   ```
   "Hello, World: https://aws.amazon.com/"
   ```

## Paso 4: Consultar el registro de seguimiento creado
<a name="xray-sdk-python-serverless-trace"></a>

En este paso, interactuará con la consola de X-Ray para ver el rastro creado por la aplicación de ejemplo. Para ver una explicación detallada del análisis del seguimiento, consulte [Uso del mapa de servicio](https://docs.aws.amazon.com/xray/latest/devguide/xray-console.html#xray-console-servicemap).

1. Inicie sesión en la consola de X-Ray Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/xray/casa](https://console.aws.amazon.com/xray/home).

1. Consulte los segmentos generados por API Gateway, la función de Lambda y el contenedor de Lambda.

1. En el segmento de la función de Lambda, consulte un subsegmento llamado `My First Serverless App`. Detrás hay un segundo subsegmento llamado `https://aws.amazon.com`.

1. Durante la inicialización, Lambda podría generar también un tercer subsegmento llamado `initialization`.

![Vista del segmento de seguimiento.](http://docs.aws.amazon.com/es_es/xray/latest/devguide/images/serverless-traceView.png)


![Vista del gráfico de servicio.](http://docs.aws.amazon.com/es_es/xray/latest/devguide/images/serverless-serviceView.png)


## Paso 5: Eliminar
<a name="xray-sdk-python-serverless-cleanup"></a>

Termine siempre los recursos que ya no utilice para evitar que se acumulen costos inesperados. Tal y como se explica en este tutorial, existen herramientas como Zappa que optimizan la implementación sin servidor.

Para eliminar la aplicación de Lambda, API Gateway y Amazon S3, ejecute el siguiente comando en el directorio del proyecto a través de la AWS CLI. 

```
zappa undeploy {{dev}}
```

## Siguientes pasos
<a name="xray-sdk-python-serverless-next"></a>

Añada más funciones a su aplicación añadiendo AWS clientes e instrumentándolos con X-Ray. Consulte más información sobre las opciones de computación sin servidor de [Sin servidor en AWS](https://aws.amazon.com/serverless).