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íticaAIDevOpsAgentAccessPolicygerenciada 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ãoexisting_agentspace_role_arnestá definido.Papel do IAM (
DevOpsAgentRole-WebappAdmin-*) — Função do aplicativo do 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 central do agente, 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 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í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-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.
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: 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:
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 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 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): 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.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 do Resource Explorer
Função do aplicativo de operador
A política de confiança
aidevops.amazonaws.com.rproxy.goskope.compermite assumir o papel 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 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_sleepentre 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 executeterraform applynovamente — as funções do IAM já existirão e a solicitaçã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 completoinstance_url. Veja a nota na Parte 3 acima.
Associação Dynatrace status: invalid
Se for
terraform applybem-sucedida, mas a associação resultante for relatadastatus = "invalid"(visível usandoaws devops-agent get-associationo console), isso indica que a Dynatrace rejeitou as credenciais do cliente OAuth. Double-checkclient_id,client_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 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.serviceprovedor 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_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 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.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 específico do espaço do agente.
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 o gerenciamento automatizado da infraestrutura.
Recursos adicionais do
recurso awscc_devopsagent_agent_space
no Registro do Terraform recurso awscc_devopsagent_association
no Registro do Terraform recurso awscc_devopsagent_private_connection
no Registro Terraform