

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
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-aws-cloudformation"></a>

## Présentation de
<a name="overview"></a>

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](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) 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, consultez[Régions prises en charge](about-aws-devops-agent-supported-regions.md).

## Conditions préalables
<a name="prerequisites"></a>

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
<a name="what-this-guide-covers"></a>

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
<a name="part-1-deploy-the-agent-space"></a>

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
<a name="step-1-create-the-cloudformation-template"></a>

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
<a name="step-2-deploy-the-stack"></a>

Exécutez la commande suivante pour déployer la pile. Remplacez `<REGION>` par un [Régions prises en charge](about-aws-devops-agent-supported-regions.md) (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
<a name="step-3-record-the-stack-outputs"></a>

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
<a name="step-4-verify-the-deployment"></a>

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
<a name="part-2-optional-add-cross-account-monitoring"></a>

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.

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

**Remarque :** 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
<a name="step-1-create-the-service-account-template"></a>

Enregistrez le modèle suivant sous`devops-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
<a name="step-2-deploy-the-service-account-stack"></a>

À 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
<a name="step-3-add-the-source-aws-association"></a>

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
<a name="verification"></a>

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
<a name="troubleshooting"></a>

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 un[Régions prises en charge](about-aws-devops-agent-supported-regions.md).
+ 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'`--profile`indicateur 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
<a name="cleanup"></a>

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
<a name="next-steps"></a>

Après avoir déployé votre AWS DevOps agent en utilisant AWS CloudFormation :
+ Pour connecter des intégrations supplémentaires, voir[Configuration des fonctionnalités de AWS DevOps l'agent](configuring-capabilities-for-aws-devops-agent.md).
+ Pour en savoir plus sur les compétences et les capacités des agents, voir[DevOps Compétences des agents](about-aws-devops-agent-devops-agent-skills.md).
+ Pour comprendre l'application Web destinée aux opérateurs, voir[Qu'est-ce qu'une application Web pour DevOps agents ?](about-aws-devops-agent-what-is-a-devops-agent-web-app.md).