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 do IAM entre contas, além de um echo Lambda nessa conta. Isso permite que o espaço do agente monitore os 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: Conta de monitoramento
Função do IAM (
DevOpsAgentRole-AgentSpace-*) — assumida 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 Resource Explorer. Criado somente quando nãoexisting_agentspace_role_arnestá definido.Função do IAM (
DevOpsAgentRole-WebappAdmin-*) — Função do aplicativo operador com a políticaAIDevOpsOperatorAppAccessPolicygerenciada para operações do agente. Criado somente quando nãoexisting_operator_role_arnestá definido.Espaço do agente (nome configurável) — O espaço do agente central, criado usando o
awscc_devopsagent_agent_spacerecurso. 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_associationrecurso.Associação (AWS fonte) — (Opcional) Vincula a conta de serviço ao espaço do agente para monitoramento entre contas.
Parte 2: Conta de serviço (opcional)
Função 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íticaAIDevOpsAgentAccessPolicygerenciada e uma política em linha que permite a criação da função vinculada ao serviço Resource Explorer.Função Lambda (
echo-service-tf) — Um exemplo simples de serviço que reflete 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 seu espaço de 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 na sua conta de monitoramento.
Etapa 1: implantar com automação (recomendado)
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.tfvarsa partir do exemplo, se necessárioInicializa, 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: Grave 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 êxito:
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:
Adicionar uma AWS associação de origem que aponta para a conta de serviço.
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 o resultado agent_space_arn da 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 defina-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ão criados somente quando esse valor é definido.
Etapa 3: configurar o provedor `aws.service`
Emmain.tf, configure o alias do aws.service provedor com as credenciais da 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 assume a função:
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 monitoramentoUma 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): registre integrações de terceiros
Nesta seção, você registra serviços externos (Dynatrace, Splunk ServiceNow, New Relic, GitLab, PagerDuty) com o espaço do agente. Essas integrações permitem que o AWS DevOps Agente acesse telemetria, dados de incidentes e informações de controle de origem durante as investigações.
Diferentemente da amostra de AWS CDK, que requer uma IntegrationsStack fase separada e uma fiação manual do 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 a 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 requer autorização interativa do usuário OAuth (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 Capability Providers 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 amostras.
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 um. 400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance
Segurança: a integrations variável é marcada sensitive para que seus valores sejam retirados da saída do plano e da aplicação. Não comprometa credenciais reais comterraform.tfvars. Para produção, forneça AWS segredos 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 ativada.
Etapa 3: revisar 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 a configuração de 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 pular a criação da função e, em vez disso, fornecer os ARNs de função existentes.
Requisitos
As funções existentes devem atender aos seguintes requisitos:
Função do espaço do agente
A política de confiança
aidevops.amazonaws.com.rproxy.goskope.compermite assumir o papel comsts:AssumeRoleTem a política
AIDevOpsAgentAccessPolicygerenciada anexada(Opcional) Tem uma política embutida que permite a criação da função vinculada ao serviço Resource Explorer
Função do aplicativo do operador
A política de confiança
aidevops.amazonaws.com.rproxy.goskope.compermite assumir a função comsts:AssumeRoleests:TagSessionTem a política
AIDevOpsOperatorAppAccessPolicygerenciada 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 de função correspondentes 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_sleepentre a criação da função do IAM e a criação do Agent Space. O serviço de DevOps agente 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 for totalmente propagado. Se você ainda encontrar erros na política de confiança, espere um minuto e executeterraform applynovamente. As funções do IAM já existirão e a aplicação continuará de onde parou.
ServiceNow instanceId does not matcherro
Defina
instance_idexplicitamente no bloco deservice_nowintegração o nome curto da instância (por exemplo,"ven04972"), não o nome completoinstance_url. Veja a nota na Parte 3 acima.
Associação Dynatrace status: invalid
Se for
terraform applybem-sucedido, mas os relatórios de associação resultantesstatus = "invalid"(visíveis usandoaws devops-agent get-associationo console), isso indica que a Dynatrace rejeitou as credenciais do cliente OAuth. Double-checkclient_idclient_secret, eaccount_urncontra 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 necessárias do IAM 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.serviceprovedor deve ser configurado com as credenciais da conta de serviço. Use um perfil nomeado ou um bloco de assumir funções.Verifique se o
agent_space_arnvalor 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
awsccprovedor~> 1.0ou posterior. Osawscc_devopsagent_associationrecursosawscc_devopsagent_agent_spacee exigem o provedor do AWS Cloud Control.
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 seu espaço de 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 responsável pelo
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-TF) usa um nome fixo e tem como escopo um ARN de espaço de agente específico.
Próximas etapas
Depois de implantar seu AWS DevOps agente usando o Terraform:
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 Terraform em seus CI/CD pipelines para gerenciamento automatizado da infraestrutura.
Recursos adicionais do
recurso awscc_devopsagent_agent_space
no Terraform Registry recurso awscc_devopsagent_association
no Terraform Registry recurso awscc_devopsagent_private_connection
no Terraform Registry