

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómo empezar a usar AWS DevOps Agent AWS CloudFormation
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-aws-cloudformation"></a>

## Descripción general de
<a name="overview"></a>

En esta guía, se muestra cómo utilizar AWS CloudFormation plantillas para crear e implementar los recursos AWS DevOps del agente. Las plantillas automatizan la creación de un espacio de agentes, funciones de AWS Identity and Access Management (IAM), una aplicación de operador y asociaciones de AWS cuentas tanto de infraestructura como de código.

El CloudFormation enfoque automatiza los pasos manuales descritos en la [guía de incorporación de la CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) al definir todos los recursos necesarios en plantillas YAML declarativas.

AWS DevOps El agente está disponible en las siguientes 6 AWS regiones: EE.UU. Este (Norte de Virginia), EE.UU. Oeste (Oregón), Asia Pacífico (Sídney), Asia Pacífico (Tokio), Europa (Fráncfort) y Europa (Irlanda). Para obtener más información sobre las regiones compatibles, consulte[Regiones admitidas](about-aws-devops-agent-supported-regions.md).

## Requisitos previos
<a name="prerequisites"></a>

Antes de comenzar, asegúrese de que dispone de lo siguiente:
+ AWS Interfaz de línea de comandos (AWS CLI) instalada y configurada con las credenciales adecuadas
+ Permisos para crear roles y CloudFormation pilas de IAM
+ Una AWS cuenta para la cuenta de supervisión (principal)
+ (Opcional) Una segunda AWS cuenta si desea configurar la supervisión multicuenta

## ¿Qué cubre esta guía
<a name="what-this-guide-covers"></a>

Esta guía se divide en dos partes:
+ **Parte 1**: Implemente un espacio de agente con una aplicación de operador y una AWS asociación en su cuenta de monitoreo. Una vez completada esta parte, el agente puede supervisar los problemas en esa cuenta.
+ **Parte 2 (opcional)**: implementar una función de IAM multicuenta en una cuenta secundaria y añadir una asociación de origen AWS . Esta configuración permite que el espacio de agentes supervise los recursos de todas las cuentas.

## Parte 1: Despliegue el espacio de agentes
<a name="part-1-deploy-the-agent-space"></a>

En esta sección, debe crear una CloudFormation plantilla que aprovisione el espacio de agente, las funciones de IAM, la aplicación del operador y una AWS asociación en su cuenta de monitoreo.

### Paso 1: Crea la plantilla CloudFormation
<a name="step-1-create-the-cloudformation-template"></a>

Guarde la siguiente plantilla como`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
```

### Paso 2: Despliegue la pila
<a name="step-2-deploy-the-stack"></a>

Ejecute el siguiente comando para implementar la pila. `<REGION>`Sustitúyalo por un [Regiones admitidas](about-aws-devops-agent-supported-regions.md) (por ejemplo,`us-east-1`).

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

### Paso 3: Registre las salidas de la pila
<a name="step-3-record-the-stack-outputs"></a>

Una vez completada la implementación, ejecute el siguiente comando para recuperar los resultados de la pila. Registre estos valores para usarlos más adelante.

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

El siguiente ejemplo muestra el resultado esperado:

```
[
  {
    "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 planea completar la segunda parte, guarde el `AgentSpaceArn` valor. Lo necesita para configurar el rol multicuenta.

### Paso 4: Verificar la implementación
<a name="step-4-verify-the-deployment"></a>

Para comprobar que el espacio de agentes se creó correctamente, ejecute el siguiente comando AWS CLI:

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

En este punto, su espacio de agente se despliega con la aplicación del operador habilitada y su cuenta de supervisión asociada. El agente puede supervisar los problemas en esta cuenta.

## Parte 2 (opcional): Añadir la supervisión entre cuentas
<a name="part-2-optional-add-cross-account-monitoring"></a>

En esta sección, ampliará la configuración para que su espacio de agente pueda supervisar los recursos de una segunda AWS cuenta (la cuenta de servicio). Esto implica dos acciones:

1. Implementar una función de IAM en la cuenta de servicio que confía en el espacio de agentes.

1. Añadir una AWS asociación de origen a la cuenta de supervisión que apunte a la cuenta de servicio.

**Nota:** Debe completar la parte 1 antes de continuar. La plantilla de la cuenta de servicio requiere los resultados `AgentSpaceArn` de la pila de la parte 1.

### Paso 1: Crear la plantilla de cuenta de servicio
<a name="step-1-create-the-service-account-template"></a>

Guarde la siguiente plantilla como`devops-agent-service-account.yaml`. Esta plantilla crea un rol de IAM multicuenta en la cuenta secundaria.

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

### Paso 2: Implemente la pila de cuentas de servicio
<a name="step-2-deploy-the-service-account-stack"></a>

Con las credenciales de la cuenta de servicio, ejecute el siguiente 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>
```

### Paso 3: Añada la AWS asociación de origen
<a name="step-3-add-the-source-aws-association"></a>

Vuelva a la cuenta de monitoreo y cree una AWS asociación de fuentes. Para ello, puede crear una pila independiente o actualizar la plantilla original. En el siguiente ejemplo, se utiliza una plantilla independiente.

Guarde la siguiente plantilla como`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
```

Implemente la pila de asociaciones mediante las credenciales de la cuenta de supervisión:

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

## Verificación
<a name="verification"></a>

Verifique la configuración ejecutando los siguientes comandos de 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>
```

## Resolución de problemas
<a name="troubleshooting"></a>

En esta sección se describen los problemas más comunes y cómo resolverlos.

**CloudFormation no se encontró el tipo de recurso**
+ Compruebe que está realizando el despliegue en un[Regiones admitidas](about-aws-devops-agent-supported-regions.md).
+ Confirme que la AWS CLI esté configurada con los permisos adecuados.

**No se pudo crear el rol de IAM**
+ Compruebe que sus credenciales de despliegue tengan permisos para crear roles de IAM con nombres personalizados ()`CAPABILITY_NAMED_IAM`.
+ Comprueba que las condiciones de la política de confianza coincidan con tu ID de cuenta.

**Se produce un error en el despliegue entre cuentas**
+ Cada pila debe implementarse con las credenciales de la cuenta de destino. Utilice la `--profile` marca para especificar el perfil AWS CLI correcto.
+ Verifique que el `AgentSpaceArn` parámetro coincida con el ARN exacto de las salidas de la pila de la Parte 1.

**Retrasos de propagación de IAM**
+ Los cambios de rol de IAM pueden tardar unos minutos en propagarse. Si se produce un error al crear el espacio de agente inmediatamente después de crear el rol, espere unos minutos y vuelva a desplegarlo.

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

Para eliminar todos los recursos, elimine las pilas en orden inverso.

**Advertencia:** esta acción elimina permanentemente su espacio de agente y todos los datos asociados. Esta acción no se puede deshacer. Asegúrese de haber hecho una copia de seguridad de toda la información importante antes de continuar.

Ejecute los siguientes comandos para eliminar las pilas:

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

## Siguientes pasos
<a name="next-steps"></a>

Una vez que haya desplegado su AWS DevOps agente mediante AWS CloudFormation:
+ Para conectar integraciones adicionales, consulte[Configuración de las capacidades del AWS DevOps agente](configuring-capabilities-for-aws-devops-agent.md).
+ Para obtener más información sobre las habilidades y capacidades de los agentes, consulte[DevOps Habilidades de agente](about-aws-devops-agent-devops-agent-skills.md).
+ Para entender la aplicación web del operador, consulte[¿Qué es una aplicación web para DevOps agentes?](about-aws-devops-agent-what-is-a-devops-agent-web-app.md).