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.
Introducción al AWS DevOps Agente que usa AWS CDK
Descripción general de
En esta guía se muestra cómo usar el kit de desarrollo AWS en la nube (AWS CDK) para crear e implementar los recursos de los AWS DevOps agentes. La aplicación AWS CDK automatiza la creación de un espacio de agentes, funciones de administración de AWS identidades y accesos (IAM), una aplicación de operador y AWS mediante asociaciones de cuentas. AWS CloudFormation
El enfoque del AWS CDK automatiza los pasos manuales descritos en la guía de incorporación de la CLI al definir todos los recursos necesarios, como infraestructura, como código.
AWS DevOps El agente está disponible en varias regiones. AWS Puede consultar la lista completa e Regiones admitidas.
Requisitos previos
Antes de comenzar, asegúrese de que dispone de lo siguiente:
AWS La interfaz de línea de AWS comandos (CLI) está instalada y configurada con las credenciales adecuadas
Node.js versión 18 o posterior
AWS La interfaz de línea de comandos (CLI) del CDK está instalada globalmente. Para instalar la CLI del AWS CDK, ejecute el siguiente comando:
npm install -g aws-cdk
Una AWS cuenta para la cuenta de supervisión (principal)
(Opcional) Una segunda AWS cuenta si quieres configurar la supervisión multicuenta
(Para la parte 3),
aws-cdk-libversión 2.268.0 o posterior. LasCfnTriggerconstruccionesCfnAssety utilizadas en la parte 3 se agregaron en esa versión. Para comprobar la versión de su proyecto, ejecutenpm list aws-cdk-lib.
Qué cubre esta guía
Esta guía se divide en las siguientes partes:
Parte 1: Implemente un espacio de agentes con una aplicación de operador y una AWS asociación en su cuenta de monitoreo. Tras completar esta parte, el agente puede supervisar los problemas de esa cuenta.
Parte 2 (opcional): añadir una AWS asociación de origen para una cuenta de servicio e implementar una función de IAM multicuenta en esa cuenta. Esta configuración permite al espacio de agentes supervisar los recursos de todas las cuentas.
Parte 3 (opcional): añada una habilidad, un agente personalizado y un activador programado al espacio de agentes, de modo que el agente tenga conocimientos personalizados y el activador programado ejecute ese agente personalizado automáticamente.
Recursos creados
Parte 1: DevOpsAgentStack (cuenta de supervisión)
Función de IAM (
DevOpsAgentRole-AgentSpace): la asume el servicio de DevOps agentes para supervisar la cuenta. Incluye la políticaAIDevOpsAgentAccessPolicygestionada y una política integrada que permite la creación de la función vinculada al servicio Resource Explorer.Función de IAM (
DevOpsAgentRole-WebappAdmin): función de la aplicación operadora con la políticaAIDevOpsOperatorAppAccessPolicygestionada para las operaciones de los agentes.Espacio de agente (
MyCDKAgentSpace): el espacio de agente central, creado mediante el uso delAWS::DevOpsAgent::AgentSpaceCloudFormation recurso. Incluye la configuración de la aplicación de operador.Asociación (AWS monitor): vincula la cuenta de monitoreo al espacio del agente mediante el
AWS::DevOpsAgent::AssociationCloudFormation recurso.Asociación (AWS fuente): (opcional) vincula la cuenta de servicio al espacio de agentes para la supervisión entre cuentas.
Parte 2: ServiceStack (cuenta de servicio, opcional)
Función de IAM (
DevOpsAgentRole-SecondaryAccount): Cross-account función con un nombre fijo. El espacio de agentes de la cuenta de monitoreo confía en nosotros. Incluye la políticaAIDevOpsAgentAccessPolicygestionada y una política integrada que permite la creación de la función vinculada al servicio Resource Explorer.Función Lambda (
echo-service): un servicio de ejemplo sencillo que repite los eventos de entrada.
Parte 3: Activos y activadores (cuenta de monitoreo, opcional)
Esta pila crea los siguientes recursos:
Habilidad (
rds-performance-investigation): habilidad que el agente carga cuando es relevante y que se crea usando elCfnAssetconstructo con unassetTypedeskill.Agente personalizado (
rds-firefighter): asigna al agente un flujo de trabajo específico con las habilidades asociadas, creado mediante el uso de laCfnAssetconstrucción con un valorassetTypedecustom_agent.Trigger (
TIME_BASED): ejecuta el agente personalizado según una programación, creada mediante laCfnTriggerconstrucción.
Configuración
Paso 1: clona el repositorio de muestras
Ejecute los siguientes comandos para clonar el repositorio y cambiarlo al directorio del proyecto:
git clone https://github.com/aws-samples/sample-aws-devops-agent-cdk.git cd sample-aws-devops-agent-cdk
Paso 2: Instalar las dependencias
Ejecute el siguiente comando para instalar las dependencias del proyecto:
npm install
Parte 1: implementar el espacio de agentes
En esta sección, crea el espacio de agentes, las funciones de IAM, la aplicación de operador y una AWS asociación en su cuenta de monitoreo.
Paso 1: Configurar el ID de la cuenta de monitoreo
Abra lib/constants.ts y configure el ID de su cuenta de monitoreo:
El siguiente ejemplo muestra la constante que hay que actualizar:
export const MONITORING_ACCOUNT_ID = "<YOUR_MONITORING_ACCOUNT_ID>";
Paso 2: Arranca el AWS Entorno CDK
Si no ha iniciado el AWS CDK en su cuenta de monitoreo, ejecute el siguiente comando:
cdk bootstrap aws://<MONITORING_ACCOUNT_ID>/<REGION> --profile monitoring
Paso 3: Compila e implementa
Ejecute los siguientes comandos para crear el TypeScript código e implementar la pila:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Paso 4: Registre las salidas de la pila
Una vez finalizada la implementación, el AWS CDK imprime las salidas de la pila. Registre estos valores para usarlos más adelante.
El siguiente ejemplo muestra el resultado esperado:
Outputs: DevOpsAgentStack.AgentSpaceArn = arn:aws:aidevops:<REGION>:123456789012:agentspace/abc123 DevOpsAgentStack.AgentSpaceRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-AgentSpace DevOpsAgentStack.OperatorRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-WebappAdmin DevOpsAgentStack.AssociationId = assoc-xyz
Si planea completar la parte 2, guarde el AgentSpaceArn valor. Lo necesita para configurar la pila de cuentas de servicio.
La pila genera el ARN del espacio de agentes, no el ID del espacio de agentes. En los pasos posteriores se solicita el ID, que es el segmento que sigue agentspace/ en el ARN. En el ejemplo anterior, el ARN termina enagentspace/abc123, por lo que el ID del espacio del agente es. abc123 Registre también ese valor.
Paso 5: Verificar la implementación
Para comprobar que el espacio de agente se creó correctamente, ejecute el siguiente comando de la AWS CLI:
aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
En este punto, su espacio de agente está desplegado con la aplicación del operador habilitada y su cuenta de monitoreo asociada. El agente puede supervisar los problemas de esta cuenta.
Parte 2 (opcional): añadir la supervisión multicuenta
En esta sección, amplías la configuración para que tu espacio de agente pueda supervisar los recursos de una segunda AWS cuenta (la cuenta de servicio). Esto implica dos acciones:
Agregar una AWS asociación de origen en la DevOpsAgentStack que apunte a la cuenta de servicio.
Desplegarla ServiceStack en la cuenta de servicio con una función de IAM que confíe en el espacio de los agentes.
importante
Debe completar la primera parte antes de continuar. Esto ServiceStack requiere el resultado AgentSpaceArn de la DevOpsAgentStack implementación.
Paso 1: configurar el ID de la cuenta de servicio
Abra lib/constants.ts y configure el ID de su cuenta de servicio:
El siguiente ejemplo muestra la constante que hay que actualizar:
export const SERVICE_ACCOUNT_ID = "<YOUR_SERVICE_ACCOUNT_ID>";
DevOpsAgentStack Crea una AWS asociación de origen con este identificador de cuenta. Si lo implementó DevOpsAgentStack antes de establecer este valor, vuelva a implementarlo para crear la asociación:
Ejecute los siguientes comandos para volver a implementar:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Paso 2: Defina el ARN del espacio del agente
Copie el AgentSpaceArn valor de la DevOpsAgentStack salida (parte 1, paso 4) y configúrelo enlib/constants.ts:
El siguiente ejemplo muestra la constante que se debe actualizar:
export const AGENT_SPACE_ARN = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>";
ServiceStack Utiliza este valor para definir el ámbito de la política de confianza en el rol de cuenta secundaria. El solo ServiceStack se sintetiza cuando se establece este valor.
Paso 3: Arrancar la cuenta de servicio
Si no has arrancado el AWS CDK de tu cuenta de servicio, ejecuta el siguiente comando:
cdk bootstrap aws://<SERVICE_ACCOUNT_ID>/<REGION> --profile service
Paso 4: Despliegue el ServiceStack
Ejecute los siguientes comandos para crear e implementar la ServiceStack mediante las credenciales de la cuenta de servicio:
npm run build cdk deploy ServiceStack --profile service
Esto crea los siguientes recursos en la cuenta de servicio:
Un rol de IAM (
DevOpsAgentRole-SecondaryAccount) que confía en el espacio de agente de la cuenta de monitoreoUna función echo Lambda (
echo-service) como servicio de ejemplo
Paso 5: Verificar la implementación
Para confirmar que la función Lambda se implementó correctamente, ejecute los siguientes comandos para probar el servicio echo:
aws lambda invoke \ --function-name echo-service \ --payload '{"test": "hello world"}' \ --profile service \ response.json cat response.json
Parte 3 (opcional): añada una habilidad, un agente personalizado y un activador programado
En esta sección, agrega tres recursos al espacio de agente que creó en la parte 1. Añada una habilidad que el agente cargue cuando sea relevante y un agente personalizado que asigne al agente un flujo de trabajo específico. También añades un activador programado que ejecuta el agente personalizado de forma automática. Estos recursos utilizan las CfnTrigger construcciones CfnAsset y del aws-cdk-lib/aws-devopsagent módulo.
Estos recursos pueden generar cargos adicionales en su cuenta. AWS Para eliminarlos cuando haya terminado, siga la sección Limpieza al final de esta guía.
En este ejemplo se utilizan los tipos de custom_agent activos skill y. La misma CfnAsset construcción crea todos los tipos de activosmemory_store, comoagents_md, y. attachment Para usar un tipo diferente, cambie la assetType propiedad y suministre los metadatos que requiere ese tipo. Para obtener la lista completa de los tipos de activos, los metadatos necesarios y la referencia a la propiedad, consulteAdministración de activos.
importante
Debe completar la primera parte antes de continuar. Esta pila requiere el ID de espacio de agente de la DevOpsAgentStack implementación.
Paso 1: crear la pila de contenido
Cree un archivo denominado lib/content-stack.ts con el siguiente contenido. La acción de un activador basada en el tiempo hace referencia al agente personalizado por el ID de activo, en el formulariocustom:<assetId>. La pila transfiere automáticamente esta referencia mediante el valor del attrAssetId atributo del agente personalizado. La skills lista de agentes personalizados también toma los ID de los activos en lugar de los nombres, por lo que utiliza las habilidadesattrAssetId. Esto también le da a la pila una dependencia implícita, por lo que la habilidad se crea antes que el agente que la adjunta.
import * as cdk from 'aws-cdk-lib'; import { CfnAsset, CfnTrigger } from 'aws-cdk-lib/aws-devopsagent'; import { Construct } from 'constructs'; export interface ContentStackProps extends cdk.StackProps { readonly agentSpaceId: string; } export class ContentStack extends cdk.Stack { constructor(scope: Construct, id: string, props: ContentStackProps) { super(scope, id, props); // A skill the agent loads when relevant const skill = new CfnAsset(this, 'ExampleSkill', { agentSpaceId: props.agentSpaceId, assetType: 'skill', metadata: { name: 'rds-performance-investigation', description: 'Investigation procedures for RDS performance issues.', agent_types: ['GENERIC'], }, files: [ { path: 'SKILL.md', contentText: [ '# RDS Performance Investigation', 'Use this skill when investigating database latency, connection', 'errors, or query timeouts.', ].join('\n'), }, ], }); // A custom agent with attached skills that a trigger can invoke const customAgent = new CfnAsset(this, 'ExampleCustomAgent', { agentSpaceId: props.agentSpaceId, assetType: 'custom_agent', metadata: { name: 'rds-firefighter', skills: [skill.attrAssetId], }, files: [ { path: 'AGENT.md', contentText: ['# RDS Firefighter', 'Custom agent for RDS incidents.'].join('\n'), }, ], }); // A time-based trigger that runs the custom agent on a schedule const dailyTrigger = new CfnTrigger(this, 'DailyTrigger', { agentSpaceId: props.agentSpaceId, type: 'TIME_BASED', condition: { schedule: { expression: 'rate(1 day)', }, }, action: { actionType: 'create:task', task: { agent: `custom:${customAgent.attrAssetId}`, }, }, status: 'Active', }); new cdk.CfnOutput(this, 'SkillAssetId', { description: 'The skill asset ID', value: skill.attrAssetId, }); new cdk.CfnOutput(this, 'CustomAgentAssetId', { description: 'The custom agent asset ID', value: customAgent.attrAssetId, }); new cdk.CfnOutput(this, 'TriggerId', { description: 'The trigger ID', value: dailyTrigger.attrTriggerId, }); } }
Paso 2: Añade la pila a tu AWS Aplicación de CDK
En el punto de entrada de tu aplicación (por ejemplobin/app.ts), crea una instancia de la pila y pasa el ID del espacio de agente que registraste en el paso 4 de la parte 1. Usa el ID, por ejemploabc123, y no el valor completoAgentSpaceArn:
new ContentStack(app, 'ContentStack', { env: { account: MONITORING_ACCOUNT_ID, region: process.env.CDK_DEFAULT_REGION }, agentSpaceId: '<AGENT_SPACE_ID>', });
Paso 3: Despliegue la pila
Ejecute los siguientes comandos para crear e implementar la pila mediante las credenciales de la cuenta de supervisión:
npm run build cdk deploy ContentStack --profile monitoring
assetTypeLas propiedades agentSpaceId y de un activo son de solo creación, al igual que las action propiedadesagentSpaceId, typecondition, y de un activador. Al cambiar cualquiera de ellas, se reemplaza el recurso. Puedes actualizar el desencadenador status (ActiveoInactive) en su lugar; configurarlo Inactive para pausar el desencadenador sin eliminarlo. Para obtener más información sobre los demás tipos de activos y la referencia completa de las propiedades, consulte. Administración de activos
Paso 4: Verificar la implementación
Para confirmar que se crearon los activos y el activador, ejecute los siguientes comandos de la AWS CLI:
aws devops-agent list-assets \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION> aws devops-agent list-triggers \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Resolución de problemas
En esta sección se describen los problemas comunes y cómo resolverlos.
CfnAsseto no CfnTrigger se exporta desde aws-cdk-lib/aws-devopsagent
Estas construcciones requieren la
aws-cdk-libversión 2.268.0 o posterior. Ejecutenpm list aws-cdk-libpara comprobar su versión y ejecútelonpm install aws-cdk-lib@latestpara actualizar.
CloudFormation no se encontró el tipo de recurso
Compruebe que está realizando la implementación en unRegiones admitidas.
Confirme que su AWS CLI esté configurada con los permisos adecuados.
No se pudo crear el rol de IAM
Compruebe que su rol de implementación tenga permisos para crear roles de IAM.
Comprueba que las condiciones de la política de confianza coincidan con el identificador de tu cuenta.
Cross-account la implementación falla y aparece el mensaje «No se pudo asumir el rol en la cuenta de destino»
Cada pila se debe implementar con las credenciales de la cuenta de destino. Utilice la
--profilemarca para especificar el perfil AWS CLI correcto.Verifique que el AWS CDK se haya iniciado en la cuenta de destino.
Retrasos en la propagación de IAM
Los cambios de rol de IAM pueden tardar unos minutos en propagarse. Si la creación del espacio de agentes falla inmediatamente después de crear el rol, espere unos minutos y vuelva a implementarlo.
Limpieza
Para eliminar todos los recursos, destruye las pilas en orden inverso.
Ejecuta los siguientes comandos para destruir las pilas:
# If you deployed the Part 3 ContentStack, destroy it first cdk destroy ContentStack --profile monitoring # If you deployed the ServiceStack, destroy it next cdk destroy ServiceStack --profile service # Then destroy the DevOpsAgentStack cdk destroy DevOpsAgentStack --profile monitoring
Advertencia: esta acción elimina permanentemente tu espacio de agente y todos los datos asociados. Esta acción no se puede deshacer. Asegúrese de haber realizado una copia de seguridad de toda la información importante antes de continuar.
Consideraciones de seguridad
La aplicación AWS CDK crea funciones de IAM con políticas de confianza que solo permiten que el principal del
aidevops.amazonaws.com.rproxy.goskope.comservicio las asuma.Las políticas de confianza incluyen condiciones que restringen el acceso a su AWS cuenta y espacio de agente específicos (ARN).
Todas las políticas siguen el principio de privilegio mínimo. Revisa y personaliza las políticas de IAM en función de los requisitos de seguridad de tu organización.
El rol multicuenta (
DevOpsAgentRole-SecondaryAccount) usa un nombre fijo y se limita a un ARN de espacio de agentes específico.
Siguientes pasos
Una vez que haya desplegado su AWS DevOps agente mediante el CDK: AWS
Obtenga más información sobre la gama completa de capacidades del DevOps agente en la guía del usuario del AWS DevOps agente.
Considere la posibilidad de integrar la implementación del AWS CDK en sus CI/CD procesos para una administración automatizada de la infraestructura.
Si registras una integración de terceros, gira el webhook en la consola para obtener la URL y el secreto del webhook. El AWS CDK se implementa de forma automática AWS CloudFormation, lo que no devuelve el secreto del webhook como resultado de la pila. Para obtener instrucciones sobre cómo administrar las credenciales de los webhooks, consulte Administrar las credenciales de los webhooks.
Recursos adicionales
Ejemplo de repositorio de CDK
en el sitio web GitHub AWS Referencia a la biblioteca de creación de CDK DevOps Agent en la referencia de la API de AWS CDK
CfnAssety CfnTrigger construya las referencias en la referencia de la API del AWS CDK
AWS DevOps Referencia al tipo de recurso del agente en la referencia de la AWS CloudFormation plantilla