View a markdown version of this page

Introducción al AWS DevOps Agente que usa AWS CDK - AWS DevOps Agente

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-lib versión 2.268.0 o posterior. Las CfnTrigger construcciones CfnAsset y 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ítica AIDevOpsAgentAccessPolicy gestionada 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ítica AIDevOpsOperatorAppAccessPolicy gestionada para las operaciones de los agentes.

  • Espacio de agente (MyCDKAgentSpace): el espacio de agente central, creado mediante el uso del AWS::DevOpsAgent::AgentSpace CloudFormation 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::Association CloudFormation 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ítica AIDevOpsAgentAccessPolicy gestionada 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 el CfnAsset constructo con un assetType deskill.

  • Agente personalizado (rds-firefighter): asigna al agente un flujo de trabajo específico con las habilidades asociadas, creado mediante el uso de la CfnAsset construcción con un valor assetType decustom_agent.

  • Trigger (TIME_BASED): ejecuta el agente personalizado según una programación, creada mediante la CfnTrigger construcció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:

  1. Agregar una AWS asociación de origen en la DevOpsAgentStack que apunte a la cuenta de servicio.

  2. 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 monitoreo

  • Una 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-lib versión 2.268.0 o posterior. Ejecute npm list aws-cdk-lib para comprobar su versión y ejecútelo npm install aws-cdk-lib@latest para 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 --profile marca 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 servicio 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

  1. Obtenga más información sobre la gama completa de capacidades del DevOps agente en la guía del usuario del AWS DevOps agente.

  2. Considere la posibilidad de integrar la implementación del AWS CDK en sus CI/CD procesos para una administración automatizada de la infraestructura.

  3. 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