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.
Optimice su agente para Amazon Bedrock AgentCore Runtime V2
Amazon Bedrock AgentCore Runtime V2 inicia su agente restaurando una instantánea. Esto cambia la forma de estructurar el código del agente. El trabajo que realiza el agente al inicio se captura en la instantánea y todas las instancias restauradas lo comparten. En su lugar, genere cualquier valor que deba diferir entre las solicitudes o que pueda caducar en su controlador de solicitudes. En este tema, se describe cómo estructurar el agente en función del trabajo inicial y el trabajo por solicitud para que se mantenga correcto después de cada restauración. Para obtener información general sobre la versión V2 de la plataforma, consulte Versiones de la plataforma.
Su agente tiene dos contextos de ejecución:
- Startup
-
Código que se ejecuta una vez al iniciar el proceso, antes de que AgentCore Runtime tome la instantánea. AgentCore Runtime captura este código en la instantánea y cada instancia hereda sus resultados.
- Gestión de solicitudes
-
El código de tu
/invocationscontrolador. Este código se ejecuta en todas las solicitudes de todas las instancias.
Usa una regla para decidir a dónde pertenece el código. Calcule un valor al inicio si permanece igual durante toda la vida de la instantánea. Cómplelo en su controlador si varía según la solicitud o si puede caducar. AgentCore Runtime toma una instantánea por versión del agente y la usa hasta que se crea o actualiza el agente, por lo que la duración de la instantánea es la vida de esa versión.
Inicialice una vez al inicio
Realice trabajos costosos y reutilizables cuando comience el proceso, antes de la instantánea. Por ejemplo, importe las dependencias, cargue los pesos del modelo o lea la configuración estática de su paquete de implementación. Con el AgentCore SDK, realice este trabajo en el ámbito del módulo, antes de llamar. app.run() El agente no escucha en el puerto 8080 hasta que app.run() se ejecuta, por lo que no se /ping puede ejecutar correctamente y no se puede tomar ninguna instantánea hasta que finalice el trabajo de inicio. La instantánea captura un agente completamente inicializado por construcción y no es necesario conectarlo. /ping Complete la inicialización a los 120 segundos del inicio. Si el agente no se recupera a tiempo, el motor de ejecución no pasa la comprobación de estado. Para obtener más información sobre los /invocations terminales /ping y los terminales, consulte Comprender el contrato AgentCore de servicio Runtime.
import json, pathlib from bedrock_agentcore.runtime import BedrockAgentCoreApp # Runs once at import, before app.run() starts the server and before the # snapshot. Every restored instance inherits these objects. MODEL = load_model_weights() SETTINGS = json.loads((pathlib.Path(__file__).parent / "agent.json").read_text()) app = BedrockAgentCoreApp() @app.entrypoint def invoke(payload): # Per-request work runs here on every instance. ... app.run() # starts listening on 8080; the snapshot is taken after this
Si su agente ejecuta su propio servidor HTTP en lugar del AgentCore SDK, notifique que su estado es correcto /ping solo cuando se complete la inicialización, de modo que la instantánea capture un agente completamente inicializado.
Datos de solo lectura al inicio, que son los mismos para todas las instancias y no caducan. Gestione los valores urgentes, como las credenciales de corta duración, en su controlador.
nota
Al inicio, no calcule nada que modifique sin volver a implementarlo. Por ejemplo, un catálogo de herramientas extraído de AgentCore Gateway parece un valor de inicio ideal porque es lento y caro de cargar, pero guardarlo en caché durante el inicio congela el inventario de herramientas del agente en el momento de la instantánea.
Mantenga actualizado el estado de cada solicitud
La instantánea se captura una vez y cada instancia restaurada la comparte, por lo que cualquier valor que el agente genere al inicio es idéntico en todas las instancias y se fija en el momento de la instantánea. Gestiona los valores que la instantánea no puede incluir en tu /invocations controlador. En la siguiente tabla, se describen los valores que debes calcular en tu controlador en lugar de al inicio.
| Para ello | Hazlo en el controlador | Motivo |
|---|---|---|
|
Genere valores, identificadores o tokens aleatorios |
Llame |
|
|
Lea la hora actual |
Cómplelo para cada solicitud |
La marca de tiempo capturada al inicio se fija en el momento de la instantánea. |
|
Mida el tiempo transcurrido |
Toma la marca de tiempo de referencia en tu controlador |
|
|
Usa credenciales o tokens |
Actualízalos cuando caduquen |
Las credenciales cargadas al inicio pueden caducar antes de que se inicie una instancia. |
|
Identifique la instancia o el trabajador |
Genere un identificador por solicitud; no lo derive del host |
Todas las instancias restauradas muestran el mismo nombre de host ( |
Crea clientes reutilizables desde el inicio y calcula los valores por solicitud en cada llamada.
import os, time # Build reusable clients at startup, before the snapshot. Exercise them here too # (for example, with a warm-up call) so the setup the client caches — endpoint and # credential resolution, connection pool — is captured in the snapshot. client = build_client() warm_up(client) @app.entrypoint def invoke(payload): creds = get_credentials() # refreshed when expired, not read at startup request_id = os.urandom(16).hex() # unique per request now = time.time() # current time, not snapshot time # Handle the request.
Utilice bibliotecas criptográficas seguras para instantáneas
Cuando AgentCore Runtime restaura una instancia a partir de una instantánea, una biblioteca criptográfica que haya almacenado en caché un estado aleatorio al inicio puede reutilizar ese estado en varias instancias. Las bibliotecas criptográficas deben usar una compilación segura para instantáneas (snapsafe) que se vuelva a iniciar después de una restauración.
- Implementaciones directas de código
-
La imagen base administrada por el servicio ya incluye una compilación de sus bibliotecas criptográficas segura para instantáneas, por lo que no es necesario que realice ninguna acción al respecto.
- Bring-your-own bibliotecas criptográficas
-
Si incluyes tus propias bibliotecas criptográficas, por ejemplo, en un agente contenedor, usa compilaciones seguras para que se vuelvan a crear después de una restauración. En Amazon Linux 2023, utilice.
openssl-snapsafe-libs
Red
- Genere clientes desde el primer momento y espere una reconexión transparente
-
El socket que se abre al inicio no sobrevive a una restauración, pero sí lo hace la configuración que la biblioteca cliente almacena en caché (el análisis del modelo de servicio, la resolución de terminales, la resolución de credenciales y el grupo de conexiones). Crea y ejercita tus clientes al inicio, y espera que la primera llamada después de una restauración restablezca la conexión de forma transparente.
- No utilices el nombre de host o el PID como identificador de instancia único
-
Todas las instancias restauradas parten de la misma instantánea y muestran el mismo nombre de host e ID de proceso. Genera un identificador único en cada solicitud.
- Evite vincularse a un puerto de origen fijo
-
Tras una restauración, se restablece la conexión mantenida en el momento de la instantánea y un puerto de origen fijo puede chocar con ese puerto de reemplazo dentro de la instancia. Las instancias restauradas son micromáquinas virtuales independientes con sus propios espacios de nombres de red, por lo que el conflicto se produce dentro de una instancia, no entre ellas.