Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit AWS DevOps Agent verwendet AWS CDK
-Übersicht
Diese Anleitung zeigt Ihnen, wie Sie das AWS Cloud Development Kit (AWS CDK) verwenden, um AWS DevOps Agentenressourcen zu erstellen und bereitzustellen. Die AWS CDK-Anwendung automatisiert die Erstellung eines Agentenbereichs, von AWS Identitäts- und Zugriffsmanagement (IAM) -Rollen, einer Operator-App und AWS von Kontozuordnungen über. AWS CloudFormation
Der AWS CDK-Ansatz automatisiert die im CLI-Onboarding-Leitfaden beschriebenen manuellen Schritte, indem alle erforderlichen Ressourcen als Infrastruktur in Form von Code definiert werden.
AWS DevOps Der Agent ist in mehreren Regionen verfügbar. AWS Eine vollständige Liste finden Sie unter Unterstützte Regionen.
Voraussetzungen
Stellen Sie vor dem Beginn sicher, dass Sie über Folgendes verfügen:
AWS Die Befehlszeilenschnittstelle (AWS CLI) wurde installiert und mit den entsprechenden Anmeldeinformationen konfiguriert
Node.js Version 18 oder höher
AWS Die CDK-Befehlszeilenschnittstelle (CLI) ist global installiert. Führen Sie den folgenden Befehl aus, um die AWS CDK-CLI zu installieren:
npm install -g aws-cdk
Ein AWS Konto für das Überwachungskonto (primäres Konto)
(Optional) Ein zweites AWS Konto, wenn Sie eine kontoübergreifende Überwachung einrichten möchten
(Für Teil 3)
aws-cdk-libVersion 2.268.0 oder höher. Die in Teil 3 verwendetenCfnTriggerKonstrukteCfnAssetund wurden in dieser Version hinzugefügt. Um die Version in Ihrem Projekt zu überprüfen, führennpm list aws-cdk-libSie den Befehl aus.
Was dieses Handbuch abdeckt
Dieses Handbuch ist in die folgenden Teile gegliedert:
Teil 1 — Stellen Sie einen Agentenbereich mit einer Operator-App und einer AWS Verknüpfung in Ihrem Überwachungskonto bereit. Nachdem Sie diesen Teil abgeschlossen haben, kann der Agent die Probleme in diesem Konto überwachen.
Teil 2 (optional) — Fügen Sie eine AWS Quellzuordnung für ein Dienstkonto hinzu und stellen Sie eine kontoübergreifende IAM-Rolle für dieses Konto bereit. Diese Konfiguration ermöglicht es dem Agentenbereich, Ressourcen kontenübergreifend zu überwachen.
Teil 3 (optional) — Fügen Sie dem Agentenbereich einen Skill, einen benutzerdefinierten Agenten und einen geplanten Trigger hinzu, damit der Agent über benutzerdefinierte Kenntnisse verfügt und der geplante Trigger diesen benutzerdefinierten Agenten automatisch ausführt.
Ressourcen wurden erstellt
Teil 1: DevOpsAgentStack (Überwachungskonto)
IAM-Rolle (
DevOpsAgentRole-AgentSpace) — Wird vom DevOps Agent-Dienst zur Überwachung des Kontos übernommen. Beinhaltet dieAIDevOpsAgentAccessPolicyverwaltete Richtlinie und eine integrierte Richtlinie, die die Erstellung der dienstverknüpften Resource Explorer-Rolle ermöglicht.IAM-Rolle (
DevOpsAgentRole-WebappAdmin) — Operator-App-Rolle mit derAIDevOpsOperatorAppAccessPolicyverwalteten Richtlinie für Agentenoperationen.Agentenbereich (
MyCDKAgentSpace) — Der zentrale Agentenbereich, der mithilfe derAWS::DevOpsAgent::AgentSpaceCloudFormation Ressource erstellt wurde. Beinhaltet die Konfiguration der Operator-App.Zuordnung (AWS Monitor) — Verknüpft das Überwachungskonto mithilfe der
AWS::DevOpsAgent::AssociationCloudFormation Ressource mit dem Agentenbereich.Zuordnung (AWS Quelle) — (Optional) Verknüpft das Dienstkonto zur kontoübergreifenden Überwachung mit dem Agentenbereich.
Teil 2: ServiceStack (Dienstkonto, optional)
IAM role (
DevOpsAgentRole-SecondaryAccount) — Cross-account Rolle mit einem festen Namen. Der Agentenbereich im Überwachungskonto wird als vertrauenswürdig eingestuft. Beinhaltet dieAIDevOpsAgentAccessPolicyverwaltete Richtlinie und eine integrierte Richtlinie, die die Erstellung der dienstverknüpften Resource Explorer-Rolle ermöglicht.Lambda-Funktion (
echo-service) — Ein einfacher Beispieldienst, der Eingabeereignisse zurückgibt.
Teil 3: Ressourcen und Auslöser (Überwachungskonto, optional)
Dieser Stack erstellt die folgenden Ressourcen:
Skill (
rds-performance-investigation) — Ein Skill, den der Agent bei Bedarf lädt. Er wurde erstellt, indem dasCfnAssetKonstrukt mit einemassetTypevon verwendet wirdskill.Benutzerdefinierter Agent (
rds-firefighter) — Ordnet dem Agenten einen bestimmten Workflow mit angehängten Fähigkeiten zu, der mithilfe desCfnAssetKonstrukts mit einemassetTypevoncustom_agenterstellt wurde.Trigger (
TIME_BASED) — Führt den benutzerdefinierten Agenten nach einem Zeitplan aus, der mithilfe desCfnTriggerKonstrukts erstellt wurde.
Einrichtung
Schritt 1: Klonen Sie das Beispiel-Repository
Führen Sie die folgenden Befehle aus, um das Repository zu klonen und in das Projektverzeichnis zu wechseln:
git clone https://github.com/aws-samples/sample-aws-devops-agent-cdk.git cd sample-aws-devops-agent-cdk
Schritt 2: Abhängigkeiten installieren
Führen Sie den folgenden Befehl aus, um die Projektabhängigkeiten zu installieren:
npm install
Teil 1: Stellen Sie den Agentenbereich bereit
In diesem Abschnitt erstellen Sie den Agentenbereich, die IAM-Rollen, die Operator-App und eine AWS Verknüpfung in Ihrem Überwachungskonto.
Schritt 1: Konfigurieren Sie die Überwachungskonto-ID
Öffnen Sie Ihre Überwachungskonto-ID lib/constants.ts und legen Sie sie fest:
Das folgende Beispiel zeigt die zu aktualisierende Konstante:
export const MONITORING_ACCOUNT_ID = "<YOUR_MONITORING_ACCOUNT_ID>";
Schritt 2: Bootstrap des AWS CDK-Umgebung
Wenn Sie das AWS CDK in Ihrem Überwachungskonto nicht gebootet haben, führen Sie den folgenden Befehl aus:
cdk bootstrap aws://<MONITORING_ACCOUNT_ID>/<REGION> --profile monitoring
Schritt 3: Erstellen und bereitstellen
Führen Sie die folgenden Befehle aus, um den TypeScript Code zu erstellen und den Stack bereitzustellen:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Schritt 4: Zeichnen Sie die Stack-Ausgaben auf
Nach Abschluss der Bereitstellung druckt das AWS CDK die Stack-Ausgaben. Notieren Sie sich diese Werte zur späteren Verwendung.
Das folgende Beispiel zeigt die erwartete Ausgabe:
Outputs: DevOpsAgentStack.AgentSpaceArn = arn:aws:aidevops:<REGION>:123456789012:agentspace/abc123 DevOpsAgentStack.AgentSpaceRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-AgentSpace DevOpsAgentStack.OperatorRoleArn = arn:aws:iam::123456789012:role/DevOpsAgentRole-WebappAdmin DevOpsAgentStack.AssociationId = assoc-xyz
Wenn Sie Teil 2 abschließen möchten, speichern Sie den AgentSpaceArn Wert. Sie benötigen ihn, um den Service Account Stack zu konfigurieren.
Der Stack gibt den ARN des Agentenbereichs aus, nicht die Agentenbereichs-ID. In späteren Schritten wird nach der ID gefragt, bei der es sich um das nachfolgende Segment agentspace/ im ARN handelt. Im vorherigen Beispiel endet der ARN mitagentspace/abc123, die Agentenbereichs-ID lautet alsoabc123. Notieren Sie sich auch diesen Wert.
Schritt 5: Überprüfen Sie die Bereitstellung
Führen Sie den folgenden AWS CLI-Befehl aus, um zu überprüfen, ob der Agentenbereich erfolgreich erstellt wurde:
aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Zu diesem Zeitpunkt wird Ihr Agentenbereich bereitgestellt, wobei die Operator-App aktiviert und Ihr Überwachungskonto verknüpft ist. Der Agent kann Probleme in diesem Konto überwachen.
Teil 2 (optional): Fügen Sie eine kontoübergreifende Überwachung hinzu
In diesem Abschnitt erweitern Sie das Setup, sodass Ihr Agentenbereich die Ressourcen in einem zweiten AWS Konto (dem Dienstkonto) überwachen kann. Dies beinhaltet zwei Aktionen:
Hinzufügen einer AWS Quellzuordnung in der DevOpsAgentStack , die auf das Dienstkonto verweist.
Bereitstellung des im ServiceStack Dienstkonto mit einer IAM-Rolle, die dem Agentenbereich vertraut.
Wichtig
Sie müssen Teil 1 abschließen, bevor Sie fortfahren können. Das ServiceStack erfordert die Ausgabe AgentSpaceArn aus der DevOpsAgentStack Bereitstellung.
Schritt 1: Konfigurieren Sie die Dienstkonto-ID
Öffnen Sie Ihre Dienstkonto-ID lib/constants.ts und legen Sie sie fest:
Das folgende Beispiel zeigt die zu aktualisierende Konstante:
export const SERVICE_ACCOUNT_ID = "<YOUR_SERVICE_ACCOUNT_ID>";
Der DevOpsAgentStack erstellt eine AWS Quellzuordnung unter Verwendung dieser Konto-ID. Wenn Sie das bereitgestellt haben, DevOpsAgentStack bevor Sie diesen Wert festgelegt haben, stellen Sie es erneut bereit, um die Zuordnung zu erstellen:
Führen Sie die folgenden Befehle aus, um die Bereitstellung erneut durchzuführen:
npm run build cdk deploy DevOpsAgentStack --profile monitoring
Schritt 2: Stellen Sie den ARN für den Agentenbereich ein
Kopieren Sie den AgentSpaceArn Wert aus der DevOpsAgentStack Ausgabe (Teil 1, Schritt 4) und geben Sie ihn einlib/constants.ts:
Das folgende Beispiel zeigt die zu aktualisierende Konstante:
export const AGENT_SPACE_ARN = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>";
Der ServiceStack verwendet diesen Wert, um den Geltungsbereich der Vertrauensrichtlinie für die sekundäre Kontorolle festzulegen. Der ServiceStack wird nur synthetisiert, wenn dieser Wert festgelegt ist.
Schritt 3: Bootstrap für das Dienstkonto
Wenn Sie das AWS CDK in Ihrem Dienstkonto nicht gebootet haben, führen Sie den folgenden Befehl aus:
cdk bootstrap aws://<SERVICE_ACCOUNT_ID>/<REGION> --profile service
Schritt 4: Stellen Sie das bereit ServiceStack
Führen Sie die folgenden Befehle aus, um das zu erstellen und bereitzustellen, ServiceStack indem Sie die Anmeldeinformationen für das Dienstkonto verwenden:
npm run build cdk deploy ServiceStack --profile service
Dadurch werden die folgenden Ressourcen im Dienstkonto erstellt:
Eine IAM-Rolle (
DevOpsAgentRole-SecondaryAccount), die dem Agentenbereich im Überwachungskonto vertrautEine Echo-Lambda-Funktion (
echo-service) als Beispieldienst
Schritt 5: Überprüfen Sie die Bereitstellung
Um zu bestätigen, dass die Lambda-Funktion erfolgreich bereitgestellt wurde, führen Sie die folgenden Befehle aus, um den Echo-Dienst zu testen:
aws lambda invoke \ --function-name echo-service \ --payload '{"test": "hello world"}' \ --profile service \ response.json cat response.json
Teil 3 (optional): Fügen Sie einen Skill, einen benutzerdefinierten Agenten und einen geplanten Trigger hinzu
In diesem Abschnitt fügen Sie dem Agentenbereich, den Sie in Teil 1 erstellt haben, drei Ressourcen hinzu. Sie fügen einen Skill hinzu, den der Agent bei Bedarf lädt, und einen benutzerdefinierten Agenten, der den Agenten einem bestimmten Workflow zuordnet. Sie fügen auch einen geplanten Trigger hinzu, der den benutzerdefinierten Agenten automatisch ausführt. Diese Ressourcen verwenden die CfnTrigger Konstrukte CfnAsset und aus dem aws-cdk-lib/aws-devopsagent Modul.
Für diese Ressourcen können zusätzliche Gebühren auf Ihrem AWS Konto anfallen. Um sie zu entfernen, wenn Sie fertig sind, folgen Sie dem Abschnitt Bereinigung am Ende dieser Anleitung.
In diesem Beispiel werden die custom_agent Assettypen skill und verwendet. Mit demselben CfnAsset Konstrukt werden alle Asset-Typen erstellt, z. B. memory_storeagents_md, und. attachment Um einen anderen Typ zu verwenden, ändern Sie die assetType Eigenschaft und geben Sie die Metadaten an, die dieser Typ benötigt. Die vollständige Liste der Asset-Typen, der erforderlichen Metadaten und die Eigenschaftsreferenz finden Sie unterVerwaltung von Komponenten.
Wichtig
Sie müssen Teil 1 abschließen, bevor Sie fortfahren können. Für diesen Stack ist die Agent-Space-ID aus der DevOpsAgentStack Bereitstellung erforderlich.
Schritt 1: Erstellen Sie den Inhaltsstapel
Erstellen Sie eine Datei mit dem Namen lib/content-stack.ts und dem folgenden Inhalt. Die Aktion eines zeitbasierten Triggers referenziert den benutzerdefinierten Agenten anhand der Asset-ID im Formularcustom:<assetId>. Der Stack verknüpft diese Referenz automatisch, indem er den Wert aus dem attrAssetId Attribut des benutzerdefinierten Agenten verwendet. Die skills Liste des benutzerdefinierten Agenten verwendet auch Asset-IDs statt Namen, weshalb sie die Skills verwendetattrAssetId. Dadurch erhält der Stack auch eine implizite Abhängigkeit, sodass der Skill vor dem Agenten erstellt wird, der ihn anhängt.
import * as cdk from 'aws-cdk-lib'; import { CfnAsset, CfnTrigger } from 'aws-cdk-lib/aws-devopsagent'; import { Construct } from 'constructs'; export interface ContentStackProps extends cdk.StackProps { readonly agentSpaceId: string; } export class ContentStack extends cdk.Stack { constructor(scope: Construct, id: string, props: ContentStackProps) { super(scope, id, props); // A skill the agent loads when relevant const skill = new CfnAsset(this, 'ExampleSkill', { agentSpaceId: props.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.', ].join('\n'), }, ], }); // A custom agent with attached skills that a trigger can invoke const customAgent = new CfnAsset(this, 'ExampleCustomAgent', { agentSpaceId: props.agentSpaceId, assetType: 'custom_agent', metadata: { name: 'rds-firefighter', skills: [skill.attrAssetId], }, files: [ { path: 'AGENT.md', contentText: ['# RDS Firefighter', 'Custom agent for RDS incidents.'].join('\n'), }, ], }); // A time-based trigger that runs the custom agent on a schedule const dailyTrigger = new CfnTrigger(this, 'DailyTrigger', { agentSpaceId: props.agentSpaceId, type: 'TIME_BASED', condition: { schedule: { expression: 'rate(1 day)', }, }, action: { actionType: 'create:task', task: { agent: `custom:${customAgent.attrAssetId}`, }, }, status: 'Active', }); new cdk.CfnOutput(this, 'SkillAssetId', { description: 'The skill asset ID', value: skill.attrAssetId, }); new cdk.CfnOutput(this, 'CustomAgentAssetId', { description: 'The custom agent asset ID', value: customAgent.attrAssetId, }); new cdk.CfnOutput(this, 'TriggerId', { description: 'The trigger ID', value: dailyTrigger.attrTriggerId, }); } }
Schritt 2: Fügen Sie den Stack zu Ihrem hinzu AWS CDK-App
Instanziieren Sie in Ihrem App-Einstiegspunkt (z. B.bin/app.ts) den Stack und übergeben Sie die Agentenbereichs-ID, die Sie in Teil 1, Schritt 4 aufgezeichnet haben. Verwenden Sie die ID, z. B.abc123, und nicht den vollen AgentSpaceArn Wert:
new ContentStack(app, 'ContentStack', { env: { account: MONITORING_ACCOUNT_ID, region: process.env.CDK_DEFAULT_REGION }, agentSpaceId: '<AGENT_SPACE_ID>', });
Schritt 3: Stellen Sie den Stack bereit
Führen Sie die folgenden Befehle aus, um den Stack mithilfe der Anmeldeinformationen des Monitoring-Kontos zu erstellen und bereitzustellen:
npm run build cdk deploy ContentStack --profile monitoring
Die assetType Eigenschaften agentSpaceId und eines Assets können nur erstellt werden, ebenso wie die action EigenschaftenagentSpaceId, typecondition, und eines Triggers. Wenn Sie einen von ihnen ändern, wird die Ressource ersetzt. Sie können den Trigger status (ActiveoderInactive) an Ort und Stelle aktualisieren. Stellen Sie ihn auf ein, um den Trigger Inactive anzuhalten, ohne ihn zu löschen. Weitere Informationen zu den anderen Asset-Typen und die vollständige Eigenschaftsreferenz finden Sie unter. Verwaltung von Komponenten
Schritt 4: Überprüfen Sie die Bereitstellung
Führen Sie die folgenden AWS CLI-Befehle aus, um zu bestätigen, dass die Assets und der Trigger erstellt wurden:
aws devops-agent list-assets \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION> aws devops-agent list-triggers \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Fehlerbehebung
In diesem Abschnitt werden häufig auftretende Probleme und deren Behebung beschrieben.
CfnAssetoder CfnTrigger wird nicht exportiert von aws-cdk-lib/aws-devopsagent
Für diese Konstrukte ist
aws-cdk-libVersion 2.268.0 oder höher erforderlich. Führen Sie ausnpm list aws-cdk-lib, um Ihre Version zu überprüfen, und starten Sie, um ein Upgrade durchzuführennpm install aws-cdk-lib@latest.
CloudFormation Ressourcentyp wurde nicht gefunden
Stellen Sie sicher, dass Sie die Bereitstellung in einem durchführenUnterstützte Regionen.
Vergewissern Sie sich, dass Ihre AWS CLI mit den entsprechenden Berechtigungen konfiguriert ist.
Die Erstellung der IAM-Rolle ist fehlgeschlagen
Stellen Sie sicher, dass Ihre Bereitstellungsrolle über Berechtigungen zum Erstellen von IAM-Rollen verfügt.
Vergewissern Sie sich, dass die Bedingungen der Vertrauensrichtlinie mit Ihrer Konto-ID übereinstimmen.
Cross-account Die Bereitstellung schlägt mit der Meldung „Die Rolle im Zielkonto konnte nicht übernommen werden“ fehl
Jeder Stack muss mit Anmeldeinformationen für das Zielkonto bereitgestellt werden. Verwenden Sie das
--profileFlag, um das richtige AWS CLI-Profil anzugeben.Stellen Sie sicher, dass das AWS CDK im Zielkonto gebootet wurde.
Verzögerungen bei der IAM-Übertragung
Es kann einige Minuten dauern, bis IAM-Rollenänderungen wirksam werden. Wenn die Erstellung des Agentenbereichs unmittelbar nach der Rollenerstellung fehlschlägt, warten Sie einige Minuten und führen Sie die Bereitstellung erneut durch.
Bereinigen
Um alle Ressourcen zu entfernen, zerstören Sie die Stapel in umgekehrter Reihenfolge.
Führe die folgenden Befehle aus, um die Stapel zu zerstören:
# If you deployed the Part 3 ContentStack, destroy it first cdk destroy ContentStack --profile monitoring # If you deployed the ServiceStack, destroy it next cdk destroy ServiceStack --profile service # Then destroy the DevOpsAgentStack cdk destroy DevOpsAgentStack --profile monitoring
Warnung: Durch diese Aktion werden Ihr Agentenbereich und alle zugehörigen Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden. Stellen Sie sicher, dass Sie alle wichtigen Informationen gesichert haben, bevor Sie fortfahren.
Sicherheitsüberlegungen
Die AWS CDK-Anwendung erstellt IAM-Rollen mit Vertrauensrichtlinien, die nur dem
aidevops.amazonaws.com.rproxy.goskope.comService Principal erlauben, sie zu übernehmen.Zu den Vertrauensrichtlinien gehören Bedingungen, die den Zugriff auf Ihr spezifisches AWS Konto und Ihren Agent-Space-ARN einschränken.
Alle Richtlinien folgen dem Prinzip der geringsten Rechte. Überprüfen Sie die IAM-Richtlinien und passen Sie sie an die Sicherheitsanforderungen Ihres Unternehmens an.
Die kontoübergreifende Rolle (
DevOpsAgentRole-SecondaryAccount) verwendet einen festen Namen und ist auf einen bestimmten ARN im Agentenbereich beschränkt.
Nächste Schritte
Nachdem Sie Ihren AWS DevOps Agenten mithilfe des CDK bereitgestellt haben, gehen Sie wie folgt vor: AWS
Im DevOps Agenten-Benutzerhandbuch erfahren Sie mehr über den gesamten Funktionsumfang des AWS DevOps Agenten.
Erwägen Sie, die AWS CDK-Bereitstellung für ein automatisiertes Infrastrukturmanagement in Ihre CI/CD Pipelines zu integrieren.
Wenn Sie eine Drittanbieter-Integration registrieren, erhalten Sie deren Webhook-URL und das Geheimnis, indem Sie den Webhook in der Konsole rotieren. Das AWS CDK wird über bereitgestellt AWS CloudFormation, wobei das Webhook-Geheimnis nicht als Stack-Ausgabe zurückgegeben wird. Anweisungen zur Verwaltung von Webhook-Anmeldeinformationen finden Sie unter Webhook-Anmeldeinformationen verwalten.
Weitere Ressourcen
Beispiel für ein CDK-Repository
auf der Website GitHub AWS Referenz zur CDK DevOps Agent Construct-Bibliothek in der AWS CDK-API-Referenz
CfnAssetund CfnTrigger erstellen Sie Referenzen in der AWS CDK-API-Referenz
AWS DevOps Referenz zum Agenten-Ressourcentyp in der AWS CloudFormation Vorlagenreferenz