View a markdown version of this page

Começando a usar o AWS DevOps Agent usando AWS CloudFormation - 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á.

Começando a usar o AWS DevOps Agent usando AWS CloudFormation

Visão geral do

Este guia mostra como usar AWS CloudFormation modelos para criar e implantar recursos do AWS DevOps Agente. Os modelos automatizam a criação de um espaço para agentes, funções de AWS Identity and Access Management (IAM), um aplicativo de operador e associações de AWS contas como infraestrutura como código.

A CloudFormation abordagem automatiza as etapas manuais descritas no guia de integração da CLI definindo todos os recursos necessários em modelos YAML declarativos.

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, verifique se você tem o seguinte:

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

  • Permissões para criar funções e CloudFormation pilhas do IAM

  • 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 duas 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) — Implante uma função do IAM entre contas em uma conta secundária e adicione uma AWS associação de origem. Essa configuração permite que o espaço do agente monitore recursos em todas as contas.

Parte 1: Implantar o espaço do agente

Nesta seção, você cria um CloudFormation modelo que provisiona 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: criar o CloudFormation modelo

Salve o modelo a seguir comodevops-agent-stack.yaml:

AWSTemplateFormatVersion: '2010-09-09' Description: AWS DevOps Agent - Agent Space with IAM roles, operator app, and AWS association Parameters: AgentSpaceName: Type: String Default: MyCloudFormationAgentSpace Description: Name for the agent space AgentSpaceDescription: Type: String Default: Agent space deployed with CloudFormation Description: Description for the agent space Resources: # IAM role assumed by the DevOps Agent service to monitor the account DevOpsAgentSpaceRole: Type: AWS::IAM::Role Properties: RoleName: DevOpsAgentRole-AgentSpace AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: aidevops.amazonaws.com Action: sts:AssumeRole Condition: StringEquals: aws:SourceAccount: !Ref AWS::AccountId ArnLike: aws:SourceArn: !Sub arn:aws:aidevops:${AWS::Region}:${AWS::AccountId}:agentspace/* ManagedPolicyArns: - arn:aws:iam::aws:policy/AIDevOpsAgentAccessPolicy Policies: - PolicyName: AllowCreateServiceLinkedRoles PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowCreateServiceLinkedRoles Effect: Allow Action: - iam:CreateServiceLinkedRole Resource: - !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/resource-explorer-2.amazonaws.com/AWSServiceRoleForResourceExplorer # IAM role for the operator app interface DevOpsOperatorRole: Type: AWS::IAM::Role Properties: RoleName: DevOpsAgentRole-WebappAdmin AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: aidevops.amazonaws.com Action: - sts:AssumeRole - sts:TagSession Condition: StringEquals: aws:SourceAccount: !Ref AWS::AccountId ArnLike: aws:SourceArn: !Sub arn:aws:aidevops:${AWS::Region}:${AWS::AccountId}:agentspace/* ManagedPolicyArns: - arn:aws:iam::aws:policy/AIDevOpsOperatorAppAccessPolicy # The agent space resource AgentSpace: Type: AWS::DevOpsAgent::AgentSpace DependsOn: - DevOpsAgentSpaceRole - DevOpsOperatorRole Properties: Name: !Ref AgentSpaceName Description: !Ref AgentSpaceDescription OperatorApp: Iam: OperatorAppRoleArn: !GetAtt DevOpsOperatorRole.Arn # Association linking the monitoring account to the agent space MonitorAssociation: Type: AWS::DevOpsAgent::Association Properties: AgentSpaceId: !GetAtt AgentSpace.AgentSpaceId ServiceId: aws Configuration: Aws: AssumableRoleArn: !GetAtt DevOpsAgentSpaceRole.Arn AccountId: !Ref AWS::AccountId AccountType: monitor Outputs: AgentSpaceId: Description: The agent space ID Value: !GetAtt AgentSpace.AgentSpaceId AgentSpaceArn: Description: The agent space ARN Value: !GetAtt AgentSpace.Arn AgentSpaceRoleArn: Description: The agent space IAM role ARN Value: !GetAtt DevOpsAgentSpaceRole.Arn OperatorRoleArn: Description: The operator app IAM role ARN Value: !GetAtt DevOpsOperatorRole.Arn

Etapa 2: implantar a pilha

Execute o comando a seguir para implantar a pilha. <REGION>Substitua por um Regiões aceitas (por exemplo,us-east-1).

aws cloudformation deploy \ --template-file devops-agent-stack.yaml \ --stack-name DevOpsAgentStack \ --capabilities CAPABILITY_NAMED_IAM \ --region <REGION>

Etapa 3: Grave as saídas da pilha

Após a conclusão da implantação, execute o comando a seguir para recuperar as saídas da pilha. Registre esses valores para uso posterior.

aws cloudformation describe-stacks \ --stack-name DevOpsAgentStack \ --query 'Stacks[0].Outputs' \ --region <REGION>

O exemplo a seguir mostra a saída esperada:

[ { "OutputKey": "AgentSpaceId", "OutputValue": "abc123def456" }, { "OutputKey": "AgentSpaceArn", "OutputValue": "arn:aws:aidevops:<REGION>:<ACCOUNT_ID>:agentspace/abc123def456" }, { "OutputKey": "AgentSpaceRoleArn", "OutputValue": "arn:aws:iam::<ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace" }, { "OutputKey": "OperatorRoleArn", "OutputValue": "arn:aws:iam::<ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin" } ]

Se você planeja concluir a Parte 2, salve o AgentSpaceArn valor. Você precisa dele para configurar a função entre contas.

Etapa 4: Verificar a implantação

Para verificar se o espaço do agente foi criado com êxito, execute o seguinte comando da 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. Implantação de uma função do IAM na conta de serviço que confia no espaço do agente.

  2. Adicionar uma AWS associação de origem na conta de monitoramento que aponta para a conta de serviço.

Etapa 1: criar o modelo de conta de serviço

Salve o modelo a seguir comodevops-agent-service-account.yaml. Esse modelo cria uma função do IAM entre contas na conta secundária.

AWSTemplateFormatVersion: '2010-09-09' Description: AWS DevOps Agent - Cross-account IAM role for secondary account monitoring Parameters: MonitoringAccountId: Type: String Description: The 12-digit AWS account ID of the monitoring account AgentSpaceArn: Type: String Description: The ARN of the agent space from the monitoring account Resources: # Cross-account IAM role trusted by the agent space DevOpsSecondaryAccountRole: Type: AWS::IAM::Role Properties: RoleName: DevOpsAgentRole-SecondaryAccount AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: aidevops.amazonaws.com Action: sts:AssumeRole Condition: StringEquals: aws:SourceAccount: !Ref MonitoringAccountId ArnLike: aws:SourceArn: !Ref AgentSpaceArn ManagedPolicyArns: - arn:aws:iam::aws:policy/AIDevOpsAgentAccessPolicy Policies: - PolicyName: AllowCreateServiceLinkedRoles PolicyDocument: Version: '2012-10-17' Statement: - Sid: AllowCreateServiceLinkedRoles Effect: Allow Action: - iam:CreateServiceLinkedRole Resource: - !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/resource-explorer-2.amazonaws.com/AWSServiceRoleForResourceExplorer Outputs: SecondaryAccountRoleArn: Description: The cross-account IAM role ARN Value: !GetAtt DevOpsSecondaryAccountRole.Arn

Etapa 2: implantar a pilha de contas de serviço

Usando as credenciais da conta de serviço, execute o seguinte comando:

aws cloudformation deploy \ --template-file devops-agent-service-account.yaml \ --stack-name DevOpsAgentServiceAccountStack \ --capabilities CAPABILITY_NAMED_IAM \ --parameter-overrides \ MonitoringAccountId=<MONITORING_ACCOUNT_ID> \ AgentSpaceArn=<AGENT_SPACE_ARN> \ --region <REGION>

Etapa 3: Adicionar a AWS associação de origem

Volte para a conta de monitoramento e crie uma AWS associação de origem. Você pode fazer isso criando uma pilha separada ou atualizando o modelo original. O exemplo a seguir usa um modelo independente.

Salve o modelo a seguir comodevops-agent-source-association.yaml:

AWSTemplateFormatVersion: '2010-09-09' Description: AWS DevOps Agent - Source AWS association for cross-account monitoring Parameters: AgentSpaceId: Type: String Description: The agent space ID from the monitoring account stack ServiceAccountId: Type: String Description: The 12-digit AWS account ID of the service account ServiceAccountRoleArn: Type: String Description: The ARN of the DevOpsAgentRole-SecondaryAccount role in the service account Resources: SourceAssociation: Type: AWS::DevOpsAgent::Association Properties: AgentSpaceId: !Ref AgentSpaceId ServiceId: aws Configuration: SourceAws: AccountId: !Ref ServiceAccountId AccountType: source AssumableRoleArn: !Ref ServiceAccountRoleArn Outputs: SourceAssociationId: Description: The source association ID Value: !Ref SourceAssociation

Implante a pilha de associações usando as credenciais da conta de monitoramento:

aws cloudformation deploy \ --template-file devops-agent-source-association.yaml \ --stack-name DevOpsAgentSourceAssociationStack \ --parameter-overrides \ AgentSpaceId=<AGENT_SPACE_ID> \ ServiceAccountId=<SERVICE_ACCOUNT_ID> \ ServiceAccountRoleArn=arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/DevOpsAgentRole-SecondaryAccount \ --region <REGION>

Verificação

Verifique sua configuração executando os seguintes comandos da AWS CLI:

# List your agent spaces aws devops-agent list-agent-spaces \ --region <REGION> # Get details of a specific agent space aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION> # List associations for an agent space aws devops-agent list-associations \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>

Solução de problemas

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

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 suas credenciais de implantação têm permissões para criar funções do IAM com nomes personalizados (CAPABILITY_NAMED_IAM).

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

Falha na implantação entre contas

  • 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 AgentSpaceArn parâmetro corresponde ao ARN exato das saídas da pilha da Parte 1.

Atrasos na propagação do IAM

  • As mudanças de função do IAM podem levar alguns minutos para se propagar. 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, exclua as pilhas na ordem inversa.

Aviso: essa ação exclui permanentemente o espaço do seu 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.

Execute os seguintes comandos para excluir as pilhas:

# If you deployed the source association stack, delete it first aws cloudformation delete-stack \ --stack-name DevOpsAgentSourceAssociationStack \ --region <REGION> aws cloudformation wait stack-delete-complete \ --stack-name DevOpsAgentSourceAssociationStack \ --region <REGION> # If you deployed the service account stack, delete it next (using service account credentials) aws cloudformation delete-stack \ --stack-name DevOpsAgentServiceAccountStack \ --region <REGION> aws cloudformation wait stack-delete-complete \ --stack-name DevOpsAgentServiceAccountStack \ --region <REGION> # Delete the main stack last aws cloudformation delete-stack \ --stack-name DevOpsAgentStack \ --region <REGION>

Próximas etapas

Depois de implantar seu AWS DevOps agente usando AWS CloudFormation: