View a markdown version of this page

Commencer à utiliser l' AWS DevOps Agent à l'aide de AWS CloudFormation - AWS DevOps Agent

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencer à utiliser l' AWS DevOps Agent à l'aide de AWS CloudFormation

Présentation de

Ce guide explique comment utiliser des AWS CloudFormation modèles pour créer et déployer des ressources d' AWS DevOps agent. Les modèles automatisent la création d'un espace d'agent, de rôles AWS Identity and Access Management (IAM), d'une application d'opérateur et d'associations de AWS comptes sous forme d'infrastructure et de code.

L' CloudFormation approche automatise les étapes manuelles décrites dans le guide d'intégration de la CLI en définissant toutes les ressources requises dans des modèles YAML déclaratifs.

AWS DevOps L'agent est disponible dans les 6 AWS régions suivantes : USA Est (Virginie du Nord), USA Ouest (Oregon), Asie-Pacifique (Sydney), Asie-Pacifique (Tokyo), Europe (Francfort) et Europe (Irlande). Pour plus d'informations sur les régions prises en charge, consultezRégions prises en charge.

Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • AWS Interface de ligne de commande (AWS CLI) installée et configurée avec les informations d'identification appropriées

  • Autorisations pour créer des rôles et CloudFormation des piles IAM

  • Un AWS compte pour le compte de surveillance (principal)

  • (Facultatif) Un deuxième AWS compte si vous souhaitez configurer la surveillance entre comptes

Ce que couvre ce guide

Ce guide est divisé en deux parties :

  • Partie 1 — Déployez un espace d'agent avec une application d'opérateur et une AWS association dans votre compte de surveillance. Une fois cette partie terminée, l'agent peut surveiller les problèmes liés à ce compte.

  • Partie 2 (facultatif) — Déployez un rôle IAM entre comptes dans un compte secondaire et ajoutez une association source AWS . Cette configuration permet à l'espace agent de surveiller les ressources entre les comptes.

Partie 1 : Déploiement de l'espace agent

Dans cette section, vous allez créer un CloudFormation modèle qui fournit l'espace des agents, les rôles IAM, l'application opérateur et une AWS association dans votre compte de surveillance.

Étape 1 : Création du CloudFormation modèle

Enregistrez le modèle suivant sous le nom devops-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

Étape 2 : Déployer la pile

Exécutez la commande suivante pour déployer la pile. Remplacez <REGION> par un Régions prises en charge (par exemple,us-east-1).

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

Étape 3 : Enregistrez les sorties de la pile

Une fois le déploiement terminé, exécutez la commande suivante pour récupérer les sorties de la pile. Enregistrez ces valeurs pour une utilisation ultérieure.

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

L'exemple suivant montre le résultat attendu :

[ { "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" } ]

Si vous prévoyez de terminer la partie 2, enregistrez la AgentSpaceArn valeur. Vous en avez besoin pour configurer le rôle multi-comptes.

Étape 4 : vérifier le déploiement

Pour vérifier que l'espace agent a bien été créé, exécutez la commande AWS CLI suivante :

aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>

À ce stade, votre espace d'agent est déployé avec l'application opérateur activée et votre compte de surveillance associé. L'agent peut surveiller les problèmes liés à ce compte.

Partie 2 (facultatif) : Ajouter une surveillance entre comptes

Dans cette section, vous étendez la configuration afin que votre espace agent puisse surveiller les ressources d'un deuxième AWS compte (le compte de service). Cela implique deux actions :

  1. Déploiement d'un rôle IAM dans le compte de service qui fait confiance à l'espace agent.

  2. Ajout d'une AWS association source dans le compte de surveillance pointant vers le compte de service.

Étape 1 : Création du modèle de compte de service

Enregistrez le modèle suivant sousdevops-agent-service-account.yaml. Ce modèle crée un rôle IAM entre comptes dans le compte secondaire.

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

Étape 2 : Déployer la pile de comptes de service

À l'aide des informations d'identification du compte de service, exécutez la commande suivante :

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>

Étape 3 : ajouter l' AWS association source

Revenez au compte de surveillance et créez une AWS association de source. Vous pouvez le faire en créant une pile séparée ou en mettant à jour le modèle d'origine. L'exemple suivant utilise un modèle autonome.

Enregistrez le modèle suivant sous le nom devops-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

Déployez la pile d'associations à l'aide des informations d'identification du compte de surveillance :

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>

Vérification

Vérifiez votre configuration en exécutant les commandes AWS CLI suivantes :

# 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>

Résolution des problèmes

Cette section décrit les problèmes courants et explique comment les résoudre.

CloudFormation type de ressource introuvable

  • Vérifiez que vous déployez dans unRégions prises en charge.

  • Vérifiez que votre AWS CLI est configurée avec les autorisations appropriées.

La création du rôle IAM a échoué

  • Vérifiez que vos informations d'identification de déploiement sont autorisées à créer des rôles IAM avec des noms personnalisés (CAPABILITY_NAMED_IAM).

  • Vérifiez que les conditions de la politique de confiance correspondent à votre numéro de compte.

Le déploiement entre comptes échoue

  • Chaque pile doit être déployée avec les informations d'identification du compte cible. Utilisez l'--profileindicateur pour spécifier le profil de AWS CLI correct.

  • Vérifiez que le AgentSpaceArn paramètre correspond exactement à l'ARN des sorties de la pile de la partie 1.

Retards de propagation de l'IAM

  • La propagation des modifications de rôle IAM peut prendre quelques minutes. Si la création de l'espace agent échoue immédiatement après la création du rôle, attendez quelques minutes avant de procéder au redéploiement.

Nettoyage

Pour supprimer toutes les ressources, supprimez les piles dans l'ordre inverse.

Avertissement : Cette action supprime définitivement votre espace agent et toutes les données associées. Cette action ne peut être annulée. Assurez-vous d'avoir sauvegardé toutes les informations importantes avant de continuer.

Exécutez les commandes suivantes pour supprimer les piles :

# 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>

Étapes suivantes

Après avoir déployé votre AWS DevOps agent en utilisant AWS CloudFormation :