View a markdown version of this page

Conceitos básicos de AWS DevOps Agente usando AWS CDK - AWS DevOps Agente

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceitos básicos de AWS DevOps Agente usando AWS CDK

Visão geral do

Este guia mostra como usar o AWS Cloud Development Kit (AWS CDK) para criar e implantar recursos do AWS DevOps agente. O aplicativo AWS CDK automatiza a criação de um espaço para agentes, funções de gerenciamento de AWS identidade e acesso (IAM), um aplicativo de operador e associações de AWS contas por meio dele. AWS CloudFormation

A abordagem AWS CDK automatiza as etapas manuais descritas no guia de integração da CLI, definindo todos os recursos necessários como infraestrutura e código.

AWS DevOps O agente está disponível em várias AWS regiões. Para ver a lista completa, consulte Regiões aceitas.

Pré-requisitos

Antes de começar, verifique se você tem o seguinte:

  • AWS Interface de linha de comando (AWS CLI) instalada e configurada com as credenciais apropriadas

  • Node.js versão 18 ou posterior

  • AWS Interface de linha de comando (CLI) CDK instalada globalmente. Para instalar a CLI do AWS CDK, execute o seguinte comando:

npm install -g aws-cdk
  • Uma AWS conta para a conta de monitoramento (primária)

  • (Opcional) Uma segunda AWS conta se você quiser configurar o monitoramento entre contas

  • (Para a Parte 3) aws-cdk-lib versão 2.268.0 ou posterior. As CfnTrigger construções CfnAsset e usadas na Parte 3 foram adicionadas nessa versão. Para verificar a versão em seu projeto, executenpm list aws-cdk-lib.

O que este guia aborda

Este guia está dividido nas seguintes partes:

  • Parte 1 — Implante um espaço de agente com um aplicativo de operador e uma AWS associação em sua conta de monitoramento. Depois de concluir essa parte, o agente pode monitorar os problemas nessa conta.

  • Parte 2 (opcional) — Adicione uma AWS associação de origem para uma conta de serviço e implante uma função de IAM entre contas nessa conta. Essa configuração permite que o espaço do agente monitore recursos em todas as contas.

  • Parte 3 (opcional) — Adicione uma habilidade, um agente personalizado e um gatilho agendado ao espaço do agente, para que o agente tenha conhecimento personalizado e o gatilho agendado execute esse agente personalizado automaticamente.

Recursos criados

Parte 1: DevOpsAgentStack (conta de monitoramento)

  • Papel do IAM (DevOpsAgentRole-AgentSpace) — Assumido pelo serviço do DevOps agente para monitorar a conta. Inclui a política AIDevOpsAgentAccessPolicy gerenciada e uma política em linha que permite a criação da função vinculada ao serviço do Resource Explorer.

  • Papel do IAM (DevOpsAgentRole-WebappAdmin) — Função do aplicativo do operador com a política AIDevOpsOperatorAppAccessPolicy gerenciada para operações do agente.

  • Espaço do agente (MyCDKAgentSpace) — O espaço do agente central, criado usando o AWS::DevOpsAgent::AgentSpace CloudFormation recurso. Inclui a configuração do aplicativo do operador.

  • Associação (AWS monitor) — Vincula a conta de monitoramento ao espaço do agente usando o AWS::DevOpsAgent::Association CloudFormation recurso.

  • Associação (AWS origem) — (opcional) vincula a conta de serviço ao espaço do agente para monitoramento entre contas.

Parte 2: ServiceStack (conta de serviço, opcional)

  • Papel do IAM (DevOpsAgentRole-SecondaryAccount) — Cross-account função com um nome fixo. Confiável pelo espaço do agente na conta de monitoramento. Inclui a política AIDevOpsAgentAccessPolicy gerenciada e uma política em linha que permite a criação da função vinculada ao serviço do Resource Explorer.

  • Função lambda (echo-service) — Um exemplo de serviço simples que ecoa eventos de entrada.

Parte 3: Ativos e gatilhos (conta de monitoramento, opcional)

Essa pilha cria os seguintes recursos:

  • Habilidade (rds-performance-investigation) — Uma habilidade que o agente carrega quando relevante, criada usando a CfnAsset construção com um assetType deskill.

  • Agente personalizado (rds-firefighter) — direciona o agente para um fluxo de trabalho específico com habilidades anexadas, criado usando a CfnAsset construção com um assetType ofcustom_agent.

  • Trigger (TIME_BASED) — Executa o agente personalizado em uma programação, criada usando a CfnTrigger construção.

Configuração

Etapa 1: clonar o repositório de amostra

Execute os seguintes comandos para clonar o repositório e mudar para o diretório do projeto:

git clone https://github.com/aws-samples/sample-aws-devops-agent-cdk.git cd sample-aws-devops-agent-cdk

Etapa 2: instalar dependências

Execute o comando a seguir para instalar as dependências do projeto:

npm install

Parte 1: Implantar o espaço do agente

Nesta seção, você cria o espaço do agente, as funções do IAM, o aplicativo do operador e uma AWS associação em sua conta de monitoramento.

Etapa 1: configurar o ID da conta de monitoramento

Abra lib/constants.ts e defina o ID da sua conta de monitoramento:

O exemplo a seguir mostra a constante a ser atualizada:

export const MONITORING_ACCOUNT_ID = "<YOUR_MONITORING_ACCOUNT_ID>";

Etapa 2: inicialize o AWS Ambiente CDK

Se você não inicializou o AWS CDK em sua conta de monitoramento, execute o seguinte comando:

cdk bootstrap aws://<MONITORING_ACCOUNT_ID>/<REGION> --profile monitoring

Etapa 3: criar e implantar

Execute os seguintes comandos para criar o TypeScript código e implantar a pilha:

npm run build cdk deploy DevOpsAgentStack --profile monitoring

Etapa 4: registre as saídas da pilha

Após a conclusão da implantação, o AWS CDK imprime as saídas da pilha. Registre esses valores para uso posterior.

O exemplo a seguir mostra a saída esperada:

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

Se você planeja concluir a Parte 2, salve o AgentSpaceArn valor. Você precisa dele para configurar a pilha de contas de serviço.

A pilha gera o ARN do espaço do agente, não o ID do espaço do agente. As etapas posteriores solicitam a ID, que é o segmento posterior agentspace/ no ARN. No exemplo anterior, o ARN termina comagentspace/abc123, então a ID do espaço do agente é. abc123 Registre esse valor também.

Etapa 5: Verificar a implantação

Para verificar se o espaço do agente foi criado com êxito, execute o seguinte comando AWS CLI:

aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>

Nesse ponto, seu espaço de agente é implantado com o aplicativo do operador ativado e sua conta de monitoramento associada. O agente pode monitorar problemas nessa conta.

Parte 2 (opcional): Adicionar monitoramento entre contas

Nesta seção, você estende a configuração para que seu espaço de agente possa monitorar recursos em uma segunda AWS conta (a conta de serviço). Isso envolve duas ações:

  1. Adicionar uma AWS associação de origem DevOpsAgentStack que aponte para a conta de serviço.

  2. Implantando o ServiceStack na conta de serviço com uma função do IAM que confia no espaço do agente.

Importante

Você deve concluir a Parte 1 antes de continuar. O ServiceStack requer o AgentSpaceArn da saída DevOpsAgentStack de implantação.

Etapa 1: configurar o ID da conta de serviço

Abra lib/constants.ts e defina o ID da sua conta de serviço:

O exemplo a seguir mostra a constante a ser atualizada:

export const SERVICE_ACCOUNT_ID = "<YOUR_SERVICE_ACCOUNT_ID>";

O DevOpsAgentStack cria uma AWS associação de origem usando esse ID de conta. Se você implantou o DevOpsAgentStack antes de definir esse valor, reimplante para criar a associação:

Execute os seguintes comandos para reimplantar:

npm run build cdk deploy DevOpsAgentStack --profile monitoring

Etapa 2: Definir o ARN do espaço do agente

Copie o AgentSpaceArn valor da DevOpsAgentStack saída (Parte 1, Etapa 4) e defina-o emlib/constants.ts:

O exemplo a seguir mostra a constante a ser atualizada:

export const AGENT_SPACE_ARN = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>";

O ServiceStack usa esse valor para definir o escopo da política de confiança na função secundária da conta. O só ServiceStack é sintetizado quando esse valor é definido.

Etapa 3: inicializar a conta de serviço

Se você não inicializou o AWS CDK em sua conta de serviço, execute o seguinte comando:

cdk bootstrap aws://<SERVICE_ACCOUNT_ID>/<REGION> --profile service

Etapa 4: implantar o ServiceStack

Execute os seguintes comandos para criar e implantar o ServiceStack usando credenciais para a conta de serviço:

npm run build cdk deploy ServiceStack --profile service

Isso cria os seguintes recursos na conta de serviço:

  • Uma função do IAM (DevOpsAgentRole-SecondaryAccount) que confia no espaço do agente na conta de monitoramento

  • Uma função echo Lambda (echo-service) como um serviço de exemplo

Etapa 5: Verificar a implantação

Para confirmar se a função Lambda foi implantada com sucesso, execute os seguintes comandos para testar o serviço echo:

aws lambda invoke \ --function-name echo-service \ --payload '{"test": "hello world"}' \ --profile service \ response.json cat response.json

Parte 3 (opcional): adicionar uma habilidade, um agente personalizado e um gatilho agendado

Nesta seção, você adiciona três recursos ao espaço do agente criado na Parte 1. Você adiciona uma habilidade que o agente carrega quando relevante e um agente personalizado que define o escopo do agente em um fluxo de trabalho específico. Você também adiciona um acionador agendado que executa o agente personalizado automaticamente. Esses recursos usam as CfnTrigger construções CfnAsset e do aws-cdk-lib/aws-devopsagent módulo.

Esses recursos podem gerar cobranças adicionais em sua AWS conta. Para removê-los quando terminar, siga a seção Limpeza no final deste guia.

Este exemplo usa skill os tipos custom_agent de ativos e. A mesma CfnAsset construção cria todos os tipos de ativosmemory_store, comoagents_md, e. attachment Para usar um tipo diferente, altere a assetType propriedade e forneça os metadados que esse tipo exige. Para ver a lista completa dos tipos de ativos, seus metadados necessários e a referência da propriedade, consulteGerenciar ativos.

Importante

Você deve concluir a Parte 1 antes de continuar. Essa pilha exige a ID do espaço do agente da DevOpsAgentStack implantação.

Etapa 1: criar a pilha de conteúdo

Crie um arquivo denominado lib/content-stack.ts com os conteúdos a seguir. A ação de um gatilho baseado em tempo faz referência ao agente personalizado por ID do ativo, no formuláriocustom:<assetId>. A pilha conecta automaticamente essa referência usando o valor do attrAssetId atributo do agente personalizado. A skills lista de agentes personalizados também usa IDs de ativos em vez de nomes, portanto, usa as habilidadesattrAssetId. Isso também confere à pilha uma dependência implícita, então a habilidade é criada antes do agente que a anexa.

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, }); } }

Etapa 2: adicione a pilha ao seu AWS Aplicação do CDK

No ponto de entrada do seu aplicativo (por exemplo,bin/app.ts), instancie a pilha e passe o ID do espaço do agente que você registrou na Parte 1, Etapa 4. Use o ID, comoabc123, e não o AgentSpaceArn valor total:

new ContentStack(app, 'ContentStack', { env: { account: MONITORING_ACCOUNT_ID, region: process.env.CDK_DEFAULT_REGION }, agentSpaceId: '<AGENT_SPACE_ID>', });

Etapa 3: implantar a pilha

Execute os seguintes comandos para criar e implantar a pilha usando as credenciais da conta de monitoramento:

npm run build cdk deploy ContentStack --profile monitoring

As assetType propriedades agentSpaceId e de um ativo são somente para criação, assim como as action propriedadesagentSpaceId, typecondition, e de um acionador. Alterar qualquer um deles substitui o recurso. Você pode atualizar o gatilho status (ActiveouInactive) existente — configurá-lo Inactive para pausar o gatilho sem excluí-lo. Para obter mais informações sobre os outros tipos de ativos e a referência completa da propriedade, consulteGerenciar ativos.

Etapa 4: Verificar a implantação

Para confirmar se os ativos e o acionador foram criados, execute os seguintes comandos da 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>

Solução de problemas

Esta seção descreve problemas comuns e como resolvê-los.

CfnAssetou não CfnTrigger é exportado de aws-cdk-lib/aws-devopsagent

  • Essas construções exigem a aws-cdk-lib versão 2.268.0 ou posterior. Execute npm list aws-cdk-lib para verificar sua versão e execute npm install aws-cdk-lib@latest para atualizar.

CloudFormation tipo de recurso não encontrado

  • Verifique se você está implantando em umRegiões aceitas.

  • Confirme se sua AWS CLI está configurada com as permissões apropriadas.

Falha na criação da função do IAM

  • Verifique se sua função de implantação tem permissões para criar funções do IAM.

  • Verifique se as condições da política de confiança correspondem ao ID da sua conta.

Cross-account a implantação falha com “Não foi possível assumir a função na conta de destino”

  • Cada pilha deve ser implantada com credenciais para a conta de destino. Use o --profile sinalizador para especificar o perfil AWS CLI correto.

  • Verifique se o AWS CDK foi inicializado na conta de destino.

Atrasos na propagação do IAM

  • As mudanças de função do IAM podem levar alguns minutos para serem propagadas. Se a criação do espaço do agente falhar imediatamente após a criação da função, aguarde alguns minutos e reimplante.

Limpeza

Para remover todos os recursos, destrua as pilhas na ordem inversa.

Execute os seguintes comandos para destruir as pilhas:

# 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

Aviso: Essa ação exclui permanentemente o espaço do agente e todos os dados associados. Esta ação não pode ser desfeita. Certifique-se de ter feito backup de todas as informações importantes antes de continuar.

Considerações sobre segurança

  • O aplicativo AWS CDK cria funções do IAM com políticas de confiança que só permitem que o principal do aidevops.amazonaws.com serviço as assuma.

  • As políticas de confiança incluem condições que restringem o acesso à sua AWS conta específica e ao ARN do espaço do agente.

  • Todas as políticas seguem o princípio do menor privilégio. Analise e personalize as políticas do IAM com base nos requisitos de segurança da sua organização.

  • A função entre contas (DevOpsAgentRole-SecondaryAccount) usa um nome fixo e tem como escopo um ARN específico do espaço do agente.

Próximas etapas

Depois de implantar seu AWS DevOps agente usando o AWS CDK:

  1. Saiba mais sobre a gama completa de recursos do DevOps agente no Guia do usuário do AWS DevOps agente.

  2. Considere integrar a implantação do AWS CDK em seus CI/CD pipelines para o gerenciamento automatizado da infraestrutura.

  3. Se você registrar uma integração de terceiros, obtenha o URL e o segredo do webhook girando o webhook no console. O AWS CDK é implantado por meio de AWS CloudFormation, o que não retorna o segredo do webhook como uma saída de pilha. Para obter instruções sobre como gerenciar credenciais de webhook, consulte Gerenciando credenciais de webhook.

Recursos adicionais do