View a markdown version of this page

Conceitos básicos de AWS DevOps Agente usando o Terraform - 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 o Terraform

Visão geral do

Este guia mostra como usar o Terraform para criar e implantar recursos do AWS DevOps Agente. A configuração do Terraform automatiza a criação de um espaço de agente, funções do IAM, um aplicativo de operador e associações de AWS contas.

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

AWS DevOps O agente está disponível nas seguintes 6 AWS regiões: Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon), Ásia-Pacífico (Sydney), Ásia-Pacífico (Tóquio), Europa (Frankfurt) e Europa (Irlanda). Para obter mais informações sobre as regiões suportadas, consulteRegiões aceitas.

Pré-requisitos

Antes de começar, você deve ter o seguinte:

  • Terraform >= 1.0 instalado

  • AWS CLI instalada e configurada com as credenciais apropriadas

  • Uma AWS conta para a conta de monitoramento (primária)

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

O que este guia aborda

Este guia está dividido em três 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 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 e um echo Lambda nessa conta. Isso permite que o agente tenha espaço para monitorar recursos em todas as contas.

  • Parte 3 (opcional) — Registre serviços de terceiros (Dynatrace ServiceNow, Splunk, New Relic, GitLab, PagerDuty) e associe-os ao espaço do agente.

Recursos criados

Parte 1: Monitoramento da conta

  • 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. Criado somente quando não existing_agentspace_role_arn está definido.

  • Papel do IAM (DevOpsAgentRole-WebappAdmin-*) — Função do aplicativo do operador com a política AIDevOpsOperatorAppAccessPolicy gerenciada para operações do agente. Criado somente quando não existing_operator_role_arn está definido.

  • Espaço do agente (nome configurável) — O espaço central do agente, criado usando o awscc_devopsagent_agent_space 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 awscc_devopsagent_association recurso.

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

Parte 2: Conta de serviço (opcional)

  • Papel do IAM (DevOpsAgentRole-SecondaryAccount-TF) — 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-tf) — Um exemplo de serviço simples que ecoa eventos de entrada.

Configuração

Etapa 1: clonar o repositório de amostra

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

Etapa 2: Configurar variáveis

Copie o arquivo de variáveis de exemplo e personalize-o para seu ambiente:

cp terraform.tfvars.example terraform.tfvars

Edite terraform.tfvars com o nome e a descrição do espaço do agente:

agent_space_name = "MyCompanyAgentSpace" agent_space_description = "DevOps Agent Space for monitoring production workloads"

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.

Use o script de implantação fornecido para uma configuração simplificada:

./deploy.sh

Esse script automaticamente:

  • Verifica os pré-requisitos (Terraform, AWS CLI, credenciais)

  • Cria terraform.tfvars a partir do exemplo, se necessário

  • Inicializa, valida, planeja e aplica o Terraform

Como alternativa, se você preferir o controle manual:

terraform init terraform plan terraform apply

Digite yes quando solicitado para confirmar a implantação.

Etapa 2: registre as saídas

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

Outputs: agent_space_id = "abc123" agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/abc123" agent_space_name = "MyCompanyAgentSpace" devops_agentspace_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace-a1b2c3d4" devops_operator_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin-a1b2c3d4" primary_account_id = "<MONITORING_ACCOUNT_ID>" primary_account_association_id = "assoc-xyz"

Se você planeja concluir a Parte 2, salve o agent_space_arn valor. Você precisará dele para configurar os recursos da conta de serviço.

Etapa 3: Verificar a implantação

Execute o script de verificação pós-implantação:

./post-deploy.sh

Ou use a AWS CLI para verificar se o espaço do agente foi criado com sucesso:

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 o espaço do 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 que aponta para a conta de serviço.

  2. Implantação de uma função IAM entre contas e uma função echo Lambda na conta de serviço.

Importante

Você deve concluir a Parte 1 antes de continuar. Os recursos da conta de serviço exigem a saída agent_space_arn de implantação da Parte 1.

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

Emterraform.tfvars, defina o ID da sua conta de serviço:

service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"

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

Copie o agent_space_arn valor da saída da Parte 1 (Etapa 2) e configure-o emterraform.tfvars:

agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>"

Os recursos da conta de serviço usam esse valor para definir o escopo da política de confiança na função secundária da conta. Esses recursos só são criados quando esse valor é definido.

Etapa 3: configurar o provedor `aws.service`

Emmain.tf, configure o alias do aws.service provedor com credenciais para a conta de serviço. Você pode usar um perfil nomeado ou assumir uma função:

Usando um perfil:

provider "aws" { alias = "service" region = var.aws_region profile = "your-service-account-profile" }

Ou usando assumir papel:

provider "aws" { alias = "service" region = var.aws_region assume_role { role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole" } }

Etapa 4: implantar

Aplique a configuração atualizada:

terraform apply

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

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

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

Ele também cria uma AWS associação de origem na conta de monitoramento que vincula a conta de serviço.

Etapa 5: Verificar a implantação

Teste o serviço echo para confirmar se a função Lambda foi implantada com sucesso:

aws lambda invoke \ --function-name echo-service-tf \ --payload '{"test": "hello world"}' \ --profile <your-service-account-profile> \ --region <REGION> \ response.json cat response.json

Parte 3 (opcional): registrar integrações de terceiros

Nesta seção, você registra serviços externos (Dynatrace, Splunk ServiceNow, New Relic, GitLab, PagerDuty) no espaço do agente. Essas integrações permitem que o AWS DevOps Agente acesse informações de telemetria, incidentes e controle de origem durante as investigações.

Diferentemente da amostra de AWS CDK, que exige uma IntegrationsStack fase separada e uma fiação manual da ID do espaço do agente, esses recursos fazem referência direta ao espaço do agente e podem ser implantados da terraform apply mesma forma que na Parte 1.

Integrações suportadas

Serviço Tipo de serviço Autenticação
Dynatrace dynatrace Credenciais de cliente OAuth
ServiceNow servicenow Credenciais de cliente OAuth
Splunk mcpserversplunk Token do portador
New Relic mcpservernewrelic Chave de API
GitLab gitlab Token de acesso
PagerDuty pagerduty Credenciais de cliente OAuth
nota

O Datadog não está incluído na configuração do Terraform. A conexão do Datadog exige autorização OAuth interativa do usuário (login e consentimento do navegador), conforme descrito emConectando DataDog, que o Terraform não pode automatizar. Registre o Datadog manualmente por meio da página Provedores de Capacidade no console.

Etapa 1: configurar as credenciais de integração

Adicione um integrations bloco aterraform.tfvars, preenchendo somente os serviços que você deseja. O exemplo a seguir mostra uma integração com o Dynatrace:

integrations = { dynatrace = { account_urn = "<DYNATRACE_ACCOUNT_URN>" client_id = "<DYNATRACE_CLIENT_ID>" client_name = "<DYNATRACE_CLIENT_NAME>" client_secret = "<DYNATRACE_CLIENT_SECRET>" env_id = "<DYNATRACE_ENVIRONMENT_ID>" resources = ["<DYNATRACE_RESOURCE_1>"] } }

Para ver a forma completa de cada integração, consulte terraform.tfvars.example no repositório de amostra.

ServiceNow requisito: sempre defina instance_id explicitamente o nome curto da instância (por exemplo, "ven04972" — não o completoinstance_url). Se instance_id for omitida, a associação volta parainstance_url, que a API do DevOps agente rejeita com a. 400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance

Segurança: a integrations variável é marcadasensitive, então seus valores são retirados da saída planejada e aplicada. Não confirme credenciais reais a. terraform.tfvars Para produção, os AWS segredos de origem do Secrets Manager ou do AWS Systems Manager Parameter Store (por exemplo, usando data fontes) em vez de texto simples.

Etapa 2: implantar

Aplique a configuração:

terraform apply

Isso cria um registro e uma associação de serviços para cada integração habilitada.

Etapa 3: Revise os resultados

Após a conclusão da implantação, as saídas da integração mapeiam cada serviço habilitado para suas IDs registradas:

integration_service_ids = { "dynatrace" = "service-abc123" } integration_association_ids = { "dynatrace" = "assoc-xyz789" }

Para obter mais informações sobre como configurar credenciais para cada serviço, consulte:

Usando funções existentes do IAM (opcional)

Por padrão, a configuração do Terraform cria novas funções do IAM para o espaço do agente e o aplicativo do operador. Se você já tem funções do IAM com as políticas necessárias, pode ignorar a criação da função e, em vez disso, fornecer os ARNs das funções existentes.

Requisitos

As funções existentes devem atender aos seguintes requisitos:

Função espacial do agente

  • A política de confiança aidevops.amazonaws.com permite assumir o papel com sts:AssumeRole

  • Tem a política AIDevOpsAgentAccessPolicy gerenciada anexada

  • (Opcional) Tem uma política embutida que permite a criação da função vinculada ao serviço do Resource Explorer

Função do aplicativo de operador

  • A política de confiança aidevops.amazonaws.com permite assumir o papel com sts:AssumeRole e sts:TagSession

  • Tem a política AIDevOpsOperatorAppAccessPolicy gerenciada anexada

Configuração

Emterraform.tfvars, defina um ou ambos os ARNs de função:

existing_agentspace_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourAgentSpaceRole" existing_operator_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourOperatorRole"

Quando esses valores são definidos, os recursos da função correspondente iam.tf são ignorados. Essa abordagem é totalmente compatível com versões anteriores — as configurações existentes com valores vazios (o padrão) preservam o comportamento atual de criação de funções.

Solução de problemas

Atrasos na propagação do IAM

  • A configuração inclui 30 segundos time_sleep entre a criação da função do IAM e a criação do Agent Space. O serviço DevOps Agent valida a política de confiança da função de operador durante a criação do Agent Space, e isso pode falhar se o IAM não estiver totalmente propagado. Se você ainda ver erros na política de confiança, espere um minuto e execute terraform apply novamente — as funções do IAM já existirão e a solicitação continuará de onde parou.

ServiceNow instanceId does not matcherro

  • Defina instance_id explicitamente no bloco de service_now integração o nome curto da instância (por exemplo,"ven04972"), não o completoinstance_url. Veja a nota na Parte 3 acima.

Associação Dynatrace status: invalid

  • Se for terraform apply bem-sucedida, mas a associação resultante for relatada status = "invalid" (visível usando aws devops-agent get-association o console), isso indica que a Dynatrace rejeitou as credenciais do cliente OAuth. Double-check client_id,client_secret, e account_urn contra a conta Dynatrace, em vez de um problema de configuração do Terraform.

Erros de permissão

  • Verifique se suas AWS credenciais têm as permissões de IAM necessárias para criar funções e políticas.

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

Cross-account falha na implantação

  • O aws.service provedor deve estar configurado com as credenciais da conta de serviço. Use um perfil nomeado ou um bloco para assumir uma função.

  • Verifique se o agent_space_arn valor corresponde ao ARN da saída da Parte 1.

Tipo de recurso do Terraform não encontrado

  • Verifique se você tem a versão do awscc provedor ~> 1.0 ou posterior. Os awscc_devopsagent_association recursos awscc_devopsagent_agent_space e exigem o provedor de controle de AWS nuvem.

Limpeza

Para remover todos os recursos, destrua na ordem inversa se você implantou a Parte 2:

./cleanup.sh

Ou manualmente:

terraform destroy

Aviso: Isso exclui permanentemente o espaço do agente e todos os dados associados. Certifique-se de ter feito backup de todas as informações importantes antes de continuar.

Considerações sobre segurança

  • A configuração do Terraform 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-TF) 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 Terraform:

  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 Terraform em seus CI/CD pipelines para o gerenciamento automatizado da infraestrutura.

Recursos adicionais do