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-libversão 2.268.0 ou posterior. AsCfnTriggerconstruçõesCfnAssete 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íticaAIDevOpsAgentAccessPolicygerenciada 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íticaAIDevOpsOperatorAppAccessPolicygerenciada para operações do agente.Espaço do agente (
MyCDKAgentSpace) — O espaço do agente central, criado usando oAWS::DevOpsAgent::AgentSpaceCloudFormation 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::AssociationCloudFormation 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íticaAIDevOpsAgentAccessPolicygerenciada 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 aCfnAssetconstrução com umassetTypedeskill.Agente personalizado (
rds-firefighter) — direciona o agente para um fluxo de trabalho específico com habilidades anexadas, criado usando aCfnAssetconstrução com umassetTypeofcustom_agent.Trigger (
TIME_BASED) — Executa o agente personalizado em uma programação, criada usando aCfnTriggerconstruçã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:
Adicionar uma AWS associação de origem DevOpsAgentStack que aponte para a conta de serviço.
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 monitoramentoUma 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-libversão 2.268.0 ou posterior. Executenpm list aws-cdk-libpara verificar sua versão e executenpm install aws-cdk-lib@latestpara 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
--profilesinalizador 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.rproxy.goskope.comserviç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:
Saiba mais sobre a gama completa de recursos do DevOps agente no Guia do usuário do AWS DevOps agente.
Considere integrar a implantação do AWS CDK em seus CI/CD pipelines para o gerenciamento automatizado da infraestrutura.
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
Exemplo de repositório CDK
no site GitHub AWS Referência da biblioteca de construção do CDK DevOps Agent na Referência da AWS API CDK
CfnAssete CfnTrigger construa referências na Referência da API AWS CDK
AWS DevOps Referência do tipo de recurso do agente na Referência do AWS CloudFormation modelo