

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Guida introduttiva all'utilizzo di AWS DevOps Agent AWS CloudFormation
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-aws-cloudformation"></a>

## Panoramica di
<a name="overview"></a>

Questa guida mostra come utilizzare i AWS CloudFormation modelli per creare e distribuire le risorse degli AWS DevOps agenti. I modelli automatizzano la creazione di uno spazio agente, ruoli AWS Identity and Access Management (IAM), un'app operatore e associazioni di AWS account come infrastruttura come codice.

L' CloudFormation approccio automatizza i passaggi manuali descritti nella guida all'[onboarding della CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) definendo tutte le risorse richieste in modelli YAML dichiarativi.

AWS DevOps L'agente è disponibile nelle seguenti 6 AWS regioni: Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon), Asia Pacifico (Sydney), Asia Pacifico (Tokyo), Europa (Francoforte) ed Europa (Irlanda). Per ulteriori informazioni sulle regioni supportate, consulta. [Regioni supportate](about-aws-devops-agent-supported-regions.md)

## Prerequisiti
<a name="prerequisites"></a>

Prima di iniziare, assicurati di disporre di:
+ AWS Interfaccia a riga di comando (AWS CLI) installata e configurata con le credenziali appropriate
+ Autorizzazioni per creare ruoli e stack IAM CloudFormation 
+ Un AWS account per l'account di monitoraggio (principale)
+ (Facoltativo) Un secondo AWS account se desideri configurare il monitoraggio tra più account

## Cosa tratta questa guida
<a name="what-this-guide-covers"></a>

Questa guida è divisa in due parti:
+ **Parte 1**: implementa uno spazio per agenti con un'app per operatori e un' AWS associazione nel tuo account di monitoraggio. Dopo aver completato questa parte, l'agente può monitorare i problemi relativi all'account.
+ **Parte 2 (facoltativa)**: implementa un ruolo IAM tra account diversi in un account secondario e aggiungi un'associazione di origine AWS . Questa configurazione consente allo spazio dell'agente di monitorare le risorse tra gli account.

## Parte 1: Distribuisci lo spazio degli agenti
<a name="part-1-deploy-the-agent-space"></a>

In questa sezione, crei un CloudFormation modello che fornisce lo spazio degli agenti, i ruoli IAM, l'app operatore e un' AWS associazione nel tuo account di monitoraggio.

### Fase 1: Creare il CloudFormation modello
<a name="step-1-create-the-cloudformation-template"></a>

Salva il seguente modello come`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
```

### Fase 2: Distribuire lo stack
<a name="step-2-deploy-the-stack"></a>

Esegui il comando seguente per distribuire lo stack. Sostituisci `<REGION>` con a [Regioni supportate](about-aws-devops-agent-supported-regions.md) (ad esempio,`us-east-1`).

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

### Fase 3: Registrare gli output dello stack
<a name="step-3-record-the-stack-outputs"></a>

Al termine della distribuzione, esegui il comando seguente per recuperare gli output dello stack. Registra questi valori per un uso successivo.

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

L'esempio seguente mostra l'output previsto:

```
[
  {
    "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 intendi completare la Parte 2, salva il `AgentSpaceArn` valore. Ne hai bisogno per configurare il ruolo tra account.

### Fase 4: Verifica della distribuzione
<a name="step-4-verify-the-deployment"></a>

Per verificare che lo spazio agente sia stato creato correttamente, esegui il seguente comando AWS CLI:

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

A questo punto, lo spazio per gli agenti viene distribuito con l'app operatore abilitata e l'account di monitoraggio associato. L'agente può monitorare i problemi relativi a questo account.

## Parte 2 (facoltativa): aggiungi il monitoraggio tra account
<a name="part-2-optional-add-cross-account-monitoring"></a>

In questa sezione, estendete la configurazione in modo che lo spazio dell'agente possa monitorare le risorse in un secondo AWS account (l'account di servizio). Ciò comporta due azioni:

1. Implementazione di un ruolo IAM nell'account di servizio che affida lo spazio degli agenti.

1. Aggiungere un' AWS associazione di origine nell'account di monitoraggio che punti all'account di servizio.

**Nota:** è necessario completare la Parte 1 prima di procedere. Il modello di account di servizio richiede gli `AgentSpaceArn` output dello stack della Parte 1.

### Fase 1: Creare il modello di account di servizio
<a name="step-1-create-the-service-account-template"></a>

Salva il seguente modello come`devops-agent-service-account.yaml`. Questo modello crea un ruolo IAM tra account diversi nell'account secondario.

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

### Fase 2: Implementazione dello stack di account di servizio
<a name="step-2-deploy-the-service-account-stack"></a>

Utilizzando le credenziali per l'account di servizio, esegui il comando seguente:

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

### Passaggio 3: Aggiungere l'associazione di origine AWS
<a name="step-3-add-the-source-aws-association"></a>

Torna all'account di monitoraggio e crea un' AWS associazione di origine. Puoi farlo creando uno stack separato o aggiornando il modello originale. L'esempio seguente utilizza un modello autonomo.

Salva il seguente modello come`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
```

Distribuisci lo stack di associazione utilizzando le credenziali dell'account di monitoraggio:

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

Verifica la configurazione eseguendo i seguenti comandi 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>
```

## Risoluzione dei problemi
<a name="troubleshooting"></a>

Questa sezione descrive i problemi più comuni e come risolverli.

**CloudFormation tipo di risorsa non trovato**
+ Verifica di eseguire la distribuzione in un[Regioni supportate](about-aws-devops-agent-supported-regions.md).
+ Verifica che la tua AWS CLI sia configurata con le autorizzazioni appropriate.

**Creazione del ruolo IAM non riuscita**
+ Verifica che le tue credenziali di distribuzione dispongano delle autorizzazioni per creare ruoli IAM con nomi personalizzati ()`CAPABILITY_NAMED_IAM`.
+ Verifica che le condizioni della politica di fiducia corrispondano all'ID del tuo account.

**La distribuzione tra account non riesce**
+ Ogni stack deve essere distribuito con le credenziali per l'account di destinazione. Utilizzate il `--profile` flag per specificare il profilo AWS CLI corretto.
+ Verificate che il `AgentSpaceArn` parametro corrisponda all'ARN esatto degli output dello stack Parte 1.

**Ritardi di propagazione IAM**
+ La propagazione delle modifiche ai ruoli IAM può richiedere alcuni minuti. Se la creazione dello spazio dell'agente fallisce subito dopo la creazione del ruolo, attendi qualche minuto e ridistribuisci.

## Pulizia
<a name="cleanup"></a>

Per rimuovere tutte le risorse, elimina gli stack in ordine inverso.

**Avviso:** questa azione elimina definitivamente lo spazio dell'agente e tutti i dati associati. Questa azione non può essere annullata. Assicurati di aver eseguito il backup di tutte le informazioni importanti prima di procedere.

Esegui i seguenti comandi per eliminare gli stack:

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

## Fasi successive
<a name="next-steps"></a>

Dopo aver distribuito l' AWS DevOps agente utilizzando: AWS CloudFormation
+ Per connettere integrazioni aggiuntive, consulta. [Configurazione delle funzionalità per Agent AWS DevOps](configuring-capabilities-for-aws-devops-agent.md)
+ Per ulteriori informazioni sulle competenze e le funzionalità degli agenti, consulta[DevOps Competenze degli agenti](about-aws-devops-agent-devops-agent-skills.md).
+ Per comprendere l'app web dell'operatore, consulta[Cos'è un'app Web per DevOps agenti?](about-aws-devops-agent-what-is-a-devops-agent-web-app.md).