Ejecuta comandos de shell en sesiones AgentCore de tiempo de ejecución
La InvokeAgentRuntimeCommandoperación permite ejecutar comandos de shell directamente dentro de una sesión AgentCore de Runtime en ejecución y volver a transmitir el resultado HTTP/2. Los comandos se ejecutan en el mismo contenedor, sistema de archivos y entorno que el agente, es decir, en la misma sesión utilizada por. InvokeAgentRuntime Esto permite flujos de trabajo en los que la aplicación utiliza el agente para razonar las tareas y los comandos para operaciones deterministas, como la ejecución de pruebas, las operaciones de git o la configuración del entorno.
Para llamarInvokeAgentRuntimeCommand, necesita bedrock-agentcore:InvokeAgentRuntimeCommand permisos.
Funcionamiento
InvokeAgentRuntimeCommandejecuta un comando de shell dentro del contenedor de una sesión de AgentCore tiempo de ejecución activa y devuelve el resultado.
El mismo agente, la misma sesión
InvokeAgentRuntimeCommandfunciona en el mismo tiempo de ejecución y sesión del agente queInvokeAgentRuntime. No se crean recursos independientes. El agente con el que ha desplegado CreateAgentRuntime acepta tanto las invocaciones del agente como la ejecución de comandos en cualquier sesión activa.
nota
De forma predeterminada, la microVM en tiempo de AgentCore ejecución no incluye herramientas para desarrolladores gitnpm, ni tiempos de ejecución de idiomas. Todas las herramientas de las que dependan tus comandos deben incluirse en la imagen del contenedor (a través del Dockerfile) o instalarse dinámicamente en tiempo de ejecución.
La respuesta es una secuencia de tres tipos de eventos:
| Event | Cuando | Contiene |
|---|---|---|
|
|
Primer fragmento |
Confirma que el comando se inició |
|
|
Durante la ejecución |
Salida de |
|
|
Último trozo |
|
Transmisiones de salida en tiempo real. Los resultados se ven a medida que se ejecutan, no una vez finalizados.
Requisitos previos
-
Permiso de IAM
bedrock-agentcore:InvokeAgentRuntimeCommand -
Un ARN AgentCore de punto final de ejecución válido
nota
Los agentes creados después del 17 de marzo de 2026 admiten la ejecución automática de comandos. Si desplegó su agente antes de esta fecha, debe volver a desplegarlo para actualizar el tiempo de ejecución del agente.
Ejecute un comando
ejemplo
Ejemplo de flujo de trabajo de agente de codificación
Un patrón común es usarlo InvokeAgentRuntime para el razonamiento y InvokeAgentRuntimeCommand para las operaciones deterministas en la misma sesión.
Ejemplo de flujo de trabajo del agente de End-to-end codificación
import boto3 import json client = boto3.client('bedrock-agentcore', region_name='us-west-2') AGENT_ARN = 'arn:aws:bedrock-agentcore:us-west-2:account-id:runtime/my-agent' SESSION_ID = 'session-id-at-least-33-characters-long' def run_command(command, timeout=60): """Helper to run a command and return the exit code.""" response = client.invoke_agent_runtime_command( agentRuntimeArn=AGENT_ARN, runtimeSessionId=SESSION_ID, contentType='application/json', accept='application/vnd.amazon.eventstream', body={'command': command, 'timeout': timeout} ) for event in response.get('stream', []): if 'chunk' in event and 'contentStop' in event['chunk']: return event['chunk']['contentStop'].get('exitCode') return None # Step 1: Invoke the agent to analyze and write a fix response = client.invoke_agent_runtime( agentRuntimeArn=AGENT_ARN, runtimeSessionId=SESSION_ID, payload=json.dumps({"prompt": "Read JIRA-1234 and implement the fix in /workspace"}).encode() ) # Process agent response... # Step 2: Run tests deterministically exit_code = run_command('/bin/bash -c "cd /workspace && npm test"', timeout=300) # Step 3: If tests pass, commit and push if exit_code == 0: run_command('/bin/bash -c "cd /workspace && git checkout -b fix/JIRA-1234"') run_command('/bin/bash -c "cd /workspace && git add -A && git commit -m \'Fix JIRA-1234\'"') run_command('/bin/bash -c "cd /workspace && git push origin fix/JIRA-1234"')
El agente escribe el código. La plataforma ejecuta los comandos. Cada uno hace lo que mejor sabe hacer.
Casos de uso comunes
- Ejecutando suites de prueba
-
Una vez que el agente escriba el código, ejecute el conjunto de pruebas del proyecto como un comando. La respuesta de transmisión le permite detectar los errores de forma temprana y enviar los resultados de errores específicos al agente para que los repita.
/bin/bash -c "cd /workspace && npm test 2>&1" - Operaciones de Git
-
La ramificación, el compromiso y el empuje son operaciones deterministas. Ejecútelas como comandos una vez que el agente complete su trabajo, manteniendo la lógica de control de versiones fuera del LLM.
/bin/bash -c "cd /workspace && git add -A && git commit -m 'Fix issue'" - Instalación de dependencias
-
Inicie el entorno antes de invocar los repositorios de clones del agente, instalar paquetes y configurar las herramientas de compilación. Esta preparación se ejecuta de forma más rápida y fiable mediante comandos directos.
/bin/bash -c "pip install -r requirements.txt" - Construye y compila
-
Compila los pasos y la generación de activos: cualquier cosa con un comando conocido que se ejecute exactamente como se especifica.
/bin/bash -c "cd /workspace && cargo build --release" - Linting y validación
-
Realice comprobaciones de calidad del código como puerta de validación después de que el agente escriba el código, antes de confirmarlo.
/bin/bash -c "cd /workspace && npx eslint src/ --format json" - Inspección ambiental
-
Compruebe el estado del tiempo de ejecución, los paquetes instalados y las herramientas disponibles, lo que resulta útil para depurar los errores de los agentes.
/bin/bash -c "python --version && node --version && git --version" - Operaciones de datos
-
Obtenga conjuntos de datos, cargue los resultados, ejecute transformaciones de datos: operaciones de red y cómputo que se ejecutan más rápido como comandos directos.
/bin/bash -c "aws s3 cp s3://my-bucket/data.csv /workspace/"
Principales opciones de diseño
- One-shot, ejecución no interactiva
-
Cada comando genera un nuevo proceso bash, se ejecuta hasta que se completa (o se agota el tiempo de espera) y regresa. No hay una sesión de shell persistente entre los comandos. Esto coincide con la forma en que los marcos de agentes utilizan la ejecución de comandos: crear un comando, ejecutarlo, leer el resultado y decidir qué hacer a continuación.
- Se acabó la respuesta de streaming HTTP/2
-
La salida llega tal como se produce, no se almacena en búfer hasta que se completa. Los resultados
npm testde una emisión de dos minutos se producen en tiempo real. La aplicación puede detectar un error en los primeros segundos y cancelarla antes de tiempo en lugar de esperar a que se ejecute por completo. - Aislamiento de contenedores
-
Los comandos se ejecutan dentro del mismo contenedor que el código del agente. Ven el mismo sistema de archivos, variables de entorno y paquetes instalados. Un archivo en el que escribió el agente
/workspace/fix.pyes visible inmediatamente para un comando en ejecución.cat /workspace/fix.py - Non-blocking al tiempo de ejecución
-
La ejecución de comandos no bloquea las invocaciones de los agentes. Puede invocar el agente y ejecutar comandos simultáneamente en la misma sesión. La plataforma gestiona la simultaneidad.
- Sin estado entre comandos
-
Cada comando se inicia de forma nueva, sin historial de comandos ni cambios en las variables de entorno con respecto a los comandos anteriores. Si necesita estado, codifíquelo en el propio comando:.
cd /workspace && export NODE_ENV=test && npm test
Consideraciones de seguridad
sugerencia
Para obtener una vista consolidada de todas las recomendaciones de seguridad en tiempo de ejecución, consulte las mejores prácticas de seguridad para AgentCore Runtime.
importante
Según el modelo de responsabilidad AWS compartida, usted es responsable de la seguridad de los comandos que ejecuta en sus sesiones AgentCore de Runtime. AWS proporciona la infraestructura segura y el aislamiento a nivel de microVM. Usted es responsable de los comandos que ejecuta, de los datos que procesa y de los controles de acceso que configura.
El límite de seguridad para la ejecución de comandos es la microVM. Cada sesión AgentCore de Runtime se ejecuta en una microVM aislada con su propio núcleo, memoria y sistema de archivos. Los comandos que ejecute no pueden acceder a las cargas de trabajo de otros clientes ni escapar del límite de las máquinas virtuales. Sin embargo, dentro de su máquina virtual, los comandos tienen acceso total al sistema de archivos del contenedor y a cualquier credencial o secreto que haya configurado.
Auditoría con registros CloudWatch
AgentCore Runtime envía el ID de solicitud y el comando de entrada al grupo de CloudWatch registros de Amazon Logs de tu agente. Puede usar estos registros para monitorear la actividad de los comandos y mantener un registro de auditoría de los comandos que se ejecutaron en sus sesiones. El resultado de la ejecución de comandos (stdout y stderr) se devuelve a la aplicación y el servicio no lo registra.
Auditoría con CloudTrail
AWS CloudTrail registra las llamadas a la InvokeAgentRuntimeCommand API en su cuenta. Cada registro incluye metadatos como la identidad de la persona que llama, la marca de tiempo, la dirección IP de origen y el estado de la respuesta. CloudTrail no registra la carga útil de la solicitud o la respuesta. Se usa CloudTrail para auditar quién ejecutó los comandos y cuándo, y luego se correlaciona con CloudWatch los registros de Logs utilizando el ID de solicitud para ver qué comando se ejecutó.
En el caso de las cargas de trabajo delicadas, considere la posibilidad de implementar controles adicionales, como los siguientes:
-
Utilizar las políticas de IAM para restringir los directores que pueden llamar
InvokeAgentRuntimeCommand -
Configuración de puntos finales de VPC para mantener el tráfico dentro de la red
-
Configuración de alarmas y filtros métricos de CloudWatch Logs para detectar patrones de comandos inesperados
-
Revisar CloudTrail los registros con regularidad para detectar intentos de acceso no autorizados
Gestión de errores
Al utilizar la InvokeAgentRuntimeCommand operación, es posible que se produzcan los siguientes errores:
- ValidationException
-
Se produce cuando los parámetros de la solicitud no son válidos. Compruebe que el ARN, el ID de sesión y el comando de su agente estén formateados correctamente. El comando debe tener entre 1 byte y 64 KB, el tiempo de espera debe estar entre 1 y 3600 segundos y el ID de sesión debe tener al menos 33 caracteres.
- ResourceNotFoundException
-
Se produce cuando no se encuentra la sesión o el tiempo de ejecución del agente especificado. Compruebe que el ARN del agente es correcto y que la sesión está activa.
- AccessDeniedException
-
Se produce cuando no se tienen los permisos necesarios. Asegúrese de que su política de IAM incluya el
bedrock-agentcore:InvokeAgentRuntimeCommandpermiso. - ThrottlingException
-
Se produce cuando se supera el límite de velocidad de solicitudes de 25 TPS. Implemente una lógica de retroceso exponencial y reintento en su aplicación.
Un comando que se complete con un código de salida distinto de cero no constituye un error de API. Active esta casilla exitCode en contentStop este caso para determinar si el comando en sí se ha realizado correctamente. Un valor status de TIMED_OUT indica que el comando ha superado el tiempo de espera especificado.
Prácticas recomendadas
Siga estas prácticas recomendadas al utilizar la InvokeAgentRuntimeCommand operación:
-
InvokeAgentRuntimeCommandUtilícela para operaciones deterministas (pruebas, git, compilaciones) yInvokeAgentRuntimepara tareas de razonamiento. No dirija las operaciones deterministas a través del LLM. -
Incluya cualquier herramienta de desarrollador de la que dependan sus comandos (como
gitnpm, o los tiempos de ejecución del idioma) en la imagen del contenedor a través de su Dockerfile. -
Siempre compruébalo
exitCodeencontentStopeste caso para determinar si el comando se ejecutó correctamente. -
Establezca los tiempos de espera adecuados. Un conjunto de pruebas puede necesitar 5 minutos, mientras que
git pushuno solo necesitará 30 segundos. -
Procese la salida de la transmisión de forma incremental para detectar los fallos de forma temprana. Puede cancelar un comando de larga ejecución en lugar de esperar a que se complete.
-
Codifique el estado en el propio comando mediante el
&&encadenamiento (por ejemplocd /workspace && export NODE_ENV=test && npm test), ya que cada comando inicia un nuevo proceso bash. -
Utilice los UUID como ID de sesión para cumplir con el requisito mínimo de 33 caracteres (por ejemplo,).
12345678-1234-1234-1234-123456789012