Erstellen Sie eine Pipeline in AWS-Regionen, die AWS nicht unterstützen CodePipeline - AWS Prescriptive Guidance

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.

Erstellen Sie eine Pipeline in AWS-Regionen, die AWS nicht unterstützen CodePipeline

Erstellt von Anand Krishna Varanasi (AWS)

Code-Repository: invisible-codepipeline-unsupported-regions

Umgebung: PoC oder Pilotprojekt

Technologien: Infrastruktur; DevOps

AWS-Dienste: AWS CodeBuild CodeCommit; AWS CodeDeploy; AWS CodePipeline

Übersicht

AWS CodePipeline ist ein Orchestrierungsservice für Continuous Delivery (CD), der Teil einer Reihe von DevOps Tools von Amazon Web Services (AWS) ist. Es lässt sich in eine Vielzahl von Quellen (wie Versionskontrollsysteme und Speicherlösungen), Produkte und Services für kontinuierliche Integration (CI) von AWS und AWS-Partnern sowie Open-Source-Produkte integrieren, um einen end-to-end Workflow-Service für schnelle Anwendungs- und Infrastrukturbereitstellungen bereitzustellen.

Wird jedoch CodePipeline nicht in allen AWS-Regionen unterstützt, und es ist nützlich, einen unsichtbaren Orchestrator zu haben, der AWS CI/CD-Services verbindet. Dieses Muster beschreibt, wie eine end-to-end Workflow-Pipeline in AWS-Regionen implementiert wird, in denen sie noch CodePipeline nicht durch die Verwendung von AWS CI/CD-Services wie AWS CodeCommit, AWS und AWS CodeBuild unterstützt wird. CodeDeploy

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • AWS Cloud Development Kit (AWS CDK) CLI Version 2.28 oder höher

Architektur

Zieltechnologie-Stack

Das folgende Diagramm zeigt eine Pipeline, die in einer Region erstellt wurde, die nicht unterstützt wird CodePipeline, z. B. in der Region Afrika (Kapstadt). Ein Entwickler überträgt die CodeDeploy Konfigurationsdateien (auch als Deployment-Lifecycle-Hook-Skripte bezeichnet) in das Git-Repository, das von CodeCommit gehostet wird. (Sehen Sie sich das GitHub Repository an, das mit diesem Muster bereitgestellt wird.) Eine EventBridge Amazon-Regel wird automatisch initiiert. CodeBuild

Die CodeDeploy Konfigurationsdateien werden CodeCommit als Teil der Quellphase der Pipeline abgerufen und an diese übertragen. CodeBuild 

CodeBuild Führt in der nächsten Phase die folgenden Aufgaben aus: 

  1. Lädt die TAR-Datei mit dem Quellcode der Anwendung herunter. Sie können den Namen dieser Datei mithilfe von Parameter Store, einer Funktion von AWS Systems Manager, konfigurieren.

  2. Lädt die CodeDeploy Konfigurationsdateien herunter.

  3. Erstellt ein kombiniertes Archiv aus Anwendungsquellcode und CodeDeploy Konfigurationsdateien, die für den Anwendungstyp spezifisch sind.

  4. Initiiert die CodeDeploy Bereitstellung auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance mithilfe des kombinierten Archivs.

Pipeline-Erstellung in einer nicht unterstützten AWS-Region

Tools

AWS-Services

  • 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 CodeDeploy automatisiert Bereitstellungen auf Amazon EC2- oder lokalen Instances, AWS Lambda Lambda-Funktionen oder Amazon Elastic Container Service (Amazon ECS) -Services.

  • 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.

  • Das AWS Cloud Development Kit (AWS CDK) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.

Code

Der Code für dieses Muster ist im Repository „ GitHub CodePipeline Nicht unterstützte Regionen“ verfügbar.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Installieren Sie die AWS CDK CLI.

Anweisungen finden Sie in der AWS-CDK-Dokumentation.

AWS DevOps

Installiere einen Git-Client.

Um Commits zu erstellen, kannst du einen Git-Client verwenden, der auf deinem lokalen Computer installiert ist, und deine Commits dann in das CodeCommit Repository übertragen. Informationen zur Einrichtung CodeCommit mit deinem Git-Client findest du in der CodeCommit Dokumentation.

AWS DevOps

Installieren Sie "npm".

Installieren Sie den npm-Paketmanager. Weitere Informationen finden Sie in der npm-Dokumentation.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Code-Repository.

Klonen Sie das Repository „ GitHub CodePipeline Nicht unterstützte Regionen“ auf Ihren lokalen Computer, indem Sie den folgenden Befehl ausführen.

git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions
DevOps Ingenieur

Stellen Sie die Parameter in cdk.json ein.

Öffnen Sie die cdk.json Datei und geben Sie Werte für die folgenden Parameter an:

"pipeline_account":"XXXXXXXXXXXX", "pipeline_region":"us-west-2", "repo_name": "app-dev-repo", "ec2_tag_key": "test-vm", "configName" : "cbdeployconfig", "deploymentGroupName": "cbdeploygroup", "applicationName" : "cbdeployapplication", "projectName" : "CodeBuildProject"

Wobei:

  • pipeline_accountist das AWS-Konto, auf dem die Pipeline erstellt wird.

  • pipeline_regionist die AWS-Region, in der die Pipeline gebaut wird.

  • repo_nameist der Name des CodeCommit Repositorys.

  • ec2_tag_keyist das Tag, das an die EC2-Instance angehängt ist, für die Sie den Code bereitstellen möchten.

  • configNameist der Name der CodeDeploy Konfigurationsdatei.

  • deploymentGroupNameist der Name der CodeDeploy Bereitstellungsgruppe.

  • applicationNameist der Name der CodeDeploy Anwendung.

  • projectNameist der CodeBuild Projektname.

AWS DevOps

Richten Sie die AWS-CDK-Construct-Bibliothek ein.

Verwenden Sie im geklonten GitHub Repository die folgenden Befehle, um die AWS-CDK-Konstruktionsbibliothek zu installieren, Ihre Anwendung zu erstellen und zu synthetisieren, um die CloudFormation AWS-Vorlage für die Anwendung zu generieren.

npm i aws-cdk-lib npm run build cdk synth
AWS DevOps

Stellen Sie die AWS-CDK-Beispielanwendung bereit.

Stellen Sie den Code bereit, indem Sie den folgenden Befehl in einer Region ausführen, die nicht unterstützt wird (z. B.af-south-1).

cdk deploy
AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie CI/CD für die Anwendung ein.

Klonen Sie das CodeCommit Repository, das Sie in der cdk.json Datei angegeben haben (dies wird app-dev-repo standardmäßig aufgerufen), um die CI/CD-Pipeline für die Anwendung einzurichten.

git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo

wobei der Repository-Name und die Region von den Werten abhängen, die Sie in der cdk.json Datei angegeben haben.

AWS DevOps
AufgabeBeschreibungErforderliche Fähigkeiten

Testen Sie die Pipeline anhand von Bereitstellungsanweisungen.

Der CodeDeploy_Files Ordner des Repositorys „ GitHub CodePipeline Nicht unterstützte Regionen“ enthält Beispieldateien mit Anweisungen CodeDeploy zur Bereitstellung der Anwendung. Die appspec.yml Datei ist eine CodeDeploy Konfigurationsdatei, die Hooks zur Steuerung des Ablaufs der Anwendungsbereitstellung enthält. Sie können die Beispieldateienindex.html,, und verwenden start_server.shstop_server.sh, um eine Website install_dependencies.sh zu aktualisieren, die auf Apache gehostet wird. Dies sind Beispiele — Sie können den Code im GitHub Repository verwenden, um jede Art von Anwendung bereitzustellen. Wenn die Dateien in das CodeCommit Repository übertragen werden, wird die unsichtbare Pipeline automatisch initiiert. Die Ergebnisse der Bereitstellung finden Sie in den Ergebnissen der einzelnen Phasen in den CodeDeploy Konsolen CodeBuild und.

AWS DevOps

Zugehörige Ressourcen