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.
Introducción al AWS DevOps Agente que usa AWS CloudFormation
Descripción general de
En esta guía se muestra cómo usar AWS CloudFormation las plantillas para crear e implementar los recursos AWS DevOps del agente. Las plantillas automatizan la creación de un espacio de agente, las funciones de administración de AWS identidades y accesos (IAM), una aplicación de operador y las asociaciones de AWS cuentas como infraestructura como código.
CloudFormation Este enfoque automatiza los pasos manuales descritos en la guía de incorporación de la CLI mediante la definición de todos los recursos necesarios en plantillas declarativas de YAML.
AWS DevOps El agente está disponible en varias regiones. AWS Puede consultar la lista completa e Regiones admitidas.
Requisitos previos
Antes de comenzar, asegúrese de que dispone de lo siguiente:
AWS La interfaz de línea de AWS comandos (CLI) está 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 quieres configurar la supervisión multicuenta
Qué cubre esta guía
Esta guía se divide en las siguientes partes:
Parte 1: Implemente un espacio de agentes con una aplicación de operador y una AWS asociación en su cuenta de monitoreo. Tras completar esta parte, el agente puede supervisar los problemas de esa cuenta.
Parte 2 (opcional): implemente una función de IAM multicuenta en una cuenta secundaria y añada una asociación de origen AWS . Esta configuración permite que el espacio de agentes supervise los recursos de todas las cuentas.
Parte 3 (opcional): añada una habilidad, un agente personalizado y un activador programado al espacio de agentes para que el agente tenga conocimientos personalizados y ejecute un agente personalizado según un cronograma.
Parte 1: implementar el espacio de agentes
En esta sección, crea una CloudFormation plantilla que aprovisiona el espacio de agente, las funciones de IAM, la aplicación de operador y una AWS asociación en su cuenta de monitoreo.
Paso 1: Crea la plantilla CloudFormation
Guarde la siguiente plantilla comodevops-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
Ejecute el siguiente comando para implementar la pila. Sustituir <REGION> por un Regiones admitidas (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
Una vez completada la implementación, ejecute el siguiente comando para recuperar las salidas 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 parte 2, guarde el AgentSpaceArn valor. Lo necesita para configurar la función multicuenta.
Paso 4: Verificar la implementación
Para comprobar que el espacio de agente se creó correctamente, ejecute el siguiente comando de la AWS CLI:
aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
En este punto, su espacio de agente está desplegado con la aplicación del operador habilitada y su cuenta de monitoreo asociada. El agente puede supervisar los problemas de esta cuenta.
Parte 2 (opcional): añadir la supervisión multicuenta
En esta sección, amplías la configuración para que tu espacio de agente pueda supervisar los recursos de una segunda AWS cuenta (la cuenta de servicio). Esto implica dos acciones:
Implementar una función de IAM en la cuenta de servicio que confía en el espacio de agentes.
Agregar una AWS asociación de origen en la cuenta de monitoreo que apunte a la cuenta de servicio.
Debe completar la primera parte antes de continuar. La plantilla de cuenta de servicio requiere los resultados AgentSpaceArn de la pila de la parte 1.
Paso 1: Cree la plantilla de cuenta de servicio
Guarde la siguiente plantilla comodevops-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: Implementa la pila de cuentas de servicio
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: Agregue la fuente AWS asociación
Vuelva a la cuenta de monitoreo y cree una AWS asociación de origen. Puede hacerlo creando una pila independiente o actualizando la plantilla original. En el siguiente ejemplo, se usa una plantilla independiente.
Guarde la siguiente plantilla comodevops-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 con 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>
Parte 3: Agregue una habilidad, un agente personalizado y un activador programado
Esta parte es opcional. En esta sección, agrega tres recursos al espacio de agente que creó en la parte 1. La primera es una habilidad que el agente adquiere cuando es relevante. El segundo es un agente personalizado que dirige el agente a un flujo de trabajo específico. El tercero es un activador programado que ejecuta el agente personalizado automáticamente. Estos recursos utilizan los tipos AWS::DevOpsAgent::Trigger de recursos AWS::DevOpsAgent::Asset y. Para obtener más información sobre la administración de activos como infraestructura en forma de código, consulteAdministración de activos.
Debe completar la primera parte antes de continuar. Esta plantilla requiere las salidas AgentSpaceId de la pila de la primera parte.
Paso 1: Crea la plantilla
Guarde la siguiente plantilla comodevops-agent-content.yaml. La acción de un activador basada en el tiempo hace referencia al agente personalizado por el ID de activo, en el formulariocustom:<assetId>. La plantilla lo conecta automáticamente conFn::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
Paso 2: Despliegue la pila
Con las credenciales de la cuenta de supervisión, ejecute el siguiente comando. <AGENT_SPACE_ID>Sustitúyalo por el valor de las salidas de la primera parte.
aws cloudformation deploy \ --template-file devops-agent-content.yaml \ --stack-name DevOpsAgentContentStack \ --parameter-overrides AgentSpaceId=<AGENT_SPACE_ID> \ --region <REGION>
Las Action propiedades AgentSpaceIdType,Condition, y son de solo creación. Al cambiar cualquiera de ellas, se reemplaza el recurso. Puedes actualizar el desencadenador Status (ActiveoInactive) en su lugar; configurarlo Inactive para pausar el desencadenador sin eliminarlo. Para obtener más información sobre los demás tipos de activos y la referencia completa de las propiedades, consulte. Administración de activos
Verificación
Verifique la configuración ejecutando los siguientes comandos de la 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
En esta sección se describen los problemas comunes y cómo resolverlos.
CloudFormation no se encontró el tipo de recurso
Compruebe que está realizando la implementación en unRegiones admitidas.
Confirme que su AWS CLI esté configurada con los permisos adecuados.
No se pudo crear el rol de IAM
Compruebe que sus credenciales de implementación 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 el identificador de tu cuenta.
Cross-account la implementación falla
Cada pila se debe implementar con las credenciales de la cuenta de destino. Utilice la
--profilemarca para especificar el perfil AWS CLI correcto.Verifique que el
AgentSpaceArnparámetro coincida con el ARN exacto de las salidas de la pila de la primera parte.
Retrasos en la propagación de IAM
Los cambios de rol de IAM pueden tardar unos minutos en propagarse. Si la creación del espacio de agentes falla inmediatamente después de crear el rol, espere unos minutos y vuelva a implementarlo.
Limpieza
Para eliminar todos los recursos, borre las pilas en orden inverso.
Advertencia: esta acción elimina permanentemente tu espacio de agente y todos los datos asociados. Esta acción no se puede deshacer. Asegúrese de haber realizado 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 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>
Siguientes pasos
Una vez que haya desplegado su AWS DevOps agente mediante AWS CloudFormation:
Para conectar integraciones adicionales, consulteConfiguración de integraciones y conocimientos.
Si registras una integración de terceros, gira el webhook en la consola para obtener la URL y el secreto del webhook. AWS CloudFormation no devuelve el secreto del webhook como resultado de la pila, porque es confidencial. Para obtener instrucciones sobre cómo administrar las credenciales de los webhooks, consulta Administrar las credenciales de los webhooks.
Para obtener más información sobre las habilidades y capacidades de los agentes, consulte. DevOps Habilidades de agente
Para obtener más información sobre la gestión de las habilidades, los agentes personalizados y otros activos utilizando la infraestructura como código, consulteAdministración de activos.
Para entender la aplicación web del operador, consulte¿Qué es una aplicación web de DevOps agente?.
Para obtener referencias detalladas sobre las propiedades de los tipos de CloudFormation recursos utilizados en esta guía, consulte la referencia a los tipos de recursos de los AWS DevOps agentes en la referencia AWS CloudFormation de la plantilla.