Automatisierung der Code-Bereitstellung mit AWS CodeCommit & CodeDeploy
Veröffentlicht: 2022-03-25Als Webentwickler kann Ihre Arbeit mehrere komplexe Aufgaben umfassen, wie z. B. die Automatisierung der Codebereitstellung auf Produktionsservern, oder wenn Sie in einer Gruppe arbeiten und beim Hochladen Ihres Codes auf eine Live-Website auf Probleme stoßen, dann ist dieser Blogbeitrag eine Lösung, um all diese zu überwinden Ausgaben.
Wenn Sie FTP verwenden, müssen Sie den Code Ihres Co-Entwicklers überschrieben haben, ein Problem, das recht häufig vorkommt und bei den meisten von uns auftritt. Dieser Leitfaden zeigt Ihnen die Code-Bereitstellungsautomatisierung mit AWS CodeCommit-, CodeDeploy- und Pipeline-Services.
Der technologische Überblick:
- AWS CodeCommit : Wir werden CodeCommit verwenden, um unsere Repositories (Webinhalte/Codedateien) zu verwalten, die alle Projektdateien und Commit-Protokolle enthalten.
- EC2-Server : Wir verwenden EC2 als unseren Produktionsserver, er enthält die Live-Site und den Code für Ihre Website-Besucher.
- AWS CodeDeploy : Enthält die Anwendung zum Veröffentlichen Ihres Codes auf dem EC2-Server. Wir werden auch eine Bereitstellungsgruppe erstellen, die den Namen/das Tag der EC2-Zielinstanz enthält, in der wir unseren Code veröffentlichen möchten.
- Pipeline : Wir wählen CodeCommit als unsere Quelle und CodeDeploy als unsere Bereitstellungsphase aus. Daher wird die Pipeline immer dann ausgeführt, wenn Codeänderungen in CodeCommit erkannt werden, und diese Codeänderungen per Push an CodeDeploy (EC2-Instance) übertragen.
Automatisierung der Code-Bereitstellung: Im Detail erklärt :
Erstellen eines IAM- und Git-Benutzers für die Automatisierung der Codebereitstellung
Wir müssen zuerst einen IAM-Benutzer und einen Git-Benutzer erstellen, die die Codeänderungen vornehmen und sie auf dem Bereitstellungsserver veröffentlichen.
- Erstellen Sie einen IAM-Benutzer
- Zugriff erlauben auf : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Diese Option finden Sie im Reiter „Vorhandene Richtlinien direkt anhängen“.
- Melden Sie sich jetzt mit diesem IAM-Benutzer an.
- Klicken Sie in der oberen rechten Ecke auf Sicherheitsanmeldeinformationen .
- Klicken Sie auf die Registerkarte AWS CodeCommit-Anmeldeinformationen .
- Klicken Sie im Abschnitt „HTTPS-Git-Anmeldeinformationen für AWS CodeCommit“ auf die Schaltfläche Anmeldeinformationen generieren .
- Kopieren Sie nun diesen Benutzernamen und das Passwort an einem sicheren Ort. Dies ist der Hauptbenutzername und das Passwort Ihres Git, um Codeänderungen per Push/Pull durchzuführen.
Erstellen eines Repositorys in CodeCommit
Lassen Sie uns nun ein Repository erstellen, das Ihren genauen Code enthält.
- Wechseln Sie vom IAM-Benutzer zum CodeCommit-Dashboard .
- Wählen Sie oben rechts die Region aus, in der Sie Ihr Repository erstellen möchten.
- Klicken Sie auf Repository erstellen, geben Sie ihm einen Namen, eine Beschreibung und klicken Sie auf Erstellen.
- Unter dem Abschnitt „ Das Repository klonen “ sehen Sie eine URL Ihres Repositorys. Bewahren Sie es an einem sicheren Ort auf. Es sieht so aus: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
Hochladen Ihrer Projektdatei zum ersten Mal
- Öffnen Sie die Eingabeaufforderung Ihres lokalen Systems, auf dem sich Ihr ursprünglicher Code befindet.
- Navigieren Sie in der Eingabeaufforderung zu dem Pfad, in dem sich Ihr Code befindet.
- Führen Sie nun die folgenden Befehle aus, um Ihren Code zum ersten Mal in das AWS-Repository zu übertragen:
git init
git config –local init.defaultBranch main
git config –global init.defaultBranch main
git hinzufügen. ## Dadurch werden alle Dateien des Projekts übergeben
git commit –m „Erstes Commit“
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- Erstellen Sie eine EC2-Instanz und installieren Sie den CodeDeploy-Agenten
- Erstellen Sie eine Instanzrolle
- Öffnen Sie Ihre AWS IAM-Konsole.
- Gehen Sie zur Registerkarte Rollen >> Rolle erstellen.
- Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen AWS-Service aus . Wählen Sie unter „Anwendungsfall auswählen“ EC2 aus . Wählen Sie unter „Anwendungsfall auswählen“ EC2 aus. Wählen Sie Weiter: Berechtigungen .
- Suchen und wählen Sie die Richtlinie mit dem Namen AmazonEC2RoleforAWSCodeDeploy aus und wählen Sie dann Next: Tags .
- Wählen Sie Weiter: Überprüfen. Geben Sie einen Namen für die Rolle ein (z. B. EC2InstanceRole ) und klicken Sie auf Erstellen .
- Erstellen Sie eine EC2-Instance
- Gehen Sie zur EC2-Konsole. Klicken Sie auf Instanz starten.
- Wählen Sie ein Amazon Machine Image (AMI), suchen Sie Amazon Linux 2 AMI (HVM), SSD Volume Type und wählen Sie dann Select. (Dieses AMI ist als „Berechtigte kostenlose Stufe“ gekennzeichnet und befindet sich ganz oben in der Liste.)
- Wählen Sie auf der Seite Choose an Instance Type den Typ t2.micro für das kostenlose Kontingent als Hardwarekonfiguration für Ihre Instance aus und wählen Sie dann Next: Configure Instance Details .
- Gehen Sie auf der Seite Instanzdetails konfigurieren wie folgt vor:
- Geben Sie unter Anzahl der Instanzen 1 ein .
- Wählen Sie unter „Öffentliche IP automatisch zuweisen“ die Option „Aktivieren“ aus .
- Wählen Sie in der IAM-Rolle die IAM-Rolle aus, die Sie im vorherigen Verfahren erstellt haben (z. B. EC2InstanceRole ).
- Erweitern Sie Erweiterte Details und geben Sie im Feld Benutzerdaten Folgendes ein:
#!/bin/bash
yum -y aktualisieren
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./automatisch installieren
- Lassen Sie die restlichen Elemente auf der Seite „Schritt 3: Instanzdetails konfigurieren“ unverändert. Wählen Sie Weiter: Speicher hinzufügen .
- Lassen Sie die Seite Schritt 4: Speicher hinzufügen unverändert und wählen Sie dann Weiter: Tags hinzufügen.
- Wählen Sie Tag hinzufügen aus . Geben Sie unter Key Name und unter Value MyCodePipelineDemo ein . Wählen Sie Weiter: Sicherheitsgruppe konfigurieren. Später erstellen Sie eine CodeDeploy-Anwendung, die die Beispielanwendung für diese Instanz bereitstellt. CodeDeploy wählt die bereitzustellenden Instanzen basierend auf den Tags aus, die an Instanzen angehängt sind.
- Gehen Sie auf der Seite Sicherheitsgruppe konfigurieren wie folgt vor:
- Wählen Sie neben Sicherheitsgruppe zuweisen die Option Neue Sicherheitsgruppe erstellen aus .
- Wählen Sie in der Zeile für SSH unter Source die Option My IP aus .
- Wählen Sie Add Rule , HTTP und dann unter Source My IP aus
- Wählen Sie Überprüfen und starten.
- Wählen Sie auf der Seite Start der Instanz überprüfen die Option Starten aus. Wenn Sie zur Eingabe eines Schlüsselpaars aufgefordert werden, wählen Sie „ Ohne Schlüsselpaar fortfahren“ aus .
- Wählen Sie View Instances aus, um die Bestätigungsseite zu schließen und zur Konsole zurückzukehren.
- Sie können den Status des Starts auf der Seite Instanzen anzeigen . Wenn Sie eine Instanz starten, ist ihr anfänglicher Status „ausstehend“. Nachdem die Instanz gestartet wurde, ändert sich ihr Status in „Wird ausgeführt“ und sie erhält einen öffentlichen DNS-Namen. (Wenn die Spalte „ Öffentliches DNS “ nicht angezeigt wird, wählen Sie das Symbol „Anzeigen/Ausblenden“ und dann „ Öffentliches DNS“ aus .)
- Es kann einige Minuten dauern, bis die Instanz für die Verbindung bereit ist. Sehen Sie sich die Informationen in der Spalte „ Statusprüfungen “ an, um festzustellen, ob Ihre Instanz die Statusprüfungen bestanden hat.
Erstellen Sie eine Anwendung in CodeDeploy
- Erstellen Sie eine CodeDeploy-Dienstrolle
- Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
- Wählen Sie im Konsolen-Dashboard Rollen aus.
- Wählen Sie Rolle erstellen .
- Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen AWS-Service aus . Wählen Sie unter Anwendungsfall auswählen die Option CodeDeploy aus . Wählen Sie unter Anwendungsfall auswählen die Option CodeDeploy aus. Wählen Sie Weiter: Berechtigungen. Die von AWSCodeDeployRole verwaltete Richtlinie ist bereits an die Rolle angehängt.
- Wählen Sie „Weiter: Tags“ und „Weiter: Überprüfen“.
- Geben Sie einen Namen für die Rolle ein (z. B. CodeDeployRole) und wählen Sie dann Rolle erstellen aus.
- Erstellen Sie eine Anwendung in CodeDeploy
- Öffnen Sie die CodeDeploy-Konsole unter https://console.aws.amazon.com/codedeploy
- Wenn die Seite Anwendungen nicht angezeigt wird, wählen Sie im Menü Anwendungen .
- Wählen Sie Anwendung erstellen .
- Geben Sie als Anwendungsname MyDemoApplication ein.
- Wählen Sie in Compute Platform EC2/On-premises aus.
- Wählen Sie Anwendung erstellen.
- Erstellen Sie eine Bereitstellungsgruppe in CodeDeploy
- Wählen Sie auf der Seite, auf der Ihre Anwendung angezeigt wird, Bereitstellungsgruppe erstellen aus .
- Geben Sie im Namen der Bereitstellungsgruppe MyDemoDeploymentGroup ein.
- In-Service-Rolle, wählen Sie die zuvor erstellte Servicerolle aus (z. B. CodeDeployRole ).
- Wählen Sie unter Bereitstellungstyp die Option Vor Ort aus.
- Wählen Sie unter Umgebungskonfiguration Amazon EC2- Instances aus. Geben Sie im Feld Schlüssel Name ein. Geben Sie im Feld Wert den Namen ein, den Sie zum Markieren der Instanz verwendet haben (z. B. MyCodePipelineDemo ).
- Wählen Sie unter Bereitstellungskonfiguration CodeDeployDefault.OneAtaTime aus .
- Stellen Sie unter Load Balancer sicher, dass Load Balancing aktivieren nicht ausgewählt ist . Für dieses Beispiel müssen Sie keinen Load Balancer einrichten oder eine Zielgruppe auswählen.
- Erweitern Sie den Abschnitt Erweitert. Wenn unter Alarme Alarme aufgeführt sind, wählen Sie Alarmkonfiguration ignorieren aus.
- Wählen Sie Bereitstellungsgruppe erstellen aus.
Erstellen Sie eine Pipeline
- Erstellen Sie eine Pipeline
- Melden Sie sich bei der AWS Management Console an und öffnen Sie die CodePipeline-Konsole unter http://console.aws.amazon.com/codesuite/codepipeline/home
- Öffnen Sie die CodePipeline-Konsole unter https://console.aws.amazon.com/codepipeline/
- Wählen Sie Pipeline erstellen aus .
- Geben Sie in Schritt 1 : Pipelineeinstellungen auswählen im Pipelinenamen MyFirstPipeline ein .
- Wählen Sie in der Servicerolle die Neue Servicerolle aus, damit CodePipeline eine Servicerolle in IAM erstellen kann.
- Belassen Sie die Einstellungen unter Erweiterte Einstellungen auf ihren Standardwerten und wählen Sie dann Weiter aus.
- Wählen Sie in Schritt 2 : Quellstufe hinzufügen unter Quellanbieter CodeCommit aus .
Wählen Sie unter Repository-Name den Namen des CodeCommit-Repositorys aus, das Sie in Schritt 1 erstellt haben: CodeCommit-Repository erstellen. Wählen Sie unter Zweigname die Option Haupt und dann Nächster Schritt aus. - Nachdem Sie den Repository-Namen und -Branch ausgewählt haben, zeigt eine Meldung die Amazon CloudWatch Events-Regel an, die für diese Pipeline erstellt werden soll.
- Übernehmen Sie unter "Änderungserkennung"-Optionen die Standardeinstellungen. Dadurch kann CodePipeline Amazon CloudWatch Events verwenden, um Änderungen in Ihrem Quell-Repository zu erkennen.
- Wählen Sie Weiter aus .
- Wählen Sie in Schritt 3 : Build-Phase hinzufügen die Option Build-Phase überspringen aus und akzeptieren Sie dann die Warnmeldung, indem Sie erneut Überspringen auswählen . Wählen Sie Weiter aus .
Hinweis : In diesem Lernprogramm stellen Sie Code bereit, der einen No-Build-Dienst erfordert, sodass Sie diesen Schritt überspringen können. Wenn Ihr Quellcode jedoch erstellt werden muss, bevor er auf Instanzen bereitgestellt wird, können Sie CodeBuild in diesem Schritt konfigurieren.
- Wählen Sie in Schritt 4 : Bereitstellungsphase hinzufügen unter Bereitstellungsanbieter CodeDeploy aus .
Wählen Sie als Anwendungsname MyDemoApplication aus . Wählen Sie in der Gruppe Bereitstellung die Option MyDemoDeploymentGroup und dann Next step aus . - In Schritt 5 : Überprüfen Sie die Informationen und wählen Sie dann Pipeline erstellen aus .
- Die Pipeline wird ausgeführt, nachdem sie erstellt wurde. Es lädt den Code aus Ihrem CodeCommit-Repository herunter und erstellt eine CodeDeploy-Bereitstellung auf Ihrer EC2-Instance. Sie können Fortschritts-, „Erfolgs“- und „Fehler“-Meldungen anzeigen, während das CodePipeline-Beispiel die Webseite auf der Amazon EC2-Instance in der CodeDeploy-Bereitstellung bereitstellt.
Sie sind jetzt fertig! Gehen Sie zu Bereitstellen ⇒ Bereitstellungen. Sie sehen die Protokolle aller erfolgreichen und fehlgeschlagenen Bereitstellungen.
Um die Änderungen auf der Website zu überprüfen, öffnen Sie Ihre EC2-Instance und suchen Sie nach Ihrem öffentlichen DNS, das wie folgt angezeigt wird: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .
Sobald Sie es durchsuchen, sehen Sie Ihre Live-Seiten.
Sie haben die Automatisierung der Codebereitstellung erfolgreich abgeschlossen. Sie können jetzt neue Codeänderungen in Ihr Repository übertragen und automatisch auf Ihrer Website veröffentlichen. Wenn Sie immer noch Probleme haben, können Sie dies gerne hier kommentieren.