View a markdown version of this page

Démarrage avec AWS DevOps Agent utilisant 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.

Démarrage avec AWS DevOps Agent utilisant 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 de gestion des AWS identités et des accès (IAM), d'une application opérateur et d'associations de AWS comptes sous forme d'infrastructure en tant que 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 plusieurs AWS régions. Pour obtenir la liste complète, consultez Ré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 comprend les parties suivantes :

  • Partie 1 — Déployez un espace agent avec une application 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 (Facultative) — Déployez un rôle IAM multicompte dans un compte secondaire et ajoutez une association de sources AWS . Cette configuration permet à l'espace agent de surveiller les ressources entre les comptes.

  • Partie 3 (Facultative) — Ajoutez une compétence, un agent personnalisé et un déclencheur programmé à l'espace agent, afin que l'agent dispose de connaissances personnalisées et exécute un agent personnalisé selon un calendrier.

Partie 1 : Déploiement de l'espace agent

Dans cette section, vous allez créer un CloudFormation modèle qui fournit l'espace d'agent, 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éploiement de 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 inter-comptes.

Étape 4 : vérifier le déploiement

Pour vérifier que l'espace agent a été créé correctement, 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 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 multi-comptes

Dans cette section, vous allez étendre la configuration afin que votre espace agent puisse surveiller les ressources d'un second 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 qui pointe vers le compte de service.

Vous devez terminer la partie 1 avant de continuer. Le modèle de compte de service nécessite les sorties AgentSpaceArn de la pile de la partie 1.

É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 inter-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éploiement de 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 la source AWS association

Revenez au compte de surveillance et créez une AWS association de sources. Vous pouvez le faire en créant une pile distincte 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>

Partie 3 : Ajouter une compétence, un agent personnalisé et un déclencheur programmé

Cette partie est facultative. Dans cette section, vous ajoutez trois ressources à l'espace agent que vous avez créé dans la partie 1. La première est une compétence que l'agent charge lorsqu'elle est pertinente. Le second est un agent personnalisé qui affecte l'agent à un flux de travail spécifique. Le troisième est un déclencheur programmé qui exécute automatiquement l'agent personnalisé. Ces ressources utilisent les types AWS::DevOpsAgent::Asset de AWS::DevOpsAgent::Trigger ressources et. Pour plus d'informations sur la gestion des actifs sous forme d'infrastructure en tant que code, consultezGestion des ressources.

Vous devez terminer la partie 1 avant de continuer. Ce modèle nécessite les sorties AgentSpaceId de la pile de la partie 1.

Étape 1 : Création du modèle

Enregistrez le modèle suivant sousdevops-agent-content.yaml. L'action d'un déclencheur basé sur le temps fait référence à l'agent personnalisé par ID d'actif, dans le formulairecustom:<assetId>. Le modèle le connecte automatiquement àFn::GetAtt.

AWSTemplateFormatVersion: '2010-09-09' Description: AWS DevOps Agent - Example skill, custom agent, and scheduled trigger Parameters: AgentSpaceId: Type: String Description: The agent space ID from the Part 1 stack outputs Resources: # A skill the agent loads when relevant ExampleSkill: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: skill Metadata: name: rds-performance-investigation description: Investigation procedures for RDS performance issues. agent_types: - GENERIC Files: - Path: SKILL.md ContentText: | # RDS Performance Investigation Use this skill when investigating database latency, connection errors, or query timeouts. # A custom agent that a trigger can invoke ExampleCustomAgent: Type: AWS::DevOpsAgent::Asset Properties: AgentSpaceId: !Ref AgentSpaceId AssetType: custom_agent Metadata: name: rds-firefighter skills: - rds-performance-investigation Files: - Path: AGENT.md ContentText: | # RDS Firefighter Custom agent for RDS incidents. # A time-based trigger that runs the custom agent on a schedule DailyTrigger: Type: AWS::DevOpsAgent::Trigger Properties: AgentSpaceId: !Ref AgentSpaceId Type: TIME_BASED Condition: Schedule: Expression: rate(1 day) Action: actionType: create:task task: agent: !Sub - custom:${AssetId} - AssetId: !GetAtt ExampleCustomAgent.AssetId Status: Active Outputs: SkillAssetId: Description: The skill asset ID Value: !GetAtt ExampleSkill.AssetId CustomAgentAssetId: Description: The custom agent asset ID Value: !GetAtt ExampleCustomAgent.AssetId TriggerId: Description: The trigger ID Value: !GetAtt DailyTrigger.TriggerId

Étape 2 : Déploiement de la pile

À l'aide des informations d'identification du compte de surveillance, exécutez la commande suivante. Remplacez <AGENT_SPACE_ID> par la valeur des sorties de la partie 1.

aws cloudformation deploy \ --template-file devops-agent-content.yaml \ --stack-name DevOpsAgentContentStack \ --parameter-overrides AgentSpaceId=<AGENT_SPACE_ID> \ --region <REGION>

Les Action propriétésAgentSpaceId, TypeCondition, et sont réservées à la création. La modification de l'un d'entre eux remplace la ressource. Vous pouvez mettre à jour le déclencheur Status (ActiveouInactive) en place, en le configurant Inactive pour le suspendre sans le supprimer. Pour plus d'informations sur les autres types d'actifs et la référence complète des propriétés, consultezGestion des ressources.

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 effectuez le déploiement 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 identifiant de compte.

Cross-account le déploiement échoue

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

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

Délais de propagation 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 et redéployez.

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 Part 3 content stack, delete it first aws cloudformation delete-stack \ --stack-name DevOpsAgentContentStack \ --region <REGION> aws cloudformation wait stack-delete-complete \ --stack-name DevOpsAgentContentStack \ --region <REGION> # If you deployed the source association stack, delete it next 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 à l'aide de AWS CloudFormation :

  • Pour connecter des intégrations supplémentaires, consultezConfiguration des intégrations et des connaissances.

  • Si vous enregistrez une intégration tierce, obtenez l'URL et le secret de son webhook en le faisant pivoter dans la console. AWS CloudFormation ne renvoie pas le secret du webhook en tant que sortie de pile, car il est sensible. Pour obtenir des instructions sur la gestion des informations d'identification du webhook, consultez la section Gestion des informations d'identification du webhook.

  • Pour en savoir plus sur les compétences et les capacités des agents, consultezDevOps Compétences des agents.

  • Pour plus d'informations sur la gestion des compétences, des agents personnalisés et d'autres actifs sous forme d'infrastructure sous forme de code, consultezGestion des ressources.

  • Pour comprendre l'application Web destinée aux opérateurs, consultezQu'est-ce qu'une application Web d' DevOps agent ?.

  • Pour des références de propriétés détaillées pour les types de CloudFormation ressources utilisés dans ce guide, consultez la section Référence des types de ressources d'AWS DevOps agent dans la référence du AWS CloudFormation modèle.