Implemente agentes de IA en Amazon Bedrock AgentCore mediante GitHub Actions

Recientemente, AWS anunció Amazon Bedrock AgentCore, un servicio flexible que ayuda a los desarrolladores a crear y administrar sin problemas agentes de IA en diferentes marcos y modelos, ya sea alojados en Amazon Bedrock u otros entornos. Específicamente, AgentCore Runtime proporciona un entorno de alojamiento seguro, sin servidor y diseñado específicamente para implementar y ejecutar agentes o herramientas de IA. AgentCore Runtime es independiente del marco y funciona a la perfección con marcos populares como LangGraph, Strands y CrewAI para implementar sus agentes y herramientas de IA con escalado automático y seguridad integrada.

En esta publicación, demostramos cómo utilizar un flujo de trabajo de GitHub Actions para automatizar la implementación de agentes de IA en AgentCore Runtime. Este enfoque ofrece una solución escalable con controles de seguridad a nivel empresarial, proporcionando automatización completa de integración y entrega continua (CI/CD). Al implementar una canalización integral, permitimos una implementación perfecta de agentes con las mejores prácticas de AWS, incluida la autenticación OpenID Connect (OIDC), controles de acceso con privilegios mínimos y separación de entornos. Nuestra solución facilita actualizaciones eficientes para los agentes existentes e integra escaneos de seguridad continuos y rigurosos controles de calidad del código. El resultado es una estrategia de implementación sólida que ayuda a minimizar la complejidad operativa, mejorar la seguridad y acelerar el desarrollo de agentes de IA en entornos empresariales.

Beneficios del tiempo de ejecución de Amazon Bedrock AgentCore

AgentCore Runtime es el servicio ideal para implementaciones de agentes de producción:

Proporciona un entorno independiente del marco para ejecutar sus agentes Funciona con modelos de lenguaje de gran tamaño (LLM), como los modelos ofrecidos por Amazon Bedrock y Anthropic Claude Proporciona aislamiento de sesiones ejecutando cada sesión de usuario en una microVM dedicada con CPU, memoria y recursos de sistema de archivos aislados Admite interacciones en tiempo real y cargas de trabajo de larga duración de hasta 8 horas Ofrece capacidades integradas para autenticación y observabilidad

Descripción general de la solución

Hemos desarrollado un canal de CI/CD integral con GitHub Actions que agiliza la implementación de agentes de conformidad con el estándar de seguridad. La canalización está disponible como una solución lista para usar que puede integrarse perfectamente con su flujo de trabajo de desarrollo existente. La solución consta de los siguientes componentes clave:

El siguiente diagrama ilustra la arquitectura de la solución.

El flujo de datos consta de los siguientes pasos:

Un desarrollador envía cambios de código desde su repositorio local al repositorio de GitHub. En esta solución, la acción de GitHub se activa manualmente, pero se puede automatizar. La acción de GitHub desencadena la etapa de construcción. OIDC de GitHub utiliza tokens para autenticarse con AWS y acceder a recursos. GitHub Actions invoca el comando para crear y enviar la imagen del contenedor del agente a Amazon ECR directamente desde Dockerfile. AWS Inspector activa un análisis de seguridad avanzado cuando se carga la imagen. Se crea una instancia de AgentCore Runtime utilizando la imagen del contenedor. El agente puede consultar además el modelo de Amazon Bedrock e invocar herramientas según su configuración.

En las siguientes secciones, explicamos los pasos para implementar la solución:

Descargue el código fuente del repositorio de GitHub. Crea tu código de agente. Configurar secretos de GitHub. Cree una función y políticas de IAM. Cree el flujo de trabajo de acciones de GitHub. Activar y monitorear la tubería. Verifique la implementación.

Requisitos previos

Antes de poder utilizar nuestra canalización CI/CD segura para implementar agentes en AgentCore Runtime, verifique que cumpla con los siguientes requisitos previos:

Descargar código fuente

Clona el repositorio de código fuente: bedrock-agentcore-runtime-cicd

clon de git https://github.com/aws-samples/sample-bedrock-agentcore-runtime-cicd.git

La carpeta del repositorio consta de la siguiente estructura:

bedrock-agentcore-runtime-cicd/ ├── .github/ │ └── flows/ │ └── implementar-agentcore.yml # el archivo contiene el conjunto de acciones para construir e implementar el agente en AgentCore Runtime │ └── test-agent.yml # después de la implementación, este archivo se usa para probar el agente mediante envío de flujo de trabajo manual ├── agentes/ │ ├── strands_agent.py # usa la aplicación BedrockAgentCoreApp que crea un agente de IA usando el marco Strands con Claude como modelo subyacente │ ├── requisitos.txt # contiene dependencias ├── scripts │ ├── create_iam_role.py # rol de IAM requerido para Bedrock AgentCore Runtime │ ├── implementar_agent.py # implementa un agente personalizado en la plataforma AgentCore Runtime de AWS Bedrock, que le permite ejecutar agentes de IA en contenedores en la infraestructura de AWS │ └── setup_oidc.py # configuración OIDC para autenticación y autorización de Github para acceder a la cuenta de AWS para implementar los servicios requeridos │ └── cleanup_ecr.py # mantiene 9 imágenes recientes en el registro ECR, se puede personalizar │ └── create_guardrail.py # configura una barrera de seguridad mínima para el filtrado de contenido, se puede personalizar según el caso de uso │ └── test_agent.py # contiene casos de prueba └── Dockerfile # contiene instrucciones para crear una imagen de Docker └── LÉAME.md

Crear código de agente

Cree su agente con el marco de su elección utilizando el kit de herramientas AgentCore Runtime. El kit de herramientas utiliza BedrockAgentCoreApp para crear una aplicación que proporciona una forma estandarizada de empaquetar el código de su agente de IA en un contenedor que puede ejecutarse en la infraestructura administrada de AgentCore Runtime. También utiliza app.entrypoint, un decorador de Python que marca una función como punto de entrada principal. Cuando el agente de Amazon Bedrock recibe la solicitud de API entrante, esta función recibe y procesa la solicitud del usuario. En este código de agente de muestra, cuando alguien llama a su agente de Amazon Bedrock mediante una API, AgentCore Runtime llamará automáticamente a la función strands_agent_bedrock(carga útil).

En esta publicación, usamos el archivo agentes/strands_agent.py para crear un agente usando el marco de Strands Agents:

""" Este módulo define un agente de IA conversacional que puede realizar cálculos utilizando el marco de Strands. """ de bedrock_agentcore.runtime import BedrockAgentCoreApp de strands import Agent de strands.models import BedrockModel de strands_tools import calculadora # Inicialice la aplicación de aplicación Bedrock AgentCore = BedrockAgentCoreApp() # Configure el modelo Claude para el agente con guardrail model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0" # Cargar ID de guardarrail si está disponible guardrail_config = Ninguno intente: con open("guardrail_id.txt", "r", encoding="utf-8") as f: guardrail_id = f.read().strip() if guardrail_id: guardrail_config = { "guardrailIdentifier": guardrail_id, "guardrailVersion": "1", } print(f"Guardrail cargado: {guardrail_id}") excepto FileNotFoundError: print("No se encontró ningún archivo de guardarrail – ejecutándose sin guardarrail") model = BedrockModel(model_id=model_id, guardrail=guardrail_config) # Crea el agente con herramientas y sistema de aviso agente = Agente( modelo=modelo, herramientas=[calculadora], system_prompt="Eres un asistente útil. Puedes hacer cálculos matemáticos simples.", ) @app.entrypoint def strands_agent_bedrock(payload): """ Punto de entrada principal para Bedrock AgentCore Runtime. AWS Bedrock AgentCore llama a esta función cuando el agente recibe una solicitud. Procesa la entrada del usuario y devuelve la respuesta del agente. Args: payload (dict): Solicitud de carga útil que contiene la entrada del usuario Formato esperado: {"prompt": "user question"} Devuelve: str: La respuesta de texto del agente al mensaje del usuario """ # Extrae el mensaje del usuario de la carga útil user_input = payload.get("prompt") # Procesa la entrada a través del agente (maneja la selección de herramientas y la inferencia del modelo) respuesta = agente(user_input) # Extrae y devuelve el contenido de texto de la respuesta return respuesta.message["content"][0]["text"] if __name__ == "__main__": # Ejecute la aplicación localmente para realizar pruebas # En producción, esto lo maneja Bedrock AgentCore Runtime app.run()

Configurar secretos de GitHub

El flujo de trabajo de GitHub Actions debe acceder a los recursos de su cuenta de AWS. En esta publicación, utilizamos un proveedor de identidad IAM OpenID Connect y roles de IAM con políticas de IAM para acceder a los recursos de AWS. OIDC permite que sus flujos de trabajo de GitHub Actions accedan a recursos en AWS sin necesidad de almacenar las credenciales de AWS como secretos de GitHub de larga duración. Estas credenciales se almacenan como secretos de GitHub dentro de la Configuración del repositorio de GitHub en la opción Secretos. Para obtener más información, consulte Uso de secretos en GitHub Actions.

Crear roles y políticas de IAM

Para ejecutar agentes o herramientas en AgentCore Runtime, necesita una función de ejecución de IAM. Para obtener información sobre la creación de una función de IAM, consulte Creación de funciones de IAM.

En esta publicación, creamos la política de confianza y el rol de ejecución necesarios para AgentCore Runtime. Consulte Permisos de IAM para AgentCore Runtime para obtener más detalles.

El siguiente código es para la política de confianza de AgentCore Runtime:

{ "Versión": "2012-10-17", "Declaración": [ { "Sid": "AssumeRolePolicy", "Efecto": "Permitir", "Principal": { "Servicio": "bedrock-agentcore.amazonaws.com" }, "Acción": "sts:AssumeRole", "Condición": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:region:accountId:*" } } } ] }

El siguiente código es para la función de ejecución de AgentCore Runtime:

{ "Versión": "2012-10-17", "Declaración": [ { "Efecto": "Permitir", "Acción": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream", "bedrock:Converse", "bedrock:ConverseStream" ], "Recurso": [ "arn:aws:bedrock:*::foundation-model/us.anthropic.claude-sonnet-4-*", "arn:aws:bedrock:*::foundation-model/anthropic.claude-*", "arn:aws:bedrock:*:*:inference-profile/us.anthropic.claude-sonnet-4-*", "arn:aws:bedrock:*:*:inference-profile/anthropic.claude-*" ] }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:::repository/bedrock-agentcore-*" }, { "Efecto": "Permitir", "Acción": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Recurso": "arn:aws:logs:*:*:*" } ] }

Crear el flujo de trabajo de acciones de GitHub

Consulte el archivo de flujo de trabajo de CI/CD en .github/workflows/deploy-agentcore.yml para obtener detalles para crear el flujo de trabajo. El flujo de trabajo realizará los siguientes pasos:

Utiliza el Ubuntu Github Runner predeterminado para la tarea proporcionada en proceso. El flujo de trabajo instala las dependencias requeridas mencionadas en el archivo require.txt. Crea la imagen de Docker y la implementa en el repositorio de ECR. La imagen se escanea con Amazon Inspector para identificar posibles vulnerabilidades. AgentCore Runtime implementa el agente como un punto final. El flujo de trabajo prueba el punto final del agente para verificar la funcionalidad.

Activar y monitorear la canalización

Esta canalización se puede activar cambiando un código en la carpeta de agentes o manualmente usando la opción de envío de flujo de trabajo. Esto podría cambiar aún más según la estrategia de ramificación de su organización. Actualice el código en .github/workflows/deploy-agentcore.yml para cambiar este comportamiento del activador.

Tubería

Pasos detallados

Agente de prueba

Una vez implementado el agente, verificaremos su funcionalidad activando el flujo de trabajo del agente de prueba manualmente mediante la opción de envío de flujo de trabajo.

Canalización de agentes de prueba

Agente de prueba

Control de versiones y puntos finales de AgentCore Runtime

Amazon Bedrock AgentCore implementa control de versiones automático para AgentCore Runtime y le permite administrar diferentes configuraciones mediante puntos finales. Los puntos finales proporcionan una manera de hacer referencia a versiones específicas de AgentCore Runtime. Para obtener más detalles y código de muestra, consulte Puntos finales y versiones de AgentCore Runtime.

Limpiar

Para evitar incurrir en cargos futuros, complete los siguientes pasos:

Elimine las imágenes de ECR de la consola de Amazon ECR creadas mediante la implementación mediante GitHub Actions. Elimine el agente implementado en AgentCore Runtime.

Conclusión

En esta publicación, demostramos un enfoque integral para el uso de GitHub Actions para una implementación más segura y escalable de agentes de IA en AgentCore Runtime. Nuestra solución proporciona un entorno sólido, automatizado y controlado para aplicaciones de IA generativa, abordando desafíos críticos de implementación empresarial al automatizar la gestión de dependencias, implementar controles continuos de calidad del código, realizar un escaneo integral de vulnerabilidades y facilitar procesos de implementación consistentes. Al abstraer las complejidades de la infraestructura, este canal ayuda a los desarrolladores a centrarse en la lógica y la funcionalidad de los agentes, al tiempo que proporciona un enfoque independiente del marco que admite una gestión fluida de múltiples agentes de IA a escala. A medida que los agentes de IA continúan transformando las capacidades empresariales, esta solución representa un paso importante hacia la racionalización del desarrollo de agentes de IA y la gestión operativa, ofreciendo un mecanismo de implementación estandarizado, seguro y eficiente para aplicaciones de IA generativa modernas.

Como siguiente paso, puede utilizar Amazon Q para mejorar y personalizar de forma inteligente su canal de implementación de agentes de IA, transformando sus procesos de CI/CD con una automatización avanzada y consciente del contexto.

Sobre los autores

Prafful Gupta es asociado. Consultor de entrega en AWS con sede en Gurugram, India. Habiendo comenzado su trayectoria profesional en Amazon hace un año, se especializa en soluciones DevOps y IA generativa, ayudando a los clientes a recorrer sus viajes de transformación en la nube. Más allá del trabajo, le gusta establecer contactos con compañeros profesionales y pasar tiempo de calidad con la familia. Conéctese en LinkedIn en: linkedin.com/in/praffulgupta11/

Anshu Bathla es consultor líder – SRC en AWS, con sede en Gurugram, India. Trabaja con clientes de diversos sectores verticales para ayudarlos a fortalecer su infraestructura de seguridad y lograr sus objetivos de seguridad. Fuera del trabajo, Anshu disfruta leer libros y trabajar en el jardín de su casa. Conéctese en LinkedIn en: linkedin.com/in/anshu-bathla/