

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Créez et déployez automatiquement une application Java sur Amazon EKS à l'aide d'un 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 et James Radtke, Amazon Web Services*

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

Ce modèle décrit comment créer un pipeline d'intégration et de livraison continues (CI/CD) qui crée et déploie automatiquement une application Java selon les DevSecOps pratiques recommandées sur un cluster Amazon Elastic Kubernetes Service (Amazon EKS) sur le. AWS Cloud Ce modèle utilise une application d'accueil développée avec un framework Java Spring Boot et qui utilise Apache Maven.

Vous pouvez utiliser l'approche de ce modèle pour créer le code d'une application Java, empaqueter les artefacts de l'application sous forme d'image Docker, scanner l'image de sécurité et télécharger l'image en tant que conteneur de charge de travail sur Amazon EKS. L'approche de ce modèle est utile si vous souhaitez migrer d'une architecture monolithique étroitement couplée vers une architecture de microservices. Cette approche vous permet également de surveiller et de gérer l'ensemble du cycle de vie d'une application Java, ce qui garantit un niveau d'automatisation supérieur et permet d'éviter les erreurs ou les bogues.

## Conditions préalables et limitations
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Command Line Interface (AWS CLI) version 2, installée et configurée. Pour plus d'informations à ce sujet, consultez la section [Installation ou mise à jour vers la dernière version AWS CLI de](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) la AWS CLI documentation.

  AWS CLI la version 2 doit être configurée avec le même rôle Gestion des identités et des accès AWS (IAM) qui crée le cluster Amazon EKS, car seul ce rôle est autorisé à ajouter d'autres rôles IAM au. `aws-auth` `ConfigMap` Pour plus d'informations et pour connaître les étapes de configuration AWS CLI, consultez [la section Configuration des paramètres](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) dans la AWS CLI documentation.
+ Rôles et autorisations IAM avec accès complet à AWS CloudFormation. Pour plus d'informations à ce sujet, consultez la section [Contrôle de l'accès avec IAM](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) dans la CloudFormation documentation.
+ Un cluster Amazon EKS existant, avec les détails du nom du rôle IAM et le nom de ressource Amazon (ARN) du rôle IAM pour les nœuds de travail du cluster EKS.
+ Kubernetes Cluster Autoscaler, installé et configuré dans votre cluster Amazon EKS. Pour plus d'informations, consultez la section [Scale cluster computing with Karpenter et Cluster Autoscaler dans la documentation](https://docs.aws.amazon.com/eks/latest/userguide/cluster-autoscaler.html) Amazon EKS. 
+ Accès au code du GitHub référentiel.

**Important**  
AWS Security Hub CSPM est activé dans le cadre des CloudFormation modèles inclus dans le code de ce modèle. Par défaut, une fois que Security Hub CSPM est activé, il est proposé avec un essai gratuit de 30 jours. Après la période d'essai, cela entraîne un coût Service AWS. Pour plus d’informations sur la tarification, consultez [Tarification d’AWS Security Hub CSPM](https://aws.amazon.com/security-hub/pricing/).

**Versions du produit**
+ Helm version 3.4.2 ou ultérieure
+ Apache Maven version 3.6.3 ou ultérieure
+ BridgeCrew Checkov version 2.2 ou ultérieure
+ Aqua Security Trivy version 0.37 ou ultérieure

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

**Pile technologique**
+ AWS CodeBuild
+ AWS CodeCommit
+ Amazon CodeGuru
+ AWS CodePipeline
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon EKS
+ Amazon EventBridge
+ AWS Security Hub CSPM
+ Amazon Simple Notiﬁcation Service (Amazon SNS)

**Architecture cible**

![Flux de travail pour le déploiement d'une application Java sur Amazon EKS.](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/95a5b5c2-d7fb-41eb-9089-455318c0d585/images/4f5fd8c2-2b6d-4945-aa64-fcf317521711.png)


Le schéma suivant illustre le flux de travail suivant :

1. Le développeur met à jour le code de l'application Java dans la branche de base du CodeCommit référentiel, ce qui crée une pull request (PR).

1. Dès que le PR est soumis, Amazon CodeGuru Reviewer passe automatiquement en revue le code, l'analyse en fonction des meilleures pratiques pour Java et donne des recommandations au développeur.

1. Une fois le PR fusionné avec la branche de base, un EventBridge événement Amazon est créé.

1. L' EventBridge événement initie le CodePipeline pipeline, qui démarre.

1. CodePipeline exécute la phase de CodeSecurity scan (sécurité continue).

1. AWS CodeBuild lance le processus d'analyse de sécurité dans lequel les fichiers Helm du déploiement Dockerfile et Kubernetes sont analysés à l'aide de Checkov, et le code source de l'application est analysé en fonction des modifications de code incrémentielles. L'analyse du code source de l'application est effectuée par le [wrapper de l'interface de ligne de commande (CLI) CodeGuru Reviewer](https://github.com/aws/aws-codeguru-cli).
**Note**  
À compter du 7 novembre 2025, vous ne pourrez plus créer de nouvelles associations de référentiels dans Amazon CodeGuru Reviewer. Pour en savoir plus sur les services dotés de fonctionnalités similaires à celles de CodeGuru Reviewer, consultez l'[évolution de la disponibilité d'Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) dans la documentation de CodeGuru Reviewer. 

1. Si la phase d'analyse de sécurité est réussie, la phase de construction (intégration continue) est lancée.

1. Au cours de la phase de construction CodeBuild , génère l'artefact, l'empaquette dans une image Docker, scanne l'image pour détecter les failles de sécurité à l'aide d'Aqua Security Trivy et stocke l'image dans Amazon ECR.

1. Les vulnérabilités détectées à l'étape 8 sont transférées vers Security Hub CSPM pour une analyse plus approfondie par les développeurs ou les ingénieurs. Security Hub CSPM fournit une vue d'ensemble et des recommandations pour remédier aux vulnérabilités.

1. Les notifications par e-mail concernant les phases séquentielles du CodePipeline pipeline sont envoyées via Amazon SNS.

1. Une fois les phases d'intégration continue terminées, CodePipeline passe à la phase de déploiement (livraison continue).

1. L'image Docker est déployée sur Amazon EKS en tant que charge de travail de conteneur (pod) à l'aide de diagrammes Helm.

1. Le pod d'application est configuré avec l'agent Amazon CodeGuru Profiler, qui envoie les données de profilage de l'application (processeur, utilisation du tas et latence) à CodeGuru Profiler, ce qui aide les développeurs à comprendre le comportement de l'application.

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

**Services AWS**
+ [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie dans toutes Comptes AWS les régions.
+  [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)est un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)est un service de contrôle de version qui vous permet de stocker et de gérer de manière privée des référentiels Git, sans avoir à gérer votre propre système de contrôle de source.
+ [Amazon CodeGuru Profiler](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) collecte les données de performances d'exécution de vos applications en ligne et fournit des recommandations qui peuvent vous aider à affiner les performances de vos applications.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)vous permet de modéliser et de configurer rapidement les différentes étapes d'une version logicielle et d'automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) vous permet d'exécuter AWS Kubernetes sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources, notamment des AWS Lambda fonctions, des points de terminaison d'appel HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres domaines. Comptes AWS
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)fournit une vue complète de votre état de sécurité sur AWS. Il vous permet également de vérifier que votre AWS environnement est conforme aux normes et aux meilleures pratiques du secteur de la sécurité.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

**Autres services**
+ [Helm](https://helm.sh/docs/) est un gestionnaire de paquets open source pour Kubernetes.
+ [Apache Maven](https://maven.apache.org/) est un outil de gestion et de compréhension de projets logiciels.
+ [BridgeCrew Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) est un outil d'analyse de code statique permettant de scanner les fichiers d'infrastructure en tant que code (IaC) pour détecter les erreurs de configuration susceptibles d'entraîner des problèmes de sécurité ou de conformité.
+ [Aqua Security Trivy](https://github.com/aquasecurity/trivy) est un scanner complet pour détecter les vulnérabilités dans les images de conteneurs, les systèmes de fichiers et les référentiels Git, en plus des problèmes de configuration.

**Code**

Le code de ce modèle est disponible dans le GitHub [aws-codepipeline-devsecops-amazoneks](https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks)référentiel.

## Bonnes pratiques
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-best-practices"></a>
+ Ce modèle suit les [meilleures pratiques de sécurité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) afin d'appliquer le principe du moindre privilège pour les entités IAM à toutes les phases de la solution. Si vous souhaitez étendre la solution avec des outils supplémentaires Services AWS ou tiers, nous vous recommandons de consulter la section sur l'[application des autorisations de moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dans la documentation IAM.
+ Si vous avez plusieurs applications Java, nous vous recommandons de créer des CI/CD pipelines distincts pour chaque application.
+ Si vous avez une application monolithe, nous vous recommandons de la diviser en microservices dans la mesure du possible. Les microservices sont plus flexibles, ils facilitent le déploiement des applications sous forme de conteneurs et ils offrent une meilleure visibilité sur l'ensemble de la création et du déploiement de l'application.

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

### Configuration de l'environnement
<a name="set-up-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | Pour cloner le dépôt, exécutez la commande suivante.<pre>git clone https://github.com/aws-samples/aws-codepipeline-devsecops-amazoneks</pre> | Développeur d'applications, DevOps ingénieur | 
| Créez un compartiment S3 et téléchargez le code. | 1. Connectez-vous à la [console Amazon S3 Console de gestion AWS, ouvrez-la](https://console.aws.amazon.com/s3/), puis créez un compartiment S3 dans l' Région AWS endroit où vous prévoyez de déployer cette solution. Pour plus d'informations, consultez [la section Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dans la documentation Amazon S3.<br />2. Dans le compartiment S3, créez un dossier nommé`code`.<br />3. Accédez à l'endroit où vous avez cloné le dépôt. Pour créer une version compressée de l'intégralité du code avec l'extension .zip (`cicdstack.zip`) et valider le fichier .zip, exécutez les commandes suivantes dans l'ordre.<pre>cd aws-codepipeline-devsecops-amazoneks<br />python -m zipfile -c cicdstack.zip *<br />python -m zipfile -t cicdstack.zip</pre>Si la `python` commande échoue et indique que Python n'a pas été trouvé, utilisez-le à la `python3` place.<br />4. Téléchargez le `cicdstack.zip` fichier dans le dossier de code que vous avez créé précédemment dans le compartiment S3. | AWS DevOps, administrateur du cloud, DevOps ingénieur | 
| Créez une CloudFormation pile. | 1. Ouvrez la [console CloudFormation](https://console.aws.amazon.com/cloudformation/) et choisissez **Créer une pile**.<br />2. Dans **Spécifier le modèle**, choisissez **Télécharger un fichier modèle**, chargez le `cf_templates/codecommit_ecr.yaml` fichier, puis cliquez sur **Suivant**.<br />3. Dans **Spécifier les détails** de la pile, entrez le nom de la pile, puis fournissez les valeurs de paramètres d'entrée suivantes :`CodeCommitRepositoryBranchName`: nom de la branche où résidera votre code (le nom par défaut est`main`)`CodeCommitRepositoryName`: le nom du CodeCommitrepository à créer`CodeCommitRepositoryS3Bucket`: nom du compartiment S3 dans lequel vous avez créé le dossier de code`CodeCommitRepositoryS3BucketObjKey`: `code/cicdstack.zip``ECRRepositoryName`: nom du référentiel Amazon ECR à créer<br />4. Choisissez **Next**, utilisez les paramètres par défaut pour les **options de configuration de la pile**, puis choisissez **Next**.<br />5. Dans la section **Révision**, vérifiez le modèle et les détails de la pile, puis choisissez **Create stack**. La pile est ensuite créée, y compris les référentiels CodeCommit et Amazon ECR.<br />6. Notez les noms des référentiels CodeCommit et Amazon ECR, qui seront nécessaires pour configurer le pipeline Java CI/CD . | AWS DevOps, DevOps ingénieur | 
| Validez le déploiement de la CloudFormation pile. | 1. Sous **Stacks** sur la CloudFormation console, vérifiez l'état de la CloudFormation pile que vous avez déployée. Le statut de la pile doit être **CREATE COMPLETE**.<br />2. Depuis la console, vérifiez que les référentiels CloudFormation et Amazon ECR ont été provisionnés et sont prêts. | AWS DevOps, DevOps ingénieur | 
| Supprimez le compartiment S3. | Videz et supprimez le compartiment S3 que vous avez créé précédemment. Pour plus d'informations, consultez [Supprimer un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) dans la documentation Amazon S3. | AWS DevOps, DevOps ingénieur | 

### Configuration des diagrammes Helm
<a name="configure-the-helm-charts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les diagrammes Helm de votre application Java. | 1. À l'emplacement où vous avez cloné le GitHub référentiel, accédez au dossier`helm_charts/aws-proserve-java-greeting`. Dans ce dossier, le `values.dev.yaml`**** fichier contient des informations sur la configuration des ressources Kubernetes que vous pouvez modifier pour vos déploiements de conteneurs sur Amazon EKS. Mettez à jour le paramètre du référentiel Docker en fournissant votre Compte AWS identifiant et Région AWS le nom du référentiel Amazon ECR.<pre>image:<br />  repository: <account-id>.dkr.ecr.<region>.amazonaws.com/<app-ecr-repo-name></pre><br />2. Le type de service du module Java est défini sur`LoadBalancer`.<pre>service:<br />  type: LoadBalancer<br />  port: 80<br />  targetPort: 8080<br />  path: /hello<br />  initialDelaySeconds: 60<br />  periodSeconds: 30</pre><br />Pour utiliser un autre service (par exemple,`NodePort`), vous pouvez modifier ce paramètre. Pour plus d'informations, consultez la documentation de [Kubernetes](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types).<br />3. Vous pouvez activer le [Kubernetes Horizontal Pod Autoscaler](https://docs.aws.amazon.com/eks/latest/userguide/horizontal-pod-autoscaler.html) en modifiant le paramètre sur. `autoscaling` `enabled: true`<pre>autoscaling:<br />  enabled: true<br />  minReplicas: 1<br />  maxReplicas: 100<br />  targetCPUUtilizationPercentage: 80<br />  # targetMemoryUtilizationPercentage: 80</pre><br />4. Vous pouvez activer différentes fonctionnalités pour les charges de travail Kubernetes en modifiant les valeurs du `values.<ENV>.yaml` fichier, en indiquant où se `<ENV>` trouve votre environnement de développement, de production, d'UAT ou d'assurance qualité. | DevOps ingénieur | 
| Validez les graphiques de Helm pour détecter les erreurs de syntaxe. | 1. Depuis le terminal, vérifiez que Helm v3 est installé sur votre poste de travail local en exécutant la commande suivante.<pre>helm --version</pre><br />Si Helm v3 n'est pas installé, [installez-le](https://helm.sh/docs/intro/install/).<br />2. Dans le terminal, accédez au répertoire des diagrammes Helm (`helm_charts/aws-proserve-java-greeting`) et exécutez la commande suivante.<pre>helm lint . -f values.dev.yaml</pre><br />Cela permettra de vérifier la présence d'éventuelles erreurs de syntaxe dans les diagrammes de Helm. | DevOps ingénieur | 

### Configuration du CI/CD pipeline Java
<a name="set-up-the-java-ci-cd-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le CI/CD pipeline. | 1. Ouvrez la [console CloudFormation](https://console.aws.amazon.com/cloudformation/) et choisissez **Créer une pile**.<br />2. Dans **Spécifier le modèle**, choisissez **Télécharger un fichier modèle**, chargez le `cf_templates/build_deployment.yaml` modèle, puis cliquez sur **Suivant**.<br />3. Dans **Spécifier les détails** de la **pile, spécifiez le nom** de la pile, puis fournissez les valeurs suivantes pour les paramètres d'entrée :`CodeBranchName`: nom de branche du CodeCommit dépôt dans lequel se trouve votre code`EKSClusterName`: nom de votre cluster EKS (pas l'`EKSCluster`ID)`EKSCodeBuildAppName`: nom de l'application Helm chart (`aws-proserve-java-greeting`)`EKSWorkerNodeRoleARN`: ARN du rôle IAM attribué aux nœuds de travail Amazon EKS`EKSWorkerNodeRoleName`: nom du rôle IAM attribué aux nœuds de travail Amazon EKS`EcrDockerRepository`: nom du référentiel Amazon ECR dans lequel les images Docker de votre code seront stockées`EmailRecipient`: adresse e-mail à laquelle les notifications de build doivent être envoyées`EnvType`: Environnement (par exemple, dev, test ou prod)`SourceRepoName`: nom du CodeCommit dépôt dans lequel se trouve votre code<br />4. Choisissez **Suivant**. Utilisez les paramètres par défaut dans **Configurer les options de pile**, puis choisissez **Next**.<br />5. Dans la section **Révision**, vérifiez les détails du CloudFormation modèle et de la pile, puis choisissez **Next**.<br />6. Sélectionnez **Créer la pile**. <br />7. Pendant le déploiement de la CloudFormation pile, le propriétaire de l'adresse e-mail que vous avez fournie dans les paramètres recevra un message l'invitant à s'abonner à une rubrique SNS. Pour s'abonner à Amazon SNS, le propriétaire doit choisir le lien contenu dans le message.<br />8. Une fois la pile créée, ouvrez l'onglet **Sorties** de la pile, puis enregistrez la valeur ARN de la clé `EksCodeBuildkubeRoleARN` de sortie. Cette valeur d'ARN IAM sera requise ultérieurement lorsque vous autoriserez le rôle CodeBuild IAM à déployer des charges de travail dans le cluster Amazon EKS. | AWS DevOps | 

### Activer l'intégration entre Security Hub CSPM et Aqua Security
<a name="activate-integration-between-ash-and-aqua-security"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Activez l'intégration d'Aqua Security. | Cette étape est nécessaire pour télécharger les résultats de vulnérabilité des images Docker signalés par Trivy vers Security Hub CSPM. Comme il CloudFormation ne prend pas en charge les intégrations CSPM de Security Hub, ce processus doit être effectué manuellement.1. Ouvrez la [AWS Security Hub CSPM console](https://console.aws.amazon.com/securityhub/) et accédez à **Integrations.**<br />2. Recherchez Aqua Security, puis sélectionnez **Aqua Security : Aqua Security**.<br />3. Choisissez **Accepter les résultats**. | Administrateur AWS, DevOps ingénieur | 

### Configurer CodeBuild pour exécuter les commandes Helm ou kubectl
<a name="configure-acb-to-run-helm-or-kubectl-commands"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Permet CodeBuild d'exécuter des commandes Helm ou kubectl dans le cluster Amazon EKS. |  CodeBuild Pour être authentifié afin d'utiliser Helm ou des `kubectl` commandes avec le cluster Amazon EKS, vous devez ajouter les rôles IAM au. `aws-auth` `ConfigMap` Dans ce cas, ajoutez l'ARN du rôle IAM`EksCodeBuildkubeRoleARN`, qui est le rôle IAM créé pour que le CodeBuild service accède au cluster Amazon EKS et y déploie des charges de travail. Il s'agit d'une activité ponctuelle.La procédure suivante doit être terminée avant la phase d'approbation du déploiement dans CodePipeline.1. Ouvrez le script `cf_templates/kube_aws_auth_configmap_patch.sh` shell dans votre environnement Amazon Linux ou macOS.<br />2. Authentifiez-vous auprès du cluster Amazon EKS en exécutant la commande suivante.<pre>aws eks --region <aws-region> update-kubeconfig --name <eks-cluster-name></pre><br />3. Exécutez le script shell à l'aide de la commande suivante, en le `<rolearn-eks-codebuild-kubectl>` remplaçant par la `EksCodeBuildkubeRoleARN` valeur ARN enregistrée précédemment.<pre>bash cf_templates/kube_aws_auth_configmap_patch.sh <rolearn-eks-codebuild-kubectl> </pre><br />`aws_auth``ConfigMap`Il est configuré et l'accès est accordé.  | DevOps | 

### Valider le CI/CD pipeline
<a name="validate-the-ci-cd-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez que le CI/CD pipeline démarre automatiquement. | 1. La phase de CodeSecurity scan du pipeline échoue généralement si Checkov détecte des vulnérabilités dans les graphiques Dockerfile ou Helm. Cependant, le but de cet exemple est d'établir un processus permettant d'identifier les vulnérabilités de sécurité potentielles plutôt que de les corriger par le biais du CI/CD pipeline, généralement un DevSecOps processus. Dans le fichier`buildspec/buildspec_secscan.yaml`, la `checkov` commande utilise l'`--soft-fail`indicateur pour éviter une défaillance du pipeline.<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 />Pour que le pipeline échoue lorsque des vulnérabilités sont signalées pour les graphiques Dockerfile et Helm, l'`--soft-fail`option doit être supprimée de la `checkov` commande. Les développeurs ou les ingénieurs peuvent ensuite corriger les vulnérabilités et valider les modifications dans le référentiel du code CodeCommit source.<br />2. À l'instar de CodeSecurity Scan, la phase de compilation utilise Aqua Security Trivy pour identifier `HIGH` les vulnérabilités liées aux images `CRITICAL` Docker avant de transférer l'application vers Amazon ECR.<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 />Dans cet exemple, le pipeline n'échoue pas lorsque des vulnérabilités d'image Docker sont signalées, car la `trivy` commande du `buildspec/buildspec.yml` fichier inclut l'indicateur **`--exit-code`******avec une valeur**** de`0`. Pour que le pipeline échoue lorsque `HIGH` des `CRTICAL` vulnérabilités sont signalées, modifiez la valeur de `--exit-code` en`1`. Les développeurs ou les ingénieurs peuvent ensuite corriger les vulnérabilités et valider les modifications dans le référentiel du code CodeCommit source.<br />3. Les vulnérabilités des images Docker signalées par Aqua Security Trivy sont téléchargées sur Security Hub CSPM. **Sur la console Security Hub CSPM, accédez à Findings.** Filtrez les résultats avec **Record** **State = Active** et **Product = Aqua Security**. Ceci répertorie les vulnérabilités liées aux images Docker dans Security Hub CSPM. L'apparition de vulnérabilités dans Security Hub CSPM peut prendre entre 15 minutes et une heure.Pour plus d'informations sur le démarrage du pipeline en utilisant CodePipeline, voir [Démarrer un pipeline dans](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)CodePipeline, [Démarrer un pipeline manuellement](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-rerun-manually.html) et [Démarrer un pipeline selon un calendrier](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-trigger-source-schedule.html) dans la CodePipeline documentation. | DevOps | 
| Approuvez le déploiement. | 1. Une fois la phase de construction terminée, il existe une porte d'approbation du déploiement. Le réviseur ou un responsable de version doit inspecter la version et, si toutes les exigences sont remplies, l'approuver. Il s'agit de l'approche recommandée pour les équipes qui utilisent la livraison continue pour le déploiement d'applications.<br />2. Après approbation, le pipeline lance la phase de déploiement.<br />3. Une fois la phase de déploiement réussie, le CodeBuild journal de cette étape fournit l'URL de l'application. Utilisez l'URL pour vérifier que l'application est prête. | DevOps | 
| Validez le profilage des applications. | Une fois le déploiement terminé et le module d'application déployé dans Amazon EKS, l'agent Amazon CodeGuru Profiler configuré dans l'application essaie d'envoyer les données de profilage de l'application (processeur, résumé du segment de mémoire, latence et goulots d'étranglement) à Profiler. CodeGuru <br />Lors du déploiement initial d'une application, CodeGuru Profiler met environ 15 minutes à visualiser les données de profilage. | AWS DevOps | 

## Ressources connexes
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-resources"></a>
+ [AWS CodePipeline documentation](https://docs.aws.amazon.com/codepipeline/index.html)
+ [Numérisation d'images avec Trivy dans un AWS CodePipeline](https://aws.amazon.com/blogs/containers/scanning-images-with-trivy-in-an-aws-codepipeline/) (article de AWS blog)
+ [Améliorer vos applications Java à l'aide d'Amazon CodeGuru Profiler](https://aws.amazon.com/blogs/devops/improving-your-java-applications-using-amazon-codeguru-profiler) (article de AWS blog)
+ [AWS Syntaxe du format ASFF (Security Finding Format)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-syntax.html)
+ [Modèles d' EventBridge événements Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)
+ [Mise à niveau du casque](https://helm.sh/docs/helm/helm_upgrade/)

## Informations supplémentaires
<a name="automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline-additional"></a>
+ CodeGuru Profiler ne doit pas être confondu avec le AWS X-Ray service en termes de fonctionnalités. Nous vous recommandons d'utiliser CodeGuru Profiler pour identifier les lignes de code les plus coûteuses susceptibles de provoquer des blocages ou des problèmes de sécurité, et de les corriger avant qu'elles ne deviennent un risque potentiel. Le service X-Ray est destiné à la surveillance des performances des applications.
+ Dans ce modèle, les règles d'événements sont associées au bus d'événements par défaut. Si nécessaire, vous pouvez étendre le modèle pour utiliser un bus d'événements personnalisé.
+ Ce modèle utilise CodeGuru Reviewer comme outil de test statique de sécurité des applications (SAST) pour le code des applications. Vous pouvez également utiliser ce pipeline pour d'autres outils, tels que SonarQube Checkmarx. Vous pouvez ajouter les instructions de configuration de numérisation pour chacun de ces outils `buildspec/buildspec_secscan.yaml` afin de remplacer les instructions de CodeGuru numérisation.
**Note**  
À compter du 7 novembre 2025, vous ne pourrez plus créer de nouvelles associations de référentiels dans Amazon CodeGuru Reviewer. Pour en savoir plus sur les services dotés de fonctionnalités similaires à celles de CodeGuru Reviewer, consultez l'[évolution de la disponibilité d'Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/codeguru-reviewer-availability-change.html) dans la documentation de CodeGuru Reviewer.