Crear un agente de Agent 365 implementado en Amazon Web Services (AWS)

Descubra cómo compilar, hospedar, registrar y publicar un agente de Agent 365 que se ejecuta en AWS Elastic Beanstalk, usando la CLI de Agent 365. Microsoft Entra y Graph proporcionan la identidad del agente, los permisos y el plano técnico, mientras que AWS Elastic Beanstalk proporciona el tiempo de ejecución.

Si desea apuntar su agente a tu código que se encuentra detrás de un punto de conexión de AWS, solo necesitas el siguiente paso: Configura para hospedaje fuera de Azure. A continuación, siga todos los demás pasos de Comenzar con el desarrollo de Agent 365.

Objetivos

Aprenda a usar Agent 365 y Microsoft 365 como plano de control y:

  • Implementar el entorno de ejecución del agente en AWS Elastic Beanstalk
  • Configurar a365.config.json para hospedaje fuera de Azure
  • Creación de un plano técnico del agente en Entra ID
  • Configurar OAuth2 + permisos heredables
  • Registrar el punto de conexión de mensajería de Bot Framework apuntando a AWS
  • Crear identidad de agente y usuario de agente
  • (Opcional) Publicar en superficies de las aplicaciones de Microsoft 365
  • Probar interacciones de extremo a extremo

Requisitos previos

Antes de comenzar, asegúrese de que se cumplan los siguientes requisitos previos de Azure / Microsoft 365, AWS y entorno local.

Requisitos previos de Azure / Microsoft 365

Confirme el acceso a su inquilino de Microsoft Entra e instale las siguientes herramientas para crear identidades, plantillas y registrar su agente.

Requisitos previos de Amazon Web Services (AWS)

Asegúrese de que los siguientes servicios y herramientas de AWS estén configurados para implementar y administrar su entorno de Elastic Beanstalk.

Requisitos previos para el entorno de desarrollo local

Instale y configure las siguientes herramientas en su entorno local para compilar, ejecutar e implementar el agente.

Crear e implementar un agente .NET

Las siguientes instrucciones describen cómo crear un agente mínimo que:

  • Responde a GET /
  • Acepta actividades de Bot Framework en POST /api/messages

Crear un directorio de proyecto

mkdir aws-a365-agent
cd aws-a365-agent

Inicializar el proyecto .NET

Para agilizar su experiencia, este artículo utiliza una muestra ya preparada. Clonar el repositorio de Agent365 Samples y diríjase al ejemplo dotnet\semantic-kernel\sample-agent.

El agente de ejemplo de Kernel semántico: C#/.NET incluye:

Vaya a dotnet\semantic-kernel\sample-agent y compruebe que el proyecto se compila correctamente:

dotnet restore
dotnet build

Configurar modelo

Sigue las instrucciones en Paso 2: Configuración de LLM para configurar el proyecto usando su clave de API de OpenAI.

Probar localmente (opcional)

  1. Antes de implementar en AWS, pruebe su agente localmente:

    # Run the application
    dotnet run
    
  2. Prueba los puntos de conexión en otro terminal:

    # Test agent endpoint locally
    curl http://localhost:3978
    
  3. Presione Ctrl+C para detener el servidor local.

Compilar e implementar

Seleccione la opción que prefiera para compilar y implementar esta aplicación de ejemplo:

Opción A: Compilar e implementar desde Visual Studio

Utilice el AWS Toolkit para Visual Studio para publicar la app en Elastic Beanstalk usando un asistente guiado.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto.

  2. Seleccione Publicar en AWS Elastic Beanstalk.

  3. Siga el Asistente para implementación de Beanstalk:

    • Elija su perfil de credenciales de AWS.
    • Seleccione Región (por ejemplo, us-east-1).
    • Seleccione Plataforma (.NET Core on Linux).
    • Configure la configuración del entorno.
  4. Seleccione Implementar.

El asistente crea, empaqueta e implementa su aplicación en AWS.

Opción B: Compilar e implementar en AWS Elastic Beanstalk con CLI

Utilice la CLI de Elastic Beanstalk para empaquetar e implementar el agente .NET en un entorno de Amazon Linux 2 de 64 bits. Asegúrese de que la CLI de AWX y la CLI de EB estén configuradas. La aplicación se vincula a la variable de entorno PORT establecida por Beanstalk.

  1. Compile y publique su aplicación .NET:

    # Publish for Linux runtime (AWS Elastic Beanstalk uses Amazon Linux)
    dotnet publish -c Release -o ./publish --runtime linux-x64
    

    Cree Procfile con el siguiente contenido.

    web: dotnet ./SemanticKernelSampleAgent.dll
    
  2. Inicialice Elastic Beanstalk para .NET. Se le solicita elegir Región y Plataforma:

    eb init
    
  3. Seleccione:

    • Plataforma: 64bit-amazon-linux-2023-v3.7.0-running-.net-8
    • Región: su región preferida de AWS (por ejemplo: us-east-1)
  4. Cree un paquete de implementación e implemente:

    cd publish
    zip -r ../deploy.zip .
    cd ..
    eb create aws-a365-agent-env
    eb deploy
    

    Este comando:

    • Crea una aplicación Elastic Beanstalk.
    • Crea un entorno con un equilibrador de carga.
    • Implemente su aplicación.
    • Aprovisiona los recursos necesarios de AWS.
  5. Cuando termine, obtenga su punto de conexión de Elastic Beanstalk:

    eb status
    

    Anote su punto de conexión. Tendrá una apariencia similar a la siguiente:

    http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com
    

    Este punto de conexión es el messagingEndpoint utilizado por la CLI de Agent 365 Dev Tools.

Nota

Para entornos de producción, configure HTTPS agregando un certificado SSL/TLS en Elastic Beanstalk. Bot Framework requiere HTTPS para los puntos de conexión de producción.

Configurar para hospedaje fuera de Azure

Cree a365.config.json de forma manual en la carpeta de su proyecto en Elastic Beanstalk:

Importante

Para el hospedaje que no sea de Azure, asigne al valor messagingEndpoint la dirección URL de Elastic Beanstalk, incluyendo la ruta de acceso /api/messages.

El archivo a365.config.json debería ser parecido a lo siguiente:

{
  "tenantId": "YOUR_TENANT_ID",
  "environment": "prod",

  "messagingEndpoint": "http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/api/messages",

  "agentIdentityDisplayName": "MyAwsAgent Identity",
  "agentBlueprintDisplayName": "MyAwsAgent Blueprint",
  "agentUserDisplayName": "MyAwsAgent User",
  "agentUserPrincipalName": "myawsagent@testTenant.onmicrosoft.com",
  "agentUserUsageLocation": "US",
  "managerEmail": "myManager@testTenant.onmicrosoft.com",

  "deploymentProjectPath": ".",
  "agentDescription": "AWS-hosted Agent 365 Agent"
}

La siguiente tabla resume los campos de configuración importantes y su propósito.

Campo Significado
messagingEndpoint Su URL de Elastic Beanstalk + /api/messages
deploymentProjectPath Donde se realiza el estampado de .env

Crear agente de Agent 365

Una vez que el código de su agente se haya ejecutado en un punto de conexión de AWS, siga los pasos restantes de la sección Introducción al desarrollo de Agent 365 para configurar su agente de Agent 365.

Comprobar el agente de un extremo a otro

Utilice estas comprobaciones para confirmar que se puede acceder a su agente hospedado en AWS, que recibe actividades de Bot Framework y que responde correctamente en todas las superficies de Agent 365.

Comprobar la conectividad de Elastic Beanstalk

Envíe una solicitud GET a su punto de conexión de Elastic Beanstalk.

curl http://aws-a365-agent-env.us-east-1.elasticbeanstalk.com/

La solicitud debería devolver este mensaje:

AWS Agent is running.

Consultar los registros de Elastic Beanstalk para mensajes entrantes de Bot Framework

Utilice los registros de Elastic Beanstalk para comprobar que su agente está recibiendo actividades de Bot Framework y respondiendo correctamente.

eb logs

O visualice los registros en tiempo real:

eb logs --stream

Una vez que un mensaje llegue a su agente, verá:

POST 200 /api/messages
Received activity: { ... }

Probar agente de las superficies de Agent 365

En función de tu entorno, puede probar su agente desde diferentes superficies:

  • Área de juegos de agentes
  • Teams (si está publicado)
  • Shell de agente
  • Superficies federadas

Puede enviar mensajes y comprobar sus registros de Elastic Beanstalk. Aprende cómo probar agentes utilizando el SDK de Microsoft Agent 365 y validar la funcionalidad del agente con la herramienta de pruebas Agents Playground.

Flujo de trabajo del desarrollador

Una vez completada la configuración, siga este flujo de trabajo para el desarrollo iterativo:

Desarrollo y prueba localmente

Utilice el modo de observación para un desarrollo rápido con recarga automática:

# Automatically rebuild and restart on file changes
dotnet watch run

Realice sus cambios de código, guarde y pruebe localmente antes de implementar.

Compilar y volver a implementar en AWS Elastic Beanstalk

Cuando esté listo para implementar los cambios:

# Clean previous builds (optional but recommended)
dotnet clean

# Publish optimized release build
dotnet publish -c Release -o ./publish --runtime linux-x64

# Create deployment package
cd publish
zip -r ../deploy.zip .
cd ..

# Deploy to AWS
eb deploy

Pruebas y supervisión

Realice pruebas utilizando las superficies de Agent 365 y supervise los registros de Elastic Beanstalk:

# Stream logs in real-time
eb logs --stream

No necesita volver a crear su identidad, plano técnico, punto de conexión del bot ni permisos.

Solución de problemas

Utilice esta sección para diagnosticar y resolver problemas comunes al implementar y ejecutar un Agent 365 en AWS Elastic Beanstalk. Abarca la conectividad y los controles de estado. También aborda la asignación de puertos, errores de compilación y problemas de licencias.

Sugerencia

La Guía de solución de problemas de Agent 365 contiene recomendaciones generales, procedimientos recomendados y vínculos a recursos de solución de problemas para cada parte del ciclo de vida del desarrollo de Agent 365.

El punto de conexión de mensajería no está recibiendo solicitudes

Comprueba los siguientes datos:

  • Su punto de conexión es exactamente:
    http://<your-app>.elasticbeanstalk.com/api/messages
  • Su entorno de Elastic Beanstalk es correcto. Realice la comprobación usando eb health.
  • Su grupo de seguridad permite tráfico HTTP o HTTPS entrante.
  • No hay reglas de firewall ni restricciones de VPC.

Problemas de estado de la aplicación

Comprobar el estado del entorno:

eb health --refresh

Ver registros detallados:

eb logs

Problemas de vinculación de puertos

Asegúrese de que su aplicación escuche en el puerto especificado por la variable de entorno PORT. Elastic Beanstalk establece este valor automáticamente.

Problemas de compilación o de tiempo de ejecución en .NET

Compruebe si hay errores de compilación utilizando estos comandos:

# Clean and rebuild
dotnet clean
dotnet build --verbosity detailed

Compruebe la versión de .NET:

dotnet --version
dotnet --list-sdks

Compruebe si hay problemas con los paquetes:

# List installed packages
dotnet list package

# Update packages
dotnet restore --force

Error en la asignación de licencias

Asigne manualmente una licencia válida de Microsoft 365, o utilice una ruta para usuarios sin licencia si está permitido.