In diesem Tutorial lernen Sie, wie Sie eine automatisierte Software-Veröffentlichungs-Pipeline erstellen, die eine Live-Beispiel-Anwendung bereitstellt. Sie werden die Pipeline mithilfe von AWS CodePipeline erstellen, einem Service, der bei jeder Codeänderung Ihren Code erstellt, testet und bereitstellt. Sie werden Ihr GitHub-Konto, einen Amazon Simple Storage Service (S3)-Bucket oder ein AWS CodeCommit-Repository als Quellspeicherort für den Code der Beispielanwendung verwenden. Außerdem werden Sie AWS Elastic Beanstalk als Bereitstellungsziel für die Beispielanwendung verwenden. Ihre fertiggestellte Pipeline wird in der Lage sein, Änderungen an dem Quellrepository zu erkennen, in dem die Beispielanwendung enthalten ist, und dann Ihre Live-Beispiel-Anwendung automatisch zu aktualisieren.

Mit Continuous Deployment können Änderungen automatisch in einer Produktionsumgebung bereitgestellt werden. Diese vollständige Automatisierung des Software-Einführungsprozesses bedeutet, dass keine explizite Genehmigung durch einen Entwickler vorliegen muss.

Alles, was in diesem Tutorial gezeigt wird, ist als kostenloses Kontingent verfügbar.

Ihre AWS-Ressourcen verwalten

Bei der Konsole anmelden

Ihre Pipeline für die kontinuierliche Bereitstellung benötigt eine Zielumgebung mit virtuellen Servern oder Amazon EC2-Instances, in denen sie den Beispiel-Code bereitstellen wird. Diese Umgebung werden Sie vorbereiten, bevor Sie die Pipeline erstellen.


a. Um die Einrichtung und Konfiguration von EC2-Instances für dieses Tutorial zu vereinfachen, werden Sie mithilfe von AWS Elastic Beanstalk eine Beispielumgebung einrichten. Elastic Beanstalk bietet Ihnen die Möglichkeit, problemlos Webanwendungen zu hosten, ohne selbst virtuelle Server starten, konfigurieren oder betreiben zu müssen. Die Infrastruktur (z. B. virtuelle Server, Load Balancer usw.) wird automatisch bereitgestellt und betrieben und der Anwendungs-Stack (z. B. Betriebssystem, Sprache und Framework, Web- und Anwendungsserver usw.) wird für Sie bereitgestellt.


b. Wählen Sie PHP aus dem Dropdown-Menü aus und klicken Sie anschließend auf Launch Now (Jetzt starten).

Hinweis: Wenn Sie zuvor eine Elastic Beanstalk-Anwendung erstellt haben, klicken Sie oben rechts auf Create New Application (Neue Anwendung erstellen). Geben Sie Ihrer Anwendung einen Namen und erstellen Sie eine neue Webserverumgebung. Wählen Sie PHP als Plattform und Single Instance (Einzelne Instance) als Umgebungstyp aus. Wenn Sie vorhaben, sich remote bei Ihren Instances anzumelden, wählen Sie ein Schlüsselpaar aus. Belassen Sie andernfalls die Standardwerte für die verbleibenden Optionen und erstellen Sie die Umgebung für Ihre Pipeline für die kontinuierliche Bereitstellung.

(zum Vergrößern klicken)


c. Elastic Beanstalk beginnt nun, eine Beispielumgebung für Sie zu erstellen, in der Sie Ihre Anwendung bereitstellen können. Es werden eine Amazon EC2-Instance, eine Sicherheitsgruppe, eine Auto Scaling-Gruppe, ein Amazon S3-Bucket, Amazon CloudWatch-Alarme und ein Domänenname für Ihre Anwendung erstellt.

Hinweis: Dieser Vorgang kann einige Minuten dauern.

(zum Vergrößern klicken)

In diesem Schritt rufen Sie eine Kopie des Codes der Beispielanwendung ab und wählen eine Quelle zum Hosten des Codes aus. Die Pipeline nimmt Code aus der Quelle und führt Aktionen damit aus.

Sie können eine von drei Optionen als Quelle verwenden: ein GitHub-Repository, einen Amazon S3-Bucket oder ein AWS CodeCommit-Repository. Wählen Sie Ihre bevorzugte Quelle aus und führen Sie die folgenden Schritte aus:

 

  • GitHub

    a. Wenn Sie Ihr GitHub-Konto verwenden möchten:

    (zum Vergrößern klicken)

  • Amazon S3

    a. Wenn Sie Amazon S3 als Quelle verwenden möchten, rufen Sie den Beispiel-Code aus dem AWS GitHub-Repository ab, speichern ihn auf Ihrem Computer und laden ihn in einen Amazon S3-Bucket hoch.

    (zum Vergrößern klicken)


    b. Speichern Sie die Quelldateien auf Ihrem Computer:

    • Klicken Sie auf die Datei mit der Bezeichnung aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • Klicken Sie auf View Raw (Rohdaten anzeigen).
    • Speichern Sie die Beispieldatei auf Ihrem lokalen Computer.

    (zum Vergrößern klicken)


    c. Klicken Sie hier, um die Amazon S3-Konsole zu öffnen und Ihren Amazon S3-Bucket zu erstellen.

    • Klicken Sie auf Create Bucket (Bucket erstellen).
    • Bucket Name (Bucket-Name): Geben Sie einen eindeutigen Namen für Ihren Bucket ein, beispielsweise awscodepipeline-demobucket-variables.  Da alle Bucket-Namen in Amazon S3 eindeutig sein müssen, verwenden Sie einen selbst gewählten Namen und nicht den Namen aus dem Beispiel.
    • Region: Wählen Sie in der Dropdown-Liste die Region aus, in der Sie Ihre Pipeline erstellen werden, beispielsweise US Standard
    • Klicken Sie auf Create.

    (zum Vergrößern klicken)


    d. In der Konsole wird der neu erstellte Bucket angezeigt. Dieser ist leer.

    • Klicken Sie auf Properties (Eigenschaften).
    • Erweitern Sie den Bereich Versioning und wählen Sie Enable Versioning (Versioning aktivieren). Wenn Versioning aktiviert ist, speichert Amazon S3 sämtliche Versionen aller Objekte im Bucket.

    (zum Vergrößern klicken)


    e. Sie werden jetzt den Beispiel-Code in den Amazon S3-Bucket hochladen. 

    • Klicken Sie auf Upload (Hochladen).
    • Folgen Sie den Anweisungen auf dem Bildschirm, um die Zip-Datei mit dem Beispiel-Code, die Sie aus GitHub heruntergeladen haben, hochzuladen.

    (zum Vergrößern klicken)

  • AWS CodeCommit

    a. Wenn Sie Amazon AWS als Quelle verwenden möchten, rufen Sie den Beispiel-Code aus dem AWS GitHub-Repository ab, speichern ihn auf Ihrem Computer und laden ihn in ein AWS CodeCommit-Repository hoch.

    (zum Vergrößern klicken)


    b. Speichern Sie die Quelldateien auf Ihrem Computer:

    • Wählen Sie die Datei mit der Bezeichnung aws-codepipeline-s3-aws-codedeploy_linux.zip aus.
    • Wählen Sie View Raw (Rohdaten anzeigen) aus.
    • Speichern Sie die Beispieldatei auf Ihrem lokalen Computer.

    (zum Vergrößern klicken)


    d. Klicken Sie hier, um die AWS CodeCommit-Konsole zu öffnen, und wählen Sie Get Started (Erste Schritte) aus.

    (zum Vergrößern klicken)


    e. Auf der Seite Create new repository (Neues Repository erstellen):

    • Repository name (Repositoryname): Geben Sie PipelineRepo ein.
    • Wählen Sie Create repository (Repository erstellen) aus.

    (zum Vergrößern klicken)


    f. Stellen Sie eine Verbindung zu Ihrem Repository her und übertragen Sie dann eine Kopie der Beispieldatei per Push dorthin.  Anweisungen hierzu finden Sie unter Herstellen einer Verbindung mit einem AWS CodeCommit-Repository.

In diesem Schritt werden Sie eine einfache Pipeline mit zwei Aktionen erstellen und konfigurieren: Quelle und Bereitstellung. Sie werden CodePipeline die Speicherorte Ihres Quellrepositorys und Ihrer Bereitstellungsumgebung angeben.


a. Klicken Sie hier, um die AWS CodePipeline-Konsole zu öffnen.

  • Klicken Sie auf der Begrüßungsseite auf Create pipeline (Pipeline erstellen)
  • Wenn Sie AWS CodePipeline zum ersten Mal verwenden, wird anstelle der Begrüßung eine Einführungsseite angezeigt. Klicken Sie auf Get started (Erste Schritte).

(zum Vergrößern klicken)


b. Auf der Seite Step 1: Name (Schritt 1: Name):

  • Pipeline name (Pipeline-Name): Geben Sie den Namen für Ihre Pipeline ein, DemoPipeline. 
  • Klicken Sie auf Next Step (Nächster Schritt).

Hinweis: Der Name einer erstellten Pipeline kann nicht nachträglich geändert werden.

(zum Vergrößern klicken)


c. Wählen Sie auf der Seite Step 2: Source (Schritt 2: Quelle) den Speicherort der von Ihnen ausgewählten Quelle aus und führen Sie die folgenden Schritte aus:

  • GitHub

    Source Provider (Quell-Anbieter): GitHub

    • Klicken Sie im Abschnitt Connect to GitHub (Mit GitHub verbinden) auf Connect to GitHub (Mit GitHub verbinden).
    • Ein neues Browserfenster wird geöffnet, um Sie mit GitHub zu verbinden. Melden Sie sich bei Aufforderung mit Ihren GitHub-Anmeldeinformationen an. 
    • Sie werden gebeten, Anwendungszugriff auf Ihr Konto zuzulassen. Wählen Sie Authorize application (Anwendung berechtigen) aus.

    (zum Vergrößern klicken)


    Geben Sie das Repository und die Verzweigung an:

    • Repository: Wählen Sie in der Dropdown-Liste das GitHub-Repository aus, das Sie als Quellspeicherort für Ihre Pipeline verwenden möchten. Klicken Sie auf das vergabelte Repository in Ihrem GitHub-Konto, das den Beispiel-Code aws-codepipeline-s3-aws-codedeploy_linux enthält. 
    • Branch (Verzweigung): Wählen Sie in der Dropdown-Liste die zu verwendende Verzweigung, master., aus.
    • Klicken Sie auf Next Step (Nächster Schritt).

    (zum Vergrößern klicken)

  • Amazon S3

    Source Provider (Quell-Anbieter): Amazon S3

    • Amazon S3 location (Amazon S3-Speicherort): Geben Sie den Namen des von Ihnen erstellten Amazon S3-Buckets ein, gefolgt von der Beispieldatei, die Sie in diesen Bucket kopiert haben (aws-codepipeline-s3-aws-codedeploy_linux.zip). Wenn Sie Ihren Bucket beispielsweise awscodepipeline-demobucket-variable genannt haben, geben Sie s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip. ein.
    • Klicken Sie auf Next Step (Nächster Schritt).

    (zum Vergrößern klicken)

  • AWS CodeCommit

    Source Provider (Quell-Anbieter): AWS CodeCommit.

    • Repository name (Repositoryname): Wählen Sie den Namen Ihres AWS CodeCommit-Repositorys aus. 
    • Branch name (Verzweigungsname): Wählen Sie den Namen der Verzweigung aus, in der die Beispieldatei enthalten ist.
    • Klicken Sie auf Next Step (Nächster Schritt).

    (zum Vergrößern klicken)


d. Bei einer echten Pipeline für die kontinuierliche Bereitstellung ist eine Build-Stufe erforderlich, in der der Code kompiliert und die Einheit getestet wird. CodePipeline bietet Ihnen die Möglichkeit, Ihren bevorzugten Build-Anbieter in Ihre Pipeline einzubinden. In diesem Tutorial überspringen Sie die Build-Stufe jedoch.

  • Wählen Sie auf der Seite Step 3: Build (Schritt 3: Build) die Option No Build (Kein Build) aus.
  • Klicken Sie auf Next Step (Nächster Schritt).

 

(zum Vergrößern klicken)


e. Auf der Seite Step 4: Beta (Schritt 4: Beta):

  • Bereitstellungsanbieter: Klicken Sie auf AWS Elastic Beanstalk. 
  • Anwendungsname: Klicken Sie auf My First Elastic Beanstalk Application (Meine erste Elastic Beanstalk-Anwendung). 
  • Umgebungsname: Klicken Sie auf Default-Environment (Standardumgebung).
  • Klicken Sie auf Next Step (Nächster Schritt).

Hinweis: Der Name "Beta" ist einfach der Name, der dieser Stufe der Pipeline standardmäßig gegeben wird, so wie der ersten Stufe der Pipeline der Name "Source" (Quelle) gegeben wird.

(zum Vergrößern klicken)


f. Auf der Seite Step 5: Service Role (Schritt 5: Servicerolle):

  • Servicerolle: Klicken Sie auf Create role (Rolle erstellen).
  • Sie werden zu einer IAM-Konsolenseite umgeleitet, auf der die für Sie erstellte AWS-CodePipeline-Servicerolle beschrieben wird. Klicken Sie auf Allow (Erlauben).
  • Nachdem Sie die Rolle erstellt haben, werden Sie zur Seite Step 5: Service Role (Schritt 5: Servicerolle) umgeleitet, auf der AWS-CodePipeline-Service im Rollennamen angezeigt wird. Klicken Sie auf Next Step (Nächster Schritt).

Hinweis: Die Servicerollenerstellung ist nur erforderlich, wenn Sie zum ersten Mal eine Pipeline in AWS CodePipeline erstellen. Wenn bereits eine Service-Rolle erstellt wurde, können Sie diese aus der Dropdown-Liste mit Rollen wählen. Da die Dropdown-Liste alle IAM-Servicerollen anzeigt, die mit Ihrem Konto verknüpft sind, sollten Sie bei der Auswahl eines Nicht-Standard-Namens sicherstellen, dass dieser als Servicerolle für AWS CodePipeline erkennbar ist.

(zum Vergrößern klicken)

In diesem Schritt starten Sie Ihre Pipeline. Sobald Ihre Pipeline erstellt wurde, wird sie automatisch ausgeführt. Zunächst wird der Beispiel-App-Code in Ihrem Quellspeicherort ermittelt, anschließend werden die Dateien gebündelt und in die von Ihnen definierte zweite Stufe verschoben. Während dieser Stufe wird der Code an Elastic Beanstalk übergeben. Dieser Dienst enthält die EC2-Instance, von der Ihr Code gehostet werden wird. Elastic Beanstalk übernimmt die Bereitstellung des Codes für die EC2-Instance.


a. Prüfen Sie die Informationen auf der Seite Step 6: Review (Schritt 6: Prüfen) und klicken Sie auf Create pipeline (Pipeline erstellen).

(zum Vergrößern klicken)


b. Nachdem Ihre Pipeline erstellt wurde, wird die Statusseite für die Pipeline angezeigt und die Pipeline wird automatisch ausgeführt. Sie können den Fortschritt sowie Nachrichten zur erfolgreichen Ausführung bzw. zum Fehlschlag anzeigen, während die Pipeline die einzelnen Aktionen ausführt.

Überwachen Sie den Fortschritt der Pipeline während der einzelnen Stufen, um sicherzustellen, dass Ihre Pipeline erfolgreich ausgeführt wurde. Der Status jeder Stufe ändert sich von No executions yet zu In Progress. Danach ändert er sich entweder zu Succeeded oder Failed. Die Pipeline sollte die erste Ausführung innerhalb weniger Minuten abschließen.

(zum Vergrößern klicken)


c. Klicken Sie im Statusbereich für die Beta-Stufe auf AWS Elastic Beanstalk

(zum Vergrößern klicken)


d. Die AWS Elastic Beanstalk-Konsole wird mit Informationen zur Bereitstellung geöffnet.

  • Klicken Sie auf die zuvor erstellte Umgebung mit der Bezeichnung Default-Environment (Standardumgebung)

(zum Vergrößern klicken)


e. Klicken Sie auf die oben rechts auf der Seite angezeigte URL, um die von Ihnen bereitgestellte Beispiel-Website anzuzeigen.

(zum Vergrößern klicken)

In diesem Schritt ändern Sie den Beispielcode und führen einen Commit für die Änderung in Ihrem Repository aus. CodePipeline erkennt Ihren aktualisierten Beispielcode und initiiert die Bereitstellung in Ihrer EC2-Instance automatisch über Elastic Beanstalk. 

Beachten Sie, dass die von Ihnen bereitgestellte Beispiel-Webseite auf AWS CodeDeploy verweist, einen Dienst für automatische Codebereitstellungen. In CodePipeline stellt CodeDeploy eine Alternative zur Verwendung von Elastic Beanstalk für Bereitstellungsaktionen dar. Aktualisieren Sie den Beispielcode, damit er korrekt angibt, dass Sie das Beispiel unter Verwendung von Elastic Beanstalk bereitgestellt haben.

  • GitHub

    a. Wechseln Sie zu Ihrer eigenen Kopie des Repositorys, das Sie in GitHub vergabelt haben.

    • Öffnen Sie index.html.
    • Wählen Sie das Symbol Edit (Bearbeiten) aus.

    (zum Vergrößern klicken)


    b. Aktualisieren Sie die Webseite. Kopieren Sie dazu den folgenden Text und fügen Sie ihn in Zeile 30 ein: 

    Sie haben erfolgreich eine Pipeline erstellt, die diese Quellanwendung aus GitHub abgerufen und mithilfe von AWS Elastic Beanstalk in einer Amazon EC2-Instance bereitgestellt hat. Damit sind Sie der kontinuierlichen Bereitstellung einen Schritt näher gekommen!

    (zum Vergrößern klicken)


    c. Führen Sie einen Commit für die Änderung in Ihrem Repository durch.

    (zum Vergrößern klicken)

  • Amazon S3

    a. Wechseln Sie auf Ihrem Desktop zu der Zip-Datei aws-codepipeline-s3-aws-codedeploy_linux.zip, die Sie heruntergeladen haben.


    b. Bearbeiten Sie den Code der Beispiel-Webanwendung:

    • Extrahieren Sie index.html aus der Zip-Datei und öffnen Sie die Datei in Ihrem bevorzugten Texteditor. 
    • Aktualisieren Sie den auf „Congratulations (Herzlichen Glückwunsch)!” folgenden Kopftext, sodass dieser wie folgt lautet:

    „Sie haben erfolgreich eine Pipeline erstellt, die diese Quellanwendung aus Amazon S3 abgerufen und mithilfe von AWS Elastic Beanstalk in einer Amazon EC2-Instance bereitgestellt hat. Damit sind Sie der kontinuierlichen Bereitstellung einen Schritt näher gekommen!”

    • Kopieren Sie die aktualisierte Datei „index.html” in die Datei aws-codepipeline-s3-aws-codedeploy_linux.zip zurück und ersetzen Sie die ältere Version von index.html.

    (zum Vergrößern klicken)


    c. Laden Sie die bearbeitete Datei erneut in Ihren Amazon S3-Bucket hoch:

    • Kehren Sie zu dem S3-Bucket zurück, den Sie zuvor erstellt haben. 
    • Laden Sie die aktualisierte Datei aws-codepipeline-s3-aws-codedeploy_linux.zip in den Bucket. 

    Hinweis: Da Sie beim Erstellen des S3-Buckets Versioning aktiviert haben, speichert S3 eine Kopie jeder Version Ihrer Dateien.

    (zum Vergrößern klicken)

  • AWS CodeCommit

    a. Wechseln Sie zu der von Ihnen heruntergeladenen Zip-Datei aws-codepipeline-s3-aws-codedeploy_linux.zip, die den Beispiel-Code enthält.


    b. Bearbeiten Sie den Code der Beispiel-Webanwendung:
     
    • Extrahieren Sie index.html aus der Zip-Datei und öffnen Sie die Datei in Ihrem bevorzugten Texteditor. 
    • Aktualisieren Sie anschließend den auf „Congratulations (Herzlichen Glückwunsch!)” folgenden Kopftext, sodass dieser wie folgt lautet:

    Sie haben erfolgreich eine Pipeline erstellt, die diese Quellanwendung aus AWS CodeCommit abgerufen und mithilfe von AWS Elastic Beanstalk in einer Amazon EC2-Instance bereitgestellt hat. Damit sind Sie der kontinuierlichen Bereitstellung einen Schritt näher gekommen!

    (zum Vergrößern klicken)


    c. Führen Sie einen Commit und eine Push-Übertragung der aktualisierten Zip-Datei zu Ihrem CodeCommit-Repository durch.


d. Kehren Sie zu Ihrer Pipeline in der CodePipeline-Konsole zurück. Nach wenigen Minuten sollte sich die Quelle zu blau ändern. Dies weist darauf hin, dass die Pipeline die Änderungen an Ihrem Quell-Repository erkannt hat. Danach wird der aktualisierte Code automatisch zu Elastic Beanstalk verschoben.

  • Nachdem Succeeded (Erfolgreich) für den Pipelinestatus angezeigt wird, klicken Sie im Statusbereich für die Beta-Stufe auf AWS Elastic Beanstalk.

(zum Vergrößern klicken)


e. Die AWS Elastic Beanstalk-Konsole wird mit Informationen zur Bereitstellung geöffnet. Wählen Sie die zuvor erstellte Umgebung mit der Bezeichnung Default-Environment (Standardumgebung) aus.

(zum Vergrößern klicken)


f. Klicken Sie auf die oben rechts auf der Seite angezeigte URL, um die Beispiel-Website erneut anzuzeigen.  Ihr Text wurde automatisch durch die Pipeline für die kontinuierliche Bereitstellung aktualisiert!

 

(zum Vergrößern klicken)

Um zukünftige Gebühren zu vermeiden, sollten Sie alle während dieses Tutorials gestarteten Ressourcen löschen. Dies umfasst die Pipeline, die Elastic Beanstalk-Anwendung sowie die Quelle, die Sie zum Hosten des Codes eingerichtet haben.  


a. Löschen Sie zunächst Ihre Pipeline:

  • Klicken Sie in der Pipeline auf Edit (Bearbeiten)
  • Klicken Sie auf Delete (Löschen).
  • Geben Sie den Namen Ihrer Pipeline ein und klicken Sie dann auf Delete (Löschen).

(zum Vergrößern klicken)


b. Löschen Sie als nächstes Ihre Elastic Beanstalk-Anwendung:

  • Rufen Sie die Elastic Beanstalk-Konsole auf. 
  • Klicken Sie auf Actions (Aktionen).
  • Klicken Sie dann auf Terminate Environment (Umgebung beenden).

(zum Vergrößern klicken)

  • Amazon S3

    c. Wenn Sie einen S3-Bucket für dieses Tutorial erstellt haben, löschen Sie diesen Bucket:

    • Rufen Sie die S3 Konsole auf. 
    • Klicken Sie mit der rechten Maustaste auf den Bucketnamen und wählen Sie Delete Bucket (Bucket löschen) aus. 
    • Wenn eine Bestätigungsmeldung angezeigt wird, geben Sie den Bucket-Namen ein und klicken Sie auf Delete (Löschen).

    (zum Vergrößern klicken)

  • AWS CodeCommit

    c. Wenn Sie für dieses Tutorial ein AWS CodeCommit-Repository erstellt haben, rufen Sie die CodeCommit-Konsole auf und löschen Sie dieses Repository.

    (zum Vergrößern klicken)


    c. Wählen Sie im Navigationsbereich die Option Settings (Einstellungen) aus.

    • Klicken Sie auf Delete Repository (Repository löschen).
    • Ein Bestätigungsfenster wird geöffnet. Geben Sie den Namen Ihres Repositorys ein und klicken Sie auf Delete (Löschen).

    (zum Vergrößern klicken)

Sie haben erfolgreich eine automatisierte Software-Veröffentlichungs-Pipeline mithilfe von AWS CodePipeline erstellt! Mithilfe von CodePipeline haben Sie eine Pipeline erstellt, die GitHub, Amazon S3 oder AWS CodeCommit als Quellspeicherort für Anwendungscode verwendet und den Code anschließend für eine von AWS Elastic Beanstalk verwaltete Amazon EC2-Instance bereitstellt. Ihre Pipeline stellt Ihren Code bei jeder Codeänderung automatisch bereit. Damit sind Sie der kontinuierlichen Bereitstellung einen Schritt näher gekommen!

Jetzt, da Sie eine einfache Pipeline mithilfe von AWS CodePipeline erstellen können, sollten Sie sich die folgenden Ressourcen ansehen, um mehr zu erfahren.