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.
Automatisches Erstellen dynamischer CI-Pipelines für Java- und Python-Projekte
Erstellt von Aromal Raj Jayarajan (AWS), Amarnath Reddy (AWS), MAHESH RAGHUNANDANAN (AWS) und Vijesh Vijayakumaran Nair (AWS)
Übersicht
AWS CodeCommit Hinweis: ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS CodeCommit können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Dieses Muster zeigt, wie dynamische CI-Pipelines (Continuous Integration) für Java- und Python-Projekte mithilfe der AWS-Entwicklertools automatisch erstellt werden.
Mit der Diversifizierung der Technologie-Stacks und der Zunahme der Entwicklungsaktivitäten kann es schwierig werden, CI-Pipelines zu erstellen und aufrechtzuerhalten, die unternehmensweit einheitlich sind. Durch die Automatisierung des Prozesses in AWS Step Functions können Sie sicherstellen, dass Ihre CI-Pipelines in ihrer Verwendung und Herangehensweise konsistent sind.
Um die Erstellung dynamischer CI-Pipelines zu automatisieren, verwendet dieses Muster die folgenden Variableneingaben:
Programmiersprache (nur Java oder Python)
Pipeline-Name
Erforderliche Pipeline-Stufen
Anmerkung
Step Functions orchestriert die Pipeline-Erstellung mithilfe mehrerer AWS-Services. Weitere Informationen zu den in dieser Lösung verwendeten AWS-Services finden Sie im Abschnitt Tools dieses Musters.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto
Ein Amazon S3 S3-Bucket in derselben AWS-Region, in der diese Lösung bereitgestellt wird
Ein AWS Identity and Access Management (IAM) -Prinzipal, der über die CloudFormation AWS-Berechtigungen verfügt, die zum Erstellen der für diese Lösung benötigten Ressourcen erforderlich sind
Einschränkungen
Dieses Muster unterstützt nur Java- und Python-Projekte.
Die in diesem Muster bereitgestellten IAM-Rollen folgen dem Prinzip der geringsten Rechte. Die Berechtigungen der IAM-Rollen müssen auf der Grundlage der spezifischen Ressourcen aktualisiert werden, die Ihre CI-Pipeline erstellen muss.
Architektur
Zieltechnologie-Stack
AWS CloudFormation
AWS CodeBuild
AWS CodeCommit
AWS CodePipeline
IAM
Amazon Simple Storage Service (Amazon-S3)
AWS Systems Manager
AWS Step Functions
AWS Lambda
Amazon-DynamoDB
Zielarchitektur
Das folgende Diagramm zeigt einen Beispiel-Workflow für die automatische Erstellung dynamischer CI-Pipelines für Java- und Python-Projekte mithilfe von AWS-Entwicklertools.

Das Diagramm zeigt den folgenden Workflow:
Ein AWS-Benutzer stellt die Eingabeparameter für die CI-Pipeline-Erstellung im JSON-Format bereit. Diese Eingabe startet einen Step Functions Functions-Workflow (State Machine), der mithilfe von AWS-Entwicklertools eine CI-Pipeline erstellt.
Eine Lambda-Funktion liest einen Ordner mit dem Namen input-reference, der in einem Amazon S3 S3-Bucket gespeichert ist, und generiert dann eine buildspec.yml-Datei. Diese generierte Datei definiert die CI-Pipeline-Stufen und wird wieder in demselben Amazon S3 S3-Bucket gespeichert, in dem die Parameterreferenzen gespeichert sind.
Step Functions überprüft die Abhängigkeiten des Workflows zur Erstellung der CI-Pipeline auf Änderungen und aktualisiert den Abhängigkeitsstapel nach Bedarf.
Step Functions erstellt die CI-Pipeline-Ressourcen in einem CloudFormation Stack, einschließlich eines CodeCommit Repositorys, eines CodeBuild Projekts und einer CodePipeline Pipeline.
Der CloudFormation Stack kopiert den Beispielquellcode für den ausgewählten Technologie-Stack (Java oder Python) und die Datei buildspec.yml in das Repository. CodeCommit
Die Laufzeitdetails der CI-Pipeline werden in einer DynamoDB-Tabelle gespeichert.
Automatisierung und Skalierung
Dieses Muster ist nur für die Verwendung in einer einzigen Entwicklungsumgebung vorgesehen. Für die Verwendung in mehreren Entwicklungsumgebungen sind Konfigurationsänderungen erforderlich.
Um Unterstützung für mehr als einen CloudFormation Stack hinzuzufügen, können Sie zusätzliche CloudFormation Vorlagen erstellen. Weitere Informationen finden Sie CloudFormation in der CloudFormation Dokumentation unter Erste Schritte mit AWS.
Tools
Tools
AWS Step Functions ist ein serverloser Orchestrierungsservice, mit dem Sie AWS Lambda Lambda-Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.
AWS Lambda ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
AWS CodeBuild ist ein vollständig verwalteter Build-Service, mit dem Sie Quellcode kompilieren, Komponententests ausführen und bereitstellungsbereite Artefakte erstellen können.
AWS CodeCommit ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
AWS CodePipeline hilft Ihnen dabei, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
AWS Identity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS-Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
AWS Key Management Service (AWS KMS) unterstützt Sie bei der Erstellung und Kontrolle kryptografischer Schlüssel, um Ihre Daten zu schützen.
Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.
AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten.
Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbank-Service, der schnelle und planbare Leistung mit nahtloser Skalierbarkeit bereitstellt.
AWS Systems Manager Parameter Store bietet sicheren, hierarchischen Speicher für die Verwaltung von Konfigurationsdaten und Geheimnissen.
Code
Der Code für dieses Muster ist im GitHub automated-ci-pipeline-creation
Bewährte Methoden
Geben Sie Anmeldeinformationen (Geheimnisse) wie Token oder Passwörter nicht direkt in CloudFormation Vorlagen oder Aktionskonfigurationen von Step Functions ein. Wenn Sie dies tun, werden die Informationen in den DynamoDB-Protokollen angezeigt. Verwenden Sie stattdessen AWS Secrets Manager, um Secrets einzurichten und zu speichern. Verweisen Sie dann nach Bedarf in den Aktionskonfigurationen der CloudFormation Vorlagen und Step Functions auf die im Secrets Manager gespeicherten Geheimnisse. Weitere Informationen finden Sie unter Was ist AWS Secrets Manager in der Secrets Manager-Dokumentation.
Konfigurieren Sie die serverseitige Verschlüsselung für in Amazon S3 gespeicherte CodePipeline Artefakte. Weitere Informationen finden Sie in der CodePipeline Dokumentation unter Serverseitige Verschlüsselung für in Amazon S3 gespeicherte Artefakte konfigurieren. CodePipeline
Wenden Sie bei der Konfiguration von IAM-Rollen Berechtigungen mit den geringsten Rechten an. Weitere Informationen finden Sie unter Geringste Berechtigungen anwenden in der IAM-Dokumentation.
Stellen Sie sicher, dass Ihr Amazon S3 S3-Bucket nicht öffentlich zugänglich ist. Weitere Informationen finden Sie unter Konfiguration der Einstellung zum Blockieren des öffentlichen Zugriffs für Ihre S3-Buckets in der Amazon S3 S3-Dokumentation.
Stellen Sie sicher, dass Sie die Versionierung für Ihren Amazon S3 S3-Bucket aktivieren. Weitere Informationen finden Sie unter Verwenden der Versionierung in S3-Buckets in der Amazon S3 S3-Dokumentation.
Verwenden Sie IAM Access Analyzer bei der Konfiguration von IAM-Richtlinien. Das Tool bietet umsetzbare Empfehlungen, die Sie bei der Erstellung sicherer und funktionaler IAM-Richtlinien unterstützen. Weitere Informationen finden Sie unter Verwenden von AWS Identity and Access Management Access Analyzer in der IAM-Dokumentation.
Definieren Sie nach Möglichkeit spezifische Zugriffsbedingungen bei der Konfiguration von IAM-Richtlinien.
Aktivieren Sie die CloudWatch Amazon-Protokollierung für Überwachungs- und Prüfungszwecke. Weitere Informationen finden Sie unter Was ist Amazon CloudWatch Logs? in der CloudWatch Dokumentation.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Amazon-S3-Bucket. | Erstellen Sie einen Amazon S3 S3-Bucket (oder verwenden Sie einen vorhandenen Bucket), um die erforderlichen CloudFormation Vorlagen, den Quellcode und die Eingabedateien für die Lösung zu speichern. Weitere Informationen finden Sie unter Schritt 1: Erstellen Sie Ihren ersten S3-Bucket in der Amazon S3 S3-Dokumentation. AnmerkungDer Amazon S3 S3-Bucket muss sich in derselben AWS-Region befinden, in der Sie die Lösung bereitstellen. | AWS DevOps |
Klonen Sie das GitHub Repository. | Klonen Sie das GitHub automated-ci-pipeline-creation
Weitere Informationen finden Sie in der GitHub Dokumentation unter Ein Repository klonen | AWS DevOps |
Laden Sie den Ordner Solution Templates aus dem geklonten GitHub Repository in Ihren Amazon S3 S3-Bucket hoch. | Kopieren Sie den Inhalt aus dem geklonten Solution-Templates-Ordner und laden Sie ihn in den Amazon S3 S3-Bucket hoch, den Sie erstellt haben. Weitere Informationen finden Sie unter Hochladen von Objekten in der Amazon S3 S3-Dokumentation. AnmerkungStellen Sie sicher, dass Sie nur den Inhalt des Ordners Solution-Templates hochladen. Sie können die Dateien nur auf der Stammebene des Amazon S3 S3-Buckets hochladen. | AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen CloudFormation Stack, um die Lösung mithilfe der Datei template.yml im geklonten Repository bereitzustellen. GitHub |
AnmerkungWährend Ihr Stack erstellt wird, wird er auf der Seite Stacks mit dem Status CREATE_IN_PROGRESS aufgeführt. Stellen Sie sicher, dass Sie warten, bis sich der Status des Stacks auf CREATE_COMPLETE ändert, bevor Sie die verbleibenden Schritte in diesem Muster abschließen. | AWS-Administrator, AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Führen Sie die Schrittfunktion aus, die Sie erstellt haben. |
JSON-Formatierung
Beispiel für eine Java-JSON-Eingabe
Beispiel für Python-JSON-Eingabe
| AWS-Administrator, AWS DevOps |
Vergewissern Sie sich, dass das CodeCommit Repository für die CI-Pipeline erstellt wurde. |
| AWS DevOps |
Überprüfen Sie die CodeBuild Projektressourcen. |
| AWS DevOps |
Validieren Sie die CodePipeline Stufen. |
| AWS DevOps |
Vergewissern Sie sich, dass die CI-Pipeline erfolgreich ausgeführt wurde. |
| AWS DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Löschen Sie den Ressourcenstapel CloudFormation. | Löschen Sie den Ressourcenstapel der CI-Pipeline CloudFormation. Weitere Informationen finden Sie in der CloudFormation Dokumentation unter Löschen eines Stacks auf der CloudFormation AWS-Konsole. AnmerkungStellen Sie sicher, dass Sie den Stack mit dem Namen -stack <project_name>löschen. | AWS DevOps |
Löschen Sie die Abhängigkeiten der CI-Pipeline in Amazon S3 und CloudFormation. |
AnmerkungStellen Sie sicher, dass Sie den genannten Stack löschen pipeline-creation-dependencies-stack. | AWS DevOps |
Löschen Sie den Amazon S3 S3-Vorlagen-Bucket. | Löschen Sie den Amazon S3-Bucket, den Sie im Abschnitt Voraussetzungen konfigurieren dieses Musters erstellt haben, in dem die Vorlagen für diese Lösung gespeichert sind. Weitere Informationen finden Sie unter Löschen eines Buckets in der Amazon S3 S3-Dokumentation. | AWS DevOps |
Zugehörige Ressourcen
Erstellen einer Step Functions Functions-Zustandsmaschine, die Lambda verwendet (AWS Step Functions Functions-Dokumentation)
AWS Step Functions WorkFlow Studio (Dokumentation zu AWS Step Functions)
Wie CloudFormation funktioniert AWS? ( CloudFormation AWS-Dokumentation)
IAM- und AWS-STS-Kontingente, Namensanforderungen und Zeichenbeschränkungen (IAM-Dokumentation)