

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 und Bereitstellen einer Java-Anwendung auf Amazon EKS mithilfe einer CI/CD Pipeline
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline"></a>

*MAHESH RAGHUNANDANAN, Jomcy Pappachen und James Radtke, Amazon Web Services*

## Zusammenfassung
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-summary"></a>

Dieses Muster beschreibt, wie Sie eine CI/CD-Pipeline (Continuous Integration and Continuous Delivery) erstellen, die automatisch eine Java-Anwendung mit empfohlenen DevSecOps Vorgehensweisen für einen Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster auf dem erstellt und bereitstellt. AWS Cloud Dieses Muster verwendet eine Begrüßungsanwendung, die mit einem Spring Boot Java-Framework entwickelt wurde und Apache Maven verwendet.

Sie können den Ansatz dieses Musters verwenden, um den Code für eine Java-Anwendung zu erstellen, die Anwendungsartefakte als Docker-Image zu verpacken, das Image sicherheitstechnisch zu scannen und das Image als Workload-Container auf Amazon EKS hochzuladen. Der Ansatz dieses Musters ist nützlich, wenn Sie von einer eng gekoppelten monolithischen Architektur zu einer Microservices-Architektur migrieren möchten. Dieser Ansatz hilft Ihnen auch dabei, den gesamten Lebenszyklus einer Java-Anwendung zu überwachen und zu verwalten, wodurch ein höheres Maß an Automatisierung gewährleistet und Fehler oder Bugs vermieden werden können.

## Voraussetzungen und Einschränkungen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto.
+ AWS Command Line Interface (AWS CLI) Version 2, installiert und konfiguriert. Weitere Informationen dazu finden Sie AWS CLI in der AWS CLI Dokumentation unter [Installation oder Aktualisierung auf die neueste Version von](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).

  AWS CLI Version 2 muss mit derselben AWS Identity and Access Management (IAM-) Rolle konfiguriert werden, die den Amazon EKS-Cluster erstellt, da nur diese Rolle berechtigt ist, dem weitere IAM-Rollen hinzuzufügen. `aws-auth` `ConfigMap` Informationen und Schritte zur Konfiguration AWS CLI finden Sie in [der Dokumentation unter Einstellungen konfigurieren](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html). AWS CLI 
+ IAM-Rollen und -Berechtigungen mit vollem Zugriff auf AWS CloudFormation. Weitere Informationen dazu finden Sie in der Dokumentation unter [Steuern des Zugriffs mit IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) CloudFormation .
+ Ein vorhandener Amazon EKS-Cluster mit Details zum IAM-Rollennamen und zum Amazon-Ressourcennamen (ARN) der IAM-Rolle für Worker-Knoten im EKS-Cluster.
+ Kubernetes Cluster Autoscaler, installiert und konfiguriert in Ihrem Amazon EKS-Cluster. Weitere Informationen finden Sie unter [Skalieren von Cluster-Berechnungen mit Karpenter und Cluster Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html) in der Amazon EKS-Dokumentation. 
+ Zugriff auf Code im Repository. GitHub 

**Wichtig**  
AWS Security Hub CSPM ist als Teil der CloudFormation Vorlagen aktiviert, die im Code für dieses Muster enthalten sind. Standardmäßig wird Security Hub CSPM nach der Aktivierung mit einer kostenlosen 30-Tage-Testversion geliefert. Nach der Testphase fallen hierfür Kosten an. AWS-Service Weitere Informationen zur Preisgestaltung finden Sie unter [AWS Security Hub CSPM  – Preise](https://aws.amazon.com/security-hub/pricing/).

**Produktversionen**
+ Helm Version 3.4.2 oder höher
+ Apache Maven Version 3.6.3 oder höher
+ BridgeCrew Checkov Version 2.2 oder höher
+ Aqua Security Trivy Version 0.37 oder höher

## Architektur
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-architecture"></a>

**Technologie-Stack**
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon CodeGuru
+ AWS CodePipeline
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon EKS
+ Amazon EventBridge
+ AWS Security Hub CSPM
+ Amazon-Simple-Notification-Service (Amazon-SNS)

**Zielarchitektur**

![Workflow für die Bereitstellung einer Java-Anwendung in Amazon EKS.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/95a5b5c2-d7fb-41eb-9089-455318c0d585/images/4f5fd8c2-2b6d-4945-aa64-fcf317521711.png)


Das Diagramm zeigt den folgenden Workflow:

1. Der Entwickler aktualisiert den Java-Anwendungscode im Basiszweig des CodeCommit Repositorys, wodurch eine Pull-Anfrage (PR) erstellt wird.

1. Sobald die PR eingereicht wurde, überprüft Amazon CodeGuru Reviewer den Code automatisch, analysiert ihn auf der Grundlage von Best Practices für Java und gibt dem Entwickler Empfehlungen.

1. Nachdem der PR mit dem Basiszweig zusammengeführt wurde, wird ein EventBridge Amazon-Event erstellt.

1. Das EventBridge Ereignis initiiert die CodePipeline Pipeline, die gestartet wird.

1. CodePipeline führt die CodeSecurity Scan-Phase aus (kontinuierliche Sicherheit).

1. AWS CodeBuild startet den Sicherheitsscan-Prozess, bei dem die Helm-Dateien für die Dockerfile- und Kubernetes-Bereitstellung mithilfe von Checkov gescannt werden und der Quellcode der Anwendung auf der Grundlage inkrementeller Codeänderungen gescannt wird. Der Anwendungsquellcodescan wird vom [CodeGuru Reviewer Command Line Interface (CLI) -Wrapper](https://github.com/aws/aws-codeguru-cli) durchgeführt.
**Anmerkung**  
Ab dem 7. November 2025 können Sie in Amazon CodeGuru Reviewer keine neuen Repository-Verknüpfungen erstellen. Weitere Informationen zu Services mit ähnlichen Funktionen wie CodeGuru Reviewer finden Sie in der [ CodeGuru Reviewer-Dokumentation unter Änderung der Verfügbarkeit von Amazon](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) CodeGuru Reviewer. 

1. Wenn die Sicherheitsscan-Phase erfolgreich ist, wird die Build-Phase (kontinuierliche Integration) eingeleitet.

1. In der CodeBuild Build-Phase erstellt das Artefakt, packt das Artefakt in ein Docker-Image, scannt das Image mithilfe von Aqua Security Trivy auf Sicherheitslücken und speichert das Image in Amazon ECR.

1. Die in Schritt 8 erkannten Sicherheitslücken werden zur weiteren Analyse durch Entwickler oder Techniker auf Security Hub CSPM hochgeladen. Security Hub CSPM bietet einen Überblick und Empfehlungen zur Behebung der Sicherheitslücken.

1. E-Mail-Benachrichtigungen über aufeinanderfolgende Phasen innerhalb der CodePipeline Pipeline werden über Amazon SNS gesendet.

1. Nachdem die Phasen der kontinuierlichen Integration abgeschlossen sind, CodePipeline beginnt die Bereitstellungsphase (kontinuierliche Bereitstellung).

1. Das Docker-Image wird mithilfe von Helm-Diagrammen als Container-Workload (Pod) in Amazon EKS bereitgestellt.

1. Der Anwendungs-Pod ist mit dem Amazon CodeGuru Profiler-Agent konfiguriert, der die Profilerstellungsdaten der Anwendung (CPU, Heap-Nutzung und Latenz) an CodeGuru Profiler sendet, sodass Entwickler das Verhalten der Anwendung besser verstehen können.

## Tools
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-tools"></a>

**AWS-Services**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend zu verwalten. AWS-Konten 
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)ist ein vollständig verwalteter Build-Service, der Ihnen hilft, Quellcode zu kompilieren, Komponententests durchzuführen und Artefakte zu erstellen, die sofort einsatzbereit sind.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)ist ein Versionskontrolldienst, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) sammelt Laufzeitleistungsdaten aus Ihren Live-Anwendungen und gibt Empfehlungen, die Ihnen bei der Feinabstimmung Ihrer Anwendungsleistung helfen können.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)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.
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ Mit [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) können Sie Kubernetes ausführen, AWS ohne dass Sie Ihre eigene Kubernetes-Steuerebene oder Knoten installieren oder verwalten müssen.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) ist ein serverloser Event-Bus-Service, der Ihnen hilft, Ihre Anwendungen mit Echtzeitdaten aus einer Vielzahl von Quellen zu verbinden, darunter AWS Lambda Funktionen, HTTP-Aufruf-Endpunkte, die API-Ziele verwenden, oder Event-Busse in anderen. AWS-Konten
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)bietet einen umfassenden Überblick über Ihren Sicherheitsstatus. AWS Es hilft Ihnen auch dabei, Ihre AWS Umgebung anhand von Industriestandards und Best Practices im Bereich Sicherheit zu überprüfen.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Andere Dienste**
+ [Helm](https://helm.sh/docs/) ist ein Open-Source-Paketmanager für Kubernetes.
+ [Apache Maven](https://maven.apache.org/) ist ein Tool für die Verwaltung und Untersuchung von Softwareprojekten.
+ [BridgeCrew Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) ist ein statisches Code-Analyse-Tool zum Scannen von IaC-Dateien (Infrastructure as Code) auf Fehlkonfigurationen, die zu Sicherheits- oder Compliance-Problemen führen können.
+ [Aqua Security Trivy](https://github.com/aquasecurity/trivy) ist ein umfassender Scanner für Sicherheitslücken in Container-Images, Dateisystemen und Git-Repositorys sowie für Konfigurationsprobleme.

**Code**

Der Code für dieses Muster ist im Repository verfügbar. GitHub [aws-codepipeline-devsecops-amazoneks](https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks)

## Best Practices
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-best-practices"></a>
+ Dieses Muster folgt den [bewährten IAM-Sicherheitsmethoden](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html), um das Prinzip der geringsten Rechte für IAM-Entitäten in allen Phasen der Lösung anzuwenden. Wenn Sie die Lösung um zusätzliche Tools AWS-Services oder Tools von Drittanbietern erweitern möchten, empfehlen wir Ihnen, den Abschnitt zur [Anwendung von Berechtigungen mit den geringsten Rechten in der IAM-Dokumentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) zu lesen.
+ Wenn Sie über mehrere Java-Anwendungen verfügen, empfehlen wir, für jede Anwendung separate CI/CD Pipelines zu erstellen.
+ Wenn Sie eine Monolith-Anwendung haben, empfehlen wir, die Anwendung nach Möglichkeit in Microservices aufzuteilen. Microservices sind flexibler, sie erleichtern die Bereitstellung von Anwendungen als Container und bieten einen besseren Einblick in den gesamten Aufbau und die Bereitstellung der Anwendung.

## Epen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-epics"></a>

### Richte die Umgebung ein
<a name="set-up-the-environment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das GitHub Repository. | Führen Sie den folgenden Befehl aus, um das Repository zu klonen.<pre>git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks</pre> | App-Entwickler, DevOps Ingenieur | 
| Erstellen Sie einen S3-Bucket und laden Sie den Code hoch. | 1. Melden Sie sich bei der an AWS-Managementkonsole, öffnen Sie die [Amazon S3 S3-Konsole](https://console.aws.amazon.com/s3/) und erstellen Sie dann einen S3-Bucket in AWS-Region dem Bereich, in dem Sie diese Lösung bereitstellen möchten. Weitere Informationen finden Sie unter [Bucket erstellen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) in der Amazon S3 S3-Dokumentation.<br />2. Erstellen Sie im S3-Bucket einen Ordner mit dem Namen`code`.<br />3. Navigieren Sie zu dem Ort, an dem Sie das Repository geklont haben. Führen Sie die folgenden Befehle nacheinander aus, um eine komprimierte Version des gesamten Codes mit der Erweiterung .zip (`cicdstack.zip`) zu erstellen und die ZIP-Datei zu überprüfen.<pre>cd aws-codepipeline-devsecops-amazoneks<br />python -m zipfile -c cicdstack.zip *<br />python -m zipfile -t cicdstack.zip</pre>Wenn der `python` Befehl fehlschlägt und angibt, dass Python nicht gefunden wurde, verwenden Sie `python3` stattdessen.<br />4. Laden Sie die `cicdstack.zip` Datei in den Codeordner hoch, den Sie zuvor im S3-Bucket erstellt haben. | AWS DevOps, Cloud-Administrator, DevOps Ingenieur | 
| Erstellen Sie einen CloudFormation Stack. | 1. Öffnen Sie die [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/) und wählen Sie **Create Stack (Stack erstellen)** aus.<br />2. Wählen **Sie unter Vorlage angeben** die Option **Eine Vorlagendatei** hochladen aus, laden Sie die `cf_templates/codecommit_ecr.yaml` Datei hoch und klicken Sie dann auf **Weiter**.<br />3. **Geben Sie im Feld Stackdetails** angeben den Stack-Namen und anschließend die folgenden Eingabeparameterwerte ein:`CodeCommitRepositoryBranchName`: Der Name der Filiale, in der sich Ihr Code befinden wird (die Standardeinstellung ist`main`)`CodeCommitRepositoryName`: Der Name des CodeCommitrepository zu erstellenden`CodeCommitRepositoryS3Bucket`: Der Name des S3-Buckets, in dem Sie den Code-Ordner erstellt haben`CodeCommitRepositoryS3BucketObjKey`: `code/cicdstack.zip``ECRRepositoryName`: Der Name des zu erstellenden Amazon ECR-Repositorys<br />4. Wählen Sie **Weiter**, verwenden Sie die Standardeinstellungen für die **Optionen „Stack konfigurieren**“ und wählen Sie dann **Weiter**.<br />5. Überprüfen Sie im Abschnitt **Überprüfen** die Vorlagen- und Stack-Details und wählen Sie dann **Stapel erstellen** aus. Anschließend wird der Stack erstellt, einschließlich der Repositorys CodeCommit und der Amazon ECR Repositorys.<br />6. Notieren Sie sich die Namen der CodeCommit und der Amazon ECR-Repositorys, die für die Einrichtung der CI/CD Java-Pipeline erforderlich sind. | AWS DevOps, DevOps Ingenieur | 
| Validieren Sie die CloudFormation Stack-Bereitstellung. | 1. Überprüfen Sie auf der CloudFormation Konsole unter **Stacks** den Status des CloudFormation Stacks, den Sie bereitgestellt haben. Der Status des Stacks sollte **CREATE COMPLETE lauten**.<br />2. Überprüfen Sie von der Konsole aus, ob die Repositorys CloudFormation und Amazon ECR bereitgestellt wurden und bereit sind. | AWS DevOps, DevOps Ingenieur | 
| Löschen Sie den S3-Bucket. | Leeren und löschen Sie den S3-Bucket, den Sie zuvor erstellt haben. Weitere Informationen finden Sie unter [Löschen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) in der Amazon S3 S3-Dokumentation. | AWS DevOps, DevOps Ingenieur | 

### Konfigurieren Sie die Helm-Charts
<a name="configure-the-helm-charts"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Konfigurieren Sie die Helm-Charts Ihrer Java-Anwendung. | 1. Navigieren Sie an dem Ort, an dem Sie das GitHub Repository geklont haben, zu dem Ordner`helm_charts/aws-proserve-java-greeting`. In diesem Ordner enthält die `values.dev.yaml`**** Datei Informationen zur Konfiguration der Kubernetes-Ressourcen, die Sie für Ihre Container-Bereitstellungen in Amazon EKS ändern können. Aktualisieren Sie den Docker-Repository-Parameter, AWS-Region indem Sie Ihre AWS-Konto ID und den Namen des Amazon ECR-Repositorys angeben.<pre>image:<br />  repository: <account-id>.dkr.ecr.<region>.amazonaws.com/<app-ecr-repo-name></pre><br />2. Der Servicetyp des Java-Pods ist auf eingestellt. `LoadBalancer`<pre>service:<br />  type: LoadBalancer<br />  port: 80<br />  targetPort: 8080<br />  path: /hello<br />  initialDelaySeconds: 60<br />  periodSeconds: 30</pre><br />Um einen anderen Dienst zu verwenden (z. B.`NodePort`), können Sie diesen Parameter ändern. Weitere Informationen finden Sie in der [Kubernetes-Dokumentation](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types).<br />3. Sie können den [Kubernetes Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) aktivieren, indem Sie den Parameter auf ändern. `autoscaling` `enabled: true`<pre>autoscaling:<br />  enabled: true<br />  minReplicas: 1<br />  maxReplicas: 100<br />  targetCPUUtilizationPercentage: 80<br />  # targetMemoryUtilizationPercentage: 80</pre><br />4. Sie können verschiedene Funktionen für die Kubernetes-Workloads aktivieren, indem Sie die Werte in der `values.<ENV>.yaml` Datei ändern, in der sich Ihre Entwicklungs-, Produktions-, UAT- oder QA-Umgebung `<ENV>` befindet. | DevOps Ingenieur | 
| Überprüfen Sie Helm-Diagramme auf Syntaxfehler. | 1. Vergewissern Sie sich vom Terminal aus, dass Helm v3 auf Ihrer lokalen Workstation installiert ist, indem Sie den folgenden Befehl ausführen.<pre>helm --version</pre><br />Wenn Helm v3 nicht installiert ist, [installieren Sie es](https://helm.sh/docs/intro/install/).<br />2. Navigieren Sie im Terminal zum Verzeichnis Helm Charts (`helm_charts/aws-proserve-java-greeting`) und führen Sie den folgenden Befehl aus.<pre>helm lint . -f values.dev.yaml</pre><br />Dadurch werden die Helm-Diagramme auf Syntaxfehler überprüft. | DevOps Ingenieur | 

### Richten Sie die CI/CD Java-Pipeline ein
<a name="set-up-the-java-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie die CI/CD Pipeline. | 1. Öffnen Sie die [CloudFormation -Konsole](https://console.aws.amazon.com/cloudformation/) und wählen Sie **Create Stack (Stack erstellen)** aus.<br />2. Wählen **Sie unter Vorlage angeben** die Option **Eine Vorlagendatei** hochladen aus, laden Sie die `cf_templates/build_deployment.yaml` Vorlage hoch und klicken Sie dann auf **Weiter**.<br />3. **Geben Sie im Feld Stackdetails** angeben den **Stack-Namen** und anschließend die folgenden Werte für die Eingabeparameter an:`CodeBranchName`: Branch-Name des CodeCommit Repositorys, in dem sich Ihr Code befindet`EKSClusterName`: Name Ihres EKS-Clusters (nicht die `EKSCluster` ID)`EKSCodeBuildAppName`: Name der App Helm-Diagramm (`aws-proserve-java-greeting`)`EKSWorkerNodeRoleARN`: ARN der IAM-Rolle, die den Amazon EKS-Worker-Knoten zugewiesen ist`EKSWorkerNodeRoleName`: Name der IAM-Rolle, die den Amazon EKS-Worker-Knoten zugewiesen ist`EcrDockerRepository`: Name des Amazon ECR-Repositorys, in dem die Docker-Images Ihres Codes gespeichert werden`EmailRecipient`: E-Mail-Adresse, an die Build-Benachrichtigungen gesendet werden sollen`EnvType`: Umgebung (zum Beispiel dev, test oder prod)`SourceRepoName`: Name des CodeCommit Repositorys, in dem sich Ihr Code befindet<br />4. Wählen Sie **Weiter** aus. Verwenden Sie die Standardeinstellungen unter **Stack-Optionen konfigurieren** und wählen Sie dann **Weiter**.<br />5. Überprüfen Sie im Abschnitt **Überprüfen** die CloudFormation Vorlagen- und Stack-Details und wählen Sie dann **Weiter** aus.<br />6. Wählen Sie **Stack erstellen** aus. <br />7. Während der CloudFormation Stack-Bereitstellung erhält der Besitzer der E-Mail-Adresse, die Sie in den Parametern angegeben haben, eine Nachricht, in der er aufgefordert wird, ein SNS-Thema zu abonnieren. Um Amazon SNS zu abonnieren, muss der Eigentümer den Link in der Nachricht auswählen.<br />8. Nachdem der Stack erstellt wurde, öffnen Sie die Registerkarte **Outputs** des Stacks und notieren Sie dann den ARN-Wert für den `EksCodeBuildkubeRoleARN` Ausgabeschlüssel. Dieser IAM-ARN-Wert wird später benötigt, wenn Sie der CodeBuild IAM-Rolle Berechtigungen zur Bereitstellung von Workloads im Amazon EKS-Cluster erteilen. | AWS DevOps | 

### Aktivieren Sie die Integration zwischen Security Hub CSPM und Aqua Security
<a name="activate-integration-between-ash-and-aqua-security"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Schalten Sie die Aqua Security-Integration ein. | Dieser Schritt ist erforderlich, um die von Trivy gemeldeten Ergebnisse der Docker-Image-Sicherheitslücke an Security Hub CSPM hochzuladen. Da Security Hub CSPM-Integrationen CloudFormation nicht unterstützt werden, muss dieser Vorgang manuell durchgeführt werden.1. **Öffnen Sie die [AWS Security Hub CSPM Konsole](https://console.aws.amazon.com/securityhub/) und navigieren Sie zu Integrationen.**<br />2. Suchen Sie nach Aqua Security und wählen Sie **Aqua Security: Aqua Security** aus.<br />3. Wählen Sie **Ergebnisse akzeptieren aus**. | AWS-Administrator, DevOps Ingenieur | 

### Konfigurieren Sie CodeBuild die Konfiguration für die Ausführung von Helm- oder kubectl-Befehlen
<a name="configure-acb-to-run-helm-or-kubectl-commands"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
|  CodeBuild Erlaubt die Ausführung von Helm- oder kubectl-Befehlen im Amazon EKS-Cluster. |  CodeBuild Um für die Verwendung von Helm oder `kubectl` Befehlen mit dem Amazon EKS-Cluster authentifiziert zu werden, müssen Sie die IAM-Rollen zum hinzufügen. `aws-auth` `ConfigMap` Fügen Sie in diesem Fall den ARN der IAM-Rolle hinzu. Dabei handelt es sich um die IAM-Rolle`EksCodeBuildkubeRoleARN`, die für den CodeBuild Service erstellt wurde, um auf den Amazon EKS-Cluster zuzugreifen und Workloads darauf bereitzustellen. Dies ist eine einmalige Aktivität.Das folgende Verfahren muss vor der Genehmigung der Bereitstellung abgeschlossen sein CodePipeline.1. Öffnen Sie das `cf_templates/kube_aws_auth_configmap_patch.sh` Shell-Skript in Ihrer Amazon Linux- oder macOS-Umgebung.<br />2. Authentifizieren Sie sich beim Amazon EKS-Cluster, indem Sie den folgenden Befehl ausführen.<pre>aws eks --region <aws-region> update-kubeconfig --name <eks-cluster-name></pre><br />3. Führen Sie das Shell-Skript mit dem folgenden Befehl aus und ersetzen `<rolearn-eks-codebuild-kubectl>` Sie es durch den ARN-Wert`EksCodeBuildkubeRoleARN`, den Sie zuvor aufgezeichnet haben.<pre>bash cf_templates/kube_aws_auth_configmap_patch.sh <rolearn-eks-codebuild-kubectl> </pre><br />Der `aws_auth` `ConfigMap` ist konfiguriert und der Zugriff ist gewährt.  | DevOps | 

### Überprüfen Sie die CI/CD Pipeline
<a name="validate-the-ci-cd-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie sicher, dass die CI/CD Pipeline automatisch initiiert wird. | 1. Die CodeSecurity Scan-Phase in der Pipeline schlägt normalerweise fehl, wenn Checkov Schwachstellen in den Dockerfile- oder Helm-Diagrammen entdeckt. Der Zweck dieses Beispiels besteht jedoch darin, einen Prozess zur Identifizierung potenzieller Sicherheitslücken einzurichten, anstatt sie über die CI/CD Pipeline zu beheben, was normalerweise ein Prozess ist. DevSecOps In der Datei verwendet der `checkov` Befehl das `--soft-fail` Flag`buildspec/buildspec_secscan.yaml`, um einen Pipeline-Ausfall zu vermeiden.<pre>- echo -e "\n Running Dockerfile Scan"<br />- checkov -f code/app/Dockerfile --framework dockerfile --soft-fail --summary-position bottom<br />- echo -e "\n Running Scan of Helm Chart files"<br />- cp -pv helm_charts/$EKS_CODEBUILD_APP_NAME/values.dev.yaml helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml<br />- checkov -d helm_charts/$EKS_CODEBUILD_APP_NAME --framework helm --soft-fail --summary-position bottom<br />- rm -rfv helm_charts/$EKS_CODEBUILD_APP_NAME/values.yaml</pre><br />Damit die Pipeline fehlschlägt, wenn Sicherheitslücken in den Dockerfile- und Helm-Diagrammen gemeldet werden, muss die `--soft-fail` Option aus dem `checkov` Befehl entfernt werden. Entwickler oder Techniker können die Sicherheitslücken dann beheben und die Änderungen in das CodeCommit Quellcode-Repository übertragen.<br />2. Ähnlich wie bei CodeSecurity Scan verwendet die Build-Phase Aqua Security Trivy, um Sicherheitslücken zu identifizieren `HIGH` und `CRITICAL` Docker-Images zu erstellen, bevor die Anwendung an Amazon ECR übertragen wird.<pre>- AWS_REGION=$AWS_DEFAULT_REGION AWS_ACCOUNT_ID=$AWS_ACCOUNT_ID trivy -d image --no-progress --ignore-unfixed --exit-code 0 --severity HIGH,CRITICAL --format template --template "@securityhub/asff.tpl" -o securityhub/report.asff $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$CODEBUILD_RESOLVED_SOURCE_VERSION</pre><br />In diesem Beispiel schlägt die Pipeline nicht fehl, wenn Docker-Image-Schwachstellen gemeldet werden, weil der `trivy` Befehl in der `buildspec/buildspec.yml` Datei das Flag **`--exit-code`******mit dem Wert enthält. **`0`** Damit die Pipeline ausfällt, wenn `HIGH` `CRTICAL` Sicherheitslücken gemeldet werden, ändern Sie den Wert `--exit-code` auf`1`. Entwickler oder Techniker können dann die Sicherheitslücken beheben und die Änderungen in das CodeCommit Quellcode-Repository übernehmen.<br />3. Von Aqua Security Trivy gemeldete Docker-Image-Schwachstellen werden auf Security Hub CSPM hochgeladen. **Navigieren Sie auf der Security Hub CSPM-Konsole zu Findings.** Filtern Sie die Ergebnisse mit **Record** **State = Active** und **Product = Aqua Security**. Dies listet die Docker-Image-Schwachstellen in Security Hub CSPM auf. Es kann 15 Minuten bis eine Stunde dauern, bis Sicherheitslücken in Security Hub CSPM auftauchen.Weitere Informationen zum Starten der Pipeline mithilfe CodePipeline von finden Sie in der [Dokumentation unter Starten einer Pipeline in](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)CodePipeline, [Manuelles Starten einer Pipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-rerun-manually.html) und [Starten einer Pipeline nach einem Zeitplan](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-trigger-source-schedule.html). CodePipeline  | DevOps | 
| Genehmigen Sie die Bereitstellung. | 1. Nach Abschluss der Erstellungsphase gibt es eine Genehmigungsstelle für die Bereitstellung. Der Prüfer oder ein Release-Manager sollte den Build überprüfen und ihn genehmigen, wenn alle Anforderungen erfüllt sind. Dies ist der empfohlene Ansatz für Teams, die Continuous Delivery für die Anwendungsbereitstellung verwenden.<br />2. Nach der Genehmigung leitet die Pipeline die Bereitstellungsphase ein.<br />3. Nachdem die Bereitstellungsphase erfolgreich war, enthält das CodeBuild Protokoll für diese Phase die URL der Anwendung. Verwenden Sie die URL, um zu überprüfen, ob die Anwendung bereit ist. | DevOps | 
| Überprüfen Sie die Anwendungsprofilerstellung. | Nachdem die Bereitstellung abgeschlossen und der Anwendungs-Pod in Amazon EKS bereitgestellt wurde, versucht der in der Anwendung konfigurierte Amazon CodeGuru Profiler-Agent, Profilerstellungsdaten der Anwendung (CPU, Heap-Zusammenfassung, Latenz und Engpässe) an Profiler zu senden. CodeGuru <br />Bei der ersten Bereitstellung einer Anwendung benötigt Profiler etwa 15 Minuten, um die CodeGuru Profilerstellungsdaten zu visualisieren. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-resources"></a>
+ [AWS CodePipeline Dokumentation](https://docs.aws.amazon.com/codepipeline/index.html)
+ [Bilder mit Trivy in einem AWS CodePipeline(AWS Blogbeitrag) scannen](https://aws.amazon.com/blogs/containers/scanning-images-with-trivy-in-an-aws-codepipeline/)
+ [Verbesserung Ihrer Java-Anwendungen mit Amazon CodeGuru Profiler](https://aws.amazon.com/blogs/devops/improving-your-java-applications-using-amazon-codeguru-profiler) (AWS Blogbeitrag)
+ [AWS Syntax des Security Finding Format (ASFF)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-syntax.html)
+ [ EventBridge Amazon-Ereignismuster](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Helm aufrüsten](https://helm.sh/docs/helm/helm_upgrade/)

## Zusätzliche Informationen
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-additional"></a>
+ CodeGuru Profiler sollte in Bezug auf die Funktionalität nicht mit dem AWS X-Ray Dienst verwechselt werden. Wir empfehlen Ihnen, CodeGuru Profiler zu verwenden, um die teuersten Codezeilen zu identifizieren, die zu Engpässen oder Sicherheitsproblemen führen könnten, und diese zu beheben, bevor sie zu einem potenziellen Risiko werden. Der X-Ray-Dienst dient der Überwachung der Anwendungsleistung.
+ In diesem Muster sind Ereignisregeln dem Standard-Event-Bus zugeordnet. Bei Bedarf können Sie das Muster erweitern, um einen benutzerdefinierten Event-Bus zu verwenden.
+ Dieses Muster verwendet CodeGuru Reviewer als statisches Tool zum Testen der Anwendungssicherheit (SAST) für Anwendungscode. Sie können diese Pipeline auch für andere Tools wie SonarQube Checkmarx verwenden. Sie können die Anweisungen zur Einrichtung des Scans für jedes dieser Tools hinzufügen, `buildspec/buildspec_secscan.yaml` um die CodeGuru Scananweisungen zu ersetzen.
**Anmerkung**  
Ab dem 7. November 2025 können Sie in Amazon CodeGuru Reviewer keine neuen Repository-Verknüpfungen erstellen. Weitere Informationen zu Services mit ähnlichen Funktionen wie CodeGuru Reviewer finden Sie in der [ CodeGuru Reviewer-Dokumentation unter Änderung der Verfügbarkeit von Amazon](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) CodeGuru Reviewer.