

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.

# Outils pour développeurs
<a name="developer-tools-pattern-list"></a>

**Topics**
+ [DevOps](devops-pattern-list.md)
+ [Infrastructures](infrastructure-pattern-list.md)
+ [Applications Web et mobiles](websitesandwebapps-pattern-list.md)

# DevOps
<a name="devops-pattern-list"></a>

**Topics**
+ [Accélérez MLOps avec Backstage et les modèles Amazon SageMaker AI en libre-service](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Automatisez AWS les opérations d'infrastructure en utilisant Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Automatisez les CloudFront mises à jour lorsque les points de terminaison de l'équilibreur de charge changent à l'aide de Terraform](automate-cloudfront-updates-when-load-balancer-endpoints-change.md)
+ [Automatisez les CodeGuru révisions Amazon pour les applications AWS CDK Python à l'aide d' GitHub Actions](automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.md)
+ [Automatisez le déploiement de lacs de AWS Supply Chain données dans une configuration multi-référentiels à l'aide d' GitHub Actions, Artifactory et Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatisez l'évaluation des ressources AWS](automate-aws-resource-assessment.md)
+ [Installez automatiquement les systèmes SAP à l'aide d'outils open source](install-sap-systems-automatically-by-using-open-source-tools.md)
+ [Automatisez le déploiement du portefeuille et des produits AWS Service Catalog à l'aide d'AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatisez la gestion dynamique du pipeline pour le déploiement de solutions de correctifs dans les environnements Gitflow en utilisant et AWS Service Catalog AWS CodePipeline](automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.md)
+ [Automatisez la suppression des AWS CloudFormation piles et des ressources associées](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatisez l'ingestion et la visualisation des métriques personnalisées Amazon MWAA sur Amazon Managed Grafana à l'aide de Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatisez le déploiement d'ensembles de piles à l'aide d'AWS CodePipeline et d'AWS CodeBuild](automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.md)
+ [Associez automatiquement une politique gérée par AWS pour Systems Manager aux profils d' EC2 instance à l'aide de Cloud Custodian et d'AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Créez automatiquement des CI/CD pipelines et des clusters Amazon ECS pour les microservices à l'aide d'AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Créez et envoyez des images Docker vers Amazon ECR à l'aide d' GitHub Actions et de Terraform](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Créez et testez des applications iOS avec AWS CodeCommit CodePipeline, AWS et AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Configurer l'authentification TLS mutuelle pour les applications exécutées sur Amazon EKS](configure-mutual-tls-authentication-for-applications-running-on-amazon-eks.md)
+ [Automatisez la création de ressources Amazon WorkSpaces Applications à l'aide de AWS CloudFormation](automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.md)
+ [Créez un analyseur de journaux personnalisé pour Amazon ECS à l'aide d'un routeur de journaux Firelens](create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.md)
+ [Créez un cadre d'orchestration des ressources piloté par API à l'aide GitHub d'Actions et de Terragrunt](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Créez des pull requests automatisées pour l'infrastructure gérée par Terraform à l'aide AWS d'Actions GitHub](create-automated-pull-requests-for-terraform-managed-aws-infrastructure.md)
+ [Créez automatiquement des pipelines CI dynamiques pour les projets Java et Python](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Déployez des CloudWatch canaris Synthetics à l'aide de Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Déployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Déployez des systèmes agentic sur Amazon Bedrock avec le framework CrewAI en utilisant Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Déployer une tâche AWS Glue avec un pipeline AWS CodePipeline CI/CD](deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline.md)
+ [Déployez du code dans plusieurs régions AWS à l'aide d'AWS CodePipeline CodeCommit, AWS et AWS CodeBuild](deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild.md)
+ [Déployez des charges de travail à partir de DevOps pipelines Azure vers des clusters Amazon EKS privés](deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.md)
+ [Exécutez des requêtes SQL Amazon Redshift à l'aide de Terraform](execute-redshift-sql-queries-using-terraform.md)
+ [Exportez les rapports AWS Backup de l'ensemble d'une organisation dans AWS Organizations sous forme de fichier CSV](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Exporter les balises d'une liste d' EC2 instances Amazon vers un fichier CSV](export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.md)
+ [Générez un CloudFormation modèle AWS contenant les règles gérées par AWS Config à l'aide de Troposphere](generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.md)
+ [Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Mettre en œuvre une stratégie GitHub de branchement Flow pour les environnements multi-comptes DevOps](implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.md)
+ [Mettre en œuvre une stratégie de branchement Gitflow pour les environnements multi-comptes DevOps](implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.md)
+ [Mettre en œuvre une stratégie de branchement Trunk pour les environnements multi-comptes DevOps](implement-a-trunk-branching-strategy-for-multi-account-devops-environments.md)
+ [Mettez en œuvre une analyse Checkov personnalisée et centralisée pour appliquer la politique avant de déployer AWS l'infrastructure](centralized-custom-checkov-scanning.md)
+ [Implémentez les diagnostics et le dépannage de Kubernetes basés sur l'IA grâce à l'intégration de K8sGPT et Amazon Bedrock](implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.md)
+ [Détectez automatiquement les modifications et lancez différents CodePipeline pipelines pour un monorepo dans CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Intégrer un référentiel Bitbucket à AWS Amplify à l'aide d'AWS CloudFormation](integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.md)
+ [Lancez un CodeBuild projet sur des comptes AWS à l'aide de Step Functions et d'une fonction proxy Lambda](launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.md)
+ [Gérez le basculement multi-AZ pour les clusters EMR à l'aide d'Application Recovery Controller](multi-az-failover-spark-emr-clusters-arc.md)
+ [Gérez les blue/green déploiements de microservices vers plusieurs comptes et régions à l'aide des services de code AWS et des clés multirégionales AWS KMS](manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.md)
+ [Surveillez les référentiels Amazon ECR pour détecter les autorisations génériques à l'aide d'AWS et d'AWS Config CloudFormation](monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.md)
+ [Optimisez les déploiements multicomptes sans serveur en utilisant les flux de travail et AWS CDK Actions GitHub](optimize-multi-account-serverless-deployments.md)
+ [Provisionner AWS Service Catalog des produits basés sur AWS CloudFormation des modèles à l'aide d' GitHub actions](provision-aws-service-catalog-products-using-github-actions.md)
+ [Fournissez des rôles IAM avec le moindre privilège en déployant une solution de distribution automatique de rôles](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Publier CloudWatch les statistiques Amazon dans un fichier CSV](publish-amazon-cloudwatch-metrics-to-a-csv-file.md)
+ [Supprimez les EC2 entrées Amazon Comptes AWS de l'autre côté AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Exécutez des tests unitaires pour les tâches ETL Python en AWS Glue utilisant le framework pytest](run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.md)
+ [Configuration d'un CI/CD pipeline à l'aide d'AWS CodePipeline et d'AWS CDK](set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.md)
+ [Configurez une journalisation centralisée à l'échelle de l'entreprise à l'aide de Terraform](set-up-centralized-logging-at-enterprise-scale-by-using-terraform.md)
+ [Configurer le end-to-end chiffrement des applications sur Amazon EKS à l'aide du gestionnaire de certificats et de Let's Encrypt](set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.md)
+ [Simplifiez le déploiement d'applications multi-locataires Amazon EKS en utilisant Flux](simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.md)
+ [Simplifiez le développement et le déploiement des robots Amazon Lex à l'aide d'un flux de travail automatisé](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Coordonnez la dépendance des ressources et l'exécution des tâches à l'aide de la structure AWS Fargate WaitCondition hook](use-the-aws-fargate-waitcondition-hook-construct.md)
+ [Utiliser des référentiels sources Git tiers dans AWS CodePipeline](use-third-party-git-source-repositories-in-aws-codepipeline.md)
+ [Créez un CI/CD pipeline pour valider les configurations Terraform à l'aide d'AWS CodePipeline](create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.md)
+ [Plus de modèles](devops-more-patterns-pattern-list.md)

# Accélérez MLOps avec Backstage et les modèles Amazon SageMaker AI en libre-service
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates"></a>

*Ashish Bhatt, Shashank Hirematt et Shivanshu Suryakar, Amazon Web Services*

## Résumé
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-summary"></a>

Organisations qui utilisent des systèmes d'opérations d'apprentissage automatique (MLOps) sont confrontées à des défis importants en matière de mise à l'échelle, de standardisation et de sécurisation de leur infrastructure de machine learning. Ce modèle introduit une approche transformatrice qui combine [Backstage](https://backstage.io/), un portail de développement open source, avec [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/) et des modules d'infrastructure en tant que code (iAc) renforcés afin d'améliorer la manière dont vos équipes de science des données peuvent développer, déployer et gérer des flux de travail de machine learning.

Les modules IaC pour ce modèle sont fournis dans le référentiel GitHub [AWS AIOps des modules](https://github.com/awslabs/aiops-modules/tree/main/modules/sagemaker). Ces modules proposent des modèles prédéfinis pour configurer l'infrastructure ML et créer des environnements ML cohérents. Cependant, les data scientists ont souvent du mal à utiliser directement ces modèles car ils nécessitent une expertise en matière d'infrastructure. L'ajout d'un portail de développement tel que Backstage permet aux data scientists de déployer des environnements ML standardisés sans avoir à comprendre les détails de l'infrastructure sous-jacente.

En utilisant Backstage comme plateforme en libre-service et en intégrant des modèles d' SageMaker IA préconfigurés, vous pouvez :
+ Réduisez le délai de rentabilisation de vos initiatives de machine learning.
+ Contribuez à renforcer la cohérence de la sécurité et de la gouvernance.
+ Fournissez aux data scientists des environnements normalisés et conformes.
+ Réduisez les frais d'exploitation et la complexité de l'infrastructure.

Ce modèle fournit une solution qui répond aux défis critiques MLOps et fournit également un cadre évolutif et reproductible qui permet l'innovation tout en respectant les normes organisationnelles.

**Public cible**

Ce modèle est destiné à un large public impliqué dans le ML, l'architecture cloud et l'ingénierie des plateformes au sein d'une organisation. Cela inclut notamment les éléments suivants :
+ **Les ingénieurs de ML** qui souhaitent standardiser et automatiser les déploiements de flux de travail ML.
+ **Les scientifiques des données** qui souhaitent accéder en libre-service à des environnements ML préconfigurés et conformes.
+ **Ingénieurs de plateforme** chargés de créer et de maintenir des plateformes de développement internes et une infrastructure partagée.
+ Des **architectes cloud** qui conçoivent des solutions cloud évolutives, sécurisées et économiques pour MLOps.
+ **DevOps ingénieurs** intéressés par l'extension des pratiques d'intégration continue et de livraison continue (CI/CD) au provisionnement de l'infrastructure ML et aux flux de travail.
+ **Responsables techniques et responsables** qui supervisent les initiatives de machine learning et souhaitent améliorer la productivité, la gouvernance et les délais de mise sur le marché des équipes.

Pour plus d'informations sur MLOps les défis, les MLOps modules d' SageMaker IA et la manière dont la solution fournie par ce modèle peut répondre aux besoins de vos équipes de ML, consultez la section [Informations supplémentaires](#accelerate-mlops-with-backstage-and-sagemaker-templates-additional).

## Conditions préalables et limitations
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-prereqs"></a>

**Conditions préalables**
+ Gestion des identités et des accès AWS [rôles et autorisations](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#prerequisites) (IAM) pour le provisionnement de ressources dans votre Compte AWS
+ Compréhension des concepts d'[Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html), [SageMaker des projets](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-whatis.html), des [SageMaker pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-overview.html) et [du SageMaker Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html)
+ Compréhension des principes de l'IaC et expérience avec des outils tels que [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)

**Limites**
+ **Couverture limitée des modèles**. Actuellement, la solution ne prend en charge que les AIOps modules SageMaker liés à l'IA issus de la [AIOps solution](https://github.com/awslabs/aiops-modules) globale. D'autres modules, tels que Ray on Amazon Elastic Kubernetes Service (Amazon EKS), Apache Airflow et MLflow Finetuning for Amazon Bedrock, ne sont pas encore disponibles sous forme de modèles Backstage.
+ **Paramètres par défaut non configurables**. Les modèles utilisent des configurations par défaut fixes issues des AIOps SageMaker modules, sans aucune personnalisation. Vous ne pouvez pas modifier les types d'instances, les tailles de stockage, les configurations réseau ou les politiques de sécurité via l'interface Backstage, ce qui limite la flexibilité pour des cas d'utilisation spécifiques.
+ **AWS-support uniquement**. La plateforme est conçue exclusivement pour les AWS déploiements et ne prend pas en charge les scénarios multicloud. Organisations qui utilisent des services cloud externes AWS Cloud ne peuvent pas utiliser ces modèles pour leurs besoins en infrastructure de machine learning.
+ **Gestion manuelle des informations d'identification**. Vous devez fournir manuellement vos AWS informations d'identification pour chaque déploiement. Cette solution ne permet pas d'intégration avec les fournisseurs d'identité d'entreprise ni de rotation automatique des informations d'identification. AWS IAM Identity Center
+ **Gestion du cycle de vie limitée**. Les modèles ne disposent pas de fonctionnalités complètes de gestion du cycle de vie des ressources, telles que des politiques de nettoyage automatisées, des recommandations d'optimisation des coûts et la détection de la dérive de l'infrastructure. Vous devez gérer et surveiller manuellement les ressources déployées après leur création.

## Architecture
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-architecture"></a>

Le schéma suivant montre l'architecture de la solution pour un portail de développement unifié qui normalise et accélère le déploiement de l'infrastructure ML avec l' SageMaker IA dans tous les environnements.

![\[Architecture pour un portail de développement unifié avec Backstage, CNOE, GitHub Actions et Seed-Farmer.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c16160cf-d637-423e-93a7-485ffbb28646/images/233adab3-83cf-42f3-a1de-72d0b8ade5ae.png)


Dans cette architecture :

1. AWS les [plans de modernisation des applications](https://github.com/aws-samples/appmod-blueprints.git) fournissent la configuration de l'infrastructure avec un cluster [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) comme base pour le framework [Cloud Native Operational Excellence (CNOE)](https://cnoe.io/). Cette solution complète répond aux défis complexes de gestion de l'infrastructure native du cloud en fournissant une plateforme de développement interne (IDP) évolutive. Les plans proposent une approche structurée pour mettre en place une infrastructure robuste et flexible capable de s'adapter à l'évolution de vos besoins organisationnels.

1. Le framework open source CNOE consolide les DevOps outils et résout la fragmentation de l'écosystème grâce à une approche d'ingénierie de plate-forme unifiée. En réunissant des outils et des technologies disparates, il simplifie le paysage complexe du développement cloud natif, afin que vos équipes puissent se concentrer sur l'innovation plutôt que sur la gestion de la chaîne d'outils. Le framework fournit une méthodologie standardisée pour sélectionner, intégrer et gérer les outils de développement.

1. Avec CNOE, Backstage est déployé en tant que out-of-the-box solution au sein du cluster Amazon EKS. [Backstage est doté d'une authentification robuste via [Keycloak](https://www.keycloak.org/) et de flux de travail de déploiement complets via Argo CD.](https://argo-cd.readthedocs.io/en/stable/) Cette plate-forme intégrée crée un environnement centralisé pour gérer les processus de développement et fournit aux équipes un endroit unique pour accéder, déployer et surveiller leur infrastructure et leurs applications dans plusieurs environnements.

1. Un GitHub référentiel contient des modèles de AIOps logiciels préconfigurés qui couvrent l'ensemble du cycle de vie de l' SageMaker IA. Ces modèles répondent aux besoins critiques en matière d'infrastructure ML, notamment le provisionnement de SageMaker Studio, la formation des modèles, les pipelines d'inférence et la surveillance des modèles. Ces modèles vous aident à accélérer vos initiatives de machine learning et à garantir la cohérence entre les différents projets et équipes.

1. [GitHub Actions](https://github.com/features/actions) implémente un flux de travail automatisé qui déclenche dynamiquement le provisionnement des ressources via l'utilitaire [Seed-Farmer](https://github.com/awslabs/seed-farmer). Cette approche intègre le catalogue Backstage au référentiel des AIOps modules et crée un processus de déploiement d'infrastructure rationalisé. L'automatisation réduit les interventions manuelles, minimise les erreurs humaines et garantit une création d'infrastructure rapide et cohérente dans différents environnements.

1. [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)Cela vous aide à définir et à provisionner l'infrastructure sous forme de code, et garantit un déploiement des ressources reproductible, sécurisé et conforme sur l'ensemble des spécifications Comptes AWS. Cette approche fournit une gouvernance maximale avec une intervention manuelle minimale, ce qui vous permet de créer des modèles d'infrastructure standardisés qui peuvent être facilement répliqués, contrôlés par version et audités.

## Outils
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.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 SageMaker AI](https://docs.aws.amazon.com/sagemaker/) est un service de machine learning géré qui vous aide à créer et à former des modèles de machine learning, puis à les déployer dans un environnement hébergé prêt pour la production.

**Autres outils**
+ [Backstage](https://backstage.io/) est un framework open source qui vous aide à créer des portails de développement internes.
+ [GitHub Actions](https://github.com/features/actions) est une CI/CD plateforme qui automatise les flux de travail de développement de logiciels, y compris les tâches telles que la création, le test et le déploiement de code.

**Référentiels de code**

Ce modèle utilise le code et les modèles des GitHub référentiels suivants :
+ [AIOps plate-forme de développement interne (IDP) avec référentiel Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/)
+ SageMaker Modules liés à l'IA issus du référentiel de [AWS AIOps modules](https://github.com/awslabs/aiops-modules)
+ [Ingénierie moderne sur le AWS](https://github.com/aws-samples/appmod-blueprints) référentiel

**Mise en œuvre**

Cette implémentation utilise un modèle de déploiement de niveau production pour Backstage, issu de l'[ingénierie moderne sur le référentiel](https://github.com/aws-samples/appmod-blueprints). AWS Cette approche simplifie considérablement le processus de configuration tout en intégrant les AWS meilleures pratiques en matière de sécurité et d'évolutivité.

La section [Epics](#accelerate-mlops-with-backstage-and-sagemaker-templates-epics) de ce modèle décrit l'approche de mise en œuvre. Pour obtenir des instructions de step-by-step déploiement détaillées, consultez le [guide de déploiement](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md) complet disponible sur la [plateforme de développement AIOps interne (IDP) avec le référentiel Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/). La mise en œuvre inclut :
+ Déploiement initial de la plateforme Backstage
+ Intégration de modèles de SageMaker logiciels à Backstage
+ Utilisation et maintenance des modèles Backstage

Le guide de déploiement inclut également des conseils pour la maintenance continue, le dépannage et le dimensionnement de la plateforme.

## Bonnes pratiques
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-best-practices"></a>

Suivez ces bonnes pratiques pour garantir la sécurité, la gouvernance et l'excellence opérationnelle lors de la mise en œuvre de votre MLOps infrastructure.

**Gestion des modèles**
+ N'apportez jamais de modifications importantes aux modèles dynamiques.
+ Testez toujours les mises à jour de manière approfondie avant le déploiement en production.
+ Conservez des versions de modèles claires et bien documentées.

**Sécurité**
+ Épinglez GitHub les actions à des algorithmes de hachage sécurisés spécifiques (SHAs) pour aider à prévenir les attaques contre la chaîne d'approvisionnement.
+ Utilisez des rôles IAM dotés du moindre privilège avec des autorisations détaillées.
+ Stockez les informations d'identification sensibles dans [GitHub Secrets](https://docs.github.com/en/actions/concepts/security/secrets) et [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ Ne codez jamais en dur les informations d'identification dans les modèles.

**Gouvernance et suivi**
+ Mettez en œuvre des normes complètes de balisage des ressources.
+ Permettez un suivi précis des coûts et une surveillance de la conformité.
+ Maintenez des pistes d'audit claires pour les modifications de l'infrastructure.

Ce guide fournit une base solide pour la mise en œuvre de ces meilleures pratiques en utilisant les modules Backstage, SageMaker AI et IaC.

## Épopées
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-epics"></a>

### Configurez votre environnement ML
<a name="set-up-your-ml-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez Backstage. | Cette étape utilise les plans de l'[ingénierie moderne sur](https://github.com/aws-samples/appmod-blueprints) le AWS référentiel pour créer une infrastructure robuste et évolutive qui intègre plusieurs Services AWS afin de créer un IDP centralisé pour les flux de travail ML. Suivez les instructions de la [section Déploiement Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#backstage-deployment) du guide de déploiement pour cloner le référentiel, installer les dépendances, AWS CDK configurer les variables d'environnement et déployer la plateforme Backstage.L'infrastructure utilise Amazon EKS comme plate-forme d'orchestration de conteneurs pour le déploiement de composants IDP. L'architecture Amazon EKS inclut des configurations réseau sécurisées pour établir une isolation stricte du réseau et contrôler les modèles d'accès. La plateforme intègre des mécanismes d'authentification pour sécuriser l'accès des utilisateurs à tous les services et environnements. | Ingénieur de plateforme | 
| Configurez vos modèles d' SageMaker IA. | Cette étape utilise les scripts de la [plateforme de développement GitHub AIOps interne (IDP) avec le référentiel Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/). Suivez les instructions de la section de [configuration du SageMaker modèle](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-template-setup) du guide de déploiement pour cloner le référentiel, configurer les prérequis et exécuter le script de configuration.Ce processus crée un référentiel contenant les modèles d' SageMaker IA nécessaires à l'intégration avec Backstage. | Ingénieur de plateforme | 
| Intégrez les**** modèles d' SageMaker IA à Backstage. | Suivez les instructions de la section [Intégration des SageMaker modèles](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#sagemaker-templates-integration) du guide de déploiement pour enregistrer vos modèles d' SageMaker IA.Cette étape intègre les AIOps modules (modèles d'SageMaker IA de la dernière étape) dans votre déploiement Backstage afin que vous puissiez répondre en libre-service à vos besoins en matière d'infrastructure ML. | Ingénieur de plateforme | 
| Utilisez les modèles d' SageMaker IA de Backstage. | Suivez les instructions de la section [Utilisation de SageMaker modèles](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#using-sagemaker-templates) du guide de déploiement pour accéder au portail Backstage et créer l'environnement ML dans SageMaker Studio.Dans le portail Backstage, vous pouvez choisir parmi les modèles d' SageMaker IA disponibles, notamment des options pour les environnements SageMaker Studio, les SageMaker blocs-notes, les modèles de SageMaker projets personnalisés et les pipelines de déploiement de modèles. Une fois que vous avez fourni les paramètres de configuration, la plateforme crée automatiquement des référentiels dédiés et provisionne les AWS ressources via GitHub Actions et Seed-Farmer. Vous pouvez suivre les progrès via GitHub les journaux d'actions et le catalogue de composants Backstage. | Scientifique des données, Ingénieur de données, Développeur | 

### Gérez les modèles pour la gouvernance et la conformité
<a name="manage-templates-for-governance-and-compliance"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour les modèles d' SageMaker IA. | Pour mettre à jour un modèle d' SageMaker IA dans Backstage, procédez comme suit.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Ingénieur de plateforme | 
| Créez et gérez plusieurs versions d'un modèle. | Pour des modifications importantes ou des mises à niveau, vous souhaiterez peut-être créer plusieurs versions d'un modèle d' SageMaker IA.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/accelerate-mlops-with-backstage-and-sagemaker-templates.html) | Ingénieur de plateforme | 

### Étendez votre environnement ML
<a name="extend-your-ml-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Élargissez la couverture des modèles au-delà de SageMaker l'IA. | La solution actuelle n'implémente que des AIOps modèles SageMaker liés à l'IA. Vous pouvez étendre l'environnement ML en ajoutant des [AIOps modules](https://github.com/awslabs/aiops-modules) et en intégrant des modèles logiciels personnalisés pour des applications supplémentaires Services AWS et des applications. Vous pouvez les créer en utilisant l'interface du concepteur de modèles dans Backstage, en implémentant des actions d'échafaudage personnalisées ou en gérant des référentiels de modèles avec des métadonnées standard. La plateforme prend en charge la gestion des versions des modèles, le partage entre équipes et les flux de travail de validation pour des raisons de cohérence. Pour plus d'informations, consultez la [documentation Backstage](https://backstage.io/docs/overview/what-is-backstage/).Vous pouvez également implémenter des modèles d'héritage pour créer des versions spécialisées des modèles de base. Cette extensibilité vous permet de gérer diverses AWS ressources et applications au-delà de l' SageMaker IA tout en préservant l'expérience simplifiée des développeurs et en respectant les normes de votre entreprise. | Ingénieur de plateforme | 
| Utilisez l'injection dynamique de paramètres. | Les modèles actuels utilisent des configurations par défaut sans personnalisation et exécutent la CLI Seed-Farmer pour déployer des ressources avec des variables par défaut. Vous pouvez étendre la configuration par défaut en utilisant l'injection dynamique de paramètres pour les configurations spécifiques au module. | Ingénieur de plateforme | 
| Améliorez la sécurité et la conformité. | Pour renforcer la sécurité lors de la création de ressources AWS, vous pouvez activer l'intégration du contrôle d'accès basé sur les rôles (RBAC) avec l'authentification unique (SSO), le SAML, OpenID Connect (OIDC) et les politiques en tant que code d'application. | Ingénieur de plateforme | 
| Ajoutez un nettoyage automatique des ressources. | Vous pouvez activer des fonctionnalités pour les politiques de nettoyage automatisées et également ajouter la détection et la correction des dérives de l'infrastructure. | Ingénieur de plateforme | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez l'infrastructure des coulisses et les ressources d' SageMaker IA. | Lorsque vous avez fini d'utiliser votre environnement ML, suivez les instructions de la section [Nettoyage et gestion des ressources](https://github.com/aws-samples/sample-aiops-idp-backstage/blob/main/SETUP.md#cleanup-and-resource-management) du guide de déploiement pour supprimer l'infrastructure Backstage et supprimer les ressources d' SageMaker IA de votre environnement de machine learning. | Ingénieur de plateforme | 

## Résolution des problèmes
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| AWS CDK échecs de bootstrap |  Vérifiez les AWS informations d'identification et la configuration de la région. | 
| Problèmes d'accès au cluster Amazon EKS | Vérifiez la configuration de **kubectl** et les autorisations IAM. | 
| Problèmes de connectivité avec Application Load Balancer | Assurez-vous que les groupes de sécurité autorisent le trafic entrant sur le port 80/443. | 
| GitHub problèmes d'intégration | Vérifiez les autorisations des GitHub jetons et l'accès à l'organisation. | 
| SageMaker Échec du déploiement de l'IA | Vérifiez les [Service AWS quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) et les autorisations IAM. | 

## Ressources connexes
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-resources"></a>
+ [Ingénierie de plateforme](https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-caf-platform-perspective/platform-eng.html) (dans le guide *AWS Cloud Adoption Framework : Platform perspective*)
+ [Documentation Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/)
+ [Modèles de logiciels Backstage (site](https://backstage.io/docs/features/software-templates/) Web Backstage)
+ [AIOps référentiel de modules](https://github.com/awslabs/aiops-modules) (collection de modules iAc réutilisables pour le ML)
+ [AIOps plate-forme de développement interne (IDP) avec référentiel Backstage](https://github.com/aws-samples/sample-aiops-idp-backstage/)
+ [Ingénierie moderne sur le AWS](https://github.com/aws-samples/appmod-blueprints) référentiel
+ [Site Web d'excellence opérationnelle native dans le cloud (CNOE)](https://cnoe.io/)

## Informations supplémentaires
<a name="accelerate-mlops-with-backstage-and-sagemaker-templates-additional"></a>

**Défis commerciaux**

Organisations qui lancent ou étendent leurs MLOps initiatives sont fréquemment confrontées aux défis commerciaux et techniques suivants :
+ **Environnements incohérents**. L'absence d'environnements de développement et de déploiement standardisés complique la collaboration et augmente les risques liés au déploiement.
+ **Frais généraux liés au provisionnement manuel**. La configuration manuelle d'une infrastructure de machine learning à l'aide de SageMaker Studio, de buckets Amazon Simple Storage Service (Amazon S3), de rôles IAM et de pipelines est chronophage CI/CD et source d'erreurs, et détourne les data scientists de leur tâche principale, à savoir le développement de modèles.
+ **Manque de découvrabilité et de réutilisation**. L'absence de catalogue centralisé complique la recherche de modèles, d'ensembles de données et de pipelines de machine learning existants. Cela entraîne des tâches redondantes et des occasions manquées de réutilisation.
+ **Gouvernance et conformité complexes**. Il peut être difficile de s'assurer que les projets de machine learning respectent les politiques de sécurité organisationnelles, les réglementations en matière de confidentialité des données et les normes de conformité telles que la loi HIPAA (Health Insurance Portability and Accountability Act) et le règlement général sur la protection des données (RGPD) sans garde-fous automatisés.
+ Le **délai de valorisation est lent**. L'effet cumulatif de ces défis entraîne des cycles de vie prolongés des projets de ML et retarde la réalisation de la valeur commerciale des investissements dans le ML.
+ **Risques liés à la sécurité**. Des configurations et des processus manuels incohérents peuvent introduire des failles de sécurité qui compliquent l'application du principe du moindre privilège et l'isolation du réseau.

Ces problèmes prolongent les cycles de développement, augmentent les frais opérationnels et introduisent des risques de sécurité. La nature itérative du machine learning nécessite des flux de travail reproductibles et une collaboration efficace.

Gartner prévoit que d'ici 2026, 80 % des entreprises d'ingénierie logicielle disposeront d'équipes de plateforme. (Voir L'[ingénierie des plateformes permet aux développeurs d'être meilleurs, plus rapides et plus heureux](https://www.gartner.com/en/experts/top-tech-trends-unpacked-series/platform-engineering-empowers-developers) sur le site Web de Gartner.) Cette prédiction met en évidence la manière dont un IDP peut accélérer la livraison de logiciels. En tant qu'IDP, Backstage aide à rétablir l'ordre dans une infrastructure complexe afin que les équipes puissent fournir un code de haute qualité rapidement et en toute sécurité. L'intégration de Backstage à des AIOps modules renforcés vous permet de passer d'un dépannage réactif à une prévention proactive.

**MLOps SageMaker modules**

Les [AIOps modules](https://github.com/awslabs/aiops-modules) du GitHub référentiel utilisés pour ce modèle fournissent une base précieuse pour la standardisation AWS via un MLOps IAc réutilisable et renforcé. Ces modules encapsulent les meilleures pratiques pour le provisionnement de SageMaker projets, de pipelines et de ressources réseau et de stockage associées, dans le but de réduire la complexité et d'accélérer la configuration des environnements de machine learning. Vous pouvez utiliser ces modèles pour différents cas d' MLOps utilisation afin d'établir des modèles de déploiement cohérents et sécurisés qui favorisent une approche plus gouvernée et plus efficace des flux de travail de machine learning. 

L'utilisation directe AIOps des modules nécessite souvent que les équipes de la plateforme déploient et gèrent ces modèles IaC, ce qui peut présenter des défis pour les data scientists qui souhaitent accéder en libre-service. La découverte et la compréhension des modèles disponibles, la configuration des paramètres nécessaires et le déclenchement de leur déploiement peuvent nécessiter de naviguer dans les Service AWS consoles ou d'interagir directement avec les outils IaC. Cela peut créer des frictions, augmenter la charge cognitive des data scientists qui préfèrent se concentrer sur les tâches de machine learning, et potentiellement entraîner un paramétrage incohérent ou des écarts par rapport aux normes organisationnelles si ces modèles ne sont pas gérés via une interface centralisée et conviviale. L'intégration de ces puissants AIOps modules à un IDP tel que Backstage permet de relever ces défis en fournissant une expérience rationalisée en libre-service, une meilleure visibilité et des contrôles de gouvernance renforcés pour l'utilisation de ces éléments de base standardisés. MLOps 

**Dans les coulisses en tant qu'IDP**

Une plate-forme de développement interne (IDP) est une couche en libre-service créée par les équipes de plateforme pour simplifier et normaliser la façon dont les développeurs créent, déploient et gèrent les applications. Il réduit la complexité de l'infrastructure et permet aux développeurs d'accéder facilement aux outils, aux environnements et aux services via une interface unifiée.

L'objectif principal d'un IDP est d'améliorer l'expérience et la productivité des développeurs en :
+ Activation du libre-service pour des tâches telles que la création et le déploiement de services.
+ Promouvoir la cohérence et la conformité grâce à des modèles standard.
+ Intégrer des outils tout au long du cycle de développement (CI/CD, surveillance et documentation).

Backstage est un portail de développement open source créé par Spotify et qui fait désormais partie de la Cloud Native Computing Foundation (CNCF). Il aide les organisations à créer leur propre IDP en fournissant une plate-forme centralisée et extensible pour gérer les composants logiciels, les outils et la documentation. Avec Backstage, les développeurs peuvent :
+ Découvrez et gérez tous les services internes via un catalogue de logiciels.
+ Créez de nouveaux projets en utilisant des modèles prédéfinis via le plugin Scaffolder.
+ Accédez à des outils intégrés tels que des CI/CD pipelines, des tableaux de bord Kubernetes et des systèmes de surveillance à partir d'un seul endroit.
+ Maintenez une documentation cohérente basée sur le markdown grâce à. TechDocs

**FAQ**

**Quelle est la différence entre l'utilisation de ce modèle Backstage et le déploiement manuel de SageMaker Studio via la SageMaker console ?**

Le modèle Backstage offre plusieurs avantages par rapport au déploiement manuel sur AWS console, notamment des configurations standardisées conformes aux meilleures pratiques organisationnelles, le déploiement automatisé d'iAc à l'aide de Seed-Farmer et le AWS CDK, des politiques de sécurité et des mesures de conformité intégrées, ainsi que l'intégration aux flux de travail des développeurs de votre organisation via le biais de celui-ci. GitHub Le modèle crée également des déploiements reproductibles avec contrôle de version, ce qui facilite la réplication des environnements à différentes étapes (développement, préparation, production) et garantit la cohérence entre les équipes. En outre, le modèle inclut des fonctionnalités de nettoyage automatique et s'intègre au système de gestion des identités de votre organisation via Backstage. Le déploiement manuel via la console nécessite une AWS expertise approfondie et ne fournit pas de contrôle de version ni le même niveau de standardisation et de gouvernance que celui proposé par le modèle. Pour ces raisons, les déploiements de console sont plus adaptés aux expériences ponctuelles que les environnements ML de production.

**Qu'est-ce que Seed-Farmer et pourquoi cette solution l'utilise-t-elle ?**

Seed-Farmer est un outil d'orchestration de AWS déploiement qui gère les modules d'infrastructure en utilisant le. AWS CDK Ce modèle utilise Seed-Farmer car il fournit des composants d'infrastructure standardisés et réutilisables spécialement conçus pour les AI/ML charges de travail, gère Services AWS automatiquement les dépendances complexes et garantit des déploiements cohérents dans différents environnements.

**Dois-je installer le pour AWS CLI utiliser ces modèles ?**

Non, il n'est pas nécessaire de l'installer AWS CLI sur votre ordinateur. Les modèles s'exécutent entièrement via GitHub Actions dans le cloud. Vous fournissez vos AWS informations d'identification (clé d'accès, clé secrète et jeton de session) via l'interface Backstage, et le déploiement s'effectue automatiquement dans l'environnement GitHub Actions.

**Combien de temps faut-il pour déployer un environnement SageMaker Studio ?**

Un déploiement de SageMaker Studio prend généralement 15 à 25 minutes. Cela inclut le AWS CDK démarrage (2 à 3 minutes), la configuration de la chaîne d'outils Seed-Farmer (3 à 5 minutes) et la création de ressources (10 à 15 minutes). L'heure exacte dépend de votre configuration réseau Région AWS et de la complexité de celle-ci.

**Puis-je déployer plusieurs SageMaker environnements dans le même environnement Compte AWS ?**

Oui, vous pouvez. Chaque déploiement crée des ressources avec des noms uniques basés sur le nom du composant que vous indiquez dans le modèle. Attention toutefois aux Service AWS quotas : chaque compte peut avoir un nombre limité de SageMaker domaines par région. [Vérifiez donc vos quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) avant de créer plusieurs environnements.

# Automatisez AWS les opérations d'infrastructure en utilisant Amazon Bedrock
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock"></a>

*Ishwar Chauthaiwale et Anand Bukkapatnam Tirumala, Amazon Web Services*

## Résumé
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-summary"></a>

Dans les solutions cloud natives, l'automatisation des opérations d'infrastructure communes joue un rôle essentiel dans le maintien d'environnements efficaces, sécurisés et rentables. La gestion manuelle des opérations prend du temps et est sujette à des erreurs humaines. En outre, les membres de l'équipe ayant différents niveaux d' AWS expertise doivent effectuer ces tâches tout en garantissant le respect des protocoles de sécurité. Ce modèle montre comment utiliser Amazon Bedrock pour automatiser les opérations d' AWS infrastructure courantes par le biais du traitement du langage naturel (NLP).

Ce modèle peut aider les entreprises à développer un code réutilisable, modulaire et sécurisé pour déployer une infrastructure générative basée sur l'IA dans plusieurs environnements. En se concentrant sur l'infrastructure en tant que code (IaC) et sur l'automatisation, il offre des DevOps avantages clés, notamment le contrôle des versions, des déploiements cohérents, une réduction des erreurs, un provisionnement plus rapide et une collaboration améliorée.

Le modèle met en œuvre une architecture sécurisée qui permet aux équipes de gérer les opérations liées aux clés Services AWS , notamment :
+ Gestion des versions des compartiments Amazon Simple Storage Service (Amazon S3)
+ Création d'instantanés Amazon Relational Database Service (Amazon RDS)
+ Gestion des instances Amazon Elastic Compute Cloud (Amazon EC2)

L'architecture utilise des points de terminaison Amazon Virtual Private Cloud (Amazon VPC) et un réseau privé pour une communication sécurisée, avec des AWS Lambda fonctions fonctionnant comme des exécuteurs de tâches au sein de sous-réseaux privés. Amazon S3 assure la gestion des données et met en œuvre des rôles et des autorisations complets Gestion des identités et des accès AWS (IAM) pour garantir des contrôles d'accès appropriés. Cette solution n'inclut pas de fonctionnalité d'historique des discussions, et la discussion n'est pas stockée.

## Conditions préalables et limitations
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-prereqs"></a>
+ Un actif Compte AWS.
+ Des mesures de contrôle d'accès appropriées doivent être mises en place pour sécuriser et contrôler l'accès. Les exemples de contrôle d'accès incluent l'utilisation de l'accès aux modèles de base AWS Systems Manager, un rôle IAM pour le déploiement et des rôles basés sur les services, la désactivation de l'accès public aux compartiments Amazon S3 et la mise en place d'une file d'attente de lettres mortes.
+ Une AWS Key Management Service (AWS KMS) [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk).
+ AWS Command Line Interface (AWS CLI) version 2 ou ultérieure, [installée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) et [configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) dans l'environnement de déploiement.
+ Terraform AWS Provider version 4 ou ultérieure [installée et configurée](https://registry.terraform.io/providers/-/aws/latest/docs/guides/version-4-upgrade).
+ Terraform version 1.5.7 ou ultérieure [installée](https://developer.hashicorp.com/terraform/install) et configurée.
+ Passez en revue et [définissez des schémas OpenAPI pour les groupes d'action de vos agents dans Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html) afin de vous protéger contre les accès non autorisés et de préserver l'intégrité des données.
+ [Accès activé](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) [dans votre compte Compte AWS pour les Amazon Titan Text Embeddings v2 requis et pour les modèles de base Claude 3.5 Sonnet ou Claude 3 Haiku.](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) Pour éviter l'échec du déploiement, vérifiez que votre déploiement cible Région AWS [prend en charge les modèles requis](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html).
+ Un cloud privé virtuel (VPC) configuré qui suit les meilleures pratiques du [AWS Well Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-design.html).
+ Révision de la [politique Amazon Responsible AI](https://aws.amazon.com/ai/responsible-ai/policy/) terminée.

**Versions du produit**
+ Amazon Titan Text Embeddings v2
+ Sonnet Anthropic Claude 3.5 ou Haïku Claude 3
+ Terraform AWS Provider version 4 ou ultérieure
+ Terraform version 1.5.7 ou ultérieure

## Architecture
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail pour automatiser les opérations courantes de l'infrastructure AWS à l'aide d'Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/924e503f-bfc5-4452-abdf-d72a58d4d36f/images/bd56ad29-b435-4543-8ee8-dc4e1d38df18.png)


L'architecture de la solution se compose de plusieurs couches qui fonctionnent ensemble pour traiter les demandes en langage naturel et exécuter les AWS opérations correspondantes :

1. L'utilisateur fait des demandes d'opérations via la console de chat Amazon Bedrock.

1. Le chatbot utilise les bases de connaissances Amazon Bedrock pour le traitement des demandes. Il implémente le modèle Amazon Titan Text Embeddings v2 pour le traitement du langage naturel.

1. Si l'invite utilisateur inclut une demande d'action, le groupe d'actions Amazon Bedrock utilise le modèle Anthropic Claude 3 Haiku ou le modèle Claude 3.5 Sonnet (selon votre choix) pour la logique d'exécution et définit les opérations via un schéma OpenAPI.

1. Le groupe d'actions atteint les [points de terminaison](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/what-are-vpc-endpoints.html) Amazon VPC à l'aide d'une communication AWS PrivateLink de service sécurisée.

1. La AWS Lambda fonction est accessible via les points de terminaison Amazon VPC pour les services Amazon Bedrock.

1. Les fonctions Lambda constituent le principal moteur d'exécution. Sur la base de la demande, la fonction Lambda appelle l'API pour effectuer des actions sur le. Services AWS La fonction Lambda gère également le routage et l'exécution des opérations.

1. La requête Services AWS get the API from the Lambda et les opérations correspondantes sont effectuées.

1. La fonction Lambda calcule une charge utile de sortie comprise par Amazon Bedrock.

1. Cette charge utile est envoyée à Amazon Bedrock à l'aide d'une communication PrivateLink de service sécurisée. Le modèle de langage étendu (LLM) utilisé par Amazon Bedrock comprend cette charge utile et la convertit dans un format compréhensible par l'homme.

1. Le résultat est ensuite présenté à l'utilisateur sur la console de discussion Amazon Bedrock.

La solution permet les opérations principales suivantes :
+ Amazon S3 — Activez la gestion des versions des compartiments pour le contrôle des versions.
+ Amazon RDS — Créez des instantanés de base de données à des fins de sauvegarde.
+ Amazon EC2 — Répertoriez les instances et contrôlez le démarrage et l'arrêt des instances.

## Outils
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-tools"></a>

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service entièrement géré qui met à votre disposition des modèles de base très performants (FMs) issus des principales startups d'IA et d'Amazon via une API unifiée.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) offre une capacité de calcul évolutive dans l' AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) est une configuration sans serveur à la demande pour Amazon OpenSearch Service.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)vous permet de créer des connexions privées unidirectionnelles entre vos clouds privés virtuels (VPCs) et des services extérieurs au VPC.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans le. AWS Cloud
+ [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.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)vous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.

**Autres outils**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué et open source.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [infra-ops-orchestratoraws-samples/](https://github.com/aws-samples/infra-ops-orchestrator).

## Bonnes pratiques
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-best-practices"></a>
+ Surveillez régulièrement les journaux d'exécution Lambda. Pour plus d'informations, consultez la section [Surveillance et résolution des problèmes des fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Pour plus d'informations sur les meilleures pratiques, consultez la section [Meilleures pratiques d'utilisation des AWS Lambda fonctions](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).
+ Passez régulièrement en revue les configurations de sécurité pour vous assurer qu'elles sont conformes aux exigences de votre entreprise. Pour plus d'informations, consultez la section [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/wellarchitected/latest/framework/sec-bp.html).
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-epics"></a>

### Déploiement de la solution
<a name="deploy-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt sur votre machine locale, exécutez la commande suivante :<pre>git clone "git@github.com:aws-samples/infra-ops-orchestrator.git"<br />cd infra-ops-orchestrator</pre> | AWS DevOps, DevOps ingénieur | 
| Modifiez les variables d'environnement. | Modifiez le `terraform.tfvars` fichier. dans le répertoire racine du dépôt cloné. Passez en revue les espaces réservés indiqués par `[XXXXX]` et mettez-les à jour en fonction de votre environnement. | AWS DevOps, DevOps ingénieur | 
| Créez l'infrastructure. | Pour créer l'infrastructure, exécutez les commandes suivantes :<pre>terraform init</pre><pre>terraform plan</pre>Révisez attentivement le plan d'exécution. Si les modifications prévues sont acceptables, exécutez la commande suivante :<pre>terraform apply --auto-approve</pre> | AWS DevOps, DevOps ingénieur | 

### Accédez à la solution
<a name="access-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez à la solution. | Une fois le déploiement réussi, procédez comme suit pour utiliser l'interface basée sur le chat :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-infrastructure-operations-by-using-amazon-bedrock.html) | AWS DevOps, DevOps ingénieur | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources créées. | Pour supprimer toute l'infrastructure créée par ce modèle, exécutez la commande suivante :<pre>terraform plan -destroy </pre>Révisez attentivement le plan de destruction. Si les suppressions prévues sont acceptables, exécutez la commande suivante :<pre>terraform destroy</pre>Remarque : Cette commande supprimera définitivement toutes les ressources créées par ce modèle. La commande demandera une confirmation avant de supprimer des ressources. | AWS DevOps, DevOps ingénieur | 

## Résolution des problèmes
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Comportement des agents  | Pour plus d'informations sur ce problème, consultez la section [Tester et résoudre les problèmes du comportement des agents](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) dans la documentation Amazon Bedrock. | 
| Problèmes liés au réseau Lambda | Pour plus d'informations sur ces problèmes, consultez la section [Résoudre les problèmes de réseau dans Lambda dans](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) la documentation Lambda. | 
| Autorisations IAM | Pour plus d'informations sur ces problèmes, consultez la section [Résolution des problèmes liés à l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html) dans la documentation IAM. | 

## Ressources connexes
<a name="automate-aws-infrastructure-operations-by-using-amazon-bedrock-resources"></a>
+ [Création d'un instantané de base de données pour une instance de base de données mono-AZ pour Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)
+ [Définissez des schémas OpenAPI pour les groupes d'action de votre agent dans Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-api-schema.html)
+ [Activation de la gestion des versions sur les buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html)
+ [Comment fonctionne Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Récupérez des données et générez des réponses basées sur l'IA avec les bases de connaissances Amazon Bedrock](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Accédez en toute sécurité à Services Over AWS PrivateLink](https://docs.aws.amazon.com/whitepapers/latest/aws-privatelink/aws-privatelink.html)
+ [Arrêtez et démarrez les instances Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)
+ [Utilisez des groupes d'actions pour définir les actions que votre agent doit effectuer](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html)

# Automatisez les CloudFront mises à jour lorsque les points de terminaison de l'équilibreur de charge changent à l'aide de Terraform
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change"></a>

*Tamilselvan P, Mohan Annam et Naveen Suthar, Amazon Web Services*

## Résumé
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-summary"></a>

Lorsque les utilisateurs d'Amazon Elastic Kubernetes Service (Amazon EKS) suppriment et réinstallent leur configuration d'entrée via des graphiques Helm, un nouvel Application Load Balancer (ALB) est créé. Cela pose problème car Amazon CloudFront continue de faire référence à l'enregistrement DNS de l'ancien ALB. Par conséquent, les services destinés à ce point de terminaison ne seront pas accessibles. (Pour plus de détails sur ce flux de travail problématique, voir [Informations supplémentaires](#automate-cloudfront-updates-when-load-balancer-endpoints-change-additional).)

Pour résoudre ce problème, ce modèle décrit l'utilisation d'une AWS Lambda fonction personnalisée développée avec Python. Cette fonction Lambda détecte automatiquement lorsqu'un nouvel ALB est créé par le biais des règles Amazon. EventBridge À l'aide de AWS SDK pour Python (Boto3), la fonction met ensuite à jour la CloudFront configuration avec l'adresse DNS du nouvel ALB, garantissant ainsi que le trafic est acheminé vers le point de terminaison approprié.

Cette solution automatisée assure la continuité du service sans routage ni latence supplémentaires. Le processus permet de garantir qu'il fait CloudFront toujours référence au point de terminaison DNS ALB correct, même lorsque l'infrastructure sous-jacente change.

## Conditions préalables et limitations
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Exemple d'application Web de test et de validation déployée sur Amazon EKS à l'aide de Helm. Pour plus d'informations, consultez la section [Déployer des applications avec Helm sur Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) dans la documentation Amazon EKS.
+ Configurez CloudFront pour acheminer les appels vers un ALB créé par un contrôleur d'[entrée](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) Helm. Pour plus d'informations, consultez [Installer le contrôleur AWS Load Balancer avec Helm](https://docs.aws.amazon.com/eks/latest/userguide/lbc-helm.html) dans la documentation Amazon EKS et [Restreindre l'accès aux équilibreurs de charge d'application](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html) dans la documentation. CloudFront 
+ Terraform [installé](https://developer.hashicorp.com/terraform/install?product_intent=terraform) et configuré dans un espace de travail local.

**Limites**
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Terraform version 1.0.0 ou ultérieure
+ Terraform [AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) version 4.20 ou ultérieure

## Architecture
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail à mettre à jour CloudFront avec la nouvelle adresse DNS ALB détectée par le biais d'une EventBridge règle.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/28854767-0902-4398-80af-b19141dd94e4.png)


Cette solution exécute les étapes suivantes :

1. Le contrôleur d'entrée Amazon EKS crée un nouvel Application Load Balancer (ALB) à chaque redémarrage ou déploiement de Helm.

1. EventBridge recherche les événements de création d'ALB.

1. L'événement de création ALB déclenche la fonction Lambda.

1. La fonction Lambda a été déployée sur la base de python 3.9 et utilise l'API boto3 pour appeler. Services AWS La fonction Lambda met à jour l' CloudFront entrée avec le dernier nom DNS de l'équilibreur de charge, qui provient des événements de création de l'équilibreur de charge.

## Outils
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-tools"></a>

**Services AWS**
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) accélère la diffusion de votre contenu Web en le diffusant via un réseau mondial de centres de données, ce qui réduit le temps de latence et améliore les performances.
+ [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. Par exemple, AWS Lambda des fonctions, des points de terminaison d'appel HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.

**Autres outils**
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

**Référentiel de code**

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

## Épopées
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-epics"></a>

### Configuration d'un poste de travail local
<a name="set-up-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez et configurez la CLI Git. | Pour installer et configurer l'interface de ligne de commande (CLI) Git sur votre poste de travail local, suivez les instructions [Getting Started — Install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) de la documentation Git. | DevOps ingénieur | 
| Créez le dossier du projet et ajoutez les fichiers. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps ingénieur | 

### Provisionner l'architecture cible à l'aide de la configuration Terraform
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez la solution. | Pour déployer des ressources dans la cible Compte AWS, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps ingénieur | 

### Vérification du déploiement
<a name="verify-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez le déploiement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps ingénieur | 

### Nettoyer les infrastructures
<a name="clean-up-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez l'infrastructure. | Pour nettoyer l'infrastructure que vous avez créée précédemment, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-cloudfront-updates-when-load-balancer-endpoints-change.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Erreur lors de la validation des informations d'identification du fournisseur | Lorsque vous exécutez le Terraform `apply` ou `destroy` les commandes depuis votre machine locale, vous pouvez rencontrer une erreur similaire à la suivante :<pre>Error: configuring Terraform AWS Provider: error validating provider <br />credentials: error calling sts:GetCallerIdentity: operation error STS: <br />GetCallerIdentity, https response error StatusCode: 403, RequestID: <br />123456a9-fbc1-40ed-b8d8-513d0133ba7f, api error InvalidClientTokenId: <br />The security token included in the request is invalid.</pre>Cette erreur est due à l'expiration du jeton de sécurité pour les informations d'identification utilisées dans la configuration de votre machine locale.Pour résoudre l'erreur, consultez la section [Définir et afficher les paramètres de configuration](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods) dans la documentation AWS Command Line Interface (AWS CLI). | 

## Ressources connexes
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-resources"></a>

**AWS resources**
+ [Restreindre l'accès aux équilibreurs de charge des applications](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html)
+ [Acheminez le trafic Internet avec le AWS Load Balancer Controller](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)

**Documentation Terraform**
+ [AWS Fournisseur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Installez Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ [État distant](https://developer.hashicorp.com/terraform/language/state/remote)

## Informations supplémentaires
<a name="automate-cloudfront-updates-when-load-balancer-endpoints-change-additional"></a>

**Flux de travail problématique**

![\[Flux de travail qui produit une entrée DNS out-of-date ALB dans. CloudFront\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/03c30b18-4dd7-4dd4-b960-5a5cc58cec63/images/bb3c2c93-c749-435d-9b1d-2bbf6f0cf085.png)


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

1. Lorsque l'utilisateur accède à l'application, l'appel passe à CloudFront.

1. CloudFront achemine les appels vers l'Application Load Balancer (ALB) correspondant.

1. L'ALB inclut les adresses IP cibles qui sont les adresses IP du pod d'application. À partir de là, l'ALB fournit les résultats attendus à l'utilisateur.

Toutefois, ce flux de travail présente un problème. Les déploiements d'applications se font par le biais de diagrammes Helm. Chaque fois qu'il y a un déploiement ou si quelqu'un redémarre Helm, l'entrée correspondante est également recréée. Par conséquent, le contrôleur d'équilibrage de charge externe recrée l'ALB. De plus, lors de chaque recréation, l'ALB est recréé avec un nom DNS différent. De ce fait, l'entrée dans les paramètres d'origine CloudFront sera obsolète. En raison de cette entrée périmée, l'application ne sera pas accessible à l'utilisateur. Ce problème entraîne des interruptions de service pour les utilisateurs.

**Solution alternative**

Une autre solution possible consiste à créer un [DNS externe](https://github.com/kubernetes-sigs/external-dns) pour l'ALB, puis à le pointer vers le point de terminaison de la zone hébergée privée Amazon Route 53. CloudFront Cependant, cette approche ajoute un autre saut dans le flux des applications, ce qui peut entraîner une latence des applications. La solution de fonction Lambda de ce modèle ne perturbe pas le flux de courant.

# Automatisez les CodeGuru révisions Amazon pour les applications AWS CDK Python à l'aide d' GitHub Actions
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications"></a>

*Vanitha Dontireddy et Sarat Chandra Pothula, Amazon Web Services*

## Résumé
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-summary"></a>

Remarque : à 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.

Ce modèle illustre l'intégration des révisions de code CodeGuru automatisées Amazon pour les applications AWS Cloud Development Kit (AWS CDK) Python, orchestrées par le biais GitHub d'actions. La solution déploie une architecture sans serveur définie en Python AWS CDK . En automatisant l'analyse du code expert au sein du pipeline de développement, cette approche permet d'obtenir les résultats suivants pour les projets AWS CDK Python :
+ Améliorez la qualité du code.
+ Simplifiez les flux de travail
+ Maximisez les avantages de l'informatique sans serveur.

## Conditions préalables et limitations
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Command Line Interface [(AWS CLI) version 2.9.11 ou ultérieure, [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Un GitHub compte actif et un GitHub référentiel avec des autorisations de lecture et d'écriture dans le flux de travail et la création de pull requests (PR) par GitHub Actions pour garantir le bon fonctionnement du flux de travail des relations publiques.
+ Un rôle OpenID Connect (OIDC) dans GitHub Actions pour déployer la solution dans le. Compte AWS Pour créer le rôle, utilisez la [AWS CDK construction](https://github.com/aws-samples/github-actions-oidc-cdk-construct).

**Limites**
+ Amazon CodeGuru Profiler [prend en charge les applications](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html#what-is-language-support) écrites dans tous les langages de machine virtuelle Java (JVM) (tels que Scala et Kotlin) et les environnements d'exécution, ainsi que Python 3.6 ou version ultérieure.
+ Amazon CodeGuru Reviewer [prend en charge les associations](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/working-with-repositories.html) avec les référentiels de code Java et Python provenant uniquement des fournisseurs de sources suivants : AWS CodeCommit Bitbucket GitHub, GitHub Enterprise Cloud et GitHub Enterprise Server. En outre, les référentiels Amazon Simple Storage Service (Amazon S3) ne sont pris en charge que par le biais d'actions. GitHub 
+ Il n'existe aucun moyen automatique d'imprimer les résultats pendant le pipeline d'intégration continue et de déploiement continu (CI/CD). Ce modèle utilise plutôt GitHub les actions comme méthode alternative pour gérer et afficher les résultats.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-architecture"></a>

Le schéma suivant montre l'architecture de cette solution.

![\[Flux de travail pour intégrer la révision CodeGuru du code pour les applications AWS CDK Python à l'aide d' GitHub Actions.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c5395e3e-ff2a-41cf-bd64-c73cc928b60b/images/18f880a2-9bc3-4d71-a598-bb83b68ee383.png)


Comme le montre le schéma, lorsqu'un développeur crée une pull request (PR) à des fins de révision, GitHub Actions déclenche les étapes suivantes :

1. Hypothèse du rôle IAM — Le pipeline utilise le rôle IAM spécifié dans GitHub Secrets pour effectuer les tâches de déploiement.

1. Analyse du code
   + CodeGuru Reviewer analyse le code stocké dans le compartiment Amazon S3. Il identifie les défauts et fournit des recommandations pour les corriger et les optimiser.
   + CodeGuru Analyses de sécurité pour détecter les violations des politiques et les vulnérabilités.

1. Examen des résultats
   + Le pipeline imprime un lien vers le tableau de bord des résultats dans la sortie de la console.
   + Si des résultats critiques sont détectés, le pipeline tombe immédiatement en panne.
   + Pour les résultats de gravité élevée, normale ou faible, le pipeline passe à l'étape suivante.

1. Approbation PR
   + Un réviseur doit approuver manuellement le PR.
   + Si le PR est refusé, le pipeline échoue et interrompt les étapes de déploiement ultérieures.

1. Déploiement du CDK — Une fois le PR approuvé, le processus de déploiement du CDK commence. Il met en place les éléments suivants Services AWS et les ressources :
   + CodeGuru Profileur
   + AWS Lambda fonction
   + File d'attente Amazon Simple Queue Service (Amazon SQS)

1. Génération de données de profilage — Pour générer suffisamment de données de profilage pour CodeGuru Profiler :
   + Le pipeline invoque la fonction Lambda à plusieurs reprises en envoyant régulièrement des messages à la file d'attente Amazon SQS.

## Outils
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
+ [CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre AWS CDK application.
+ [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.
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) utilise l'analyse des programmes et l'apprentissage automatique pour détecter les défauts potentiels difficiles à détecter pour les développeurs. CodeGuru Profiler propose ensuite des suggestions pour améliorer votre code Java et Python.
+ Amazon CodeGuru Security est un outil de sécurité des applications statique qui utilise l'apprentissage automatique pour détecter les violations des politiques de sécurité et les vulnérabilités. Il fournit des suggestions pour faire face aux risques de sécurité et génère des métriques afin que vous puissiez suivre le niveau de sécurité de vos applications.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) fournit une file d'attente hébergée sécurisée, durable et disponible qui vous permet d'intégrer et de dissocier les systèmes et composants logiciels distribués.
+ [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 outils**
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [amazon-codeguru-suite-cdk-python](https://github.com/aws-samples/amazon-codeguru-suite-cdk-python).

## Bonnes pratiques
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-best-practices"></a>
+ Adhérez aux [meilleures pratiques pour développer et déployer une infrastructure cloud avec le AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html).
+ Suivez les [meilleures pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) lors de l'utilisation des flux de travail Services AWS in GitHub Actions, notamment :
  + Ne stockez pas les informations d'identification dans le code de votre référentiel.
  + [Assumez un rôle IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-workloads-use-roles) pour recevoir des informations d'identification temporaires, et utilisez des informations d'identification temporaires lorsque cela est possible.
  + [Accordez le moindre privilège au](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) rôle IAM utilisé dans les flux de travail GitHub Actions. Accordez uniquement les autorisations nécessaires pour effectuer les actions dans vos flux de travail GitHub Actions. 
  + [Surveillez l'activité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#remove-credentials) du rôle IAM utilisé dans les flux de travail GitHub Actions.
  + Effectuez régulièrement une rotation des informations d'identification à long terme que vous utilisez.

## Épopées
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les AWS informations d'identification. | Pour exporter les variables qui définissent la pile Compte AWS et Région AWS où vous la déployez, exécutez les commandes suivantes :<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>Les AWS informations d'identification AWS CDK sont fournies par le biais de variables d'environnement. | AWS DevOps, DevOps ingénieur | 
| Pour cloner le référentiel. | Pour cloner le dépôt sur votre machine locale, exécutez la commande suivante :<pre>git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git</pre> | AWS DevOps, DevOps ingénieur | 
| Installez le kit d'outils CDK. | Pour confirmer que le kit d'outils CDK est installé et pour vérifier la version, exécutez la commande suivante : <pre>cdk --version</pre>Si la version du CDK Toolkit est antérieure à 2.27.0, entrez la commande suivante pour la mettre à jour vers la version 2.27.0 :<pre>npm install -g aws-cdk@2.27.0</pre>Si le kit d'outils CDK *n'est pas* installé, exécutez la commande suivante pour l'installer :<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps ingénieur | 
| Installez les dépendances obligatoires. | Pour installer les dépendances de projet requises, exécutez la commande suivante :<pre>python -m pip install --upgrade pip<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps ingénieur | 
| Démarrez l'environnement CDK. | Pour [démarrer un](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) environnement AWS CDK, exécutez les commandes suivantes :<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Une fois que vous avez réussi à démarrer l'environnement, le résultat suivant doit s'afficher :<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre> | AWS DevOps, DevOps ingénieur | 

### Déployez l'application CDK
<a name="deploy-the-cdk-app"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Synthétisez l' AWS CDK application. | Pour synthétiser une AWS CDK application, exécutez la commande suivante :<pre>cdk synth</pre>Pour plus d'informations sur cette commande, consultez [cdk synthesize](https://docs.aws.amazon.com/cdk/v2/guide/ref-cli-cmd-synth.html) dans la AWS CDK documentation. | AWS DevOps, DevOps ingénieur | 
| Déployez les ressources. | Pour déployer les ressources, exécutez la commande suivante :<pre>cdk deploy --require-approval never</pre>L'`--require-approval never`indicateur signifie que le CDK approuvera et exécutera automatiquement toutes les modifications. Cela inclut les modifications que le CDK signalerait normalement comme nécessitant une révision manuelle (telles que les modifications de la politique IAM ou la suppression de ressources). Assurez-vous que votre code CDK et votre CI/CD pipeline sont bien testés et sécurisés avant d'utiliser l'`--require-approval never`indicateur dans les environnements de production. | AWS DevOps, DevOps ingénieur | 

### Créez des GitHub secrets et un jeton d'accès personnel
<a name="create-github-secrets-and-personal-access-token"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les secrets requis dans GitHub. | Pour permettre aux flux de travail GitHub Actions d'accéder aux AWS ressources en toute sécurité sans exposer d'informations sensibles dans le code de votre référentiel, créez des secrets. Pour créer les secrets dans GitHub for`ROLE_TO_ASSUME`, et `CodeGuruReviewArtifactBucketName``AWS_ACCOUNT_ID`, suivez les instructions de la section [Création de secrets pour un référentiel](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) dans la documentation GitHub Actions.Vous trouverez ci-dessous des informations supplémentaires sur les variables :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps ingénieur | 
| Créez un jeton d'accès GitHub personnel. | Pour configurer un moyen sécurisé d'authentification et d'interaction avec vos flux de travail GitHub Actions GitHub, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-amazon-codeguru-reviews-for-aws-cdk-python-applications.html) | AWS DevOps, DevOps ingénieur | 

### Nettoyage
<a name="clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| nettoyer les ressources. | Pour nettoyer votre application AWS CDK Python, exécutez la commande suivante :<pre>cdk destroy --all</pre> | DevOps ingénieur | 

## Résolution des problèmes
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Afficher le lien vers les résultats du tableau de bord. | Il n'existe aucun moyen d'imprimer les résultats pendant le CI/CD pipeline. Ce modèle utilise plutôt GitHub les actions comme méthode alternative pour gérer et afficher les résultats. | 

## Ressources connexes
<a name="automate-amazon-codeguru-reviews-for-aws-cdk-python-applications-resources"></a>

**AWS resources**
+ [AWS Kit de développement Cloud](https://aws.amazon.com/cdk/)
+ [ CodeGuru Documentation Amazon](https://docs.aws.amazon.com/codeguru/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [Gestion des identités et des accès AWS](https://aws.amazon.com/iam/)
+ [Amazon Simple Queue Service](https://aws.amazon.com/sqs/)
+ [Qu'est-ce que c'est AWS Lambda ?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

**GitHub documentation**
+ [Configuration d'OpenID Connect dans Amazon Web Services](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [GitHub Actions](https://github.com/features/actions)
+ [Réutilisation des flux de travail](https://docs.github.com/en/actions/using-workflows/reusing-workflows)
+ [Déclenchement d'un workflow](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) 

# Automatisez le déploiement de lacs de AWS Supply Chain données dans une configuration multi-référentiels à l'aide d' GitHub Actions, Artifactory et Terraform
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes"></a>

*Keshav Ganesh, Amazon Web Services*

## Résumé
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-summary"></a>

Ce modèle fournit une approche automatisée pour le déploiement et la gestion des lacs de AWS Supply Chain données à l'aide d'une intégration continue multi-référentiels et de fonctionnalités de déploiement continu (CI/CD) pipeline. It demonstrates two deployment methods: automated deployment using GitHub Actions workflows, or manual deployment using Terraform directly. Both approaches use Terraform for infrastructure as code (IaC), with the automated method adding GitHub Actions and JFrog Artifactory for enhanced CI/CDfonctionnalités).

La solution s'appuie sur AWS Supply Chain Amazon Simple Storage Service (Amazon S3) pour établir l'infrastructure du lac de données, tout en utilisant l'une ou l'autre des méthodes de déploiement pour automatiser la configuration et la création de ressources. AWS Lambda Cette automatisation élimine les étapes de configuration manuelles et garantit des déploiements cohérents dans tous les environnements. En outre, il AWS Supply Chain élimine le besoin d'une expertise approfondie en matière d'extraction, de transformation et de chargement (ETL) et peut fournir des informations et des analyses basées sur Amazon Quick Sight.

En mettant en œuvre ce modèle, les entreprises peuvent réduire le temps de déploiement, maintenir l'infrastructure sous forme de code et gérer les lacs de données de la chaîne d'approvisionnement grâce à un processus automatisé contrôlé par version. L'approche multi-référentiels fournit un contrôle d'accès précis et permet le déploiement indépendant de différents composants. Les équipes peuvent choisir la méthode de déploiement la mieux adaptée à leurs outils et processus existants.

## Conditions préalables et limitations
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs"></a>

**Conditions préalables**

Assurez-vous que les éléments suivants sont installés sur votre ordinateur local :
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) version 2
+ [GitHub INTERFACE DE LIGNE DE COMMANDE (CLI)](https://docs.github.com/en/get-started/git-basics/set-up-git)
+ [Python v3.13](https://www.python.org/downloads/)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) v1.12 ou version ultérieure

Assurez-vous que les éléments suivants sont en place avant le déploiement :
+ Un actif Compte AWS.
+ Un [cloud privé virtuel (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) avec deux [sous-réseaux privés](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) Compte AWS dans l'espace Région AWS de votre choix.
+ Autorisations suffisantes pour le rôle Gestion des identités et des accès AWS (IAM) utilisé pour le déploiement vers les services suivants :
  + AWS Supply Chain — L'accès complet est préféré pour déployer ses composants tels que les ensembles de données et les flux d'intégration, ainsi que pour y accéder depuis le AWS Management Console.
  + Amazon CloudWatch Logs : pour créer et gérer des groupes de CloudWatch journaux.
  + Amazon Elastic Compute Cloud (Amazon EC2) — Pour les groupes de sécurité Amazon EC2 et les points de terminaison Amazon Virtual Private Cloud (Amazon VPC).
  + Amazon EventBridge — À utiliser par AWS Supply Chain.
  + IAM — Pour créer des rôles AWS Lambda de service.
  + AWS Key Management Service (AWS KMS) — Pour accéder au compartiment d'artefacts AWS KMS keys utilisé pour le compartiment d'artefacts Amazon S3 et le compartiment AWS Supply Chain intermédiaire Amazon S3.
  + AWS Lambda — Pour créer les fonctions Lambda qui déploient les AWS Supply Chain composants.
  + Amazon S3 — Pour accéder au compartiment d'artefacts Amazon S3, au compartiment de journalisation des accès au serveur et au AWS Supply Chain compartiment intermédiaire. Si vous utilisez le déploiement manuel, les autorisations pour le compartiment d'artefacts Amazon S3 Terraform sont également requises.
  + Amazon VPC — Pour créer et gérer un VPC.

Si vous préférez utiliser les flux de travail GitHub Actions pour le déploiement, procédez comme suit :
+ Configurez [OpenID Connect (OIDC)](https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws#configuring-the-role-and-trust-policy) pour le rôle IAM avec les autorisations mentionnées précédemment.
+ Créez un rôle IAM avec des autorisations similaires pour accéder au AWS Management Console. Pour plus d'informations, consultez la section [Créer un rôle pour accorder des autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dans la documentation IAM.

Si vous préférez effectuer un déploiement manuel, procédez comme suit :
+ Créez un utilisateur IAM pour assumer le rôle IAM avec les autorisations mentionnées précédemment. Pour plus d'informations, consultez la section [Créer un rôle pour accorder des autorisations à un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dans la documentation IAM.
+ [Assumez le rôle](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-role.html) dans votre terminal local.

Si vous préférez utiliser les flux de travail GitHub Actions pour le déploiement, configurez les éléments suivants :
+ Un [compte JFrog Artifactory](https://jfrog.com/artifactory/?utm_source=google&utm_medium=cpc_search&utm_campaign=SearchDSKBrandAPACIN202506&utm_term=jfrog%20cloud&gads_network=g&utm_content=u-bin&gads_campaign_id=22674833884&gads_adgroup_id=184501797241&gads_extension_id=233003714635&gads_target_id=aud-312135645780:kwd-1598615735032&gads_matchtype=b&gad_source=1&gad_campaignid=22674833884&gbraid=0AAAAADqV85U5B37iapTR9IIFHBvydF5AQ&gclid=CjwKCAjwiY_GBhBEEiwAFaghvqdNV-odNLZXPHjT7NAwf8lA-QuMtg666hgvDW1oCJ4nn7wvf869_xoCW4IQAvD_BwE) pour obtenir le nom d'hôte, le nom d'utilisateur de connexion et le jeton d'accès.
+ Une [clé de JFrog projet et un référentiel](https://jfrog.com/help/r/jfrog-platform-administration-documentation/step-1-set-up-a-new-project) pour le stockage des artefacts.

**Limites**
+ L' AWS Supply Chain instance ne prend pas en charge les techniques de transformation de données complexes.
+ AWS Supply Chain est particulièrement adapté aux domaines de la chaîne d'approvisionnement car il fournit des analyses et des informations intégrées. Pour tout autre domaine, il AWS Supply Chain peut être utilisé comme magasin de données dans le cadre de l'architecture du lac de données.
+ Les fonctions Lambda utilisées dans cette solution devront peut-être être améliorées pour gérer les nouvelles tentatives d'API et la gestion de la mémoire dans le cadre d'un déploiement à l'échelle de la production.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-architecture"></a>

Vous pouvez déployer cette solution soit à l'aide de flux de travail GitHub Actions automatisés, soit manuellement à l'aide de Terraform.

**Déploiement automatisé avec des GitHub actions**

Le schéma suivant montre l'option de déploiement automatique qui utilise les flux de travail GitHub Actions. JFrog Artifactory est utilisé pour la gestion des artefacts. Il stocke les informations sur les ressources et les sorties à utiliser dans le cadre d'un déploiement multi-référentiels.

![\[Option de déploiement automatique qui utilise les flux de travail GitHub Actions et JFrog.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/d454a5c5-ed51-421c-a87f-ff74cfcb30be.png)


**Déploiement manuel avec Terraform**

Le schéma suivant montre l'option de déploiement manuel via Terraform. Au lieu d' JFrog Artifactory, Amazon S3 est utilisé pour la gestion des artefacts.

![\[Option de déploiement manuel à l'aide de Terraform et Amazon S3.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/1130e728-44d5-4ae7-9586-1e497f54352a.png)


**Flux de travail de déploiement**

Les diagrammes montrent le flux de travail suivant :

1. Déployez l'infrastructure des ensembles de données de AWS Supply Chain service et les bases de données à l'aide de l'une des méthodes de déploiement suivantes :
   + **Déploiement automatisé** : utilise GitHub les flux de travail Actions pour orchestrer toutes les étapes de déploiement et utilise JFrog Artifactory pour la gestion des artefacts.
   + **Déploiement manuel** : exécute les commandes Terraform directement pour chaque étape de déploiement et utilise Amazon S3 pour la gestion des artefacts.

1. Créez les AWS ressources de support nécessaires au fonctionnement AWS Supply Chain du service :
   + Points de terminaison et groupes de sécurité Amazon VPC
   + AWS KMS keys
   + CloudWatch Logs, journaux, groupes

1. Créez et déployez les ressources d'infrastructure suivantes :
   + Fonctions Lambda qui gèrent (créent, mettent à jour et suppriment) l'instance de AWS Supply Chain service, les espaces de noms et les ensembles de données.
   + AWS Supply Chain préparation du compartiment Amazon S3 pour l'ingestion de données

1. Déployez la fonction Lambda qui gère les flux d'intégration entre le bucket intermédiaire et AWS Supply Chain les ensembles de données. Une fois le déploiement terminé, les étapes restantes du flux de travail gèrent l'ingestion et l'analyse des données.

1. Configurez l'ingestion des données sources dans AWS Supply Chain le compartiment Amazon S3 intermédiaire.

1. Une fois les données ajoutées au compartiment AWS Supply Chain Amazon S3 intermédiaire, le service déclenche automatiquement le flux d'intégration vers les AWS Supply Chain ensembles de données.

1. AWS Supply Chain s'intègre à Quick Sight Analytics pour produire des tableaux de bord basés sur les données ingérées.

## Outils
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-tools"></a>

**Services AWS**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) vous aide à centraliser les journaux de tous vos systèmes et applications, Services AWS afin que vous puissiez les surveiller et les archiver en toute sécurité.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) offre une capacité de calcul évolutive dans l' AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [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. Par exemple, AWS Lambda des fonctions, des points de terminaison d'appel HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. 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 IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)vous permet de gérer de manière centralisée l'accès par authentification unique (SSO) à toutes vos applications Comptes AWS et à celles du cloud.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Q](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) in AWS Supply Chain est un assistant d'intelligence artificielle générative interactif qui vous aide à gérer votre chaîne d'approvisionnement de manière plus efficace en analysant les données de votre lac de AWS Supply Chain données.
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) est un service de business intelligence (BI) à l'échelle du cloud qui vous permet de visualiser, d'analyser et de rapporter vos données dans un tableau de bord unique.
+ [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.
+ [AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)est une application gérée dans le cloud qui peut être utilisée comme magasin de données dans les organisations pour les domaines de la chaîne d'approvisionnement, qui peut être utilisée pour générer des informations et effectuer des analyses sur les données ingérées.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS. Un point de [terminaison Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) est un appareil virtuel qui vous permet de connecter de manière privée votre VPC à un service compatible Services AWS sans avoir besoin d'une passerelle Internet, d'un appareil NAT, d'une connexion VPN ou d'une connexion. AWS Direct Connect 

**Autres outils**
+ [GitHub Actions](https://docs.github.com/en/actions) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.
+ [HashiCorp Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) qui vous aide à créer et à gérer des ressources sur site et dans le cloud.
+ [JFrog Artifactory](https://jfrog.com/help/r/jfrog-artifactory-documentation/jfrog-artifactory) assure end-to-end l'automatisation et la gestion des fichiers binaires et des artefacts tout au long du processus de livraison des applications.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent. Ce modèle utilise Python pour que le code de la AWS fonction interagisse avec AWS Supply Chain

  .

## Bonnes pratiques
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-best-practices"></a>
+ Maintenez le niveau de sécurité le plus élevé possible lors de la mise en œuvre de ce modèle. Comme indiqué dans la [section Conditions préalables](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs), assurez-vous qu'un [cloud privé virtuel (VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)) avec [deux sous-réseaux privés](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) se trouve dans Région AWS l'espace de Compte AWS votre choix.
+ Utilisez des [clés gérées par le AWS KMS client](https://docs.aws.amazon.com/kms/latest/cryptographic-details/basic-concepts.html) dans la mesure du possible et accordez-leur des autorisations d'accès limitées.
+ Pour configurer les rôles IAM avec le moins d'accès requis pour ingérer les données pour ce modèle, consultez la section [Ingestion sécurisée des données depuis les systèmes source vers Amazon S3](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main?tab=readme-ov-file#secure-data-ingestion-from-source-systems-to-amazon-s3) dans le référentiel de ce modèle.

## Épopées
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-epics"></a>

### (Les deux options) Configurer le poste de travail local
<a name="both-options-set-up-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt de ce modèle, exécutez la commande suivante sur votre station de travail locale :<pre>git clone https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment.git<br />cd ASC-Deployment</pre> | AWS DevOps | 
| (Option automatique) Vérifiez les conditions préalables au déploiement. | Assurez-vous que les [conditions préalables sont remplies](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) pour le déploiement automatique. | Propriétaire de l'application | 
| (Option manuelle) Préparez le déploiement des AWS Supply Chain ensembles de données. | Pour accéder au `terraform-deployment` répertoire de`ASC-Datasets`, exécutez la commande suivante :<pre>cd ASC-Datasets/terraform-deployment</pre>Pour assumer le rôle ARN créé dans les [prérequis](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs), exécutez la commande suivante :<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Pour configurer et exporter les variables d'environnement, exécutez les commandes suivantes :<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Datasets dir name><br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export AWS_USER_ROLE=<Enter user role ARN for AWS Console access and deployment><br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | AWS DevOps | 
| (Option manuelle) Préparez-vous à gérer les flux AWS Supply Chain d'intégration lors du déploiement. | Pour accéder au `terraform-deployment` répertoire de`ASC-Integration-Flows`, exécutez la commande suivante :<pre>cd ASC-Integration-Flows/terraform-deployment</pre>Pour assumer le rôle ARN créé précédemment, exécutez la commande suivante :<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Pour configurer et exporter les variables d'environnement, exécutez les commandes suivantes :<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Integration Flows dir name><br />export ASC_DATASET_VARS_REPO=<Enter Current ASC Datasets dir name>  #Must be the same directory name used for ASC Datasets deployment<br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | Propriétaire de l'application | 

### (Option automatisée) Déployer des AWS Supply Chain ensembles de données à l'aide des flux de GitHub travail Actions
<a name="automated-option-deploy-supplychain-datasets-using-github-actions-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez le `ASC-Datasets` répertoire. | Pour copier le `ASC-Datasets` répertoire vers un nouvel emplacement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configurez le `ASC-Datasets` répertoire. | Pour le configurer `ASC-Datasets` en tant que référentiel autonome dans votre organisation, exécutez les commandes suivantes :<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Datasets standalone repository"<br />git remote add origin <INSERT_ASC_DATASETS_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configurez le nom de la branche dans le fichier de flux de travail .github. | Configurez le nom de la branche dans le fichier du flux de travail de [déploiement](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/asc-datasets.yml) comme indiqué dans l'exemple suivant :<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Propriétaire de l'application | 
| Configurez GitHub des environnements et configurez les valeurs d'environnement. | Pour configurer GitHub des environnements dans votre GitHub organisation, suivez les instructions de la section [Configuration GitHub des environnements](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-github-environments) dans le référentiel de ce modèle.Pour configurer [les valeurs d'environnement](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) dans les fichiers de flux de travail, suivez les instructions de la [section Configuration des valeurs d'environnement dans les fichiers de flux](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) de travail du référentiel de ce modèle. | Propriétaire de l'application | 
| Déclenchez le flux de travail. | Pour appliquer vos modifications à votre GitHub organisation et déclencher le flux de travail de déploiement, exécutez la commande suivante :<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Option automatisée) Déployez des flux AWS Supply Chain d'intégration à l'aide GitHub des flux de travail Actions
<a name="automated-option-deploy-supplychain-integration-flows-using-github-actions-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez le `ASC-Integration-Flows` répertoire. | Pour copier le `ASC-Integration-Flows` répertoire vers un nouvel emplacement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configurez le `ASC-Integration-Flows` répertoire. | Pour configurer le `ASC-Integration-Flows` répertoire en tant que référentiel autonome dans votre organisation, exécutez les commandes suivantes :<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Integration-Flows standalone repository"<br />git remote add origin <INSERT_ASC_Integration_Flows_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configurez le nom de la branche dans le fichier de flux de travail .github. | Configurez le nom de la branche dans le fichier du flux de travail de [déploiement](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/asc-integration-flows.yml) comme indiqué dans l'exemple suivant :<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Propriétaire de l'application | 
| Configurez GitHub des environnements et configurez les valeurs d'environnement. | Pour configurer GitHub des environnements dans votre GitHub organisation, suivez les instructions de la section [Configuration GitHub des environnements](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) dans le référentiel de ce modèle.Pour configurer [les valeurs d'environnement](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) dans les fichiers de flux de travail, suivez les instructions de la [section Configuration des valeurs d'environnement dans les fichiers de flux](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-environment-values-in-the-workflow-files) de travail du référentiel de ce modèle. | Propriétaire de l'application | 
| Déclenchez le flux de travail. | Pour appliquer vos modifications à votre GitHub organisation et déclencher le flux de travail de déploiement, exécutez la commande suivante :<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Option manuelle) Déployer des AWS Supply Chain ensembles de données à l'aide de Terraform
<a name="manual-option-deploy-supplychain-datasets-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez au répertoire `terraform-deployment `. | Pour accéder au `terraform-deployment` répertoire de`ASC-Datasets`, exécutez la commande suivante :<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configurez le compartiment Amazon S3 d'état Terraform. | Pour configurer le compartiment Amazon S3 d'état Terraform, utilisez le script suivant :<pre># Setup terraform bucket<br />chmod +x ../scripts/setup-terraform.sh<br />../scripts/setup-terraform.sh</pre> | AWS DevOps | 
| Configurez le compartiment Amazon S3 des artefacts Terraform. | Pour configurer le compartiment Amazon S3 des artefacts Terraform, utilisez le script suivant :<pre># Setup terraform artifacts bucket<br />chmod +x ../scripts/setup-terraform-artifacts-bucket.sh<br />../scripts/setup-terraform-artifacts-bucket.sh</pre> | AWS DevOps | 
| Configurez le backend Terraform et la configuration des fournisseurs. | Pour configurer le backend Terraform et la configuration des fournisseurs, utilisez le script suivant :<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Générez un plan de déploiement. | Pour générer un plan de déploiement, exécutez les commandes suivantes :<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Déployez les configurations. | Pour déployer les configurations, exécutez la commande suivante :<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Mettez à jour les autres configurations et stockez les sorties. | Pour mettre à jour les politiques AWS KMS clés et stocker les sorties de configuration appliquées dans le compartiment Amazon S3 des artefacts Terraform, exécutez les commandes suivantes :<pre># Update AWS Supply Chain KMS Key policy with the service's requirements<br />chmod +x ../scripts/update-asc-kms-policy.sh<br />../scripts/update-asc-kms-policy.sh<br /></pre><pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy.sh<br />../scripts/update-kms-policy.sh<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Option manuelle) Déployez des flux d'intégration AWS Supply Chain de services à l'aide de Terraform
<a name="manual-option-deploy-supplychain-service-integration-flows-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez au répertoire `terraform-deployment`. | Pour accéder au `terraform-deployment` répertoire de`ASC-Integration-Flows`, exécutez la commande suivante :<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configurez le backend Terraform et la configuration des fournisseurs. | Pour configurer les configurations du backend et du fournisseur Terraform, utilisez le script suivant :<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Générez un plan de déploiement. | Pour générer un plan de déploiement, exécutez les commandes suivantes. Ces commandes initialisent votre environnement Terraform, fusionnent les variables de configuration `ASC-Datasets` avec vos configurations Terraform existantes et génèrent un plan de déploiement.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Déployez les configurations. | Pour déployer les configurations, exécutez la commande suivante :<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Mettez à jour les autres configurations. | Pour mettre à jour les politiques AWS KMS clés et stocker les sorties de configuration appliquées dans le compartiment Amazon S3 des artefacts Terraform, exécutez les commandes suivantes :<pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy-through-s3.sh<br />../scripts/update-kms-policy-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Les deux options) Ingérer des données
<a name="both-options-ingest-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez des exemples de fichiers CSV. | Pour télécharger des exemples de fichiers CSV pour les ensembles de données, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Ingénieur de données | 

### (Les deux options) Configurer AWS Supply Chain l'accès
<a name="both-options-set-up-supplychain-access"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez AWS Supply Chain l'accès. | Pour configurer AWS Supply Chain l'accès depuis le AWS Management Console, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Propriétaire de l'application | 

### (Option automatisée) Nettoyez toutes les ressources à l'aide des flux de travail GitHub Actions
<a name="automated-option-clean-up-all-resources-using-github-actions-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déclenchez le flux de travail de destruction des ressources des flux d'intégration. | Déclenchez le [flux de travail de destruction](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/destroy-workflow.yml) `ASC-Integration-Flows` depuis la succursale de déploiement de votre GitHub organisation. | AWS DevOps | 
| Déclenchez le flux de travail de destruction des ressources des ensembles de données. | Déclenchez le [flux de travail de destruction](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/destroy-workflow.yml) `ASC-Datasets` depuis la succursale de déploiement de votre GitHub organisation. | AWS DevOps | 

### (Option manuelle) Nettoyez les ressources des flux d' AWS Supply Chain intégration à l'aide de Terraform
<a name="manual-option-clean-up-resources-of-supplychain-integration-flows-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez au répertoire `terraform-deployment`. | Pour accéder au `terraform-deployment` répertoire de`ASC-Integration-Flows`, exécutez la commande suivante :<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configurez le backend Terraform et la configuration des fournisseurs. | Pour configurer le backend Terraform et la configuration des fournisseurs, utilisez le script suivant :<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Générez un plan de destruction de l'infrastructure. | Pour préparer la destruction contrôlée de votre AWS infrastructure en générant un plan de démontage détaillé, exécutez les commandes suivantes. Le processus initialise Terraform, intègre les configurations de AWS Supply Chain jeux de données et crée un plan de destruction que vous pouvez consulter avant de l'exécuter.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Exécutez le plan de destruction de l'infrastructure. | Pour exécuter la destruction planifiée de votre infrastructure, exécutez la commande suivante :<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Supprimez les sorties Terraform du compartiment Amazon S3. | Pour supprimer le fichier de sortie qui a été chargé lors du déploiement de`ASC-Integration-Flows`, exécutez la commande suivante :<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

### (Option manuelle) Nettoyez les ressources des ensembles de données de AWS Supply Chain service à l'aide de Terraform
<a name="manual-option-clean-up-resources-of-supplychain-service-datasets-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez au répertoire `terraform-deployment`. | Pour accéder au `terraform-deployment` répertoire de`ASC-Datasets`, exécutez la commande suivante :<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configurez le backend Terraform et la configuration des fournisseurs. | Pour configurer le backend Terraform et la configuration des fournisseurs, utilisez le script suivant :<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Générez un plan de destruction de l'infrastructure. | Pour créer un plan de destruction des ressources du AWS Supply Chain jeu de données, exécutez les commandes suivantes :<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Compartiments Amazon S3 vides. | Pour vider tous les compartiments Amazon S3 (à l'exception du compartiment de journalisation des accès au serveur, qui est configuré pour`force-destroy`), utilisez le script suivant :<pre># Delete S3 buckets excluding server access logging bucket<br />chmod +x ../scripts/empty-s3-buckets.sh<br />../scripts/empty-s3-buckets.sh tfplan.out</pre> | AWS DevOps | 
| Exécutez le plan de destruction de l'infrastructure. | Pour exécuter la destruction planifiée de votre infrastructure de jeux de AWS Supply Chain données à l'aide du plan généré, exécutez la commande suivante :<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Supprimez les sorties Terraform du compartiment d'artefacts Amazon S3 Terraform. | Pour terminer le processus de nettoyage, supprimez le fichier de sortie qui a été chargé lors du déploiement de `ASC-Datasets` en exécutant la commande suivante :<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

## Résolution des problèmes
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Un AWS Supply Chain ensemble de données ou un flux d'intégration n'a pas été déployé correctement en raison d'erreurs AWS Supply Chain internes ou d'autorisations IAM insuffisantes pour le rôle de service. | Tout d'abord, nettoyez toutes les ressources. Redéployez ensuite les [ressources du AWS Supply Chain jeu de données](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/README.md), puis redéployez les ressources du [flux AWS Supply Chain d'intégration](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/README.md). | 
| Le flux AWS Supply Chain d'intégration ne récupère pas les nouveaux fichiers de données chargés pour les AWS Supply Chain ensembles de données. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | 

## Ressources connexes
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-resources"></a>

**AWS documentation**
+ [AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)

**Autres ressources**
+ [Comprendre GitHub les flux de travail liés aux actions](https://docs.github.com/en/actions/get-started/understand-github-actions) (GitHub documentation)

## Informations supplémentaires
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-additional"></a>

Cette solution peut être répliquée pour un plus grand nombre d'ensembles de données et peut être interrogée pour une analyse plus approfondie, via des tableaux de bord prédéfinis fournis ou une intégration AWS Supply Chain personnalisée avec Amazon Quick Sight. En outre, vous pouvez utiliser Amazon Q pour poser des questions relatives à votre AWS Supply Chain instance.

**Analyser les données avec AWS Supply Chain Analytics**

Pour obtenir des instructions sur la configuration AWS Supply Chain d'Analytics, consultez la section [Configuration AWS Supply Chain d'Analytics](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/setting_analytics.html) dans la AWS Supply Chain documentation.

Ce modèle a démontré la création des ensembles de données **Calendar** et **Outbound\$1Order\$1Line**. Pour créer une analyse utilisant ces ensembles de données, procédez comme suit :

1. Pour analyser les ensembles de données, utilisez le tableau de bord d'**analyse de la saisonnalité**. Pour ajouter le tableau de bord, suivez les étapes décrites dans la section [Tableaux de bord prédéfinis](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/prebuilt_dashboards.html) de la AWS Supply Chain documentation.

1. Choisissez le tableau de bord pour voir son analyse basée sur des exemples de fichiers CSV pour les données du calendrier et les données des lignes de commande sortantes.

Le tableau de bord fournit des informations à la demande au fil des ans sur la base des données ingérées pour les ensembles de données. Vous pouvez également spécifier le ProductID, le CustomerID, les années et d'autres paramètres pour l'analyse.

**Utilisez Amazon Q pour poser des questions relatives à votre AWS Supply Chain instance**

[Amazon Q in AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) est un assistant IA génératif interactif qui vous aide à gérer votre chaîne d'approvisionnement de manière plus efficace. Amazon Q peut effectuer les opérations suivantes :
+ Analysez les données de votre lac AWS Supply Chain de données.
+ Fournissez des informations opérationnelles et financières.
+ Répondez à vos questions immédiates sur la chaîne d'approvisionnement.

Pour plus d'informations sur l'utilisation d'Amazon Q, consultez les [sections Activation d'Amazon Q dans AWS Supply Chain](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/enabling_QinASC.html) et [Utilisation d'Amazon Q AWS Supply Chain dans](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/using_QinASC.html) la AWS Supply Chain documentation.

# Automatisez l'évaluation des ressources AWS
<a name="automate-aws-resource-assessment"></a>

*Naveen Suthar, Arun Bagal, Manish Garg et Sandeep Gawande, Amazon Web Services*

## Résumé
<a name="automate-aws-resource-assessment-summary"></a>

Ce modèle décrit une approche automatisée pour configurer les fonctionnalités d'évaluation des ressources à l'aide de l'[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html). En utilisant ce modèle, les équipes opérationnelles collectent les détails de l'audit des ressources de manière automatisée et consultent les détails de toutes les ressources déployées dans un compte AWS sur un tableau de bord unique. Cela est utile dans les cas d'utilisation suivants :
+ Identifier les outils d'infrastructure en tant que code (IaC) et isoler les ressources créées par différentes solutions IaC telles que [HashiCorp Terraform,](https://www.terraform.io/) AWS[, CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) AWS CDK et AWS [Command Line Interface (AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) CLI)
+ Récupération des informations relatives à l'audit des ressources

Cette solution aidera également l'équipe de direction à obtenir des informations sur les ressources et les activités d'un compte AWS à partir d'un tableau de bord unique. 


| 
| 
| Remarque : [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) est un service payant. Avant de l'exécuter pour analyser les données et créer un tableau de bord, consultez les [tarifs d'Amazon Quick Sight](https://aws.amazon.com/quicksight/pricing/). | 
| --- |

## Conditions préalables et limitations
<a name="automate-aws-resource-assessment-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Rôles et autorisations AWS Identity and Access Management (IAM) avec accès aux ressources de provisionnement
+ [Un [compte Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html) créé avec accès à [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) et Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)
+ AWS CDK version 2.55.1 ou ultérieure installée 
+ [Python](https://www.python.org/downloads/release/python-390/) version 3.9 ou ultérieure installée

**Limites**
+ Cette solution est déployée sur un seul compte AWS.
+ La solution ne suivra pas les événements survenus avant son déploiement, sauf si AWS CloudTrail a déjà été configuré et stocké des données dans un compartiment S3.

**Versions du produit**
+ AWS CDK version 2.55.1 ou ultérieure
+ Python version 3.9 ou ultérieure

## Architecture
<a name="automate-aws-resource-assessment-architecture"></a>

**Pile technologique cible**
+ Amazon Athena
+ AWS CloudTrail
+ AWS Glue
+ AWS Lambda
+ Amazon Quick Sight
+ Amazon S3

**Architecture cible**

Le code AWS CDK déploiera toutes les ressources nécessaires pour configurer les fonctionnalités d'évaluation des ressources dans un compte AWS. Le schéma suivant montre le processus d'envoi de CloudTrail journaux vers AWS Glue, Amazon Athena et Quick Sight.

![\[Évaluation des ressources AWS avec AWS Glue, Amazon Athena et Amazon dans le cadre d'un processus QuickSight en six étapes.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a504774e-db7a-4c36-a22c-ce56d252fb58/images/8f2b549d-33a8-4cbf-86fd-33244716b668.png)


1. CloudTrail envoie les journaux vers un compartiment S3 à des fins de stockage.

1. Une notification d'événement invoque une fonction Lambda qui traite les journaux et génère des données filtrées.

1. Les données filtrées sont stockées dans un autre compartiment S3.

1. Un robot d'exploration AWS Glue est configuré sur les données filtrées qui se trouvent dans le compartiment S3 afin de créer un schéma dans la table du catalogue de données AWS Glue.

1. Les données filtrées sont prêtes à être consultées par Amazon Athena.

1. Les données demandées sont accessibles par Quick Sight à des fins de visualisation.

**Automatisation et mise à l'échelle**
+ Cette solution peut être étendue d'un compte AWS à plusieurs comptes AWS s'il existe une CloudTrail piste à l'échelle de l'organisation dans AWS Organizations. En déployant CloudTrail au niveau de l'organisation, vous pouvez également utiliser cette solution pour récupérer les détails de l'audit des ressources pour toutes les ressources requises.
+ Ce modèle utilise les ressources sans serveur AWS pour déployer la solution.

## Outils
<a name="automate-aws-resource-assessment-tools"></a>

**Services AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur les comptes AWS et les régions AWS.
+ [AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) vous CloudTrail aide à auditer la gouvernance, la conformité et le risque opérationnel de votre compte AWS.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données. Ce modèle utilise un robot d'exploration AWS Glue et une table du catalogue de données AWS Glue.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) est un service de business intelligence (BI) à l'échelle du cloud qui vous permet de visualiser, d'analyser et de rapporter vos données dans un tableau de bord unique.
+ [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.

**Référentiel de code**

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

Le référentiel de code contient les fichiers et dossiers suivants :
+ `lib`dossier — Le CDK AWS construit des fichiers Python utilisés pour créer des ressources AWS
+ `src/lambda_code`— Le code Python exécuté dans la fonction Lambda
+ `requirements.txt`— La liste de toutes les dépendances Python qui doivent être installées
+ `cdk.json`— Le fichier d'entrée fournissant les valeurs requises pour faire tourner les ressources

## Bonnes pratiques
<a name="automate-aws-resource-assessment-best-practices"></a>

Configurez la surveillance et les alertes pour la fonction Lambda. Pour plus d'informations, consultez la section [Surveillance et résolution des problèmes des fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Pour connaître les meilleures pratiques générales relatives à l'utilisation des fonctions Lambda, consultez la documentation [AWS](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Épopées
<a name="automate-aws-resource-assessment-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le dépôt sur votre machine locale. | Pour cloner le référentiel, exécutez la commande `git clone https://github.com/aws-samples/infrastructure-assessment-iac-automation.git`. | AWS DevOps, DevOps ingénieur | 
| Configurez l'environnement virtuel Python et installez les dépendances requises. | Pour configurer l'environnement virtuel Python, exécutez les commandes suivantes.<pre>cd infrastructure-assessment-iac-automation<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Pour configurer les dépendances requises, exécutez la commande`pip install -r requirements.txt`. | AWS DevOps, DevOps ingénieur | 
| Configurez l'environnement AWS CDK et synthétisez le code AWS CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps ingénieur | 

### Configurer les informations d'identification AWS sur votre machine locale
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exportez des variables pour le compte et la région où la pile sera déployée. | Pour fournir des informations d'identification AWS pour AWS CDK à l'aide de variables d'environnement, exécutez les commandes suivantes.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | AWS DevOps, DevOps ingénieur | 
| Configurez le profil de la CLI AWS. | Pour configurer le profil de la CLI AWS pour le compte, suivez les instructions de la [documentation AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html). | AWS DevOps, DevOps ingénieur | 

### Configuration et déploiement de l'outil d'évaluation des ressources
<a name="configure-and-deploy-the-resource-assessment-tool"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez des ressources dans le compte. | Pour déployer des ressources dans le compte AWS à l'aide d'AWS CDK, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps | 
| Exécutez le robot d'exploration AWS Glue et créez la table du catalogue de données. | Un [robot d'exploration AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) est utilisé pour maintenir le schéma de données dynamique. La solution crée et met à jour des partitions dans la [table du catalogue de données AWS Glue](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html) en exécutant régulièrement le robot d'exploration, comme défini par le planificateur de robots d'exploration AWS Glue. Une fois les données disponibles dans le compartiment S3 de sortie, procédez comme suit pour exécuter le robot d'exploration AWS Glue et créer le schéma de table du catalogue de données à des fins de test :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)Le code AWS CDK configure le robot d'exploration AWS Glue pour qu'il s'exécute à un moment précis, mais vous pouvez également l'exécuter à la demande. | AWS DevOps, DevOps ingénieur | 
| Déployez la construction Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps ingénieur | 
| Créez le tableau de bord Quick Sight. | Pour créer l'exemple de tableau de bord et d'analyse Quick Sight, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html)Pour plus d'informations, consultez [Démarrer une analyse dans Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/creating-an-analysis.html) et [Types visuels dans Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/working-with-visual-types.html). | AWS DevOps, DevOps ingénieur | 

### Nettoyez toutes les ressources AWS de la solution
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps ingénieur | 

### Configurez des fonctionnalités supplémentaires en plus de l'automatisation de l'outil d'évaluation des ressources AWS
<a name="set-up-additional-features-on-top-of-the-aws-resource-assessment-tool-automation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Surveillez et nettoyez les ressources créées manuellement. | (Facultatif) Si votre organisation a des exigences de conformité pour créer des ressources à l'aide des outils IaC, vous pouvez garantir la conformité en utilisant l'automatisation des outils d'évaluation des ressources AWS pour récupérer les ressources provisionnées manuellement. Vous pouvez également utiliser l'outil pour importer les ressources dans un outil IaC ou pour les recréer. Pour surveiller les ressources provisionnées manuellement, effectuez les tâches de haut niveau suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-resource-assessment.html) | AWS DevOps, DevOps ingénieur | 

## Résolution des problèmes
<a name="automate-aws-resource-assessment-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| AWS CDK renvoie des erreurs. | Pour obtenir de l'aide concernant les problèmes liés au CDK AWS, consultez la section [Résolution des problèmes courants liés au CDK AWS](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html). | 

## Ressources connexes
<a name="automate-aws-resource-assessment-resources"></a>
+ [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Commencez avec AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Utilisation d'AWS CDK en Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Création d'un CloudTrail journal](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Commencez avec Amazon Quick Sight](https://aws.amazon.com/quicksight/getting-started/)

## Informations supplémentaires
<a name="automate-aws-resource-assessment-additional"></a>

**Comptes multiples**

Pour configurer les informations d'identification de la CLI AWS pour plusieurs comptes, utilisez les profils AWS. Pour plus d'informations, consultez la section *Configurer plusieurs profils* dans [Configuration de l'interface de ligne de commande AWS](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/).

**Commandes AWS CDK**

Lorsque vous travaillez avec AWS CDK, gardez à l'esprit les commandes utiles suivantes :
+ Répertorie toutes les piles de l'application

  ```
  cdk ls
  ```
+ Émet le modèle AWS synthétisé CloudFormation 

  ```
  cdk synth
  ```
+ Déploie la pile sur votre compte AWS et votre région par défaut

  ```
  cdk deploy
  ```
+ Compare la pile déployée avec l'état actuel

  ```
  cdk diff
  ```
+ Ouvre la documentation du kit AWS CDK

  ```
  cdk docs
  ```

# Installez automatiquement les systèmes SAP à l'aide d'outils open source
<a name="install-sap-systems-automatically-by-using-open-source-tools"></a>

*Guilherme Sesterheim, Amazon Web Services*

## Résumé
<a name="install-sap-systems-automatically-by-using-open-source-tools-summary"></a>

Ce modèle montre comment automatiser l'installation des systèmes SAP en utilisant des outils open source pour créer les ressources suivantes :
+ Une base de données SAP S/4HANA 1909
+ Une instance des services centraux SAP ABAP (ASCS)
+ Une instance du serveur d'applications principal (PAS) SAP

HashiCorp Terraform crée l'infrastructure du système SAP et Ansible configure le système d'exploitation (OS) et installe les applications SAP. Jenkins exécute l'installation.

Cette configuration transforme l'installation des systèmes SAP en un processus reproductible, ce qui peut contribuer à améliorer l'efficacité et la qualité du déploiement.

**Note**  
L'exemple de code fourni dans ce modèle fonctionne à la fois pour les systèmes à haute disponibilité (HA) et pour les systèmes non HA.

## Conditions préalables et limitations
<a name="install-sap-systems-automatically-by-using-open-source-tools-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un bucket Amazon Simple Storage Service (Amazon S3) contenant tous vos fichiers multimédia SAP
+ Un responsable d'AWS Identity and Access Management (IAM) doté d'une [clé d'accès et d'une clé secrète](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) et disposant des autorisations suivantes :
  + **Autorisations en lecture seule :** Amazon Route 53, AWS Key Management Service (AWS KMS)
  + **Autorisations de lecture et d'écriture :** Amazon S3, Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic File System (Amazon EFS), IAM, Amazon CloudWatch, Amazon DynamoDB
+ Une [zone hébergée privée sur](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) la Route 53
+ Un abonnement à [Red Hat Enterprise Linux pour SAP avec HA et Update Services 8.2](https://aws.amazon.com/marketplace/pp/prodview-5grz5a5thx7c2) Amazon Machine Image (AMI) sur Amazon Marketplace
+ Une [clé gérée par le client AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#aws-managed-customer-managed-keys)
+ Une [paire de clés Secure Shell (SSH)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)
+ **Un [groupe EC2 de sécurité Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) qui autorise la connexion SSH sur le port 22 à partir du nom d'hôte sur lequel vous installez Jenkins (le nom d'hôte est probablement localhost)**
+ [Vagrant](https://www.vagrantup.com/) by HashiCorp installé et configuré
+ [VirtualBox](https://www.virtualbox.org/)installé et configuré par Oracle
+ Connaissance de Git, Terraform, Ansible et Jenkins

**Limites**
+ Seul SAP S/4HANA 1909 est entièrement testé pour ce scénario spécifique. L'exemple de code Ansible de ce modèle doit être modifié si vous utilisez une autre version de SAP HANA.
+ L'exemple de procédure décrit dans ce modèle fonctionne pour les systèmes d'exploitation Mac OS et Linux. Certaines commandes ne peuvent être exécutées que sur des terminaux UNIX. Cependant, vous pouvez obtenir un résultat similaire en utilisant des commandes différentes et un système d'exploitation Windows.

**Versions du produit**
+ SPA S/4HANA 1909
+ Red Hat Enterprise Linux (RHEL) 8.2 ou versions supérieures

## Architecture
<a name="install-sap-systems-automatically-by-using-open-source-tools-architecture"></a>

Le schéma suivant montre un exemple de flux de travail qui utilise des outils open source pour automatiser l'installation des systèmes SAP dans un compte AWS :

![\[Un exemple de flux de travail utilise des outils open source pour automatiser l'installation des systèmes SAP dans un compte AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/aaf11dac-38cc-4e89-be86-51d4409cf238/images/d7902f9d-f1be-461f-b69b-cf3c663c8f2f.png)


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

1. Jenkins orchestre l'installation du système SAP en exécutant le code Terraform et Ansible.

1. Le code Terraform construit l'infrastructure du système SAP.

1. Le code Ansible configure le système d'exploitation et installe les applications SAP.

1. Une base de données SAP S/4HANA 1909, une instance ASCS et une instance PAS incluant tous les prérequis définis sont installées sur une instance Amazon. EC2 

**Note**  
L'exemple de configuration de ce modèle crée automatiquement un compartiment Amazon S3 dans votre compte AWS pour stocker le fichier d'état Terraform.

**Pile technologique**
+ Terraform
+ Ansible
+ Jenkins
+ Une base de données SAP S/4HANA 1909
+ Une instance SAP ASCS
+ Une instance SAP PAS
+ Amazon EC2 

## Outils
<a name="install-sap-systems-automatically-by-using-open-source-tools-tools"></a>

**Services AWS**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/?id=docs_gateway) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les faire rapidement évoluer vers le haut ou vers le bas.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques pour protéger vos données.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est une application d'interface en ligne de commande qui vous aide à utiliser du code pour provisionner et gérer l'infrastructure et les ressources du cloud.
+ [Ansible](https://www.ansible.com/) est un outil open source de configuration sous forme de code (CAc) qui permet d'automatiser les applications, les configurations et l'infrastructure informatique.
+ [Jenkins](https://www.jenkins.io/) est un serveur d'automatisation open source qui permet aux développeurs de créer, de tester et de déployer leurs logiciels.

**Code**

Le code de ce modèle est disponible dans le dépôt GitHub [aws-install-sap-with-jenkins-ansible](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible).

## Épopées
<a name="install-sap-systems-automatically-by-using-open-source-tools-epics"></a>

### Configuration des prérequis
<a name="configure-the-prerequisites"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez vos fichiers multimédia SAP à un compartiment Amazon S3. | [Créez un compartiment Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) contenant tous vos fichiers multimédia SAP.Assurez-vous de suivre la hiérarchie des dossiers de l'AWS Launch Wizard pour **S/4HANA** dans la documentation de [Launch](https://docs.aws.amazon.com/launchwizard/latest/userguide/launch-wizard-sap-software-install-details.html) Wizard. | Administrateur du cloud | 
| Installez VirtualBox. | Installation et configuration [VirtualBox](https://www.virtualbox.org/)par Oracle. | DevOps ingénieur | 
| Installez Vagrant. | Installez et configurez [Vagrant](https://www.vagrantup.com/) par HashiCorp. | DevOps ingénieur | 
| Configurez votre compte AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | AWS général | 

### Créez et exécutez votre installation SAP
<a name="build-and-run-your-sap-installation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel de code depuis GitHub. | Clonez le dépôt [aws-install-sap-with-jenkins-ansible](https://github.com/aws-samples/aws-install-sap-with-jenkins-ansible) sur. GitHub | DevOps ingénieur | 
| Démarrez le service Jenkins. | Ouvrez le terminal Linux. Accédez ensuite au dossier local qui contient le dossier du référentiel de code cloné et exécutez la commande suivante :<pre>sudo vagrant up</pre>Le démarrage de Jenkins prend environ 20 minutes. La commande renvoie un message « **Service is up and running** » en cas de succès. | DevOps ingénieur | 
| Ouvrez Jenkins dans un navigateur Web et connectez-vous. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html) | DevOps ingénieur | 
| Configurez les paramètres d'installation de votre système SAP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)Vous pouvez configurer les autres paramètres non obligatoires selon vos besoins, en fonction de votre cas d'utilisation. Par exemple, vous pouvez modifier l'ID système SAP (SID) des instances, le mot de passe par défaut, les noms et les balises de votre système SAP. Toutes les variables requises ont **(Obligatoire)** au début de leur nom. | Administrateur système AWS, DevOps ingénieur | 
| Lancez l'installation de votre système SAP. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/install-sap-systems-automatically-by-using-open-source-tools.html)Pour plus d'informations sur les étapes du pipeline, consultez la section **Comprendre les étapes du pipeline** de la section [Automatisation de l'installation de SAP avec des outils open source](https://aws.amazon.com/blogs/awsforsap/automating-sap-installation-with-open-source-tools/) sur le blog AWS.En cas d'erreur, déplacez votre curseur sur la case d'erreur rouge qui apparaît et choisissez **Logs**. Les journaux de l'étape du pipeline qui a donné lieu à une erreur apparaissent. La plupart des erreurs sont dues à des réglages de paramètres incorrects. | DevOps ingénieur, administrateur système AWS | 

## Ressources connexes
<a name="install-sap-systems-automatically-by-using-open-source-tools-resources"></a>
+ [DevOps pour SAP — Installation de SAP : de 2 mois à 2 heures](https://videos.itrevolution.com/watch/707351918/) (vidéothèque DevOps Enterprise Summit)

# Automatisez le déploiement du portefeuille et des produits AWS Service Catalog à l'aide d'AWS CDK
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk"></a>

*Sandeep Gawande, Viyoma Sachdeva et RAJNEESH TYAGI, Amazon Web Services*

## Résumé
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-summary"></a>

AWS Service Catalog vous permet de gérer de manière centralisée les catalogues de services ou de *produits* informatiques dont l'utilisation est approuvée dans l'environnement AWS de votre organisation. Un ensemble de produits est appelé *portefeuille*, et un portefeuille contient également des informations de configuration. Avec AWS Service Catalog, vous pouvez créer un portefeuille personnalisé pour chaque type d'utilisateur de votre organisation, puis accorder l'accès au portefeuille approprié. Ces utilisateurs peuvent ensuite déployer rapidement tous les produits dont ils ont besoin au sein du portefeuille.

Si vous disposez d'une infrastructure réseau complexe, telle que des architectures multirégions et multicomptes, il est recommandé de créer et de gérer les portefeuilles Service Catalog dans un seul compte central. Ce modèle décrit comment utiliser AWS Cloud Development Kit (AWS CDK) pour automatiser la création de portefeuilles Service Catalog dans un compte central, autoriser les utilisateurs finaux à y accéder, puis, éventuellement, fournir des produits sur un ou plusieurs comptes AWS cibles. Cette ready-to-use solution crée les portefeuilles Service Catalog dans le compte source. Il fournit également, en option, des produits dans des comptes cibles à l'aide d'AWS CloudFormation Stacks et vous aide à configurer TagOptions les produits :
+ **AWS CloudFormation StackSets** — Vous pouvez les utiliser StackSets pour lancer des produits Service Catalog dans plusieurs régions et comptes AWS. Dans cette solution, vous avez la possibilité de provisionner automatiquement les produits lorsque vous déployez cette solution. Pour plus d'informations, consultez [Using AWS CloudFormation StackSets](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html) (documentation Service Catalog) et [StackSets concepts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation documentation).
+ **TagOption bibliothèque** — Vous pouvez gérer les balises des produits approvisionnés à l'aide de la TagOption bibliothèque. A *TagOption*est une paire clé-valeur gérée dans AWS Service Catalog. Il ne s'agit pas d'une balise AWS, mais elle sert de modèle pour créer une balise AWS basée sur le TagOption. Pour plus d'informations, consultez [TagOption la bibliothèque](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/tagoptions.html) (documentation Service Catalog).

## Conditions préalables et limitations
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif que vous souhaitez utiliser comme compte source pour administrer les portefeuilles Service Catalog.
+ Si vous utilisez cette solution pour approvisionner des produits sur un ou plusieurs comptes cibles, le compte cible doit déjà exister et être actif.
+ Autorisations AWS Identity and Access Management (IAM) pour accéder à AWS Service Catalog CloudFormation, AWS et AWS IAM.

**Versions du produit**
+ Version 2.27.0 du kit de développement logiciel AWS

## Architecture
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-architecture"></a>

**Pile technologique cible**
+ Portefeuilles Service Catalog dans un compte AWS centralisé
+ Produits Service Catalog déployés sur le compte cible

**Architecture cible**

![\[AWS CDK crée des portefeuilles Service Catalog et fournit des produits sur le compte cible.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e8f217a7-aec4-4c85-8f6b-f91995506be0/images/1f027b82-14c3-485a-909b-1544e974b90a.png)


1. Dans le compte portfolio (ou *source*), vous mettez à jour le fichier **config.json** avec le compte AWS, la région AWS, le rôle IAM, le portefeuille et les informations sur le produit correspondant à votre cas d'utilisation.

1. Vous déployez l'application AWS CDK.

1. L'application AWS CDK assume le rôle IAM de déploiement et crée les portefeuilles et les produits Service Catalog définis dans le **fichier config.json**.

   Si vous avez configuré StackSets pour déployer des produits dans un compte cible, le processus se poursuit. Si vous n'avez pas configuré StackSets pour approvisionner des produits, le processus est terminé.

1. L'application AWS CDK assume le rôle d'**StackSet administrateur** et déploie le CloudFormation stack set AWS que vous avez défini dans le **fichier config.json**.

1. Dans le compte cible, StackSets assume le rôle **StackSet d'exécution** et approvisionne les produits.

## Outils
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre application AWS CDK.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) vous permet de gérer de manière centralisée les catalogues de services informatiques approuvés pour AWS. Les utilisateurs finaux peuvent déployer rapidement uniquement les services informatiques approuvés dont ils ont besoin, en respectant les contraintes définies par votre organisation.

**Référentiel de code**

Le code de ce modèle est disponible sur GitHub, dans le [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git)référentiel. Le référentiel de code contient les fichiers et dossiers suivants :
+ **cdk-sevicecatalog-app**— Ce dossier contient l'application AWS CDK pour cette solution.
+ **config** — Ce dossier contient le fichier **config.json** et le CloudFormation modèle de déploiement des produits du portefeuille Service Catalog.
+ **config/config.json** — Ce fichier contient toutes les informations de configuration. Vous mettez à jour ce fichier pour personnaliser cette solution en fonction de votre cas d'utilisation.
+ **config/templates** — Ce dossier contient les CloudFormation modèles pour les produits Service Center.
+ **setup.sh** — Ce script déploie la solution.
+ **uninstall.sh** — Ce script supprime la pile et toutes les ressources AWS créées lors du déploiement de cette solution.

Pour utiliser l'exemple de code, suivez les instructions de la section [Epics](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics).

## Bonnes pratiques
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-best-practices"></a>
+ Les rôles IAM utilisés pour déployer cette solution doivent respecter le [principe du moindre privilège (documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) IAM).
+ Respectez les [meilleures pratiques pour développer des applications cloud avec AWS CDK](https://aws.amazon.com/blogs/devops/best-practices-for-developing-cloud-applications-with-aws-cdk/) (article de blog AWS).
+ Respectez les [ CloudFormation meilleures pratiques d'AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/best-practices.html) (CloudFormation documentation).

## Épopées
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez le kit d'outils AWS CDK. | Assurez-vous qu'AWS CDK Toolkit est installé. Entrez la commande suivante pour vérifier s'il est installé et vérifier la version. <pre>cdk --version</pre>Si AWS CDK Toolkit n'est pas installé, entrez la commande suivante pour l'installer.<pre>npm install -g aws-cdk@2.27.0</pre>Si la version d'AWS CDK Toolkit est antérieure à 2.27.0, entrez la commande suivante pour la mettre à jour vers la version 2.27.0.<pre>npm install -g aws-cdk@2.27.0 --force</pre> | AWS DevOps, DevOps ingénieur | 
| Pour cloner le référentiel. | Entrez la commande suivante. Dans *Cloner le référentiel*, dans la section [Informations supplémentaires](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional), vous pouvez copier la commande complète contenant l'URL du référentiel. Cela clone le [aws-cdk-servicecatalog-automation](https://github.com/aws-samples/aws-cdk-servicecatalog-automation)dépôt à partir de. GitHub<pre>git clone <repository-URL>.git</pre>Cela crée un `cd aws-cdk-servicecatalog-automation` dossier dans le répertoire cible. Entrez la commande suivante pour accéder à ce dossier.<pre>cd aws-cdk-servicecatalog-automation</pre> | AWS DevOps, DevOps ingénieur | 
| Configurez les informations d'identification AWS. | Entrez les commandes suivantes : Ils exportent les variables suivantes, qui définissent le compte AWS et la région dans lesquels vous déployez la pile.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number></pre><pre>export CDK_DEFAULT_REGION=<AWS Region></pre>Les informations d'identification AWS pour AWS CDK sont fournies par le biais de variables d'environnement. | AWS DevOps, DevOps ingénieur | 
| Configurez les autorisations pour les rôles IAM des utilisateurs finaux. | Si vous comptez utiliser des rôles IAM pour accorder l'accès au portefeuille et aux produits qu'il contient, les rôles doivent disposer d'autorisations pour être assumés par le principal du **service servicecatalog.amazonaws.com**. Pour savoir comment accorder ces autorisations, consultez [Enabling trusted access with Service Catalog](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-servicecatalog.html#integrate-enable-ta-servicecatalog) (documentation AWS Organizations). | AWS DevOps, DevOps ingénieur | 
| Configurez les rôles IAM requis par StackSets. | Si vous avez l'habitude StackSets de provisionner automatiquement des produits dans des comptes cibles, vous devez configurer les rôles IAM qui administrent et exécutent le stack set.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS DevOps, DevOps ingénieur | 

### Personnalisez et déployez la solution
<a name="customize-and-deploy-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les CloudFormation modèles. | Dans le `config/templates` dossier, créez des CloudFormation modèles pour tous les produits que vous souhaitez inclure dans vos portefeuilles. Pour plus d'informations, consultez la section [Utilisation des CloudFormation modèles AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) (CloudFormation documentation). | Développeur d'applications, AWS DevOps, DevOps ingénieur | 
| Personnalisez le fichier de configuration. | Dans le `config` dossier, ouvrez le fichier **config.json** et définissez les paramètres adaptés à votre cas d'utilisation. Les paramètres suivants sont obligatoires, sauf indication contraire :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Pour un exemple de fichier de configuration terminé, voir *Exemple de fichier de configuration* dans la section [Informations supplémentaires](#automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional). | Développeur d'applications, DevOps ingénieur, AWS DevOps | 
| Déployez la solution. | Entrez la commande suivante. Cela permet de déployer l'application AWS CDK et de provisionner les portefeuilles et les produits Service Catalog comme indiqué dans le **fichier config.json**.<pre>sh +x setup.sh</pre> | Développeur d'applications, DevOps ingénieur, AWS DevOps | 
| Vérifier le déploiement. | Vérifiez la réussite du déploiement en procédant comme suit : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html) | AWS général | 
| (Facultatif) Mettez à jour les portefeuilles et les produits. | Si vous souhaitez utiliser cette solution pour mettre à jour les portefeuilles ou les produits ou pour fournir de nouveaux produits :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.html)Par exemple, vous pouvez ajouter des portefeuilles supplémentaires ou allouer davantage de ressources. L'application AWS CDK implémente uniquement les modifications. Si aucune modification n'est apportée aux portefeuilles ou aux produits précédemment déployés, le redéploiement ne les affectera pas. | Développeur d'applications, DevOps ingénieur, AWS général | 

### Nettoyez la solution
<a name="clean-up-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| (Facultatif) Supprimez les ressources AWS déployées par cette solution. | Si vous souhaitez supprimer un produit approvisionné, suivez les instructions de la section [Supprimer des produits approvisionnés](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) (documentation Service Catalog).Si vous souhaitez supprimer toutes les ressources créées par cette solution, entrez la commande suivante.<pre>sh uninstall.sh</pre> | AWS DevOps, DevOps ingénieur, développeur d'applications | 

## Ressources connexes
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-resources"></a>
+ [Bibliothèque AWS Service Catalog Construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_servicecatalog-readme.html) (référence d'API AWS)
+ [StackSets concepts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) (CloudFormation documentation)
+ [AWS Service Catalog](https://aws.amazon.com/servicecatalog) (AWS marketing)
+ [Utilisation du Service Catalog avec le kit AWS CDK](https://catalog.us-east-1.prod.workshops.aws/workshops/d40750d7-a330-49be-9945-cde864610de9/en-US/4-builders-devs/sc-cdk) (atelier AWS)

## Informations supplémentaires
<a name="automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk-additional"></a>

**Cloner le référentiel**

Entrez la commande suivante pour cloner le référentiel GitHub.

```
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
```

**Exemple de fichier de configuration**

Voici un exemple de fichier **config.json** avec des exemples de valeurs.

```
{
    "portfolios": [
        {
            "displayName": "EC2 Product Portfolio",
            "providerName": "User1",
            "description": "Test1",
            "roles": [
                "<Names of IAM roles that can access the products>"
            ],
            "users": [
                "<Names of IAM users who can access the products>"
            ],
            "groups": [
                "<Names of IAM user groups that can access the products>"
            ]
        },
        {
            "displayName": "Autoscaling Product Portfolio",
            "providerName": "User2",
            "description": "Test2",
            "roles": [
                "<Name of IAM role>"
            ]
        }
    ],
    "tagOption": [
        {
            "key": "Group",
            "value": [
                "finance",
                "engineering",
                "marketing",
                "research"
            ]
        },
        {
            "key": "CostCenter",
            "value": [
                "01",
                "02",
                "03",
                "04"
            ]
        },
        {
            "key": "Environment",
            "value": [
                "dev",
                "prod",
                "stage"
            ]
        }
    ],
    "products": [
        {
            "portfolioName": "EC2 Product Profile",
            "productName": "Ec2",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template1.json"
        },
        {
            "portfolioName": "Autoscaling Product Profile",
            "productName": "autoscaling",
            "owner": "owner1",
            "productVersionName": "v1",
            "templatePath": "../../config/templates/template2.json",
            "deployWithStackSets": {
                "accounts": [
                    "012345678901",
                ],
                "regions": [
                    "us-west-2"
                ],
                "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole",
                "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole"
            }
        }
    ]
}
```

# Automatisez la gestion dynamique du pipeline pour le déploiement de solutions de correctifs dans les environnements Gitflow en utilisant et AWS Service Catalog AWS CodePipeline
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions"></a>

*Balaji Vedagiri, Faisal Shahdad, Shanmugam Shanker et Vivek Thangamuthu, Amazon Web Services*

## Résumé
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-summary"></a>

**Note**  
AWS CodeCommit n'est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider)

Ce modèle concerne un scénario de gestion d'un pipeline de correctifs dynamiques dédié uniquement au déploiement sécurisé de solutions de correctifs dans un environnement de production. La solution est mise en œuvre et gérée à l'aide d'un AWS Service Catalog portefeuille et d'un produit. Une EventBridge règle Amazon est utilisée pour l'automatisation des événements. Les restrictions sont appliquées en utilisant les contraintes du portefeuille Service Catalog et les rôles Gestion des identités et des accès AWS (IAM) pour les développeurs. Seule une AWS Lambda fonction est autorisée à lancer le produit Service Catalog, déclenchée par la EventBridge règle. Ce modèle est conçu pour les environnements dotés d'une configuration Gitflow spécifique, décrite dans [Informations supplémentaires](#automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional).

Généralement, un correctif est déployé pour résoudre les problèmes critiques ou de sécurité signalés dans un environnement réel, tel que le mode de production. Les correctifs doivent être déployés directement dans les environnements de préparation et de production uniquement. Les pipelines de préparation et de production sont largement utilisés pour les demandes de développement régulières. Ces pipelines ne peuvent pas être utilisés pour déployer des correctifs car certaines fonctionnalités permanentes de l'assurance qualité ne peuvent pas être promues en production. Pour publier des correctifs, ce modèle décrit un pipeline dynamique de courte durée doté des fonctionnalités de sécurité suivantes :
+ **Création automatique** : un pipeline de correctifs est automatiquement créé chaque fois qu'une branche de correctifs est créée dans un AWS CodeCommit référentiel. 
+ **Restrictions d'accès** — Les développeurs n'ont pas accès à la création de ce pipeline en dehors du processus de correctif. 
+ **Étape contrôlée** — Le pipeline possède une étape contrôlée avec un jeton d'accès spécial, ce qui garantit qu'une pull request (PR) ne peut être créée qu'une seule fois. 
+ **Étapes d'**approbation — Les étapes d'approbation sont incluses dans le pipeline pour obtenir les approbations nécessaires des parties prenantes concernées. 
+ **Suppression automatique** — Le pipeline de correctifs est automatiquement supprimé chaque fois qu'une `hotfix` branche est supprimée du CodeCommit référentiel après sa fusion avec un PR. 

## Conditions préalables et limitations
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-prereqs"></a>

**Conditions préalables**
+ Trois actifs Comptes AWS sont requis comme suit :
  + Compte d'outils - Pour la configuration de l'intégration continue et de la livraison continue (CI/CD).
  + Compte Stage : pour les tests d'acceptation par les utilisateurs.
  + Compte de production : pour un utilisateur final professionnel.
  + (Facultatif) Ajoutez un Compte AWS pour faire office de compte QA. Ce compte est requis si vous souhaitez à la fois une configuration de pipeline principal, y compris l'assurance qualité, et une solution de pipeline de correctifs pour les tests.
+ Une AWS CloudFormation pile avec une condition facultative à déployer dans le compte QA à l'aide du pipeline principal, si nécessaire. Le modèle peut toujours être testé sans la configuration du pipeline principal en créant et en supprimant une `hotfix` branche.
+ Un bucket Amazon Simple Storage Service (Amazon S3) pour stocker CloudFormation les modèles utilisés pour créer les produits Service Catalog.
+ Créez des règles d'approbation des relations publiques pour le CodeCommit référentiel conformément aux exigences de conformité (après avoir créé le référentiel).
+ Limitez les autorisations IAM des développeurs et des chefs d'équipe pour refuser l'exécution de la fonction Lambda [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55), car elle ne doit être invoquée que depuis le pipeline.

**Limites**
+ Le CloudFormation fournisseur est utilisé lors de la phase de déploiement, et l'application est déployée à l'aide d'un ensemble de CloudFormation modifications. Si vous souhaitez utiliser une autre option de déploiement, modifiez la CodePipeline pile selon vos besoins.
+ Ce modèle utilise AWS CodeBuild d'autres fichiers de configuration pour déployer un exemple de microservice. Si vous avez un autre type de charge de travail (par exemple, des charges de travail sans serveur), vous devez mettre à jour toutes les configurations pertinentes.
+ Ce modèle déploie l'application en une seule fois Région AWS (par exemple, USA East (Virginie du Nord) us-east-1). Comptes AWS Pour effectuer un déploiement dans plusieurs régions, modifiez la référence de région dans les commandes et les piles.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-architecture"></a>

Les diagrammes de cette section fournissent des flux de travail pour un événement de création de cycle de vie et pour un événement de suppression du cycle de vie.

![\[Flux de travail pour créer un événement du cycle de vie.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/3939f77c-4221-4c23-a3a1-3e8a294b2b32.png)


Le schéma précédent relatif à la création d'un événement du cycle de vie montre ce qui suit :

1. Le développeur crée une `hotfix-*` branche dans le CodeCommit référentiel pour développer une solution liée au correctif.

1. L'événement de création de `hotfix-*` branche est capturé par le biais de la EventBridge règle. Les détails de l'événement incluent le nom du référentiel et le nom de la branche.

1. La EventBridge règle invoque la AWS Lambda fonction. `hotfix-lambda-function` La EventBridge règle transmet les informations d'événement à la fonction Lambda en entrée.

1. La fonction Lambda traite l'entrée pour récupérer le nom du référentiel et le nom de la branche. Il lance le produit Service Catalog avec les valeurs extraites des entrées traitées.

1. Le produit Service Catalog inclut une configuration de pipeline qui déploiera la solution dans les environnements de scène et de production. Le bloc de pipeline inclut les étapes de source, de construction et de déploiement. Il existe également une étape d'approbation manuelle pour promouvoir le déploiement dans l'environnement de production.

1. L'étape source récupère le code du référentiel et de la `hotfix-*` branche créés lors de la première étape. Le code est transmis à la phase de construction via un compartiment Amazon S3 pour les artefacts. Au cours de la phase de construction, une image de conteneur est créée qui inclut le correctif logiciel développé dans la `hotfix-*` branche et introduit dans Amazon Elastic Container Registry (Amazon ECR).

1. De phase de déploiement en phase, l'environnement met à jour Amazon Elastic Container Service (Amazon ECS) avec la dernière image de conteneur incluant le correctif logiciel. Le correctif est déployé en créant et en exécutant un ensemble de CloudFormation modifications.

1. La fonction `prcreation-lambda` Lambda est invoquée après un déploiement réussi dans l'environnement Stage. Cette fonction Lambda crée un PR à partir de la `hotfix-*` branche vers les `main` branches `develop` et du référentiel. La fonction Lambda garantit que le correctif développé dans la `hotfix-*` branche est rétrofusionné et inclus dans les déploiements ultérieurs.

1. Une étape d'approbation manuelle permet de garantir que les parties prenantes concernées examinent le correctif et approuvent le déploiement en production.

1. La phase de déploiement dans l'environnement de production met à jour Amazon ECS avec la dernière image de conteneur incluant le correctif. Le correctif est déployé en créant et en exécutant un ensemble de CloudFormation modifications.

![\[Flux de travail pour supprimer un événement du cycle de vie.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/64311acc-8c0f-4734-aa1b-74345d86c752/images/192aa897-bd9b-4a9f-804e-340371612b3b.png)


Le schéma précédent relatif à la suppression d'un événement du cycle de vie montre ce qui suit :

1. Le développeur supprime la `hotfix-*` branche après le déploiement réussi du correctif dans l'environnement de production.

1. L'événement de suppression de `hotfix-*` branche est capturé par le biais d'une EventBridge règle. Les détails de l'événement incluent le nom du référentiel et le nom de la branche.

1. La EventBridge règle invoque la fonction Lambda. La EventBridge règle transmet les informations d'événement à la fonction Lambda en entrée.

1. La fonction Lambda traite l'entrée pour récupérer le nom du référentiel et le nom de la branche. La fonction Lambda détermine le produit Service Catalog correspondant à partir de l'entrée transmise, puis met fin au produit.

1. La résiliation du produit provisionné par le Service Catalog supprime le pipeline et les ressources pertinentes qui ont été créées précédemment dans ce produit.

**Automatisation et mise à l'échelle**
+ Le modèle inclut une EventBridge règle et une fonction Lambda, qui peuvent gérer plusieurs demandes de création de branche Hotfix en parallèle. La fonction Lambda approvisionne le produit Service Catalog pour la règle d'événement correspondante.
+ La configuration du pipeline est gérée à l'aide du produit Service Catalog, qui fournit des fonctionnalités de contrôle de version. La solution s'adapte également automatiquement pour gérer en parallèle plusieurs développements de correctifs pour la même application.
+ La fonction [prcreation-lambda](https://github.com/aws-samples/dynamic_hotfix_codepipeline/blob/main/pre-requisites/lambdasetup.yaml#L55) garantit que ces modifications du correctif sont également fusionnées dans les `develop` branches `main` et par le biais d'une création automatique de pull request. Cette approche est essentielle pour maintenir les branches `main` et les `develop` branches à jour avec tous les correctifs et éviter d'éventuelles régressions de code. Ce processus permet de maintenir la cohérence entre les branches et d'empêcher les régressions de code en garantissant que toutes les branches à longue durée de vie disposent des derniers correctifs.

## Outils
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-tools"></a>

**Services AWS**
+ [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 à travers Comptes AWS et Régions AWS.
+ [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. AWS CodeCommit n'est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez [Comment migrer votre AWS CodeCommit dépôt vers un autre fournisseur Git](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/).
+ [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 Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)vous permet de gérer de manière centralisée les catalogues de services informatiques approuvés. AWS Les utilisateurs finaux peuvent déployer rapidement uniquement les services informatiques approuvés dont ils ont besoin, en respectant les contraintes définies par votre organisation.
+ [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 outils**
+ [CloudFormation Linter (cfn-lint) est un linter](https://github.com/aws-cloudformation/cfn-lint) [qui vérifie les modèles CloudFormation YAML ou JSON par rapport à la spécification des ressources. CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Il effectue également d'autres contrôles, tels que la vérification de la validité des valeurs des propriétés des ressources et le respect des meilleures pratiques.
+ [cfn-nag](https://github.com/stelligent/cfn_nag) est un outil open source qui identifie les problèmes de sécurité potentiels dans les CloudFormation modèles en recherchant des modèles.
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs. Ce modèle utilise Docker pour créer et tester des images de conteneurs localement.
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué et open source.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [dynamic\$1hotfix\$1codepipeline](https://github.com/aws-samples/dynamic_hotfix_codepipeline).

## Bonnes pratiques
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-best-practices"></a>

Passez en revue et ajustez les rôles IAM et les politiques de contrôle des services (SCP) dans votre environnement afin de vous assurer qu'ils limitent l'accès de manière appropriée. Cela est essentiel pour empêcher toute action susceptible de passer outre aux mesures de sécurité incluses dans ce modèle. Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-epics"></a>

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner l'exemple de [référentiel](https://github.com/aws-samples/dynamic_hotfix_codepipeline) dans un nouveau répertoire de votre lieu de travail, exécutez la commande suivante :<pre>git clone git@github.com:aws-samples/dynamic_hotfix_codepipeline.git</pre> | AWS DevOps | 
| Exportez les variables d'environnement pour le déploiement de la CloudFormation pile. | Définissez les variables d'environnement suivantes qui seront utilisées comme entrée dans les CloudFormation piles ultérieurement dans ce modèle.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export BucketStartName=<BucketName></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>export ProdAccount=<prodaccountnumber><br />export StageAccount=<stage/preprodaccountnumber><br />export QAAccount=<qaccountnumber><br />export ToolsAccount=<toolsaccountnumber><br />export DepRegion=<region></pre> | AWS DevOps | 

### Configurer les prérequis requis dans Comptes AWS
<a name="set-up-prerequisites-required-in-aws-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les ressources nécessaires CI/CD dans le compte d'outils. | Pour déployer la CloudFormation pile dans le compte Tools, utilisez les commandes suivantes. (Supprimez le `QAAccount` paramètre si vous n'utilisez pas le compte QA pour la configuration.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre>Notez les ressources créées par le CodeCommit référentiel et Amazon ECR à partir de la pile précédente. Ces paramètres sont nécessaires pour configurer la `main` branche du pipeline lors des prochaines étapes. | AWS DevOps | 
| Créez les ressources requises pour CI/CD les comptes de charge de travail. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Mettez à jour la politique du compartiment d'artefacts S3 pour autoriser l'accès aux comptes de charge de travail. | Pour mettre à jour les prérequis relatifs à la CloudFormation pile dans le compte d'outils, utilisez les commandes suivantes pour ajouter toutes les autorisations requises pour les comptes de charge de travail de scène et de production. (Supprimez le `QAAccount` paramètre si vous ne l'utilisez pas pour la configuration.)<pre>#InToolsAccount<br />aws cloudformation deploy \<br />    --template-file pre-requisites/pre-reqs.yaml \<br />    --stack-name prereqs \<br />    --parameter-overrides BucketStartName=${BucketStartName} \<br />    ApplicationName=${ApplicationName} ProdAccount=${ProdAccount} \<br />    StageAccount=${StageAccount} ToolsAccount=${ToolsAccount} \<br />    QAAccount=${QAAccount} PutPolicy=true \<br />    --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM --region ${DepRegion}</pre> | AWS DevOps | 

### Configurer la fonction Lambda et les ressources Service Catalog dans le compte d'outils
<a name="set-up-lam-function-and-sc-resources-in-tools-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le portefeuille et les produits du Service Catalog. | Pour configurer le portefeuille et les produits du Service Catalog, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Configurez les fonctions Lambda. | Cette solution utilise les fonctions Lambda suivantes pour gérer les flux de travail liés aux correctifs :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)Pour permettre aux fonctions Lambda de provisionner et de résilier les produits Service Catalog lorsque `hotfix ` des branches sont créées ou supprimées par le biais de la EventBridge règle associée, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Création d'un pipeline pour la succursale principale et déploiement de l'application dans les comptes de charge de travail
<a name="create-pipeline-for-main-branch-and-deploy-application-in-workload-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le pipeline pour `main` la succursale. | Pour configurer le pipeline pour la branche principale, exécutez la commande suivante dans le compte tools. Remplacez les paramètres pour `MainProductId` et par `MainProductArtifactId` les valeurs issues des sorties de la `servicecatalogsetup` pile.<pre>#InToolsAccount<br />aws servicecatalog provision-product \<br />    --product-id <MainProductId> \<br />    --provisioning-artifact-id <MainProductArtifactId> \<br />    --provisioned-product-name "${ApplicationName}-main-pipeline" \<br />    --provisioning-parameters Key=CodeCommitRepoName,Value="${ApplicationName}-repository" Key=ECRRepository,Value="${ApplicationName}-app" \<br />    --region=${DepRegion}</pre> | AWS DevOps | 
| Déployez l'application à l'aide de la `main` branche. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### Créez le pipeline pour une branche hotfix-\$1 et déployez le correctif
<a name="create-the-pipeline-for-a-hotfix--branch-and-deploy-the-hotfix"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une `hotfix-*` branche et validez les modifications. | Pour créer un pipeline pour la `hotfix-*` branche et déployer le correctif sur les comptes de charge de travail, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 
| Supprimez la `hotfix-check1` branche. | Pour supprimer la `hotfix-check1` branche créée précédemment, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html) | AWS DevOps | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez les ressources déployées. | Pour nettoyer les ressources déployées précédemment, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-dynamic-pipeline-management-for-deploying-hotfix-solutions.html)<pre>##In Tools Account##<br />aws cloudformation delete-stack --stack-name servicecatalogsetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prlambdasetup --region ${DepRegion}<br />aws cloudformation delete-stack --stack-name prereqs --region ${DepRegion}</pre><pre>##In Workload Accounts##<br />aws cloudformation delete-stack --stack-name inframainstack --region ${DepRegion}</pre>Pour plus d'informations, consultez [la section Suppression de produits provisionnés](https://docs.aws.amazon.com/servicecatalog/latest/userguide/enduser-delete.html) dans la documentation du Service Catalog. | AWS DevOps | 

## Résolution des problèmes
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les modifications que vous avez apportées au CodeCommit référentiel ne sont pas déployées. | Vérifiez les CodeBuild journaux pour détecter les erreurs lors de l'action de compilation de Docker. Pour plus d’informations, consultez la [documentation CodeBuild ](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html). | 
| Le produit Service Catalog n'est pas approvisionné. | Passez en revue les CloudFormation piles associées pour détecter les événements ayant échoué. Pour plus d’informations, consultez la [documentation CloudFormation ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html). | 

## Ressources connexes
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-resources"></a>
+ [Commandes Git de base](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-basic-git.html)
+ [Configurer une politique IAM pour limiter les transferts et les fusions vers une succursale](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-conditional-branch.html#how-to-conditional-branch-create-policy)
+ [Se connecter à un AWS CodeCommit référentiel](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)
+ [Octroi d'accès aux utilisateurs](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)
+ [Transférer une image Docker vers un référentiel privé Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)
+ [Résolution des problèmes AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html)
+ [Qu'est-ce que c'est AWS CodePipeline ?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)

## Informations supplémentaires
<a name="automate-dynamic-pipeline-management-for-deploying-hotfix-solutions-additional"></a>

Ce modèle est conçu pour les environnements dotés d'une configuration Gitflow qui est adoptée pour le flux de travail de développement au CI/CD cours du processus. Les pipelines suivent le cycle de déploiement qui commence par le développement et passe par les environnements d'assurance qualité (QA), de phase et de production. La CI/CD configuration inclut deux branches git avec des déploiements promotionnels dans les environnements suivants :
+ La `develop` branche se déploie dans l'environnement de développement.
+ La `main` succursale effectue des déploiements dans les environnements d'assurance qualité, de scène et de production.

Dans cette configuration, il est difficile d'appliquer un correctif ou un correctif de sécurité plus rapidement que le cycle de déploiement habituel alors que le développement actif de nouvelles fonctionnalités est en cours. Un processus dédié est nécessaire pour traiter les correctifs ou les demandes de sécurité, afin de garantir le bon fonctionnement et la sécurité des environnements en direct.

Toutefois, vous pouvez utiliser les autres options disponibles sans avoir besoin d'un processus de déploiement dédié si :
+ Le CI/CD processus est bien équipé avec des tests automatisés, tels que des tests fonctionnels et end-to-end des tests, qui éliminent le besoin de tests manuels et évitent les retards dans les déploiements en production. Toutefois, si les tests automatisés ne sont pas bien intégrés au CI/CD processus, apporter une petite correction à l'environnement de production peut s'avérer complexe et fastidieux pour les développeurs. Cela est dû au fait que de nouvelles fonctionnalités peuvent être en attente d'approbation et de validation dans l'environnement d'assurance qualité. Un correctif logiciel ou un correctif de sécurité ne peuvent pas être mis en production de manière simple et simultanée.
+ Les équipes de développement déploient en permanence de nouvelles fonctionnalités dans l'environnement de production, en intégrant des correctifs ou des correctifs de sécurité dans le déploiement planifié de chaque nouvelle fonctionnalité. En d'autres termes, la prochaine mise à jour des fonctionnalités de l'environnement de production comprend deux composants : l'ajout d'une nouvelle fonctionnalité et l'inclusion du correctif logiciel ou du correctif de sécurité. Toutefois, si le cycle de déploiement n'est pas continu, plusieurs nouvelles fonctionnalités peuvent déjà être en attente d'approbation dans l'environnement d'assurance qualité. Gérer les différentes versions et s'assurer que les modifications correctes sont réappliquées peut alors devenir complexe et source d'erreurs.

**Note**  
Si vous utilisez [la version 2](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types.html#:~:text=V2%20type%20pipelines%20have%20the%20same%20structure) de AWS CodePipeline avec des déclencheurs appropriés configurés sur la `hotfix` branche, vous avez toujours besoin d'un processus dédié pour traiter les demandes imprévues. Dans la version 2, vous pouvez configurer des déclencheurs pour les requêtes push ou pull. L'exécution sera soit mise en file d'attente, soit exécutée immédiatement, en fonction de l'état précédent du pipeline. Cependant, avec un pipeline dédié, les correctifs sont appliqués immédiatement à l'environnement de production, ce qui garantit que les problèmes urgents sont résolus sans délai.

# Automatisez la suppression des AWS CloudFormation piles et des ressources associées
<a name="automate-deletion-cloudformation-stacks-associated-resources"></a>

*SANDEEP SINGH et James Jacob, Amazon Web Services*

## Résumé
<a name="automate-deletion-cloudformation-stacks-associated-resources-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)est un service largement utilisé pour gérer l'infrastructure cloud en tant que code (iAc). Lorsque vous utilisez CloudFormation, vous gérez les ressources associées en tant qu'unité unique appelée *pile*. Pour créer, mettre à jour et supprimer un ensemble de ressources, vous créez, mettez à jour et supprimez des piles.

Parfois, vous n'avez plus besoin des ressources d'une CloudFormation pile. En fonction des ressources et de leurs configurations, il peut être compliqué de supprimer une pile et les ressources associées. Dans les systèmes de production réels, les suppressions échouent parfois ou prennent du temps en raison de conditions contradictoires ou de restrictions impossibles à annuler CloudFormation . Cela peut nécessiter une planification et une exécution minutieuses pour s'assurer que toutes les ressources sont correctement supprimées de manière efficace et cohérente. Ce modèle décrit comment configurer une structure qui vous aide à gérer la suppression de CloudFormation piles impliquant les complexités suivantes :
+ **Ressources protégées contre la suppression : la protection contre** la suppression peut être activée sur certaines ressources. Les tables [Amazon DynamoDB et les compartiments Amazon](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) [Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) en sont des exemples courants. La protection contre la suppression empêche la suppression automatique, telle que la suppression via CloudFormation. Si vous souhaitez supprimer ces ressources, vous devez annuler ou désactiver temporairement la protection contre la suppression manuellement ou par programmation. Vous devez examiner attentivement les implications de la suppression de ces ressources avant de continuer.
+ **Ressources soumises à des politiques de rétention** : certaines ressources, telles que les clés AWS Key Management Service (AWS KMS) et les compartiments Amazon S3, peuvent être soumises à des politiques de rétention qui spécifient la durée pendant laquelle elles doivent être conservées après la demande de suppression. Vous devez tenir compte de ces politiques dans la stratégie de nettoyage afin de garantir la conformité aux politiques organisationnelles et aux exigences réglementaires.
+ **Suppression différée des fonctions Lambda associées à un VPC** — La suppression d'une [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fonction attachée à un cloud privé virtuel (VPC) peut prendre 5 à 40 minutes, selon les multiples dépendances interconnectées impliquées dans le processus. Si vous détachez la fonction du VPC avant de supprimer la pile, vous pouvez réduire ce délai à moins d'une minute.
+ **Ressources non directement créées par CloudFormation** : dans certaines conceptions d'applications, les ressources peuvent être créées en dehors de la CloudFormation pile d'origine, soit par l'application elle-même, soit par des ressources fournies via la pile. En voici deux exemples :
  + CloudFormation peut fournir une instance [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) qui exécute un script de données utilisateur. Ce script peut ensuite créer un [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)paramètre pour stocker les données relatives à l'application. Ce paramètre n'est pas géré via CloudFormation.
  + CloudFormation peut fournir une fonction Lambda qui génère automatiquement un groupe [Amazon CloudWatch Logs pour le stockage des journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html). Ce groupe de journaux n'est pas géré via CloudFormation.

  Même si ces ressources ne sont pas directement gérées par CloudFormation, elles ont souvent besoin d'être nettoyées lorsque la pile est supprimée. S'ils ne sont pas gérés, ils peuvent devenir orphelins et entraîner une consommation inutile de ressources.

Bien que ces garde-corps puissent être complexes, ils sont intentionnels et essentiels. CloudFormation Permettre de contourner toutes les contraintes et de supprimer des ressources sans discernement pourrait avoir des conséquences néfastes et imprévues dans de nombreux scénarios. Cependant, en tant DevOps qu'ingénieur cloud responsable de la gestion de l'environnement, il peut parfois être nécessaire de contourner ces contraintes, en particulier dans les environnements de développement, de test ou de test.

**Résultats commerciaux ciblés**

En mettant en œuvre ce cadre, vous pouvez obtenir les avantages suivants :
+ **Gestion des coûts** — Le nettoyage régulier et efficace des environnements temporaires, tels que les environnements de test end-to-end d'acceptation par les utilisateurs, permet d'éviter que les ressources ne s'épuisent plus que nécessaire. Cela permet de réduire considérablement les coûts.
+ **Sécurité** — Le nettoyage automatique des ressources obsolètes ou inutilisées réduit la surface d'attaque et contribue à maintenir un AWS environnement sécurisé.
+ **Efficacité opérationnelle** — Un nettoyage régulier et automatisé peut apporter les avantages opérationnels suivants :
  + Les scripts automatisés qui suppriment les anciens groupes de journaux ou les compartiments Amazon S3 vides peuvent améliorer l'efficacité opérationnelle en préservant la propreté et la gestion de l'environnement.
  + La suppression et la recréation rapides des piles permettent une itération rapide pour la conception et la mise en œuvre, ce qui peut conduire à une architecture plus robuste et résiliente.
  + La suppression et la reconstruction régulières d'environnements peuvent vous aider à identifier et à résoudre les problèmes potentiels. Cela peut vous aider à vous assurer que l'infrastructure peut résister aux scénarios du monde réel.

## Conditions préalables et limitations
<a name="automate-deletion-cloudformation-stacks-associated-resources-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Python version 3.6 ou ultérieure, [installé](https://www.python.org/downloads/)
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Limites**
+ Une convention de dénomination est utilisée pour identifier les ressources qui doivent être supprimées. L'exemple de code de ce modèle utilise un préfixe pour le nom de la ressource, mais vous pouvez définir votre propre convention de dénomination. Les ressources qui n'utilisent pas cette convention de dénomination ne seront pas identifiées ni supprimées ultérieurement.

## Architecture
<a name="automate-deletion-cloudformation-stacks-associated-resources-architecture"></a>

Le schéma suivant montre comment ce framework identifie la CloudFormation pile cible et les ressources supplémentaires qui y sont associées.

![\[Les phases qui découvrent, traitent et suppriment les CloudFormation piles et leurs ressources associées.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/ab7c3b56-3476-41a3-8ece-68915605a546/images/a7fceb1c-d624-47b3-957d-f910ef2f44d7.png)


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

1. **Rassemblez des ressources** : le framework d'automatisation utilise une convention de dénomination pour renvoyer toutes les CloudFormation piles pertinentes, les référentiels Amazon Elastic Container Registry (Amazon ECR), les tables DynamoDB et les compartiments Amazon S3.
**Note**  
Les fonctions de cette étape utilisent des [paginateurs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), une fonctionnalité de Boto3 qui résume le processus d'itération sur un ensemble de résultats d'API tronqué. Cela garantit que toutes les ressources sont traitées. Pour optimiser davantage les performances, envisagez d'appliquer un filtrage [côté serveur](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) ou envisagez de l'utiliser JMESPath pour effectuer un filtrage côté [client](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath).

1. **Prétraitement** — Le cadre d'automatisation identifie et répond aux contraintes de service qui doivent être contournées afin de CloudFormation permettre la suppression des ressources. Par exemple, il modifie le `DeletionProtectionEnabled` paramètre des tables DynamoDB en. `False` Dans l'interface de ligne de commande, pour chaque ressource, vous recevez un message vous demandant si vous souhaitez annuler la contrainte.

1. **Supprimer la pile** : le framework d'automatisation supprime la CloudFormation pile. Dans l'interface de ligne de commande, vous recevez un message vous demandant si vous souhaitez supprimer la pile.

1. **Post-traitement** — Le cadre d'automatisation supprime toutes les ressources associées qui n'ont pas été directement approvisionnées dans le CloudFormation cadre de la pile. Les paramètres de Systems Manager et les groupes de CloudWatch journaux sont des exemples de ces types de ressources. Des fonctions distinctes rassemblent ces ressources, les prétraitent, puis les suppriment. Dans l'interface de ligne de commande, pour chaque ressource, vous recevez un message vous demandant si vous souhaitez supprimer la ressource.
**Note**  
Les fonctions de cette étape utilisent des [paginateurs](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), une fonctionnalité de Boto3 qui résume le processus d'itération sur un ensemble de résultats d'API tronqué. Cela garantit que toutes les ressources sont traitées. Pour optimiser davantage les performances, envisagez d'appliquer un filtrage [côté serveur](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) ou envisagez de l'utiliser JMESPath pour effectuer un filtrage côté [client](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath).

**Automatisation et mise à l'échelle**

Si votre CloudFormation pile inclut d'autres ressources qui ne sont pas incluses dans l'exemple de code, ou si la pile comporte une contrainte qui n'a pas été prise en compte dans ce modèle, vous pouvez adapter le cadre d'automatisation à votre cas d'utilisation. Suivez la même méthodologie de collecte des ressources, de prétraitement, de suppression de la pile, puis de post-traitement.

## Outils
<a name="automate-deletion-cloudformation-stacks-associated-resources-tools"></a>

**Services AWS**
+ [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 à travers Comptes AWS et Régions AWS.
+ [CloudFormation L'interface de ligne de commande (CFN-CLI)](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) est un outil open source qui vous permet de développer et de tester AWS des extensions tierces, puis de les enregistrer pour les utiliser dans. CloudFormation
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.

**Autres outils**
+ [Click](https://click.palletsprojects.com/en/stable/) est un outil Python qui permet de créer des interfaces de ligne de commande.
+ [Poetry](https://python-poetry.org/docs/) est un outil de gestion des dépendances et d'empaquetage en Python.
+ [Pyenv](https://github.com/pyenv/pyenv) est un outil qui vous aide à gérer et à passer d'une version à l'autre de Python.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code**

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

## Bonnes pratiques
<a name="automate-deletion-cloudformation-stacks-associated-resources-best-practices"></a>
+ **Étiquetez les ressources pour les identifier facilement** : mettez en œuvre une [stratégie de balisage](https://aws.amazon.com/solutions/guidance/tagging-on-aws/) pour identifier les ressources créées pour différents environnements et objectifs. Les balises peuvent simplifier le processus de nettoyage en vous aidant à filtrer les ressources en fonction de leurs balises.
+ **Configurer les cycles de vie des** ressources : définissez les cycles de vie des ressources afin de supprimer automatiquement les ressources après une certaine période. Cette pratique vous permet de vous assurer que les environnements temporaires ne deviennent pas des coûts permanents.

## Épopées
<a name="automate-deletion-cloudformation-stacks-associated-resources-epics"></a>

### Outils d'installation
<a name="install-tools"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps ingénieur | 
| Installez Poetry. | Suivez les [instructions](https://python-poetry.org/docs/) (documentation Poetry) pour installer Poetry dans l'environnement virtuel cible. | DevOps ingénieur | 
| Installez les dépendances. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps ingénieur | 
| (Facultatif) Installez Pyenv. | Suivez les [instructions](https://github.com/pyenv/pyenv#installation) (GitHub) pour installer Pyenv. | DevOps ingénieur | 

### (Facultatif) Personnalisez le cadre
<a name="optional-customize-the-framework"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des fonctions qui collectent, prétraitent et suppriment les ressources cibles. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps ingénieur, Python | 

### Création d'exemples de ressources
<a name="create-sample-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Créez un paramètre Systems Manager. | Entrez la commande suivante pour créer un paramètre Systems Manager qui n'est pas provisionné via CloudFormation :<pre>aws ssm put-parameter \<br />  --name "/sampleforcleanup/database/password" \<br />  --value "your_db_password" \<br />  --type "SecureString" \<br />  --description "Database password for my app" \<br />  --tier "Standard" \<br />  --region "us-east-1"</pre> | AWS DevOps | 
| Créez un compartiment Amazon S3. | Entrez la commande suivante pour créer un compartiment Amazon S3 qui n'est pas provisionné via CloudFormation :<pre>aws s3api create-bucket \<br />  --bucket samplesorcleanup-unmanagedbucket-<UniqueIdentifier> \<br />  --region us-east-1 \<br />  --create-bucket-configuration LocationConstraint=us-east-1</pre> | AWS DevOps | 

### Supprimer les exemples de ressources
<a name="delete-the-sample-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez la CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Validez la suppression des ressources. | Dans le résultat, confirmez que tous les exemples de ressources ont été supprimés. Pour un exemple de sortie, consultez la section [Ressources supplémentaires](#automate-deletion-cloudformation-stacks-associated-resources-additional) de ce modèle. | AWS DevOps | 

## Ressources connexes
<a name="automate-deletion-cloudformation-stacks-associated-resources-resources"></a>
+ [Supprimer une pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) (CloudFormation documentation)
+ [Résolution des problèmes CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation documentation)
+ [Permettre aux fonctions Lambda d'accéder aux ressources d'un Amazon VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) (documentation Lambda)
+ [Comment supprimer une AWS CloudFormation pile bloquée dans le statut DELETE\$1FAILED ?](https://repost.aws/knowledge-center/cloudformation-stack-delete-failed) (Centre de AWS connaissances)

## Informations supplémentaires
<a name="automate-deletion-cloudformation-stacks-associated-resources-additional"></a>

Voici un exemple de sortie de la `cfncli` commande :

```
cfncli --region aus-east-1  dev cleanup-env --prefix-list sampleforcleanup                                                                                                                              
https://sts.us-east-1.amazonaws.com
Cleaning up: ['sampleforcleanup'] in xxxxxxxxxx:us-east-1
Do you want to proceed? [Y/n]: Y
No S3 buckets
No ECR repositories
No Lambda functions in VPC
The following DynamoDB tables will have their deletion protection removed:
sampleforcleanup-MyDynamoDBTable
Do you want to proceed with removing deletion protection from these tables? [Y/n]: Y
Deletion protection disabled for DynamoDB table 'sampleforcleanup-MyDynamoDBTable'.
The following CloudFormation stacks will be deleted:
sampleforcleanup-Stack
Do you want to proceed with deleting these CloudFormation stacks? [Y/n]: Y
Initiated deletion of CloudFormation stack: `sampleforcleanup-Stack`
Waiting for stack `sampleforcleanup-Stack` to be deleted...
CloudFormation stack `sampleforcleanup-Stack` deleted successfully.
The following ssm_params will be deleted:
/sampleforcleanup/database/password
Do you want to proceed with deleting these ssm_params? [Y/n]: Y
Deleted SSM Parameter: /sampleforcleanup/database/password
Cleaned up: ['sampleforcleanup']
```

# Automatisez l'ingestion et la visualisation des métriques personnalisées Amazon MWAA sur Amazon Managed Grafana à l'aide de Terraform
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics"></a>

*Faisal Abdullah et Satya Vajrapu, Amazon Web Services*

## Résumé
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-summary"></a>

Ce modèle explique comment utiliser Amazon Managed Grafana pour créer et surveiller des métriques personnalisées qui sont ingérées par Amazon Managed Workflows pour Apache Airflow (Amazon MWAA). Amazon MWAA sert d'orchestrateur pour les flux de travail, en utilisant des graphes acycliques dirigés (DAGs) écrits en Python. Ce modèle est centré sur la surveillance de mesures personnalisées, notamment le nombre total d'exécutions DAGs effectuées au cours de la dernière heure, le nombre de réussites et DAGs d'échecs par heure et la durée moyenne de ces processus. Cette analyse montre comment Amazon Managed Grafana s'intègre à Amazon MWAA pour permettre une surveillance complète et des informations sur l'orchestration des flux de travail au sein de cet environnement.

## Conditions préalables et limitations
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS disposant des autorisations utilisateur nécessaires pour créer et gérer les éléments suivants Services AWS :
  + Gestion des identités et des accès AWS Rôles et politiques (IAM)
  + AWS Lambda
  + Amazon Managed Grafana
  + Amazon Managed Workflows for Apache Airflow (Amazon MWAA)
  + Amazon Simple Storage Service (Amazon S3)
  + Amazon Timestream
+ Accès à un environnement shell qui peut être un terminal sur votre machine locale ou [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html).
+ Un environnement shell avec Git installé et la dernière version de AWS Command Line Interface (AWS CLI) installée et configurée. Pour plus d'informations, consultez la section [Installation ou mise à jour vers la dernière version AWS CLI de](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) la AWS CLI documentation.
+ La version suivante de Terraform est installée : `required_version = ">= 1.6.1, < 2.0.0"` vous pouvez utiliser [tfswitch pour basculer](https://tfswitch.warrensbox.com/) entre les différentes versions de Terraform.
+ Source d'identité configurée AWS IAM Identity Center pour votre Compte AWS. Pour plus d'informations, voir [Confirmer vos sources d'identité dans IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereq-identity-sources.html) dans la documentation d'IAM Identity Center. Vous pouvez choisir entre Active Directory par défaut Répertoire IAM Identity Center ou un fournisseur d'identité (IdP) externe tel qu'Okta. Pour plus d'informations, consultez la section [Ressources connexes](#automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources).

**Limites**
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Terraforme `required_version = ">= 1.6.1, < 2.0.0"`
+ Amazon Managed Grafana version 9.4 ou ultérieure. Ce modèle a été testé sur la version 9.4.

## Architecture
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-architecture"></a>

Le schéma d'architecture suivant met en évidence les éléments Services AWS utilisés dans la solution.

![\[Flux de travail pour automatiser l'ingestion des métriques personnalisées Amazon MWAA.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/3458d0a9-aee1-428a-bf2f-c357bb531c64/images/b43ed8d2-94ac-4438-913b-81c7eba8f3e0.png)


Le schéma précédent décrit le flux de travail suivant :

1. Les métriques personnalisées d'Amazon MWAA proviennent de DAGs celles qui sont exécutées dans l'environnement. Les métriques sont téléchargées dans le compartiment Amazon S3 au format de fichier CSV. Les éléments suivants DAGs utilisent les fonctionnalités d'interrogation de base de données d'Amazon MWAA :
   + `run-example-dag`— Ce DAG contient un exemple de code Python qui définit une ou plusieurs tâches. Il fonctionne toutes les 7 minutes et affiche la date. Après l'impression de la date, le DAG inclut une tâche dont l'exécution doit être interrompue pendant une durée spécifique.
   + `other-sample-dag`— Ce DAG s'exécute toutes les 10 minutes et imprime la date. Après l'impression de la date, le DAG inclut une tâche dont l'exécution doit être interrompue pendant une durée spécifique.
   + `data-extract`— Ce DAG s'exécute toutes les heures, interroge la base de données Amazon MWAA et collecte des métriques. Une fois les métriques collectées, ce DAG les écrit dans un compartiment Amazon S3 pour un traitement et une analyse ultérieurs.

1. Pour rationaliser le traitement des données, les fonctions Lambda s'exécutent lorsqu'elles sont déclenchées par des événements Amazon S3, ce qui facilite le chargement des métriques dans Timestream.

1. Timestream est intégré en tant que source de données dans Amazon Managed Grafana où sont stockées toutes les métriques personnalisées d'Amazon MWAA.

1. Les utilisateurs peuvent interroger les données et créer des tableaux de bord personnalisés pour visualiser les indicateurs de performance clés et obtenir des informations sur l'orchestration des flux de travail au sein d'Amazon MWAA.

## Outils
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-tools"></a>

**Services AWS**
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)vous permet de gérer de manière centralisée l'accès par authentification unique (SSO) à toutes vos applications Comptes AWS et à celles du cloud.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez. Dans ce modèle, AWS Lambda exécute le code Python en réponse aux événements Amazon S3 et gère automatiquement les ressources de calcul.
+ [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) est un service de visualisation de données entièrement géré que vous pouvez utiliser pour interroger, corréler, visualiser et émettre des alertes sur vos métriques, journaux et traces. Ce modèle utilise Amazon Managed Grafana pour créer un tableau de bord pour la visualisation des métriques et les alertes.
+ [Amazon Managed Workflows for Apache Airflow (Amazon MWAA)](https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html) est un service d'orchestration géré pour Apache Airflow que vous pouvez utiliser pour configurer et exploiter des pipelines de données dans le cloud à grande échelle. [Apache Airflow](https://airflow.apache.org/) est un outil open source utilisé pour créer, planifier et surveiller par programmation des séquences de processus et de tâches appelées flux de travail. Dans ce modèle, un échantillon DAGs et un extracteur de métriques DAG sont déployés dans Amazon MWAA.
+ [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. Dans ce modèle, Amazon S3 est utilisé pour stocker DAGs des scripts et des métriques personnalisées au format CSV.
+ [Amazon Timestream LiveAnalytics](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) for is est une base de données de séries chronologiques rapide, évolutive, entièrement gérée et spécialement conçue qui facilite le stockage et l'analyse de milliards de points de données de séries chronologiques par jour. Timestream for s'intègre LiveAnalytics également aux services couramment utilisés pour la collecte de données, la visualisation et l'apprentissage automatique. Dans ce modèle, il est utilisé pour ingérer les métriques personnalisées Amazon MWAA générées.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud. Ce modèle utilise un module Terraform pour automatiser le provisionnement de l'infrastructure dans. AWS

**Référentiel de code**

Le code de ce modèle est disponible GitHub dans le dépôt [visualize-amazon-mwaa-custom-metrics-grafana](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana). Le `stacks/Infra` dossier contient les éléments suivants :
+ Fichiers de configuration Terraform pour toutes les ressources AWS 
+ Fichier .json du tableau de bord Grafana dans le dossier `grafana`
+ Amazon Managed Workflows pour Apache Airflow DAGs dans le dossier `mwaa/dags`
+ Code Lambda pour analyser le fichier .csv et stocker les métriques dans le dossier de la base de données Timestream `src`
+ Fichiers .json de politique IAM dans le dossier `templates`

## Bonnes pratiques
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-best-practices"></a>

Terraform doit stocker l'état de votre infrastructure et de votre configuration gérées afin de pouvoir mapper les ressources du monde réel à votre configuration. Par défaut, Terraform stocke l'état localement dans un fichier nommé. `terraform.tfstate` Il est essentiel de garantir la sécurité et l'intégrité de votre fichier d'état Terraform, car il maintient l'état actuel de votre infrastructure. Pour plus d'informations, consultez [Remote State](https://developer.hashicorp.com/terraform/language/state/remote) dans la documentation Terraform. 

## Épopées
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-epics"></a>

### Déployez l'infrastructure à l'aide de Terraform
<a name="deploy-the-infrastructure-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez l'infrastructure. | Pour déployer l'infrastructure de la solution, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

### Valider les ressources d'infrastructure déployées
<a name="validate-the-deployed-infrastructure-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez l'environnement Amazon MWAA. | Pour valider l'environnement Amazon MWAA, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, ingénieur de données | 
| Vérifiez les horaires du DAG. | Pour consulter le calendrier de chaque DAG, accédez à l'onglet **Planification de** l'**interface utilisateur d'Airflow**.Chacun des programmes suivants DAGs possède un calendrier préconfiguré, qui s'exécute dans l'environnement Amazon MWAA et génère des métriques personnalisées : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Vous pouvez également voir les exécutions réussies de chaque DAG dans la colonne **Exécutions**.  | Ingénieur de données, AWS DevOps | 

### Configuration de l'environnement Amazon Managed Grafana
<a name="configure-the-gra-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez l'accès à l'espace de travail Amazon Managed Grafana. | Les scripts Terraform ont créé l'espace de travail, les tableaux de bord et la page de statistiques Amazon Managed Grafana requis. Pour configurer l'accès afin de pouvoir les consulter, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Installez le plugin Amazon Timestream.  | Les métriques personnalisées Amazon MWAA sont chargées dans la base de données Timestream. Vous utilisez le plugin Timestream pour visualiser les métriques avec les tableaux de bord Amazon Managed Grafana.Pour installer le plugin Timestream, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Pour plus d'informations, consultez la section [Étendez votre espace de travail avec des plug-ins](https://docs.aws.amazon.com/grafana/latest/userguide/grafana-plugins.html#manage-plugins) dans la documentation Amazon Managed Grafana. | AWS DevOps, DevOps ingénieur | 

### Visualisez les métriques personnalisées dans le tableau de bord Amazon Managed Grafana
<a name="visualize-the-custom-metrics-in-the-gra-dashboard"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Consultez le tableau de bord Amazon Managed Grafana. | Pour consulter les statistiques qui ont été ingérées dans l'espace de travail Amazon Managed Grafana, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)La page des statistiques du tableau de bord affiche les informations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Personnalisez le tableau de bord Amazon Managed Grafana. | Pour personnaliser les tableaux de bord en vue de futures améliorations, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)Le code source de ce tableau de bord est également disponible dans le `dashboard.json` fichier du `stacks/infra/grafana` dossier du [GitHub référentiel](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana/blob/main/stacks/infra/grafana/dashboard.json). | AWS DevOps | 

### Nettoyer les AWS ressources
<a name="clean-up-aws-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Suspendez les exécutions du DAG Amazon MWAA. | Pour suspendre les exécutions du DAG, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, ingénieur de données | 
| Supprimez les objets dans les compartiments Amazon S3. | Pour supprimer les compartiments Amazon S3 **mwaa-events-bucket-\$1 et **mwaa-metrics-bucket-\$1****, suivez les instructions d'utilisation de la console Amazon S3 dans [Supprimer un compartiment dans la](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) documentation Amazon S3. | AWS DevOps | 
| Détruisez les ressources créées par Terraform. | Pour détruire les ressources créées par Terraform et le fichier d'état local Terraform associé, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

## Résolution des problèmes
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| `null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:` | Passez AWS CLI à la [dernière version](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | 
| Erreur lors du chargement des sources de données - `Fetch error: 404 Not Found Instantiating…` | L'erreur est intermittente. Patientez quelques minutes, puis actualisez vos sources de données pour afficher la source de données Timestream répertoriée.  | 

## Ressources connexes
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources"></a>

**AWS documentation**
+ [Amazon Managed Grafana pour les tableaux de bord et la visualisation](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amg-dashboarding-visualization.html)
+ [Configurer Amazon Managed Grafana pour utiliser Okta](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-SAML-providers-okta.html)
+ [À utiliser AWS IAM Identity Center avec votre espace de travail Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html)
+ [Utilisation DAGs sur Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags.html)

**AWS vidéos**
+ [Configurez IAM Identity Center avec Amazon Managed Grafana pour l'authentification, comme indiqué dans la vidéo suivante.](https://www.youtube.com/watch?v=XX2Xcz-Ps9U)




[https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U ? contrôles = 0](https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0)
+ [Si IAM Identity Center n'est pas disponible, vous pouvez également intégrer l'authentification Amazon Managed Grafana en utilisant un fournisseur d'identité externe (IdP) tel qu'Okta, comme le montre la vidéo suivante.](https://www.youtube.com/watch?v=Z4JHxl2xpOg)




[https://www.youtube-nocookie.com/embed/A4 Oh JHxl2xp ? contrôles = 0](https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0)

## Informations supplémentaires
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-additional"></a>

Vous pouvez créer une solution complète de surveillance et d'alerte pour votre environnement Amazon MWAA, permettant une gestion proactive et une réponse rapide aux problèmes ou anomalies potentiels. Amazon Managed Grafana inclut les fonctionnalités suivantes :

**Alertes** — Vous pouvez configurer des alertes dans Amazon Managed Grafana en fonction de seuils ou de conditions prédéfinis. Configurez des notifications par e-mail pour avertir les parties prenantes concernées lorsque certains indicateurs dépassent ou tombent en dessous des seuils spécifiés. Pour plus d'informations, consultez la section [Alertes Grafana dans la documentation](https://docs.aws.amazon.com/grafana/latest/userguide/alerts-overview.html) Amazon Managed Grafana.

**Intégration** — Vous pouvez intégrer Amazon Managed Grafana à divers outils tiers tels que OpsGenie PagerDuty, ou Slack pour des fonctionnalités de notification améliorées. Par exemple, vous pouvez configurer des webhooks ou les intégrer APIs pour déclencher des incidents et des notifications sur ces plateformes en fonction des alertes générées dans Amazon Managed Grafana. De plus, ce modèle fournit un [GitHub référentiel](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana) pour créer des AWS ressources. Vous pouvez intégrer davantage ce code aux flux de travail de déploiement de votre infrastructure.

# Automatisez le déploiement d'ensembles de piles à l'aide d'AWS CodePipeline et d'AWS CodeBuild
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild"></a>

*Thiyagarajan Mani, Mihir Borkar et Raghu Gowda, Amazon Web Services*

## Résumé
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-summary"></a>

Dans le cadre de votre solution d'intégration et de livraison continues (CI/CD) processes, you might want to deploy applications automatically into all your existing AWS accounts and into new accounts that you add to your organization in AWS Organizations. When you architect a CI/CDsolution pour répondre à cette exigence[), la fonction d'administrateur délégué](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) d'AWS CloudFormation est utile car elle fournit un niveau de sécurité en restreignant l'accès au compte de gestion. AWS CodePipeline utilise toutefois le modèle d'autorisations gérées par les services pour déployer des applications sur plusieurs comptes et régions. Vous devez utiliser le compte de gestion AWS Organizations pour effectuer un déploiement avec des ensembles de piles, car AWS CodePipeline ne prend pas en charge la fonctionnalité d'administrateur délégué des ensembles de piles.

Ce modèle décrit comment contourner cette limitation. Le modèle utilise AWS CodeBuild et un script personnalisé pour automatiser le déploiement d'ensembles de piles avec AWS CodePipeline. Il automatise les activités de déploiement d'applications suivantes :
+ Déployer une application sous forme d'ensembles de piles dans des unités organisationnelles existantes (OUs)
+ Étendre le déploiement d'une application à OUs d'autres régions 
+ Supprimer une application déployée de toutes les applications ou de certaines OUs régions

## Conditions préalables et limitations
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-prereqs"></a>

**Conditions préalables**

Avant de suivre les étapes de ce modèle :
+ Créez des organisations dans votre compte de gestion AWS Organizations. Pour obtenir des instructions, consultez la [documentation AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ Activez un accès sécurisé entre AWS Organizations et utilisez CloudFormation des autorisations gérées par les services. Pour obtenir des instructions, consultez la section [Activer l'accès sécurisé avec AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html) dans la CloudFormation documentation.

**Limites**

Le code fourni avec ce modèle présente les limites suivantes : 
+ Vous ne pouvez déployer qu'un seul CloudFormation modèle pour une application ; le déploiement de plusieurs modèles n'est actuellement pas pris en charge.
+ La personnalisation de la mise en œuvre actuelle nécessite de l' DevOps expertise.
+ Ce modèle n'utilise pas les clés du système de gestion des clés AWS (AWS KMS). Toutefois, vous pouvez activer cette fonctionnalité en reconfigurant le CloudFormation modèle inclus dans ce modèle.

## Architecture
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-architecture"></a>

![\[Architecture d'automatisation des pipelines CI/CD\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/2dbca422-7f32-4f9c-a4aa-1f95b484b772.png)


Cette architecture du pipeline de CI/CD déploiement gère les opérations suivantes :
+ Restreint l'accès direct au compte de gestion en déléguant la responsabilité du déploiement du stack set à un CI/CD compte dédié en tant qu'administrateur du stack set pour les déploiements d'applications.
+ Utilise le modèle d'autorisation géré par le service pour déployer l'application automatiquement chaque fois qu'un nouveau compte est créé et mappé sous une unité d'organisation.
+ Garantit la cohérence des versions des applications sur tous les comptes au niveau de l'environnement.
+ Utilise plusieurs étapes d'approbation au niveau du référentiel et du pipeline pour fournir des niveaux supplémentaires de sécurité et de gouvernance à l'application déployée.
+ Surmonte la limite actuelle CodePipeline en utilisant un script de déploiement personnalisé pour déployer ou CodeBuild supprimer automatiquement des ensembles de piles et des instances de pile. Pour une illustration du contrôle du flux et de la hiérarchie des appels d'API implémentés par le script personnalisé, consultez la section [Informations supplémentaires](#automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional).
+ Crée des ensembles de piles individuels pour les environnements de développement, de test et de production. En outre, vous pouvez créer des ensembles de piles combinant plusieurs OUs régions à chaque étape. Par exemple, vous pouvez combiner sandbox et développement OUs dans le cadre d'une phase de développement et de déploiement.
+ Prend en charge le déploiement ou l'exclusion d'applications dans un sous-ensemble de comptes ou une liste de OUs comptes.

**Automatisation et évolutivité**

Vous pouvez utiliser le code fourni avec ce modèle pour créer un CodeCommit référentiel AWS et un pipeline de code pour votre application. Vous pouvez ensuite les déployer sous forme de stack sets sur plusieurs comptes au niveau de l'unité d'organisation. Le code automatise également des composants tels que les rubriques Amazon Simple Notification Service (Amazon SNS) destinées à informer les approbateurs, les rôles AWS Identity and Access Management (IAM) requis et la politique de contrôle des services (SCP) à appliquer au compte de gestion.

## Outils
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-tools"></a>

**Services AWS**
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur les comptes et les régions AWS.
+ [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.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatise les déploiements vers Amazon Elastic Compute Cloud EC2 (Amazon) ou des instances sur site, les fonctions AWS Lambda ou les services Amazon Elastic Container Service (Amazon ECS).
+ [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) est un service de gestion de comptes qui vous aide à consolider plusieurs comptes AWS au sein d'une organisation que vous créez et gérez de manière centralisée.
+ [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.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [automated-code-pipeline-stackset-deployment](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment). Pour la structure des dossiers et d'autres informations, consultez le [fichier readme](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment/blob/main/README.md) du référentiel.

## Bonnes pratiques
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-best-practices"></a>

Ce modèle restreint l'accès direct au compte de gestion lors du déploiement de l'application au niveau de l'unité d'organisation. L'ajout de plusieurs étapes d'approbation au processus de pipeline et de référentiel permet de renforcer la sécurité et la gouvernance des applications et des composants que vous déployez en utilisant cette approche.

## Épopées
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-epics"></a>

### Configuration de comptes dans AWS Organizations
<a name="configure-accounts-in-aws-organizations"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Activez toutes les fonctionnalités du compte de gestion. | Activez toutes les fonctionnalités du compte de gestion de votre organisation en suivant les instructions de la [documentation AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html). | Administrateur AWS, administrateur de plateforme | 
| Créez un CI/CD compte. | Dans AWS Organizations, au sein de votre organisation, créez un CI/CD compte dédié et désignez une équipe chargée de détenir et de contrôler l'accès au compte. | Administrateur AWS | 
| Ajoutez un administrateur délégué. | Dans le compte de gestion, enregistrez le CI/CD compte que vous avez créé à l'étape précédente en tant qu'administrateur délégué du stack set. Pour obtenir des instructions, consultez la [ CloudFormation documentation AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html). | Administrateur AWS, administrateur de plateforme | 

### Création d'un référentiel et d'un CI/CD pipeline d'applications
<a name="create-an-application-repository-and-ci-cd-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel de code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Créez des rubriques SNS. | Vous pouvez utiliser le `sns-template.yaml` modèle fourni dans le GitHub référentiel pour créer des rubriques SNS et configurer des abonnements pour les demandes d'approbation.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Créez des rôles IAM pour les CI/CD composants. | Vous pouvez utiliser le `cicd-role-template.yaml` modèle fourni dans le GitHub référentiel pour créer les rôles et les politiques IAM requis par les CI/CD composants.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 
| Créez un CodeCommit référentiel et un pipeline de code pour votre application. | Vous pouvez utiliser le `cicd-pipeline-template.yaml` modèle fourni dans le GitHub référentiel pour créer un CodeCommit référentiel et un pipeline de code pour votre application.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | AWS DevOps | 

### Déployer un ensemble de piles
<a name="deploy-a-stack-set"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel d'applications. | Le modèle de CI/CD pipeline que vous avez utilisé précédemment crée un exemple de référentiel d'applications et de pipeline de code. Pour cloner et vérifier le référentiel :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Développeur d'applications, ingénieur de données | 
| Ajoutez des artefacts d'application. | Mettez à jour le référentiel d'applications à l'aide d'un CloudFormation modèle.Cette solution prend en charge le déploiement d'un seul CloudFormation modèle.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Développeur d'applications, ingénieur de données | 
| Mettez à jour le fichier de configuration de déploiement. | Mettez à jour le `deployment_config.json` fichier :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html)Ce modèle crée des ensembles de piles individuels pour chaque environnement en ajoutant le nom de l'environnement au nom du stack set que vous fournissez dans le fichier de configuration de déploiement. | Développeur d'applications, ingénieur de données | 
| Validez les modifications et déployez le stack set. | Validez les modifications que vous avez spécifiées dans votre modèle d'application, puis fusionnez et déployez le stack set dans plusieurs environnements étape par étape :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild.html) | Développeur d'applications, ingénieur de données | 

## Résolution des problèmes
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le déploiement échoue à l'exception suivante :*Changez le nom du fichier de paramètres du modèle en -parameter- .json avec, les noms par défaut ne sont pas autorisés* <application name><evn> | Les fichiers CloudFormation de paramètres du modèle doivent respecter la convention de dénomination spécifiée. Mettez à jour les noms des fichiers de paramètres et réessayez. | 
| Le déploiement échoue à l'exception suivante :*Changez le nom du CloudFormation modèle en .yml, les modèles par défaut .yml ou template.yaml ne sont pas autorisés* <application name> | Le nom du CloudFormation modèle doit respecter la convention de dénomination spécifiée. Mettez à jour le nom du fichier et réessayez. | 
| Le déploiement échoue à l'exception suivante :*Aucun CloudFormation modèle valide et son fichier de paramètres n'ont été trouvés pour l'environnement \$1nom de l'environnement\$1* | Vérifiez les conventions de dénomination des fichiers pour le CloudFormation modèle et son fichier de paramètres pour l'environnement spécifié. | 
| Le déploiement échoue à l'exception suivante :*Action de déploiement non valide fournie dans le fichier de configuration de déploiement. Les options valides sont « déployer » et « supprimer ».* | Vous avez spécifié une valeur non valide pour le `deployment_action` paramètre dans le fichier de configuration de déploiement. Le paramètre possède deux valeurs valides : `deploy` et`delete`. `deploy`À utiliser pour créer et mettre à jour les ensembles de piles et leurs instances de pile associées. À utiliser `delete` uniquement lorsque vous souhaitez supprimer l'ensemble complet de piles et les instances de pile associées. | 

## Ressources connexes
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-resources"></a>
+ GitHub [automated-code-pipeline-stackset-référentiel de déploiement](https://github.com/aws-samples/automated-code-pipeline-stackset-deployment)
+ [Activation de toutes les fonctionnalités de votre organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html) (documentation AWS Organizations)
+ [Enregistrer un administrateur délégué](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html) ( CloudFormation documentation AWS)
+ [Objectifs au niveau du compte pour les Stack Sets gérés par des services](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/account-level-targets.html) (documentation AWS CloudFormation )

## Informations supplémentaires
<a name="automate-stack-set-deployment-by-using-aws-codepipeline-and-aws-codebuild-additional"></a>

**Organigramme**

L'organigramme suivant décrit le contrôle du flux et la hiérarchie des appels d'API mis en œuvre par le script personnalisé pour automatiser le déploiement des ensembles de piles.

![\[Contrôle de flux et appels d'API implémentés par un script Python\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a5c47de7-9039-415d-a9e5-9de0d4c3a260/images/1898883a-62b7-40c2-8f08-9f2a9dda8404.png)


**Exemples de fichiers de configuration de déploiement**

**Création d'un nouvel ensemble de piles**

Le fichier de configuration de déploiement suivant crée un nouvel ensemble de piles appelé `sample-stack-set` dans la région AWS `us-east-1` en trois OUs.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Déploiement d'un ensemble de piles existant sur une autre unité d'organisation**

Si vous déployez la configuration illustrée dans l'exemple précédent et que vous souhaitez déployer le stack set sur une unité d'organisation supplémentaire appelée `dev-org-unit-2` dans l'environnement de développement, le fichier de configuration de déploiement peut ressembler à ce qui suit.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Déploiement d'un ensemble de piles existant dans une autre région AWS**

Si vous déployez la configuration illustrée dans l'exemple précédent et que vous souhaitez déployer le stack set dans une région AWS supplémentaire (`us-east-2`) dans l'environnement de développement pour deux OUs (`dev-org-unit-1`et`dev-org-unit-2`), le fichier de configuration de déploiement peut ressembler à ce qui suit. 

**Note**  
Les ressources du CloudFormation modèle doivent être valides et spécifiques à la région.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Suppression d'une instance de pile d'une unité d'organisation ou d'une région AWS**

Supposons que la configuration de déploiement présentée dans l'exemple précédent ait été déployée. Le fichier de configuration suivant supprime les instances de pile des deux régions de l'unité d'organisation`dev-org-unit-2`.

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"],
                                        "regions": ["us-east-1", "us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"],
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

Le fichier de configuration suivant supprime l'instance de pile de la région AWS `us-east-1` pour les deux OUs dans l'environnement de développement.    

```
{
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Supprimer l'ensemble complet de piles**

Le fichier de configuration de déploiement suivant supprime l'ensemble de piles et toutes les instances de pile associées.

```
{
     "deployment_action": "delete",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1", "dev-org-unit-2"], 
                                        "regions": ["us-east-2"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

****Exclure un compte du déploiement**

 Le fichier de configuration de déploiement suivant exclut le compte`111122223333`, qui fait partie de l'unité d'`dev-org-unit-1`organisation, du déploiement.

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333"],
                                        "filter_type": "DIFFERENCE"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

**Déploiement de l'application sur un sous-ensemble de comptes dans une unité d'organisation**

Le fichier de configuration de déploiement suivant déploie l'application sur trois comptes uniquement (`111122223333`,`444455556666`, et`777788889999`) de l'unité d'organisation. `dev-org-unit-1`

```
 {
     "deployment_action": "deploy",
     "stack_set_name": "sample-stack-set",
     "stack_set_desciption": "this is a sample stack set",
    "deployment_targets": {
                            "dev": {
                                        "org_units": ["dev-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": ["111122223333", "444455556666", "777788889999"],
                                        "filter_type": "INTERSECTION"
                                    },
                            "test": {
                                        "org_units": ["test-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    },                            
                            "prod": {
                                        "org_units": ["prod-org-unit-1"], 
                                        "regions": ["us-east-1"],
                                        "filter_accounts": [],
                                        "filter_type": ""
                                    }                            
                          },
     "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"],
     "auto_deployement": "True",
     "retain_stacks_on_account_removal": "True",
     "region_deployment_concurrency": "PARALLEL"
 }
```

# Associez automatiquement une politique gérée par AWS pour Systems Manager aux profils d' EC2 instance à l'aide de Cloud Custodian et d'AWS CDK
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk"></a>

*Ali Asfour et Aaron Lennon, Amazon Web Services*

## Résumé
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-summary"></a>

Vous pouvez intégrer des instances Amazon Elastic Compute Cloud (Amazon EC2) à AWS Systems Manager pour automatiser les tâches opérationnelles et améliorer la visibilité et le contrôle. Pour s'intégrer à Systems Manager, EC2 les instances doivent disposer d'un agent [AWS Systems Manager (agent SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) installé et d'une politique `AmazonSSMManagedInstanceCore` AWS Identity and Access Management (IAM) attachée à leurs profils d'instance. 

Toutefois, si vous voulez vous assurer que la `AmazonSSMManagedInstanceCore` politique est attachée à tous les profils d' EC2 instance, vous pouvez avoir des difficultés à mettre à jour les nouvelles EC2 instances qui n'ont pas de profil d'instance ou les EC2 instances qui ont un profil d'instance mais qui n'ont pas cette `AmazonSSMManagedInstanceCore` politique. Il peut également être difficile d'appliquer cette politique à plusieurs comptes Amazon Web Services (AWS) et à plusieurs régions AWS.

Ce modèle permet de résoudre ces problèmes en déployant trois politiques [Cloud Custodian](https://cloudcustodian.io/) dans vos comptes AWS :
+ La première politique Cloud Custodian vérifie les EC2 instances existantes qui ont un profil d'instance mais qui n'ont pas cette `AmazonSSMManagedInstanceCore` politique. La `AmazonSSMManagedInstanceCore` politique est ensuite jointe. 
+ La deuxième politique Cloud Custodian vérifie les EC2 instances existantes sans profil d'instance et ajoute un profil d'instance par défaut auquel la `AmazonSSMManagedInstanceCore` politique est attachée.
+ La troisième politique Cloud Custodian crée des fonctions [AWS Lambda](https://cloudcustodian.io/docs/aws/lambda.html) dans vos comptes afin de surveiller la création d'instances et EC2 de profils d'instance. Cela garantit que la `AmazonSSMManagedInstanceCore` politique est automatiquement attachée lors de la création d'une EC2 instance.

Ce modèle utilise les DevOps outils [AWS](https://aws.amazon.com/devops/) pour réaliser un déploiement continu et à grande échelle des politiques Cloud Custodian dans un environnement multi-comptes, sans mettre en place un environnement de calcul distinct. 

## Conditions préalables et limitations
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-prereqs"></a>

**Conditions préalables**
+ Deux comptes AWS actifs ou plus. L'un des comptes est le *compte de sécurité* et les autres sont des *comptes de membres*.
+ Autorisations permettant de fournir des ressources AWS dans le compte de sécurité. Ce modèle utilise des [autorisations d'administrateur](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html), mais vous devez accorder des autorisations conformément aux exigences et aux politiques de votre organisation.
+ Possibilité d'assumer un rôle IAM, du compte de sécurité aux comptes des membres, et de créer les rôles IAM requis. Pour plus d'informations à ce sujet, consultez la section [Déléguer l'accès entre les comptes AWS à l'aide de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) dans la documentation IAM.
+ 
**Important**  
Interface de ligne de commande AWS (AWS CLI), installée et configurée. À des fins de test, vous pouvez configurer l'AWS CLI à l'aide de la `aws configure` commande ou en définissant des variables d'environnement. : Cela n'est pas recommandé pour les environnements de production et nous recommandons de n'accorder à ce compte que l'accès avec le moindre privilège. Pour plus d'informations à ce sujet, consultez la section [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dans la documentation IAM.
+ Le `devops-cdk-cloudcustodian.zip` fichier (joint), téléchargé sur votre ordinateur local.
+ Connaissance de Python.
+ Les outils requis (Node.js, AWS Cloud Development Kit (AWS CDK) et Git) sont installés et configurés. Vous pouvez utiliser le `install-prerequisites.sh` fichier contenu dans le `devops-cdk-cloudcustodian.zip` fichier pour**** installer ces outils. ****Assurez-vous d'exécuter ce fichier avec les privilèges root. 

**Limites**
+ Bien que ce modèle puisse être utilisé dans un environnement de production, assurez-vous que tous les rôles et politiques IAM répondent aux exigences et aux politiques de votre organisation. 

**Versions du package**
+ Cloud Custodian version 0.9 ou ultérieure
+ TypeScript version 3.9.7 ou ultérieure
+ Node.js version 14.15.4 ou ultérieure
+ `npm`version 7.6.1 ou ultérieure
+ AWS CDK version 1.96.0 ou ultérieure

## Architecture
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-architecture"></a>

![\[AWS CodePipeline workflow with CodeCommit, CodeBuild, and deployment to member accounts.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/169a7bde-789e-4ebd-b4ca-80eb28ac9927/images/8ec0b6b4-d4b0-42e5-833d-24d1e6098fd9.png)


 

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

1. Les politiques Cloud Custodian sont transférées vers un CodeCommit référentiel AWS dans le compte de sécurité. Une règle Amazon CloudWatch Events lance automatiquement le CodePipeline pipeline AWS.

1. Le pipeline récupère le code le plus récent CodeCommit et l'envoie à la partie d'intégration continue du pipeline d'intégration continue et de livraison continue (CI/CD) géré par AWS. CodeBuild

1. CodeBuild exécute les DevSecOps actions complètes, y compris la validation de la syntaxe des politiques sur les politiques Cloud Custodian, et exécute ces politiques en `--dryrun` mode pour vérifier quelles ressources sont identifiées.

1. S'il n'y a aucune erreur, la tâche suivante invite un administrateur à examiner les modifications et à approuver le déploiement dans les comptes des membres.

**Pile technologique**
+ AWS CDK
+ CodeBuild
+ CodeCommit
+ CodePipeline
+ IAM
+ Cloud Custodian 

**Automatisation et mise à l'échelle**

Le module AWS CDK Pipelines fournit un CI/CD pipeline qui permet CodePipeline d'orchestrer la création et le test du code source CodeBuild, en plus du déploiement de ressources AWS avec AWS CloudFormation Stacks. Vous pouvez utiliser ce modèle pour tous les comptes membres et toutes les régions de votre organisation. Vous pouvez également étendre la `Roles creation` pile pour déployer d'autres rôles IAM dans vos comptes membres. 

## Outils
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS. CloudFormation
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS à l'aide de commandes dans votre shell de ligne de commande.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) est un service de création entièrement géré dans le cloud.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) est un service de contrôle de version que vous pouvez utiliser pour stocker et gérer des actifs de manière privée.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication de votre logiciel.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) est un service Web qui vous permet de contrôler en toute sécurité l'accès aux ressources AWS.
+ [Cloud Custodian](https://cloudcustodian.io/) est un outil qui réunit les dizaines d'outils et de scripts que la plupart des entreprises utilisent pour gérer leurs comptes de cloud public en un seul outil open source.
+ [Node.js](https://nodejs.org/en/) est un JavaScript environnement d'exécution basé sur le JavaScript moteur V8 de Google Chrome.

**Code**

Pour une liste détaillée des modules, des fonctions de compte, des fichiers et des commandes de déploiement utilisés dans ce modèle, consultez le `README` fichier dans le `devops-cdk-cloudcustodian.zip` fichier (joint).

## Épopées
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-epics"></a>

### Configuration du pipeline avec AWS CDK
<a name="set-up-the-pipeline-with-aws-cdk"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le CodeCommit référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Pour plus d'informations à ce sujet, consultez [la section Création d'un CodeCommit référentiel](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html) dans la CodeCommit documentation AWS. | Developer | 
| Installez les outils nécessaires. | Utilisez le `install-prerequisites.sh` fichier pour installer tous les outils requis sur Amazon Linux. Cela n'inclut pas l'AWS CLI car elle est préinstallée.Pour plus d'informations à ce sujet, consultez la section [Conditions préalables](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_prerequisites) de la section [Getting started with the AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) dans la documentation du AWS CDK. | Developer | 
| Installez les packages AWS CDK requis. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html)Les packages suivants sont requis par AWS CDK et sont inclus dans le `requirements.txt` fichier :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 

### Configurez votre environnement
<a name="configure-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour les variables requises. | Ouvrez le `vars.py` fichier dans le dossier racine de votre CodeCommit dépôt et mettez à jour les variables suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.html) | Developer | 
| Mettez à jour le fichier account.yml avec les informations du compte du membre. | Pour exécuter l'outil [Cloud Custodian de c7n-org](https://cloudcustodian.io/docs/tools/c7n-org.html) sur plusieurs comptes, vous devez placer le fichier de `accounts.yml` configuration à la racine du référentiel. Voici un exemple de fichier de configuration Cloud Custodian pour AWS :<pre>accounts:<br />- account_id: '123123123123'<br />  name: account-1<br />  regions:<br />  - us-east-1<br />  - us-west-2<br />  role: arn:aws:iam::123123123123:role/CloudCustodian<br />  vars:<br />    charge_code: xyz<br />  tags:<br />  - type:prod<br />  - division:some division<br />  - partition:us<br />  - scope:pci</pre> | Developer | 

### Démarrez les comptes AWS
<a name="bootstrap-the-aws-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Boostrap le compte de sécurité. | Démarrez-le `deploy_account` avec l'`cloudcustodian_stack`application en exécutant la commande suivante :<pre>cdk bootstrap -a 'python3 <br />cloudcustodian/cloudcustodian_stack.py</pre> | Developer | 
| Option 1 - Démarrez automatiquement les comptes des membres. | Si la `cdk_bootstrap_member_accounts` variable est définie sur `True` dans le `vars.py` fichier, les comptes spécifiés dans la `member_accounts` variable sont automatiquement initialisés par le pipeline.Si nécessaire, vous pouvez effectuer une mise à jour `*cdk_bootstrap_role*` avec un rôle IAM que vous pouvez assumer depuis le compte de sécurité et qui dispose des autorisations requises pour démarrer le AWS CDK.Les nouveaux comptes ajoutés à la `member_accounts ` variable sont automatiquement initialisés par le pipeline afin que les rôles requis puissent être déployés. | Developer | 
| Option 2 - Démarrez manuellement les comptes des membres.  | Bien que nous ne recommandons pas cette approche, vous pouvez définir la valeur de `cdk_bootstrap_member_accounts` to `False` et effectuer cette étape manuellement en exécutant la commande suivante :<pre>$ cdk bootstrap -a 'python3 cloudcustodian/member_account_roles_stack.py' \<br /><br />--trust {security_account_id} \<br /><br />--context assume-role-credentials:writeIamRoleName={role_name} \<br /><br />--context assume-role-credentials:readIamRoleName={role_name} \<br /><br />--mode=ForWriting \<br /><br />--context bootstrap=true \<br /><br />--cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess</pre>Assurez-vous de mettre à jour les `{role_name}` valeurs `{security_account_id}` et avec le nom d'un rôle IAM que vous pouvez assumer à partir du compte de sécurité et qui dispose des autorisations requises pour démarrer le kit AWS CDK.Vous pouvez également utiliser d'autres approches pour démarrer les comptes des membres, par exemple avec AWS CloudFormation. Pour plus d'informations à ce sujet, consultez la section [Bootstrapping](https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) dans la documentation AWS CDK. | Developer | 

### Déployez les piles AWS CDK
<a name="deploy-the-aws-cdk-stacks"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les rôles IAM dans les comptes des membres. | Exécutez la commande suivante pour déployer la `member_account_roles_stack` pile et créer les rôles IAM dans les comptes membres :<pre>cdk deploy --all -a 'python3 cloudcustodian/member_account_roles_stack.py' --require-approval never</pre> | Developer | 
| Déployez la pile de pipelines Cloud Custodian. | Exécutez la commande suivante pour créer le `cloudcustodian_stack.py` pipeline Cloud Custodian qui est déployé dans le compte de sécurité :<pre>cdk deploy -a 'python3 cloudcustodian/cloudcustodian_stack.py'</pre> | Developer | 

## Ressources connexes
<a name="automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk-resources"></a>
+ [Commencer à utiliser le kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)

## Pièces jointes
<a name="attachments-169a7bde-789e-4ebd-b4ca-80eb28ac9927"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/169a7bde-789e-4ebd-b4ca-80eb28ac9927/attachments/attachment.zip)

# Créez automatiquement des CI/CD pipelines et des clusters Amazon ECS pour les microservices à l'aide d'AWS CDK
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk"></a>

*Varsha Raju, Amazon Web Services*

## Résumé
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-summary"></a>

Ce modèle décrit comment créer automatiquement l'intégration continue et la livraison continue (CI/CD) pipelines and underlying infrastructure for building and deploying microservices on Amazon Elastic Container Service (Amazon ECS). You can use this approach if you want to set up proof-of-concept CI/CD pipelines to show your organization the benefits of CI/CD, microservices, and DevOps. You can also use this approach to create initial CI/CDpipelines) que vous pouvez ensuite personnaliser ou modifier en fonction des exigences de votre organisation. 

L'approche du modèle crée un environnement de production et un environnement hors production dotés chacun d'un cloud privé virtuel (VPC) et d'un cluster Amazon ECS configurés pour s'exécuter dans deux zones de disponibilité. Ces environnements sont partagés par tous vos microservices, puis vous créez un CI/CD pipeline pour chaque microservice. Ces CI/CD pipelines extraient les modifications d'un référentiel source dans AWS CodeCommit, les génèrent automatiquement, puis les déploient dans vos environnements de production et hors production. Lorsqu'un pipeline termine avec succès toutes ses étapes, vous pouvez l'utiliser URLs pour accéder au microservice dans les environnements de production et hors production.

## Conditions préalables et limitations
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Services (AWS) actif.
+ Un compartiment Amazon Simple Storage Service (Amazon S3) existant contenant `starter-code.zip` le fichier (joint).
+ AWS Cloud Development Kit (AWS CDK), installé et configuré dans votre compte. Pour plus d'informations à ce sujet, consultez [Getting started with the AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) dans la documentation AWS CDK.
+ Python 3 et`pip`, installé et configuré. Pour plus d'informations à ce sujet, consultez la [documentation Python](https://www.python.org/).
+ Connaissance d'AWS CDK, d'AWS, d' CodePipelineAWS CodeBuild, d' CodeCommitAmazon Elastic Container Registry (Amazon ECR), d'Amazon ECS et d'AWS Fargate.
+ Connaissance de Docker.
+ Une compréhension de CI/CD et DevOps.

**Limites**
+ Les limites générales du compte AWS s'appliquent. Pour plus d'informations à ce sujet, consultez les [quotas de service AWS](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) dans la documentation de référence générale AWS.

**Versions du produit**
+ Le code a été testé avec Node.js version 16.13.0 et AWS CDK version 1.132.0.

## Architecture
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-architecture"></a>

![\[AWS Cloud architecture diagram showing CI/CD pipeline and deployment to production and non-production VPCs.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/05ac2cad-408e-433f-8150-0a2b71f63cfd/images/6fa3dbef-88de-4b3f-ae41-dfa90256a058.png)


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

1. Un développeur d'applications valide le code dans un CodeCommit référentiel.

1. Un pipeline est lancé.

1. CodeBuild crée et envoie l'image Docker vers un référentiel Amazon ECR

1. CodePipeline déploie une nouvelle image sur un service Fargate existant dans un cluster Amazon ECS hors production.

1. Amazon ECS extrait l'image du référentiel Amazon ECR vers un service Fargate hors production.

1. Les tests sont effectués à l'aide d'une URL hors production.

1. Le responsable de publication approuve le déploiement en production.

1. CodePipeline déploie la nouvelle image sur un service Fargate existant dans un cluster Amazon ECS de production

1. Amazon ECS extrait l'image du référentiel Amazon ECR vers le service de production Fargate.

1. Les utilisateurs de production accèdent à votre fonctionnalité à l'aide d'une URL de production.

**Pile technologique**
+ AWS CDK
+ CodeBuild
+ CodeCommit 
+ CodePipeline
+ Amazon ECR 
+ Amazon ECS 
+ Amazon VPC

**Automatisation et mise à l'échelle**

Vous pouvez utiliser l'approche de ce modèle pour créer des pipelines pour les microservices déployés dans une CloudFormation pile AWS partagée. L'automatisation peut créer plusieurs clusters Amazon ECS dans chaque VPC et également créer des pipelines pour les microservices déployés dans un cluster Amazon ECS partagé. Toutefois, cela nécessite que vous fournissiez de nouvelles informations sur les ressources en entrée de la pile de pipelines.

## Outils
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-tools"></a>
+ [AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html) — AWS Cloud Development Kit (AWS CDK) est un framework de développement logiciel permettant de définir l'infrastructure cloud dans le code et de la provisionner via AWS. CloudFormation
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) — AWS CodeBuild est un service de création entièrement géré dans le cloud. CodeBuild compile votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) — AWS CodeCommit 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 dans le cloud AWS. CodeCommit vous n'avez plus à gérer votre propre système de contrôle de source ou à vous soucier de la mise à l'échelle de son infrastructure.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) — AWS CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication de votre logiciel. Vous pouvez rapidement modéliser et configurer les différentes étapes d'un processus de publication d'un logiciel. CodePipeline automatise les étapes nécessaires à la publication continue des modifications de votre logiciel.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs rapide et hautement évolutif utilisé pour exécuter, arrêter et gérer des conteneurs sur un cluster. Vous pouvez exécuter vos tâches et services sur une infrastructure sans serveur gérée par AWS Fargate. Pour mieux contrôler votre infrastructure, vous pouvez également exécuter vos tâches et services sur un cluster d'instances Amazon Elastic Compute Cloud (Amazon EC2) que vous gérez.
+ [Docker](https://www.docker.com/) — Docker aide les développeurs à emballer, expédier et exécuter n'importe quelle application sous la forme d'un conteneur léger, portable et autonome.

**Code**

Le code de ce modèle est disponible dans les `starter-code.zip` fichiers `cicdstarter.zip` et (joints).

## Épopées
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le répertoire de travail pour AWS CDK.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infrastructure cloud | 

### Création de l'infrastructure partagée
<a name="create-the-shared-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'infrastructure partagée. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infrastructure cloud | 
| Surveillez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infrastructure cloud | 
| Testez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Assurez-vous d'enregistrer le IDs pour les deux groupes de sécurité VPCs et le groupe de sécurité IDs pour les groupes de sécurité par défaut dans les deux VPCs. | AWS DevOps, infrastructure cloud | 

### Création d'un CI/CD pipeline pour un microservice
<a name="create-a-ci-cd-pipeline-for-a-microservice"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'infrastructure du microservice. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html)Vous pouvez également fournir les valeurs des deux commandes en utilisant le `cdk.json` fichier du répertoire. | AWS DevOps, infrastructure cloud | 
| Surveillez la CloudFormation pile AWS. | Ouvrez la CloudFormation console AWS et surveillez la progression de la `myservice1-cicd-stack` pile. Finalement, le statut passe à `CREATE_COMPLETE`*.* | AWS DevOps, infrastructure cloud | 
| Testez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) |  | 
| Utilisez le pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.html) | AWS DevOps, infrastructure cloud | 
| Répétez cette épopée pour chaque microservice. | Répétez les tâches de cette épopée pour créer un CI/CD pipeline pour chacun de vos microservices. | AWS DevOps, infrastructure cloud | 

## Ressources connexes
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-resources"></a>
+ [Utilisation de Python avec AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-python.html) 
+ [Référence Python du kit AWS CDK](https://docs.aws.amazon.com/cdk/api/latest/python/index.html)
+ [Création d'un service AWS Fargate à l'aide du kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/ecs_example.html)

## Informations supplémentaires
<a name="automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk-additional"></a>

Commande **`cdk synth` de la **

```
cdk synth --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice>
```

**`cdk deploy `commande**

```
cdk deploy --context aws_account=<aws_account_number> --context aws_region=<aws_region> --context vpc_nonprod_id=<id_of_non_production_VPC> --context vpc_prod_id=<id_of_production_VPC> --context ecssg_nonprod_id=< default_security_group_id_of_non-production_VPC> --context ecssg_prod_id=<default_security_group_id_of_production_VPC> --context code_commit_s3_bucket_for_code=<S3 bucket name> --context code_commit_s3_object_key_for_code=<Object_key_of_starter_code> --context microservice_name=<name_of_microservice> 
```

## Pièces jointes
<a name="attachments-05ac2cad-408e-433f-8150-0a2b71f63cfd"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/05ac2cad-408e-433f-8150-0a2b71f63cfd/attachments/attachment.zip)

# Créez et envoyez des images Docker vers Amazon ECR à l'aide d' GitHub Actions et de Terraform
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform"></a>

*Ruchika Modi, Amazon Web Services*

## Résumé
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-summary"></a>

Ce modèle explique comment créer des GitHub flux de travail réutilisables pour créer votre Dockerfile et transférer l'image résultante vers Amazon Elastic Container Registry (Amazon ECR). Le modèle automatise le processus de création de vos Dockerfiles à l'aide de Terraform et d'Actions. GitHub Cela minimise le risque d'erreur humaine et réduit considérablement le temps de déploiement.

Une action GitHub push sur la branche principale de votre GitHub dépôt déclenche le déploiement des ressources. Le flux de travail crée un référentiel Amazon ECR unique basé sur la combinaison de l' GitHub organisation et du nom du référentiel. Il envoie ensuite l'image Dockerfile vers le référentiel Amazon ECR.

## Conditions préalables et limitations
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-prereqs"></a>

**Prérequis**
+ Un compte AWS actif.
+ Un GitHub compte actif.
+ Un [GitHub référentiel](https://docs.github.com/en/get-started/quickstart/create-a-repo).
+ Terraform version 1 ou ultérieure [installée et configurée](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli).
+ [Un bucket Amazon Simple Storage Service (Amazon S3) pour le backend Terraform.](https://developer.hashicorp.com/terraform/language/settings/backends/s3)
+ Une table [Amazon DynamoDB](https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwjO95K9xqCCAxW-KIMDHfOvD7IYABADGgJzZg&gclid=EAIaIQobChMIzveSvcagggMVviiDAx3zrw-yEAAYASADEgJYWfD_BwE&ohost=www.google.com&cid=CAASJuRoKjv_llGjIU3liZ4T2IRecPqw0dVHSvjZ7bee1lvcc36K_lO_&sig=AOD64_1b294pq65HiFN-T1YxQAuXmRu_hw&adurl&ved=2ahUKEwjhiY29xqCCAxUgzjgGHRu6CAIQqyQoAnoECAkQDQ) pour le verrouillage de l'état et la cohérence de Terraform. La table doit avoir une clé de partition nommée `LockID` avec un type de`String`. Si cela n'est pas configuré, le verrouillage d'état sera désactivé.
+ Rôle AWS Identity and Access Management (IAM) autorisé à configurer le backend Amazon S3 pour Terraform. Pour les instructions de configuration, consultez la documentation [Terraform](https://developer.hashicorp.com/terraform/language/settings/backends/s3#assume-role-configuration).

**Limites**

Ce code réutilisable a été testé uniquement avec des GitHub actions.

## Architecture
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-architecture"></a>

**Pile technologique cible**
+ Référentiel Amazon ECR
+ GitHub Actions
+ Terraform

**Architecture cible**

![\[Flux de travail pour créer des GitHub flux de travail réutilisables afin de créer Dockerfile et de transférer l'image vers Amazon ECR.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c39c110e-cbe5-459e-a0aa-de27e884fb10/images/298e0e16-3054-49b7-8695-db510e0df2df.png)


Le diagramme illustre les éléments suivants :

1. Un utilisateur ajoute un Dockerfile et des modèles Terraform au référentiel. GitHub 

2. Ces ajouts initient un flux de travail GitHub Actions.

3. Le flux de travail vérifie l'existence d'un référentiel Amazon ECR. Dans le cas contraire, il crée le référentiel en fonction de l' GitHub organisation et du nom du référentiel.

4. Le flux de travail crée le Dockerfile et envoie l'image vers le référentiel Amazon ECR.

## Outils
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-tools"></a>

**Services Amazon**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) est un service de registre de conteneurs géré sécurisé, évolutif et fiable.

**Autres outils**
+ [GitHub Actions](https://docs.github.com/en/actions) est intégré à la GitHub plateforme pour vous aider à créer, partager et exécuter des flux de travail au sein de vos GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser des tâches telles que la création, le test et le déploiement de votre code.
+ [Terraform](https://developer.hashicorp.com/terraform/intro) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer une infrastructure cloud et sur site.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [Docker ECR Actions Workflow](https://github.com/aws-samples/docker-ecr-actions-workflow).
+ Lorsque vous créez des GitHub actions, les fichiers de flux de travail Docker sont enregistrés dans le `/.github/workflows/` dossier de ce référentiel. Le flux de travail de cette solution se trouve dans le fichier [workflow.yaml.](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml)
+ Le `e2e-test` dossier fournit un exemple de Dockerfile à des fins de référence et de test.

## Bonnes pratiques
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-best-practices"></a>
+ Pour connaître les meilleures pratiques en matière d'écriture de Dockerfiles, consultez la documentation [Docker](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/).
+ Utilisez un point de [terminaison VPC pour Amazon ECR](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). Les points de terminaison VPC sont alimentés par AWS PrivateLink, une technologie qui vous permet d'accéder en privé à Amazon ECR APIs via des adresses IP privées. Pour les tâches Amazon ECS qui utilisent le type de lancement Fargate, le point de terminaison VPC permet à la tâche d'extraire des images privées d'Amazon ECR sans attribuer d'adresse IP publique à la tâche.

## Épopées
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-epics"></a>

### Configuration du fournisseur et GitHub du référentiel OIDC
<a name="set-up-the-oidc-provider-and-github-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez OpenID Connect. | Créez un fournisseur OpenID Connect (OIDC). Vous utiliserez le fournisseur dans la politique de confiance pour le rôle IAM utilisé dans cette action. Pour obtenir des instructions, consultez [la section Configuration d'OpenID Connect dans Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) dans la GitHub documentation. | Administrateur AWS, AWS DevOps, AWS général | 
| Clonez le GitHub dépôt. | Clonez le référentiel GitHub [Docker ECR Actions Workflow](https://github.com/aws-samples/docker-ecr-actions-workflow) dans votre dossier local :<pre>$git clone https://github.com/aws-samples/docker-ecr-actions-workflow</pre> | DevOps ingénieur | 

### Personnalisez le flux de travail GitHub réutilisable et déployez l'image Docker
<a name="customize-the-github-reusable-workflow-and-deploy-the-docker-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Personnalisez l'événement qui lance le flux de travail Docker. | Le flux de travail de cette solution se trouve dans [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml). Ce script est actuellement configuré pour déployer des ressources lorsqu'il reçoit l'`workflow_dispatch`événement. Vous pouvez personnaliser cette configuration en remplaçant l'événement par un autre flux de travail parent `workflow_call` et en appelant le flux de travail à partir d'un autre flux de travail parent. | DevOps ingénieur | 
| Personnalisez le flux de travail. | Le fichier [workflow.yaml](https://github.com/aws-samples/docker-ecr-actions-workflow/blob/main/.github/workflows/workflow.yaml) est configuré pour créer un flux de travail dynamique et réutilisable. GitHub Vous pouvez modifier ce fichier pour personnaliser la configuration par défaut, ou vous pouvez transmettre les valeurs d'entrée depuis la console GitHub Actions si vous utilisez l'`workflow_dispatch`événement pour lancer le déploiement manuellement.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.html) | DevOps ingénieur | 
| Déployez les modèles Terraform. | Le flux de travail déploie automatiquement les modèles Terraform qui créent le référentiel Amazon ECR, en fonction de l' GitHub événement que vous avez configuré. Ces modèles sont disponibles sous forme de `.tf` fichiers à la [racine du référentiel Github](https://github.com/aws-samples/docker-ecr-actions-workflow/tree/main). | AWS DevOps, DevOps ingénieur | 

## Résolution des problèmes
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Problèmes ou erreurs lorsque vous configurez Amazon S3 et DynamoDB en tant que backend distant Terraform. | Suivez les instructions de la [documentation Terraform](https://developer.hashicorp.com/terraform/language/settings/backends/s3) pour configurer les autorisations requises sur les ressources Amazon S3 et DynamoDB pour la configuration du backend distant. | 
| Impossible d'exécuter ou de démarrer le flux de travail avec l'`workflow_dispatch`événement. | Le flux de travail configuré pour être déployé à partir de l'`workflow_dispatch`événement ne fonctionnera que s'il est également configuré sur la branche principale. | 

## Ressources connexes
<a name="build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform-resources"></a>
+ [Réutilisation des flux de travail](https://docs.github.com/en/actions/using-workflows/reusing-workflows) (GitHub documentation)
+ [Déclenchement d'un flux de travail](https://docs.github.com/en/actions/using-workflows/triggering-a-workflow) (GitHub documentation)

# Créez et testez des applications iOS avec AWS CodeCommit CodePipeline, AWS et AWS Device Farm
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Résumé
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-summary"></a>

Ce modèle décrit les étapes de création d'un pipeline d'intégration et de livraison continues (CI/CD) qui utilise AWS CodePipeline pour créer et tester des applications iOS sur des appareils réels sur AWS. Le modèle utilise AWS CodeCommit pour stocker le code de l'application, l'outil open source Jenkins pour créer l'application iOS et AWS Device Farm pour tester l'application créée sur de vrais appareils. Ces trois phases sont orchestrées ensemble dans un pipeline à l'aide d'AWS CodePipeline.

Ce modèle est basé sur l'article [Création et test d'applications iOS et iPadOS avec AWS DevOps et les services mobiles](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) publié sur le DevOps blog AWS. Pour des instructions détaillées, consultez le billet de blog.

## Conditions préalables et limitations
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un compte de développeur Apple
+ Serveur de compilation (macOS)
+ [Xcode](https://developer.apple.com/xcode/) version 11.3 (installé et configuré sur le serveur de compilation)
+ Interface de ligne de commande AWS (AWS CLI) (AWS CLI[)](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) installée [et](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurée sur le poste de travail
+ Connaissances de base de [Git](https://git-scm.com/docs)

**Limites**
+ Le serveur de génération d'applications doit exécuter macOS. 
+ Le serveur de build doit avoir une adresse IP publique afin de CodePipeline pouvoir s'y connecter à distance pour lancer des builds.

## Architecture
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-architecture"></a>

**Pile technologique source**
+ Processus de création d'applications iOS sur site qui implique l'utilisation d'un simulateur ou un test manuel sur des appareils physiques

**Pile technologique cible**
+ Un CodeCommit référentiel AWS pour le stockage du code source de l'application
+ Un serveur Jenkins pour les builds d'applications à l'aide de Xcode
+ Un pool d'appareils AWS Device Farm pour tester des applications sur de vrais appareils

**Architecture cible**

Lorsqu'un utilisateur valide des modifications dans le référentiel source, le pipeline (AWS CodePipeline) extrait le code du référentiel source, lance une compilation Jenkins et transmet le code de l'application à Jenkins. Après le build, le pipeline récupère l'artefact de build et lance une tâche AWS Device Farm pour tester l'application par rapport à un pool d'appareils.

 

![\[Le pipeline CI/CD utilise AWS CodePipeline pour créer et tester des applications iOS sur de vrais appareils.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/06fbd82f-4aed-441c-818c-5f89f56af78e/images/0ae3d7b6-b40c-44ef-9580-8c8266c3d841.png)


## Outils
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-tools"></a>
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) est un service de livraison continue entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure. CodePipeline automatise les phases de création, de test et de déploiement de votre processus de publication chaque fois qu'un changement de code est effectué, en fonction du modèle de version que vous définissez.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) est un service de contrôle de source entièrement géré qui héberge des référentiels sécurisés basés sur Git. Il permet aux équipes de collaborer facilement sur le code dans un écosystème sécurisé et hautement évolutif. CodeCommit élimine le besoin d'exploiter votre propre système de contrôle de source ou de vous soucier de la mise à l'échelle de son infrastructure.
+ [AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) est un service de test d'applications qui vous permet d'améliorer la qualité de vos applications Web et mobiles en les testant sur une large gamme de navigateurs de bureau et de véritables appareils mobiles, sans avoir à fournir ni à gérer d'infrastructure de test.
+ [Jenkins](https://www.jenkins.io/) est un serveur d'automatisation open source qui permet aux développeurs de créer, de tester et de déployer leurs logiciels.

## Épopées
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-epics"></a>

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez Jenkins sur le serveur de compilation qui exécute macOS. | Jenkins sera utilisé pour créer l'application, vous devez donc d'abord l'installer sur le serveur de compilation. Pour obtenir des instructions détaillées concernant cette tâche et les tâches suivantes, consultez le billet de blog AWS sur la [création et le test d'applications iOS et iPadOS avec AWS DevOps , les services mobiles](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) et d'autres ressources dans la section [Ressources connexes](#build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources) à la fin de ce modèle. | DevOps | 
| Configurez Jenkins. | Suivez les instructions affichées à l'écran pour configurer Jenkins. | DevOps | 
| Installez le CodePipeline plugin AWS pour Jenkins. | Ce plugin doit être installé sur le serveur Jenkins pour que Jenkins puisse interagir avec le service AWS CodePipeline . | DevOps | 
| Créez un projet Jenkins Freestyle. | Dans Jenkins, créez un projet de freestyle. Configurez le projet pour spécifier les déclencheurs et les autres options de configuration de construction. | DevOps | 

### Configuration d'AWS Device Farm
<a name="configure-aws-device-farm"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un projet Device Farm. | Ouvrez la console AWS Device Farm. Créez un projet et un pool d'appareils à des fins de test. Pour obtenir des instructions, consultez le billet de blog. | Developer | 

### Configuration du référentiel source
<a name="configure-the-source-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un CodeCommit référentiel. | Créez un référentiel dans lequel le code source sera stocké. | DevOps | 
| Enregistrez le code de votre application dans le référentiel. | Connectez-vous au CodeCommit référentiel que vous avez créé. Transférez le code de votre machine locale vers le référentiel. | DevOps | 

### Configuration du pipeline
<a name="configure-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un pipeline dans AWS CodePipeline. | Ouvrez la CodePipeline console AWS et créez un pipeline. Le pipeline orchestre toutes les phases du CI/CD processus. Pour obtenir des instructions, consultez le billet de blog AWS [intitulé Création et test d'applications iOS et iPadOS avec AWS DevOps et les services mobiles](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/). | DevOps | 
| Ajoutez une phase de test au pipeline. | Pour ajouter une phase de test et l'intégrer à AWS Device Farm, modifiez le pipeline. | DevOps | 
| Lancez le pipeline. | Pour démarrer le pipeline et le CI/CD processus, choisissez **Release change**. | DevOps | 

### Afficher les résultats des tests d'applications
<a name="view-application-test-results"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue les résultats des tests. | Dans la console AWS Device Farm, sélectionnez le projet que vous avez créé et passez en revue les résultats des tests. La console affichera les détails de chaque test. | Developer | 

## Ressources connexes
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources"></a>

**Step-by-step instructions pour ce modèle**
+ [Création et test d'applications iOS et iPadOS avec AWS DevOps et les services mobiles](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) (article de DevOps blog AWS)

**Configuration d'AWS Device Farm**
+ [Console AWS Device Farm](https://console.aws.amazon.com/devicefarm)

**Configuration du référentiel source**
+ [Création d'un CodeCommit référentiel AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html)
+ [Connectez-vous à un CodeCommit référentiel AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)

**Configuration du pipeline**
+ [ CodePipeline Console AWS](https://console.aws.amazon.com/codesuite/codepipeline/home)

**Ressources supplémentaires**
+ [ CodePipeline Documentation AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [ CodeCommit Documentation AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ [Documentation d'AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html)
+ [Documentation de Jenkins](https://www.jenkins.io/doc/)
+ [Installation de Jenkins sur macOS](https://www.jenkins.io/download/weekly/macos/)
+ [ CodePipeline Plug-in AWS pour Jenkins](https://plugins.jenkins.io/aws-codepipeline/)
+ [Installation de Xcode](https://developer.apple.com/xcode/)
+ [Installation](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) et [configuration](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) de la CLI AWS
+ [Documentation Git](https://git-scm.com/docs)

# Configurer l'authentification TLS mutuelle pour les applications exécutées sur Amazon EKS
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks"></a>

*Mahendra Ranasiddappa, Amazon Web Services*

## Résumé
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-summary"></a>

La sécurité mutuelle de couche de transport (TLS) basée sur des certificats est un composant TLS optionnel qui fournit une authentification réciproque entre les serveurs et les clients. Avec le protocole TLS mutuel, les clients doivent fournir un certificat X.509 pendant le processus de négociation de session. Le serveur utilise ce certificat pour identifier et authentifier le client.

Le protocole TLS mutuel est une exigence courante pour les applications de l'Internet des objets (IoT) et peut être utilisé pour business-to-business des applications ou des normes telles que l'[Open Banking](https://docs.aws.amazon.com/wellarchitected/latest/financial-services-industry-lens/open-banking.html).

Ce modèle décrit comment configurer le protocole TLS mutuel pour les applications exécutées sur un cluster Amazon Elastic Kubernetes Service (Amazon EKS) à l'aide d'un contrôleur d'entrée NGINX. Vous pouvez activer les fonctionnalités TLS mutuelles intégrées pour le contrôleur d'entrée NGINX en annotant la ressource d'entrée. Pour plus d'informations sur les annotations TLS mutuelles sur les contrôleurs NGINX, consultez la section [Authentification par certificat client](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#client-certificate-authentication) dans la documentation de Kubernetes.

**Important**  
Ce modèle utilise des certificats auto-signés. Nous vous recommandons d'utiliser ce modèle uniquement avec les clusters de test, et non dans les environnements de production. Si vous souhaitez utiliser ce modèle dans un environnement de production, vous pouvez utiliser [AWS Private Certificate Authority (AWS Private CA)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) ou votre norme d'infrastructure à clé publique (PKI) existante pour émettre des certificats privés.

## Conditions préalables et limitations
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Services (AWS) actif.
+ Un cluster Amazon EKS existant.
+ Interface de ligne de commande AWS (AWS CLI) version 1.7 ou ultérieure, installée et configurée sur macOS, Linux ou Windows.
+ L'utilitaire de ligne de commande kubectl, installé et configuré pour accéder au cluster Amazon EKS. Pour plus d'informations à ce sujet, consultez la section [Installation de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) dans la documentation Amazon EKS.
+ Un nom de système de noms de domaine (DNS) existant pour tester l'application.

**Limites**
+ Ce modèle utilise des certificats auto-signés. Nous vous recommandons d'utiliser ce modèle uniquement avec les clusters de test, et non dans les environnements de production.

## Architecture
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-architecture"></a>

![\[Configuration de l'authentification TLS mutuelle pour les applications exécutées sur Amazon EKS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/ae2761e3-7ed2-4c2a-ba54-a4ddce8a1e7e/images/cefc60f9-2f29-4052-b7ae-df4eb6395e1c.png)


**Pile technologique**
+ Amazon EKS
+ Amazon Route 53
+ Kubectl

## Outils
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-tools"></a>
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) vous aide à exécuter Kubernetes sur AWS sans avoir à installer ou à gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est un service Web DNS hautement disponible et évolutif.
+ [Kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) est un utilitaire de ligne de commande que vous utilisez pour interagir avec un cluster Amazon EKS.

## Épopées
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-epics"></a>

### Générez les certificats auto-signés
<a name="generate-the-self-signed-certificates"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Générez la clé et le certificat CA. | Générez la clé et le certificat de l'autorité de certification (CA) en exécutant la commande suivante.<pre>openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 356 -nodes -subj '/CN=Test Cert Authority'</pre> | DevOps ingénieur | 
| Générez la clé du serveur et le certificat, puis signez avec le certificat CA. | Générez la clé du serveur et le certificat, puis signez avec le certificat CA en exécutant la commande suivante.<pre>openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN= <your_domain_name> ' && openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt</pre>Assurez-vous de le remplacer `<your_domain_name>` par votre nom de domaine existant. | DevOps ingénieur | 
|  Générez la clé client et le certificat, puis signez avec le certificat CA. | Générez la clé client et le certificat, puis signez avec le certificat CA en exécutant la commande suivante.<pre>openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=Test' && openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt</pre> | DevOps ingénieur | 

### Déployez le contrôleur d'entrée NGINX
<a name="deploy-the-nginx-ingress-controller"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le contrôleur d'entrée NGINX dans votre cluster Amazon EKS. | Déployez le contrôleur d'entrée NGINX à l'aide de la commande suivante.<pre>kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/aws/deploy.yaml</pre> | DevOps ingénieur | 
|  Vérifiez que le service du contrôleur d'entrée NGINX est en cours d'exécution. | Vérifiez que le service du contrôleur d'entrée NGINX est en cours d'exécution à l'aide de la commande suivante.<pre>kubectl get svc -n ingress-nginx</pre>Assurez-vous que l'adresse du champ de service contient le nom de domaine du Network Load Balancer. | DevOps ingénieur | 

### Créez un espace de noms dans le cluster Amazon EKS pour tester le protocole TLS mutuel
<a name="create-a-namespace-in-the-amazon-eks-cluster-to-test-mutual-tls"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un espace de noms dans le cluster Amazon EKS.  | Créez un espace de noms appelé `mtls` dans votre cluster Amazon EKS en exécutant la commande suivante. <pre>kubectl create ns mtls</pre>Cela déploie l'exemple d'application pour tester le protocole TLS mutuel. | DevOps ingénieur | 

### Création du déploiement et du service pour l'exemple d'application
<a name="create-the-deployment-and-service-for-the-sample-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le déploiement et le service Kubernetes dans l'espace de noms MTLS. | Créez un fichier nommé `mtls.yaml`. Collez le code suivant dans le fichier. <pre>kind: Deployment<br />apiVersion: apps/v1<br />metadata:<br />  name: mtls-app<br />  labels:<br />    app: mtls<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: mtls<br />  template:<br />    metadata:<br />      labels:<br />        app: mtls<br />    spec:<br />      containers:<br />      - name: mtls-app<br />        image: hashicorp/http-echo<br />        args:<br />          - "-text=mTLS is working"<br /><br /><br />---<br /><br />kind: Service<br />apiVersion: v1<br />metadata:<br />  name: mtls-service<br />spec:<br />  selector:<br />    app: mtls<br />  ports:<br />    - port: 5678 # Default port for image</pre> Créez le déploiement et le service Kubernetes dans l'espace de `mtls` noms en exécutant la commande suivante.<pre>kubectl create -f mtls.yaml -n mtls</pre> | DevOps ingénieur | 
| Vérifiez que le déploiement de Kubernetes est créé. | Exécutez la commande suivante pour vérifier que le déploiement est créé et qu'un pod est disponible.<pre>kubectl get deploy -n mtls</pre> | DevOps ingénieur | 
| Vérifiez que le service Kubernetes est créé. | Vérifiez que le service Kubernetes est créé en exécutant la commande suivante.<pre>kubectl get service -n mtls</pre> | DevOps ingénieur | 

### Création d'un secret dans l'espace de noms MTLS
<a name="create-a-secret-in-the-mtls-namespace"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un secret pour la ressource d'entrée. | Exécutez la commande suivante pour créer un secret pour le contrôleur d'entrée NGINX en utilisant les certificats que vous avez créés précédemment.<pre>kubectl create secret generic mtls-certs --from-file=tls.crt=server.crt --from-file=tls.key=server.key --from-file=ca.crt=ca.crt -n mtls </pre>Votre secret contient un certificat de serveur permettant au client d'identifier le serveur et un certificat CA permettant au serveur de vérifier les certificats du client. | DevOps ingénieur | 

### Créez la ressource d'entrée dans l'espace de noms mtls
<a name="create-the-ingress-resource-in-the-mtls-namespace"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la ressource d'entrée dans l'espace de noms MTLS. | Créez un fichier nommé `ingress.yaml`. Collez le code suivant dans le fichier (remplacez-le `<your_domain_name>` par votre nom de domaine existant).<pre>apiVersion: networking.k8s.io/v1<br />kind: Ingress<br />metadata:<br />  annotations:<br />    nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"<br />    nginx.ingress.kubernetes.io/auth-tls-secret: mtls/mtls-certs<br />  name: mtls-ingress<br />spec:<br />  ingressClassName: nginx<br />  rules:<br />  - host: "*.<your_domain_name>"<br />    http:<br />      paths:<br />      - path: /<br />        pathType: Prefix<br />        backend:<br />          service:<br />            name: mtls-service<br />            port:<br />              number: 5678<br />  tls:<br />  - hosts:<br />    - "*.<your_domain_name>"<br />    secretName: mtls-certs</pre>Créez la ressource d'entrée dans l'espace de `mtls` noms en exécutant la commande suivante.<pre>kubectl create -f ingress.yaml -n mtls</pre>Cela signifie que le contrôleur d'entrée NGINX peut acheminer le trafic vers votre exemple d'application. | DevOps ingénieur | 
| Vérifiez que la ressource d'entrée est créée. | Vérifiez que la ressource d'entrée est créée en exécutant la commande suivante.<pre>kubectl get ing -n mtls</pre>Assurez-vous que l'adresse de la ressource d'entrée indique l'équilibreur de charge créé pour le contrôleur d'entrée NGINX. | DevOps ingénieur | 

### Configurer le DNS pour qu'il pointe le nom d'hôte vers l'équilibreur de charge
<a name="configure-dns-to-point-the-hostname-to-the-load-balancer"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un enregistrement CNAME qui pointe vers l'équilibreur de charge du contrôleur d'entrée NGINX. | Connectez-vous à l'AWS Management Console, ouvrez la console Amazon Route 53 et créez un enregistrement Canonical Name (CNAME) qui pointe `mtls.<your_domain_name>` vers l'équilibreur de charge du contrôleur d'entrée NGINX.Pour plus d'informations, consultez [la section Création d'enregistrements à l'aide de la console Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) dans la documentation Route 53. | DevOps ingénieur | 

### Tester l'application
<a name="test-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez la configuration mutuelle du protocole TLS sans certificats. | Exécutez la commande suivante.<pre>curl -k https://mtls.<your_domain_name> </pre>Vous devriez recevoir le message d'erreur « 400 Aucun certificat SSL requis n'a été envoyé ». | DevOps ingénieur | 
| Testez la configuration mutuelle du protocole TLS avec des certificats. | Exécutez la commande suivante.<pre>curl -k https://mtls.<your_domain_name> --cert client.crt --key client.key</pre>Vous devriez recevoir la réponse « mTLS fonctionne ». | DevOps ingénieur | 

## Ressources connexes
<a name="configure-mutual-tls-authentication-for-applications-running-on-amazon-eks-resources"></a>
+ [Création d'enregistrements à l'aide de la console Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)
+ [Utilisation d'un Network Load Balancer avec le contrôleur d'entrée NGINX sur Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/)
+ [Authentification par certificat client](https://kubernetes.github.io/ingress-nginx/examples/auth/client-certs/)

# Automatisez la création de ressources Amazon WorkSpaces Applications à l'aide de AWS CloudFormation
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation"></a>

*Ram Kandaswamy, Amazon Web Services*

## Résumé
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-summary"></a>

Ce modèle fournit des exemples de code et des étapes pour automatiser la création de ressources [Amazon WorkSpaces Applications](https://aws.amazon.com/workspaces/applications/) dans le à AWS Cloud l'aide d'un [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)modèle. Le modèle vous montre comment utiliser une CloudFormation pile pour automatiser la création des ressources de vos WorkSpaces applications, notamment un générateur d'images, une image, une instance de flotte et une pile. Vous pouvez diffuser votre application WorkSpaces Applications aux utilisateurs finaux sur un navigateur HTML5 compatible en utilisant le mode de livraison de bureau ou d'application.

## Conditions préalables et limitations
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Une acceptation des termes et conditions des WorkSpaces candidatures
+ [Connaissance de base des ressources des WorkSpaces applications, telles que les [flottes, les piles et les](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html) générateurs d'images](https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-image-builders.html)

**Limites**
+ Vous ne pouvez pas modifier le rôle [Gestion des identités et des accès AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)(IAM) associé à une instance d' WorkSpaces applications une fois cette instance créée.
+ Vous ne pouvez pas modifier les propriétés (telles que le [sous-réseau](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-basics) ou le [groupe de sécurité](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)) sur l'instance du générateur d'images WorkSpaces Applications une fois ce générateur d'images créé.

## Architecture
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-architecture"></a>

Le schéma suivant montre comment automatiser la création de ressources d' WorkSpaces applications à l'aide d'un CloudFormation modèle.

![\[Flux de travail pour créer automatiquement WorkSpaces des ressources d'applications.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/4f0205f5-5b91-4832-9f0f-2135ae866226/images/cb578939-d9af-4f60-93c9-286881df4c3a.png)


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

1. Vous créez un CloudFormation modèle basé sur le code YAML dans la section [Informations supplémentaires](#automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional) de ce modèle.

1. Le CloudFormation modèle crée une pile CloudFormation de test.

   1. (Facultatif) Vous créez une instance de générateur d'images à l'aide d' WorkSpaces Applications.

   1. (Facultatif) Vous créez une image Windows à l'aide de votre logiciel personnalisé.

1. La CloudFormation pile crée une instance et une pile de parc d' WorkSpaces applications.

1. Vous déployez WorkSpaces les ressources de vos applications auprès des utilisateurs finaux sur un navigateur HTML5 compatible.

## Outils
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-tools"></a>
+ [Amazon WorkSpaces Applications](https://docs.aws.amazon.com/appstream2/latest/developerguide/what-is-appstream.html) est un service de streaming d'applications entièrement géré qui vous permet d'accéder instantanément à vos applications de bureau où que vous soyez. WorkSpaces Les applications gèrent les AWS ressources nécessaires pour héberger et exécuter vos applications, s'adaptent automatiquement et fournissent un accès à vos utilisateurs à la demande.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)vous aide à modéliser et à configurer vos AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs Comptes AWS et Régions AWS.

## Bonnes pratiques
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-best-practices"></a>
+ **Configurez correctement l'accès réseau pour les générateurs** d'images : lancez les générateurs d'images dans des sous-réseaux de cloud privé virtuel (VPC) dotés d'un accès Internet approprié en utilisant une passerelle NAT pour un accès Internet sortant uniquement.

  Testez la connectivité réseau aux ressources requises (telles que les serveurs d'applications, les bases de données et les serveurs de licences) avant de créer des images. Vérifiez que les tables de routage VPC autorisent les connexions à toutes les ressources réseau nécessaires. Pour plus d'informations, consultez la section [Accès à Internet](https://docs.aws.amazon.com/appstream2/latest/developerguide/internet-access.html) dans la documentation WorkSpaces des applications.
+ **Surveillez la capacité du parc par rapport aux quotas de service de manière proactive** : WorkSpaces les quotas de type et de taille des instances d'applications sont définis par Compte AWS, par. Région AWS Si vous avez plusieurs flottes de la même région qui utilisent le même type et la même taille d’instance, le nombre total d’instances de toutes les flottes de la région doit être inférieur ou égal au quota applicable. Pour plus d'informations, consultez la section [Résolution des problèmes liés aux flottes](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-fleets.html) dans la documentation WorkSpaces des applications.
+ **Testez les applications en mode Test Image Builder avant le déploiement de flottes** : validez toujours les applications en mode Test d'Image Builder avant de créer des images et de les déployer sur des flottes. Le mode test simule les autorisations limitées dont disposent les utilisateurs finaux sur les instances de flotte. Pour plus d'informations, consultez la section [Résolution des problèmes liés aux générateurs d'images](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting-image-builder.html#troubleshooting-07) dans la documentation WorkSpaces des applications.

## Épopées
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-epics"></a>

### (Facultatif) Créez une image d' WorkSpaces applications
<a name="optional-create-a-aas2-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez un logiciel personnalisé et créez une image. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html)Envisagez d'utiliser la AppLocker fonctionnalité Windows pour verrouiller davantage l'image. | AWS DevOps, architecte du cloud | 

### Déployer le CloudFormation modèle
<a name="deploy-the-cfn-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour le CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | Administrateur système AWS, administrateur cloud, architecte cloud, AWS général, administrateur AWS | 
| Créez une CloudFormation pile à l'aide du modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation.html) | Propriétaire de l'application, administrateur système AWS, ingénieur Windows | 

## Résolution des problèmes
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Problèmes divers | Pour plus d'informations, consultez la section [Résolution des problèmes](https://docs.aws.amazon.com/appstream2/latest/developerguide/troubleshooting.html) dans la documentation WorkSpaces des applications. | 

## Ressources connexes
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-resources"></a>

**Références**
+ [Démarrez avec Amazon WorkSpaces Applications : configurez avec des exemples d'applications](https://docs.aws.amazon.com/appstream2/latest/developerguide/getting-started.html)
+ [Créez un parc et une pile d' WorkSpaces applications Amazon](https://docs.aws.amazon.com/appstream2/latest/developerguide/set-up-stacks-fleets.html)

**Tutoriels et vidéos**
+ [Flux de travail utilisateur d'Amazon WorkSpaces Applications](https://www.youtube.com/watch?v=hVGQ87-Uhrc)
+ [Comment migrer une ancienne application Windows Forms vers Amazon WorkSpaces Applications](https://www.youtube.com/watch?v=CIImtS2iVbg)
+ [AWS re:Invent 2018 : Fournissez des applications de bureau en toute sécurité avec Amazon WorkSpaces Applications (01) BAP2](https://www.youtube.com/watch?v=xNIyc_inOhM)

## Informations supplémentaires
<a name="automate-the-creation-of-appstream-2-0-resources-using-aws-cloudformation-additional"></a>

Le code suivant est un exemple de CloudFormation modèle que vous pouvez utiliser pour créer automatiquement des ressources WorkSpaces d'applications.

```
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SubnetIds:
    Type: 'List<AWS::EC2::Subnet::Id>'
  testSecurityGroup:
    Type: 'AWS::EC2::SecurityGroup::Id'
  ImageName:
    Type: String
Resources:
  
  AppStreamFleet:
    Type: 'AWS::AppStream::Fleet'
    Properties:
      ComputeCapacity:
        DesiredInstances: 5
      InstanceType: stream.standard.medium
      Name: appstream-test-fleet
      DisconnectTimeoutInSeconds: 1200
      FleetType: ON_DEMAND
      IdleDisconnectTimeoutInSeconds: 1200
      ImageName: !Ref ImageName
      MaxUserDurationInSeconds: 345600
      VpcConfig:
        SecurityGroupIds:
          - !Ref testSecurityGroup
        SubnetIds: !Ref SubnetIds
  AppStreamStack:
    Type: 'AWS::AppStream::Stack'
    Properties:
      Description: AppStream stack for test
      DisplayName: AppStream test Stack
      Name: appstream-test-stack
      StorageConnectors:
        - ConnectorType: HOMEFOLDERS
      UserSettings:
        - Action: CLIPBOARD_COPY_FROM_LOCAL_DEVICE
          Permission: ENABLED
        - Action: CLIPBOARD_COPY_TO_LOCAL_DEVICE
          Permission: ENABLED
        - Action: FILE_DOWNLOAD
          Permission: ENABLED
        - Action: PRINTING_TO_LOCAL_DEVICE
          Permission: ENABLED
  AppStreamFleetAssociation:
    Type: 'AWS::AppStream::StackFleetAssociation'
    Properties:
      FleetName: appstream-test-fleet
      StackName: appstream-test-stack
    DependsOn:
      - AppStreamFleet
      - AppStreamStack
```

# Créez un analyseur de journaux personnalisé pour Amazon ECS à l'aide d'un routeur de journaux Firelens
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router"></a>

*Varun Sharma, Amazon Web Services*

## Résumé
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-summary"></a>

Firelens est un routeur de journaux pour Amazon Elastic Container Service (Amazon ECS) et AWS Fargate. Vous pouvez utiliser Firelens pour acheminer les journaux de conteneurs d'Amazon ECS vers Amazon CloudWatch et d'autres destinations (par exemple, [Splunk](https://www.splunk.com/) ou [Sumo](https://www.sumologic.com/) Logic). Firelens fonctionne avec [Fluentd ou Fluent](https://www.fluentd.org/) [Bit](https://fluentbit.io/) comme agent de journalisation, ce qui signifie que vous pouvez utiliser les [paramètres de définition des tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) pour acheminer les journaux.

En choisissant d'analyser les journaux au niveau de la source, vous pouvez analyser vos données de journalisation et effectuer des requêtes afin de répondre de manière plus efficace aux problèmes opérationnels. Étant donné que les différentes applications ont des modèles de journalisation différents, vous devez utiliser un analyseur personnalisé qui structure les journaux et facilite les recherches à destination finale.

Ce modèle utilise un routeur de journaux Firelens avec un analyseur personnalisé pour transférer les journaux CloudWatch depuis un exemple d'application Spring Boot s'exécutant sur Amazon ECS. Vous pouvez ensuite utiliser Amazon CloudWatch Logs Insights pour filtrer les journaux en fonction des champs personnalisés générés par l'analyseur personnalisé. 

## Conditions préalables et limitations
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Services (AWS) actif.
+ Interface de ligne de commande AWS (AWS CLI), installée et configurée sur votre machine locale.
+ Docker, installé et configuré sur votre machine locale.
+ Une application conteneurisée basée sur Spring Boot existante sur Amazon Elastic Container Registry (Amazon ECR). 

## Architecture
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-architecture"></a>

![\[Utilisation d'un routeur de journaux Firelens pour transférer des journaux CloudWatch depuis une application exécutée sur Amazon ECS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/images/ef60e087-965a-40e9-9f80-35edbda2befe.png)


**Pile technologique**
+ CloudWatch
+ Amazon ECR
+ Amazon ECS
+ Fargate
+ Docker
+ Fluent Bit

## Outils
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-tools"></a>
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) — Amazon Elastic Container Registry (Amazon ECR) est un service de registre d'images de conteneurs géré par AWS qui est sécurisé, évolutif et fiable.
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) — Amazon Elastic Container Service (Amazon ECS) est un service de gestion de conteneurs rapide et hautement évolutif qui facilite l'exécution, l'arrêt et la gestion des conteneurs sur un cluster.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — IAM est un service Web permettant de contrôler en toute sécurité l'accès aux services AWS.
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) — AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir avec les services AWS à l'aide de commandes dans votre shell de ligne de commande.
+ [Docker](https://www.docker.com/) — Docker est une plateforme ouverte pour le développement, l'expédition et l'exécution d'applications.

**Code**

Les fichiers suivants sont joints à ce modèle :
+ `customFluentBit.zip`— Contient les fichiers permettant d'ajouter l'analyse et les configurations personnalisées.
+ `firelens_policy.json`— Contient le document de stratégie permettant de créer une politique IAM.
+ `Task.json`— Contient un exemple de définition de tâche pour Amazon ECS.

## Épopées
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-epics"></a>

### Création d'une image Fluent Bit personnalisée
<a name="create-a-custom-fluent-bit-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| créer un référentiel Amazon ECR ; | Connectez-vous à l'AWS Management Console, ouvrez la console Amazon ECR et créez un référentiel appelé`fluentbit_custom`.Pour plus d'informations à ce sujet, consultez [la section Création d'un référentiel](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dans la documentation Amazon ECR. | Administrateur système, Développeur | 
| Décompressez le package customFluentBit .zip. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) |  | 
| Créez l'image Docker personnalisée. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Pour plus d'informations à ce sujet, consultez la section [Pushing a Docker image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) dans la documentation Amazon ECR.  | Administrateur système, Développeur | 

### Configuration du cluster Amazon ECS
<a name="set-up-the-amazon-ecs-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un nouveau cluster Amazon ECS. | Créez un cluster Amazon ECS en suivant les instructions de la section *Modèle de mise en réseau uniquement* de la section [Création d'un cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) de la documentation Amazon ECS.Assurez-vous de choisir **Create VPC** pour créer un nouveau cloud privé virtuel (VPC) pour votre cluster Amazon ECS. | Administrateur système, Développeur | 

### Configuration de la tâche Amazon ECS
<a name="set-up-the-amazon-ecs-task"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Configurez le rôle IAM d'exécution de tâches Amazon ECS. | Créez un rôle IAM d'exécution de tâches Amazon ECS à l'aide de la politique `AmazonECSTaskExecutionRolePolicy` gérée. Pour plus d'informations à ce sujet, consultez le [rôle IAM d'exécution de tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans la documentation Amazon ECS.Assurez-vous d'enregistrer le nom de ressource Amazon (ARN) du rôle IAM. | Administrateur système, Développeur | 
|  Associez la politique IAM au rôle IAM d'exécution des tâches Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Administrateur système, Développeur | 
| Configurez la définition de tâche Amazon ECS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html)Pour plus d'informations à ce sujet, consultez [la section Création d'une définition de tâche](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html) dans la documentation Amazon ECS. | Administrateur système, Développeur | 

### Exécuter la tâche Amazon ECS
<a name="run-the-amazon-ecs-task"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez la tâche Amazon ECS.  | Sur la console Amazon ECS, choisissez **Clusters**, choisissez le cluster que vous avez créé précédemment, puis exécutez la tâche autonome.Pour plus d'informations à ce sujet, consultez la section [Exécuter une tâche autonome](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html) dans la documentation Amazon ECS. | Administrateur système, Développeur | 

### Vérifiez les CloudWatch journaux
<a name="verify-the-cloudwatch-logs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez les journaux.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router.html) | Administrateur système, Développeur | 

## Ressources connexes
<a name="create-a-custom-log-parser-for-amazon-ecs-using-a-firelens-log-router-resources"></a>
+ [Notions de base sur Docker pour Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html) 
+ [Amazon ECS sur AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) 
+ [Configuration des paramètres de service de base](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/basic-service-params.html) 

## Pièces jointes
<a name="attachments-e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/e82b4992-c4e0-4af5-b87e-cb0b1c1ed8c9/attachments/attachment.zip)

# Créez un cadre d'orchestration des ressources piloté par API à l'aide GitHub d'Actions et de Terragrunt
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt"></a>

*Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande et Akash Kumar, Amazon Web Services*

## Résumé
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-summary"></a>

Ce modèle utilise les flux de travail GitHub Actions pour automatiser le provisionnement des ressources par le biais de charges utiles JSON standardisées, éliminant ainsi le besoin de configuration manuelle. Ce pipeline automatisé gère le cycle de vie complet du déploiement et peut s'intégrer parfaitement à divers systèmes frontaux, qu'il s'agisse de composants d'interface utilisateur personnalisés ou de ServiceNow. La flexibilité de la solution permet aux utilisateurs d'interagir avec le système via leurs interfaces préférées tout en maintenant des processus standardisés.

L'architecture de pipeline configurable peut être adaptée pour répondre aux différentes exigences organisationnelles. L'exemple d'implémentation se concentre sur le provisionnement d'Amazon Virtual Private Cloud (Amazon VPC) et d'Amazon Simple Storage Service (Amazon S3). Le modèle répond efficacement aux défis courants de gestion des ressources cloud en normalisant les demandes au sein de l'organisation et en fournissant des points d'intégration cohérents. Cette approche permet aux équipes de demander et de gérer plus facilement les ressources tout en garantissant la standardisation.

## Conditions préalables et limitations
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Un GitHub compte actif avec accès au référentiel configuré

**Limites**
+ Les nouvelles ressources nécessitent l'ajout manuel de `terragrunt.hcl` fichiers à la configuration du référentiel.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-architecture"></a>

Le schéma suivant montre les composants et le flux de travail de ce modèle.

![\[Flux de travail pour automatiser le provisionnement des ressources avec GitHub Actions et Terraform.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/bff5d70e-e8f1-454a-94bc-60e8cc16e69f/images/d4a768c8-4e11-493c-85ed-f4bf7e76ce60.png)


Le schéma d'architecture montre les actions suivantes :

1. L'utilisateur soumet une charge utile JSON à GitHub Actions, déclenchant le pipeline d'automatisation.

1. Le pipeline GitHub Actions récupère le code des ressources requis dans les référentiels Terragrunt et Terraform, en fonction des spécifications de charge utile.

1. Le pipeline assume le rôle approprié Gestion des identités et des accès AWS (IAM) en utilisant l' Compte AWS ID spécifié. Ensuite, le pipeline déploie les ressources vers la cible Compte AWS et gère l'état de Terraform à l'aide du bucket Amazon S3 et de la table Amazon DynamoDB spécifiques au compte.

Chacun Compte AWS contient des rôles IAM pour un accès sécurisé, un compartiment Amazon S3 pour le stockage d'état Terraform et une table DynamoDB pour le verrouillage d'état. Cette conception permet un déploiement contrôlé et automatisé des ressources sur l'ensemble du territoire Comptes AWS. Le processus de déploiement assure une gestion de l'état et un contrôle d'accès appropriés grâce à des compartiments Amazon S3 dédiés et à des rôles IAM dans chaque compte.

## Outils
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-tools"></a>

**Services AWS**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [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.
+ [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.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.

**Autres outils**
+ [GitHub Actions](https://docs.github.com/en/actions) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud.
+ [Terragrunt](https://terragrunt.gruntwork.io/docs/getting-started/overview/) est un outil d'orchestration qui étend à la fois OpenTofu les fonctionnalités de Terraform et celles de Terraform. Il gère la manière dont les modèles d'infrastructure génériques sont appliqués, ce qui facilite la mise à l'échelle et la maintenance de grands parcs d'infrastructures.

**Référentiel de code**

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

## Bonnes pratiques
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-best-practices"></a>
+ Stockez AWS les informations d'identification et les données sensibles à l'aide des secrets GitHub du référentiel pour un accès sécurisé.
+ Configurez le fournisseur OpenID Connect (OIDC) pour qu' GitHub Actions assume le rôle IAM, en évitant les informations d'identification statiques.
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-epics"></a>

### Création et configuration du référentiel
<a name="create-and-configure-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Initialisez le GitHub référentiel. | Pour initialiser le GitHub référentiel, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps ingénieur | 
| Configurez les rôles et les autorisations IAM. | Pour configurer les rôles et les autorisations IAM, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps ingénieur | 
| Configurez GitHub des secrets et des variables. | Pour obtenir des instructions sur la façon de configurer les secrets et les variables du référentiel dans le GitHub référentiel, consultez la section [Création de variables de configuration pour un référentiel](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables#creating-configuration-variables-for-a-repository) dans la GitHub documentation. Configurez les variables suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps ingénieur | 
| Créez la structure du référentiel. | Pour créer la structure du référentiel, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps ingénieur | 

### Déclencher le pipeline et valider les résultats
<a name="trigger-the-pipeline-and-validate-results"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez le pipeline à l'aide de curl.  | Pour exécuter le pipeline à l'aide de [curl](https://curl.se/), procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Pour plus d'informations sur le processus d'exécution du pipeline, voir [Informations supplémentaires](#create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional). | DevOps ingénieur | 
| Valider les résultats de l'exécution du pipeline | Pour valider les résultats, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html)Vous pouvez également vérifier les ressources créées en utilisant le `output.json` fichier créé dans le référentiel qui se trouve dans la même ressource que le `terragrunt.hcl` fichier. | DevOps ingénieur | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Soumettez une demande de nettoyage. | Pour supprimer les ressources dont vous n'avez plus besoin, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.html) | DevOps ingénieur | 

## Ressources connexes
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-resources"></a>

**AWS Blogs**
+ [Utilisez les rôles IAM pour connecter des GitHub actions à des actions dans AWS](https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/)

**Service AWS documentation**
+ [Création de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Surveillance des fichiers CloudTrail journaux avec Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)
+ [Bonnes pratiques de sécurité pour Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)

**GitHub resources**
+ [Création d'un événement d'expédition du référentiel](https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#create-a-repository-dispatch-event)
+ [Création de webhooks](https://docs.github.com/en/webhooks/using-webhooks/creating-webhooks#payload)
+ [Mettre en œuvre des contrôles d'accès stricts sur le GitHub référentiel](https://docs.github.com/en/get-started/learning-about-github/access-permissions-on-github)
+ [Auditez régulièrement l'accès au référentiel](https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization)
+ [Contrôles de sécurité en CI/CD cours](https://github.com/marketplace/actions/checkov-github-action)
+ [Utiliser l'authentification multifactorielle pour les comptes GitHub ](https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)

## Informations supplémentaires
<a name="create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt-additional"></a>

**Processus d'exécution du pipeline**

Voici les étapes de l'exécution du pipeline :

1. **Valide le format de charge utile JSON** : garantit que la configuration JSON entrante est correctement structurée et contient tous les paramètres requis

1. **Assume le rôle IAM spécifié** : authentifie et assume le rôle IAM requis pour les opérations AWS 

1. **Télécharge le code Terraform et Terragrunt requis - Récupère la version spécifiée du code** de ressource et des dépendances

1. **Exécute le déploiement des ressources** : applique la configuration pour déployer ou mettre à jour AWS les ressources dans l'environnement cible

**Exemple de charge utile utilisée pour la création d'un VPC**

Voici un exemple de code pour la création de compartiments d'état du backend Terraform :

```
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
```

```
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
```

Vous trouverez ci-dessous un exemple de charge utile pour créer un VPC avec Amazon VPC, dans `vpc_cidr` lequel sont définies les spécifications du [bloc CIDR pour le](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html) VPC. Le bucket d'état Terraform est mappé à une variable définie dans les fichiers. `terraform` Le `ref` paramètre contient le nom de branche du code à exécuter.

```
{
    "ref": "main",
    "inputs": {
        "RequestParameters": {
            "RequestId": "1111111",
            "RequestType": "create",
            "ResourceType": "vpc",
            "AccountId": "1234567890",
            "AccountAlias": "account-alias",
            "RegionId": "us-west-2",
            "ApplicationName": "myapp",
            "DivisionName": "division-name",
            "EnvironmentId": "dev",
            "Suffix": "poc"
        },
        "ResourceParameters": [
            {
                "VPC": {
                    "vpc_cidr": "10.0.0.0/16"
                }
            }
        ]
    }
}
```

`RequestParameters`sont utilisés pour suivre l'état de la demande dans la section du pipeline et `tfstate` sont créés sur la base de ces informations. Les paramètres suivants contiennent des métadonnées et des informations de contrôle :
+ `RequestId`— Identifiant unique pour la demande
+ `RequestType`— Type d'opération (création, mise à jour ou suppression)
+ `ResourceType`— Type de ressource à approvisionner
+ `AccountId`— Cible Compte AWS pour le déploiement
+ `AccountAlias`— Nom convivial pour le Compte AWS
+ `RegionId`— Région AWS pour le déploiement des ressources
+ `ApplicationName`— Nom de l'application
+ `DivisionName`— Division de l'organisation
+ `EnvironmentId`— Environnement (par exemple, dev et prod)
+ `Suffix`— Identifiant supplémentaire pour les ressources

`ResourceParameters`contiennent une configuration spécifique aux ressources qui correspond aux variables définies dans les fichiers Terraform. Toutes les variables personnalisées devant être transmises aux modules Terraform doivent être incluses. `ResourceParameters` Le paramètre `vpc_cidr` est obligatoire pour Amazon VPC.

# Créez des pull requests automatisées pour l'infrastructure gérée par Terraform à l'aide AWS d'Actions GitHub
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure"></a>

*Matt Padgett, Ashish Bhatt, Ashwin Divakaran, Sandip Gangapadhyay et Prafful Gupta, Amazon Web Services*

## Résumé
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-summary"></a>

Ce modèle présente un utilitaire d'automatisation conçu pour éliminer le travail manuel et répétitif lié à la gestion des modifications dans plusieurs référentiels Terraform. De nombreuses entreprises utilisent les référentiels Terraform pour gérer leur infrastructure en tant que code (IaC), souvent avec des centaines de référentiels distincts représentant différents environnements, services ou équipes. La gestion de ces référentiels à grande échelle représente un défi opérationnel majeur. Les tâches de routine telles que la mise à jour d'un paramètre, la mise à niveau des versions de modules ou l'application de modifications de configuration nécessitent souvent de créer et de gérer des pull requests (PRs) dans de nombreux référentiels plusieurs fois par jour.

Même pour de simples modifications, ce processus manuel et répétitif prend du temps et est source d'erreurs. Les ingénieurs doivent systématiquement appliquer les mêmes modifications à tous les référentiels ciblés et créer des titres et des descriptions de relations publiques significatifs. En outre, ils doivent souvent interagir avec des outils externes tels que Jira pour récupérer ou inclure des références de suivi des problèmes. Ces tâches, bien que nécessaires, consistent à soulever des objets lourds de manière indifférenciée, consomment un temps précieux en ingénierie et réduisent l'efficacité globale. Le manque d'automatisation de ce flux de travail crée des frictions, ralentit la livraison et augmente la charge cognitive des équipes chargées de la maintenance des infrastructures Terraform à grande échelle.

**Présentation de la solution**

Pour relever ce défi, ce modèle propose un utilitaire entièrement piloté par la configuration, permettant aux utilisateurs de définir les modifications souhaitées dans un fichier de configuration structuré. Ce fichier spécifie les référentiels, les modules, les paramètres et les valeurs cibles à l'aide d'un schéma clairement défini.

Une fois configuré, l'utilitaire exécute les étapes automatisées suivantes :

1. **Lit la configuration définie par l'utilisateur** pour déterminer l'étendue et la nature des modifications

1. **Crée une nouvelle branche** dans chaque référentiel cible avec les mises à jour requises appliquées

1. **Génère un PR** pour chaque modification, garantissant ainsi la cohérence entre tous les référentiels

1. **Envoie des notifications Slack** (facultatif) pour avertir les parties prenantes à l'aide de liens directs vers le PRs

En automatisant ces tâches répétitives, l'utilitaire réduit considérablement le temps, les efforts et les risques associés à la gestion des mises à jour d'infrastructure à grande échelle. Il permet aux équipes de se concentrer sur des travaux d'ingénierie à plus forte valeur ajoutée tout en garantissant que les modifications sont appliquées de manière cohérente et peuvent être suivies dans tous les référentiels.

## Conditions préalables et limitations
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Python version 3.8 ou ultérieure.
+ Un jeton d'accès GitHub personnel (PAT). Pour plus d'informations, consultez la section [Création d'un jeton d'accès personnel (classique)](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic) dans la GitHub documentation.
+ Le GitHub PAT peut accéder à vos référentiels cibles afin que l'utilitaire puisse effectuer des opérations telles que la création de branches et les pull requests. Pour plus d'informations, consultez le [référentiel de GitHub code](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file#repository-access-verification) de ce modèle.

**Limites**
+ **La complexité de la configuration** constitue le principal défi. L'efficacité de l'automatisation est limitée par les capacités de son fichier de configuration. Bien que le système gère efficacement les modifications standard, les modifications complexes de l'infrastructure peuvent nécessiter une intervention manuelle et certains cas extrêmes restent hors du champ d'application de la gestion automatisée.
+ **La sécurité et l'accès** présentent des considérations importantes, notamment en ce qui concerne la gestion des jetons GitHub d'accès et des limites de débit des API. Organisations doivent trouver un juste équilibre entre le besoin d'automatisation et le stockage et la gestion sécurisés des informations d'identification, en garantissant des contrôles d'accès appropriés tout en préservant l'efficacité opérationnelle.
+ **Les contraintes de validation** constituent une autre limite notable, car le système automatisé a une capacité limitée à valider la logique métier et les exigences spécifiques à l'environnement. Les dépendances complexes et les interactions entre services nécessitent souvent une supervision humaine, car la validation automatique ne permet pas de saisir pleinement toutes les nuances contextuelles et les règles métier.
+ Des problèmes **d'échelle et de performance** apparaissent lors de modifications d'infrastructure à grande échelle. Le système doit fonctionner dans les limites de GitHub l'API tout en gérant simultanément de nombreux référentiels. Les opérations gourmandes en ressources sur une infrastructure étendue peuvent créer des goulots d'étranglement en matière de performances nécessitant une gestion minutieuse.
+ Les **limites d'intégration** limitent la flexibilité du système, car il est principalement conçu pour fonctionner avec des outils spécifiques tels que GitHub Slack. Organisations qui utilisent différents outils peuvent avoir besoin de solutions personnalisées et les options de personnalisation du flux de travail de ce modèle sont limitées aux points d'intégration pris en charge.

## Architecture
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-architecture"></a>

Le schéma suivant montre le flux de travail et les composants de cette solution.

![\[Flux de travail pour créer des pull requests automatisées à l'aide d' GitHub actions.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e211359a-03b1-4e69-b152-eb7c09bdb01a/images/6cee0660-5b44-4abe-970c-c0a3c830a9aa.png)


Le flux de travail se compose des étapes suivantes :

1. Le développeur déclenche GitHub des actions en spécifiant le référentiel Terraform.

1. L'utilitaire d'automatisation lit les configurations définies.

1. L'utilitaire d'automatisation extrait également le référentiel Terraform fourni.

1. L'utilitaire d'automatisation crée une nouvelle branche et met à jour les modèles Terraform localement.

1. L'utilitaire d'automatisation envoie la nouvelle branche vers le référentiel et crée un nouveau PR. 

1. L'utilitaire d'automatisation utilise les notifications Slack qui incluent des liens de relations publiques pour informer les développeurs et active le déploiement des modèles Terraform. AWS Cloud 

## Outils
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-tools"></a>
+ [GitHub](https://docs.github.com/)est une plateforme de développement que les développeurs peuvent utiliser pour créer, stocker, gérer et partager leur code.
+ [GitHub Actions](https://docs.github.com/en/actions) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.
+ [HashiCorp Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) qui vous aide à créer et à gérer des ressources sur site et dans le cloud.
+ [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), une offre de Salesforce, est une plateforme conversationnelle basée sur l'IA qui permet la collaboration par chat et vidéo, automatise les processus sans code et prend en charge le partage d'informations.

**Référentiel de code**

Le code de ce modèle est disponible dans le [flux de travail GitHub automatisé de mise à jour de l'infrastructure Terraform à l'aide du référentiel GitHub Actions](https://github.com/aws-samples/sample-terraform-pr-automation-utility?tab=readme-ov-file).

## Bonnes pratiques
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-best-practices"></a>
+ Une **gestion du changement** efficace est essentielle à la réussite de la mise en œuvre. Organisations devraient adopter une stratégie de déploiement progressif pour les changements à grande échelle. Maintenez des conventions de dénomination des branches et des descriptions de relations publiques cohérentes et garantissez une documentation complète de toutes les modifications.
+ Les **contrôles de sécurité** doivent être rigoureusement mis en œuvre, en se concentrant sur les principes du moindre privilège d'accès et sur une gestion sécurisée des informations d'identification. Activez les règles de protection des succursales pour empêcher les modifications non autorisées. Effectuez des audits de sécurité réguliers pour préserver l'intégrité du système.
+ Un **protocole de test** robuste doit inclure `terraform plan` l'exécution automatisée dans les pipelines d'intégration continue et de déploiement continu (CI/CD). Le protocole doit également inclure des contrôles de validation avant la validation et des environnements de révision dédiés aux modifications critiques. Cette approche de test à plusieurs niveaux permet de détecter les problèmes à un stade précoce et de garantir la stabilité de l'infrastructure.
+ **La stratégie de surveillance** doit inclure des mécanismes d'alerte complets, un suivi détaillé des success/failure métriques et des mécanismes de relance automatisés en cas d'échec des opérations. Cette stratégie contribue à garantir la visibilité opérationnelle et permet de répondre rapidement à tous les problèmes qui se présentent.
+ Les **normes de configuration** doivent mettre l'accent sur le contrôle des versions pour toutes les configurations, en maintenant la modularité pour la réutilisabilité et l'évolutivité. Une documentation claire du schéma et des exemples aide les équipes à comprendre et à utiliser efficacement le système d'automatisation.

## Épopées
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-epics"></a>

### Installation et configuration
<a name="installation-and-setup"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le référentiel. | Pour configurer le référentiel, exécutez les commandes suivantes :<pre># Clone the automation tool repository<br />git clone https://github.com/aws-samples/sample-terraform-pr-automation-utility<br />cd sample-terraform-pr-automation-utility<br /><br /># Copy example configuration<br />cp config.example.yaml config.yaml<br /></pre> | AWS DevOps | 
| Installez les dépendances. | Pour installer et vérifier les dépendances Python, exécutez les commandes suivantes :<pre># Install Python dependencies<br />pip3 install -r requirements.txt<br /><br /># Verify installation<br />python3 -c "import github; import hcl2; import yaml; import requests; print('All packages installed successfully')"<br /></pre> | AWS DevOps | 
| Configurez le GitHub jeton. | Pour configurer le GitHub jeton puis vérifier qu'il fonctionne, exécutez les commandes suivantes :<pre># Set GitHub token environment variable<br />export GITHUB_TOKEN="your_github_token_here"<br /><br /># Verify token works<br />curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user<br /></pre> | AWS DevOps | 

### Configurer le fichier de configuration pour les modifications apportées à Terraform
<a name="set-up-configuration-file-for-terraform-changes"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le `config.yaml` fichier. | Pour définir vos référentiels cibles et les modifications souhaitées, modifiez le fichier `config.yam` l comme suit :<pre>repositories:<br />  - owner: "your-org"<br />    repo: "your-terraform-repo"<br />    files:<br />      - path: "variables.tf"<br />        changes:<br />          variables:<br />            - app_version:<br />                default:<br />                  update:<br />                    - from: ["1.0.0"]<br />                      to: "1.1.0"<br /><br />settings:<br />  pr_title_template: "Infrastructure Update - {{timestamp}}"<br />  slack:<br />    username: "Terraform Bot"<br />    icon_emoji: ":terraform:"<br />    notify_on_success: true<br />    notify_on_error: true<br />    notify_batch_summary: true<br /></pre> | AWS DevOps | 

### Tester et valider
<a name="test-and-validate"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Effectuez des tests avant le vol. | Testez toujours votre configuration avant de l'exécuter sur des référentiels de production. Utilisez les commandes suivantes :<pre># 1. Test configuration syntax<br />python3 -c "from main import get_config_content; get_config_content()"<br /><br /># 2. Run in dry-run mode first<br />DRY_RUN=true python3 main.py<br /><br /># 3. Test with minimal configuration<br /># Use a simple config.yaml with just one repository and one change</pre> | AWS DevOps | 
| Vérifiez l'accès au référentiel. | Pour vérifier que le GitHub jeton peut accéder au référentiel, exécutez la commande suivante :<pre># Test GitHub token access<br />curl -H "Authorization: token $GITHUB_TOKEN" \<br />  https://api.github.com/repos/owner/repo-name<br /><br /># Should return repository information, not 404</pre> | AWS DevOps | 

### Exécutez l'utilitaire d'automatisation
<a name="run-the-automation-utility"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez l'utilitaire d'automatisation à l'aide de l'interface utilisateur GitHub Actions. | Pour exécuter l'utilitaire d'automatisation à l'aide de l'interface utilisateur GitHub Actions, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 
| (Alternative) Exécutez l'utilitaire d'automatisation depuis la ligne de commande. | Si vous préférez, vous pouvez exécuter l'utilitaire d'automatisation à partir de la ligne de commande au lieu d'utiliser l'interface utilisateur GitHub Actions. Utilisez la commande suivante :<pre># Run actual automation<br />python3 main.py</pre> | AWS DevOps | 

### Valider PRs et modifier
<a name="validate-prs-and-changes"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue les créations PRs et les modifications. | Pour contrôler les résultats de l'exécution du GitHub flux de travail, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-automated-pull-requests-for-terraform-managed-aws-infrastructure.html) | AWS DevOps | 

### Nettoyage
<a name="clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| (Facultatif) Nettoyez PRs. | Fermer, abandonné ou inutile PRs. | AWS DevOps | 

## Ressources connexes
<a name="create-automated-pull-requests-for-terraform-managed-aws-infrastructure-resources"></a>

**AWS Directives prescriptives**
+ [Utilisation de Terraform comme outil IaC pour AWS Cloud](https://docs.aws.amazon.com/prescriptive-guidance/latest/choose-iac-tool/terraform.html)

**GitHub documentation**
+ [À propos des pull requests](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
+ [Gestion de vos jetons d'accès personnels](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
+ [Comprendre les GitHub actions](https://docs.github.com/en/actions/get-started/understand-github-actions)
+ [Démarrage rapide pour les actions GitHub ](https://docs.github.com/en/actions/get-started/quickstart)

# Créez automatiquement des pipelines CI dynamiques pour les projets Java et Python
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically"></a>

*Aromal Raj Jayarajan, Vijesh Vijayakumaran Nair, MAHESH RAGHUNANDANAN et Amarnath Reddy, Amazon Web Services*

## Résumé
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-summary"></a>

Ce modèle montre comment créer automatiquement des pipelines d'intégration continue (CI) dynamiques pour les projets Java et Python à l'aide des outils de développement AWS.

À mesure que les technologies se diversifient et que les activités de développement augmentent, il peut devenir difficile de créer et de maintenir des pipelines de CI cohérents au sein d'une organisation. En automatisant le processus dans AWS Step Functions, vous pouvez vous assurer que l'utilisation et l'approche de vos pipelines CI sont cohérentes.

Pour automatiser la création de pipelines CI dynamiques, ce modèle utilise les entrées variables suivantes :
+ Langage de programmation (Java ou Python uniquement)
+ Nom du pipeline
+ Étapes de pipeline requises

**Note**  
Step Functions orchestre la création de pipelines à l'aide de plusieurs services AWS. Pour plus d'informations sur les services AWS utilisés dans cette solution, consultez la section **Outils** de ce modèle.

## Conditions préalables et limitations
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un compartiment Amazon S3 dans la même région AWS que celle dans laquelle cette solution est déployée
+ Un responsable d'AWS Identity and Access Management ([IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)) disposant des CloudFormation autorisations AWS requises pour créer les ressources nécessaires à cette solution

**Limites**
+ Ce modèle ne prend en charge que les projets Java et Python.
+ Les rôles IAM fournis selon ce modèle suivent le principe du moindre privilège. Les autorisations des rôles IAM doivent être mises à jour en fonction des ressources spécifiques que votre pipeline CI doit créer.

## Architecture
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-architecture"></a>

**Pile technologique cible**
+ AWS CloudFormation
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS CodePipeline
+ IAM
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Systems Manager
+ AWS Step Functions
+ AWS Lambda
+ Amazon DynamoDB

**Architecture cible**

Le schéma suivant montre un exemple de flux de travail permettant de créer automatiquement des pipelines de CI dynamiques pour des projets Java et Python à l'aide des outils de développement AWS.

![\[Flux de travail permettant de créer automatiquement des pipelines de CI dynamiques pour les projets Java et Python à l'aide des outils AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/bef2ccb8-68b3-4c0f-9ee7-4b93e9422d9c/images/b5ed003f-cf16-4130-8bfb-2bc2cb9a0d33.png)


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

1. Un utilisateur AWS fournit les paramètres d'entrée pour la création d'un pipeline CI au format JSON. Cette entrée lance un flux de travail Step Functions (*machine à états*) qui crée un pipeline CI à l'aide des outils de développement AWS.

1. **Une fonction Lambda lit un dossier nommé **input-reference**, qui est stocké dans un compartiment Amazon S3, puis génère un fichier buildspec.yml.** Ce fichier généré définit les étapes du pipeline CI et est stocké dans le même compartiment Amazon S3 qui stocke les références de paramètres.

1. Step Functions vérifie les dépendances du flux de création du pipeline CI pour détecter toute modification et met à jour la pile de dépendances selon les besoins.

1. Step Functions crée les ressources du pipeline CI dans une CloudFormation pile, y compris un CodeCommit référentiel, un CodeBuild projet et un CodePipeline pipeline.

1. La CloudFormation pile copie l'exemple de code source pour la pile technologique sélectionnée (Java ou Python) et le fichier **buildspec.yml** dans le référentiel. CodeCommit 

1. Les détails d'exécution du pipeline CI sont stockés dans une table DynamoDB.

**Automatisation et mise à l'échelle**
+ Ce modèle est destiné à être utilisé dans un seul environnement de développement uniquement. Des modifications de configuration sont nécessaires pour une utilisation dans plusieurs environnements de développement.
+ Pour ajouter la prise en charge de plusieurs CloudFormation piles, vous pouvez créer des CloudFormation modèles supplémentaires. Pour plus d'informations, consultez [Getting started with AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) dans la CloudFormation documentation.

## Outils
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-tools"></a>

**Outils**
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) est un service d'orchestration sans serveur qui vous permet de combiner les fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [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.
+ [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [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.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur les comptes et les régions AWS.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

**Code**

Le code de ce modèle est disponible dans le GitHub [automated-ci-pipeline-creation](https://github.com/aws-samples/automated-ci-pipeline-creation)référentiel. Le référentiel contient les CloudFormation modèles requis pour créer l'architecture cible décrite dans ce modèle.

## Bonnes pratiques
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-best-practices"></a>
+ N'entrez pas d'informations d'identification (*secrets*) telles que des jetons ou des mots de passe directement dans les CloudFormation modèles ou les configurations d'actions Step Functions. Dans ce cas, les informations seront affichées dans les journaux DynamoDB. Utilisez plutôt AWS Secrets Manager pour configurer et stocker des secrets. Référencez ensuite les secrets stockés dans Secrets Manager dans les CloudFormation modèles et les configurations d'action Step Functions selon vos besoins. Pour plus d'informations, consultez la section [Qu'est-ce qu'AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) dans la documentation de Secrets Manager.
+ Configurez le chiffrement côté serveur pour les CodePipeline artefacts stockés dans Amazon S3. Pour plus d'informations, consultez [Configurer le chiffrement côté serveur pour les artefacts stockés dans Amazon S3 ou CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html) dans la CodePipeline documentation.
+ Appliquez les autorisations du moindre privilège lors de la configuration des rôles IAM. Pour plus d'informations, veuillez consulter la rubrique [Accorder les autorisations de moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dans la documentation IAM.
+ Assurez-vous que votre compartiment Amazon S3 n'est pas accessible au public. Pour plus d'informations, consultez [la section Configuration du paramètre de blocage de l'accès public pour vos compartiments S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configuring-block-public-access-bucket.html) dans la documentation Amazon S3.
+ Assurez-vous d'activer la gestion des versions pour votre compartiment Amazon S3. Pour plus d'informations, consultez la section [Utilisation du versionnement dans les compartiments S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) dans la documentation Amazon S3.
+ Utilisez IAM Access Analyzer lors de la configuration des politiques IAM. L'outil fournit des recommandations pratiques pour vous aider à créer des politiques IAM sécurisées et fonctionnelles. Pour plus d'informations, consultez la section [Utilisation d'AWS Identity and Access Management Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) dans la documentation IAM.
+ Dans la mesure du possible, définissez des conditions d'accès spécifiques lors de la configuration des politiques IAM.
+ Activez la CloudWatch journalisation Amazon à des fins de surveillance et d'audit. Pour plus d'informations, consultez [Qu'est-ce qu'Amazon CloudWatch Logs ?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) dans la CloudWatch documentation.

## Épopées
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-epics"></a>

### Configuration des prérequis
<a name="configure-the-prerequisites"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment Amazon S3. | Créez un compartiment Amazon S3 (ou utilisez un compartiment existant) pour stocker les CloudFormation modèles, le code source et les fichiers d'entrée requis pour la solution.Pour plus d'informations, consultez [Étape 1 : Création de votre premier compartiment S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) dans la documentation Amazon S3.Le compartiment Amazon S3 doit se trouver dans la même région AWS que celle dans laquelle vous déployez la solution. | AWS DevOps | 
| Clonez le GitHub dépôt. | Clonez le GitHub [automated-ci-pipeline-creation](https://github.com/aws-samples/automated-ci-pipeline-creation)dépôt en exécutant la commande suivante dans une fenêtre de terminal :<pre>git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git</pre>Pour plus d'informations, consultez la section [Clonage d'un dépôt](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) dans la GitHub documentation. | AWS DevOps | 
| Téléchargez le dossier Solutions Templates depuis le GitHub référentiel cloné vers votre compartiment Amazon S3.  | Copiez le contenu du dossier **Solution-Templates** cloné et chargez-le dans le compartiment Amazon S3 que vous avez créé.Pour plus d'informations, consultez la section [Chargement d'objets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans la documentation Amazon S3.Assurez-vous de télécharger uniquement le contenu du dossier **Solution-Templates**. Vous ne pouvez télécharger les fichiers qu'au niveau racine du compartiment Amazon S3. | AWS DevOps | 

### Déploiement de la solution
<a name="deploy-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une CloudFormation pile pour déployer la solution en utilisant le fichier template.yml dans le référentiel cloné. GitHub  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)Lors de la création de votre pile, elle est répertoriée sur la page **Stacks** avec le statut **CREATE\$1IN\$1PROGRESS**. Assurez-vous d'attendre que le statut de la pile passe à **CREATE\$1COMPLETE** avant de terminer les étapes restantes de ce modèle. | Administrateur AWS, AWS DevOps | 

### Tester la configuration
<a name="test-the-setup"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez la fonction step que vous avez créée.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)**Formatage JSON**<pre>{<br />  "details": {<br />    "tech_stack": "Name of the Tech Stack (python/java)",<br />    "project_name": "Name of the Project that you want to create with",<br />    "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />    "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no",<br />  }<br />}</pre>**Exemple de saisie Java JSON**<pre>{<br />  "details": {<br />    "tech_stack": "java",<br />    "project_name": "pipeline-java-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre>**Exemple de saisie JSON en Python**<pre>{<br />  "details": {<br />    "tech_stack": "python",<br />    "project_name": "pipeline-python-pjt",<br />    "pre_build": "yes",<br />    "build": "yes",<br />    "post_build": "yes",<br />    "reports": "yes"<br />  }<br />}</pre> | Administrateur AWS, AWS DevOps | 
| Vérifiez que le CodeCommit référentiel pour le pipeline CI a été créé. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Vérifiez les ressources CodeBuild du projet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Validez les CodePipeline étapes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 
| Vérifiez que le pipeline CI s'est correctement exécuté. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html) | AWS DevOps | 

### Nettoyage de vos ressources
<a name="clean-up-your-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources empilées CloudFormation. | Supprimez la pile de ressources du pipeline CI CloudFormation.Pour plus d'informations, consultez [Supprimer une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) dans la CloudFormation documentation.Assurez-vous de supprimer la pile nommée **-stack**<project\$1name>. | AWS DevOps | 
| Supprimez les dépendances du pipeline CI dans Amazon S3 et CloudFormation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.html)Assurez-vous de supprimer la pile nommée **pipeline-creation-dependencies-stack**. | AWS DevOps | 
| Supprimez le bucket de modèles Amazon S3. | Supprimez le compartiment Amazon s3 que vous avez créé dans la section **Configurer les prérequis** de ce modèle, qui stocke les modèles de cette solution.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 | 

## Ressources connexes
<a name="create-dynamic-ci-pipelines-for-java-and-python-projects-automatically-resources"></a>
+ [Création d'une machine d'état Step Functions utilisant Lambda (documentation](https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-creating-lambda-state-machine.html) AWS Step Functions)
+ [AWS Step Functions WorkFlow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html) (documentation AWS Step Functions)
+ [DevOps et AWS](https://aws.amazon.com/devops/)
+ [Comment CloudFormation fonctionne AWS ?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html) ( CloudFormation documentation AWS)
+ [Complet CI/CD avec AWS CodeCommit, AWS CodeBuild CodeDeploy, AWS et AWS CodePipeline](https://aws.amazon.com/blogs/devops/complete-ci-cd-with-aws-codecommit-aws-codebuild-aws-codedeploy-and-aws-codepipeline/) (article de blog AWS)
+ [Quotas IAM et AWS STS, exigences relatives aux noms et limites de caractères](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) (documentation IAM)

# Déployez des CloudWatch canaris Synthetics à l'aide de Terraform
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform"></a>

*Dhrubajyoti Mukherjee et Jean-François Landreau, Amazon Web Services*

## Résumé
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-summary"></a>

Il est important de valider l'état d'un système du point de vue du client et de confirmer que les clients sont en mesure de se connecter. Cela est plus difficile lorsque les clients n'appellent pas constamment le terminal. [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) prend en charge la création de canaris, qui peuvent tester des points de terminaison publics et privés. En utilisant des canaris, vous pouvez connaître l'état d'un système même s'il n'est pas utilisé. Ces canaris sont soit des scripts Node.js Puppeteer, soit des scripts Python Selenium.

Ce modèle décrit comment utiliser HashiCorp Terraform pour déployer des canaris qui testent des points de terminaison privés. Il intègre un script Puppeteer qui teste si une URL est renvoyée. `200-OK` Le script Terraform peut ensuite être intégré au script qui déploie le point de terminaison privé. Vous pouvez également modifier la solution pour surveiller les points de terminaison publics.

## Conditions préalables et limitations
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-prereqs"></a>

**Prérequis**
+ Un compte Amazon Web Services (AWS) actif avec un cloud privé virtuel (VPC) et des sous-réseaux privés
+ URL du point de terminaison accessible depuis les sous-réseaux privés
+ Terraform installé dans l'environnement de déploiement

**Limites**

La solution actuelle fonctionne pour les versions d'exécution de CloudWatch Synthetics suivantes :
+ syn-nodejs-puppeteer-3,4
+ syn-nodejs-puppeteer-3,5
+ syn-nodejs-puppeteer-3,6
+ syn-nodejs-puppeteer-3,7

À mesure que de nouvelles versions d'exécution sont publiées, vous devrez peut-être mettre à jour la solution actuelle. Vous devrez également modifier la solution pour suivre les mises à jour de sécurité.

**Versions du produit**
+ Terraform 1.3.0

## Architecture
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-architecture"></a>

Amazon CloudWatch Synthetics est basé sur CloudWatch Lambda et Amazon Simple Storage Service (Amazon S3). Amazon CloudWatch propose un assistant pour créer les canaris et un tableau de bord qui affiche l'état des canaris. La fonction Lambda exécute le script. Amazon S3 stocke les journaux et les captures d'écran des Canary Runs.

Ce modèle simule un point de terminaison privé via une instance Amazon Elastic Compute Cloud (Amazon EC2) déployée dans les sous-réseaux ciblés. La fonction Lambda nécessite des interfaces réseau élastiques dans le VPC où le point de terminaison privé est déployé.

![\[La description suit le schéma.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/73ed0103-ec45-4653-bb29-f402a88f0c64/images/39aaed0f-f259-4f2a-98fb-8e3a340d0b02.png)


Le diagramme décrit les éléments suivants :

1. Le Synthetics Canary lance la fonction Lambda Canary.

1. La fonction Lambda Canary se connecte à l'interface Elastic Network.

1. La fonction Canary Lambda surveille l'état du terminal.

1. Le Synthetics Canary envoie les données d'exécution vers le compartiment S3 et les métriques. CloudWatch 

1. Une CloudWatch alarme est déclenchée sur la base des métriques.

1. L' CloudWatch alarme lance la rubrique Amazon Simple Notification Service (Amazon SNS).

## Outils
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-tools"></a>

**Services AWS**
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos ressources AWS et des applications que vous exécutez sur AWS en temps réel.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [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.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS. Ce modèle utilise des points de terminaison VPC et des interfaces réseau élastiques.

**Autres services**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil open source d'infrastructure sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources cloud. Ce modèle utilise Terraform pour déployer l'infrastructure.
+ [Puppeteer](https://pptr.dev/) est une bibliothèque Node.js. Le runtime CloudWatch Synthetics utilise le framework Puppeteer.

**Code**

La solution est disponible dans le watch-synthetics-canary-terraform référentiel GitHub [cloud](https://github.com/aws-samples/cloudwatch-synthetics-canary-terraform). Pour plus d'informations, consultez la section *Informations supplémentaires*.

## Épopées
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-epics"></a>

### Implémenter la solution de surveillance d'une URL privée
<a name="implement-the-solution-for-monitoring-a-private-url"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Rassemblez les exigences relatives à la surveillance de l'URL privée. | Rassemblez la définition complète de l'URL : domaine, paramètres et en-têtes. Pour communiquer en privé avec Amazon S3 et Amazon CloudWatch, utilisez des points de terminaison VPC. Notez comment le VPC et les sous-réseaux sont accessibles au point de terminaison. Tenez compte de la fréquence des courses de canaris. | Architecte cloud, administrateur réseau | 
| Modifiez la solution existante pour surveiller l'URL privée. | Modifiez le `terraform.tfvars` fichier :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Architecte du cloud | 
| Déployez et exploitez la solution. | Pour déployer la solution, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-cloudwatch-synthetics-canaries-by-using-terraform.html) | Architecte cloud, DevOps ingénieur | 

## Résolution des problèmes
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La suppression des ressources provisionnées est bloquée. | Supprimez manuellement la fonction Lambda Canary, l'interface Elastic Network correspondante et le groupe de sécurité, dans cet ordre. | 

## Ressources connexes
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-resources"></a>
+ [Utilisation de la surveillance synthétique](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [Surveillez les points de terminaison API Gateway avec Amazon CloudWatch Synthetics](https://aws.amazon.com/blogs/mt/monitor-api-gateway-endpoints-with-amazon-cloudwatch-synthetics/) (article de blog)

## Informations supplémentaires
<a name="deploy-cloudwatch-synthetics-canaries-by-using-terraform-additional"></a>

**Artefacts du référentiel**

La structure des artefacts du référentiel est la suivante.

```
.
├── README.md
├── main.tf
├── modules
│   ├── canary
│   └── canary-infra
├── terraform.tfvars
├── tf.plan
└── variable.tf
```

Le `main.tf` fichier contient le module principal et déploie deux sous-modules :
+ `canary-infra`déploie l'infrastructure requise pour les canaris.
+ `canary`déploie les canaris.

Les paramètres d'entrée de la solution se trouvent dans le `terraform.tfvars` fichier. Vous pouvez utiliser l'exemple de code suivant pour créer un canari.

```
module "canary" {
    source = "./modules/canary"
    name   = var.name
    runtime_version = var.runtime_version
    take_screenshot = var.take_screenshot
    api_hostname = var.api_hostname
    api_path = var.api_path
    reports-bucket = module.canary_infra.reports-bucket
    role = module.canary_infra.role
    security_group_id = module.canary_infra.security_group_id
    subnet_ids = var.subnet_ids
    frequency = var.frequency
    alert_sns_topic = var.alert_sns_topic
}
```

Le fichier .var correspondant suit.

```
name   = "my-canary"
runtime_version = "syn-nodejs-puppeteer-3.7"
take_screenshot = false
api_hostname = "mydomain.internal"
api_path = "/path?param=value"
vpc_id = "vpc_id"
subnet_ids = ["subnet_id1"]
frequency = 5
alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"
```

**Nettoyage de la solution**

Si vous testez cela dans un environnement de développement, vous pouvez nettoyer la solution pour éviter des coûts supplémentaires.

1. Sur la console de gestion AWS, accédez à la console Amazon S3. Videz le compartiment Amazon S3 créé par la solution. Assurez-vous de faire une sauvegarde des données, si nécessaire.

1. Dans votre environnement de développement, depuis le `cloudwatch-synthetics-canary-terraform` répertoire, exécutez la `destroy` commande.

   ```
   terraform destroy
   ```

# Déployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et CloudFormation
<a name="deploy-chatops-solution-to-manage-sast-scan-results"></a>

*Anand Bukkapatnam Tirumala, Amazon Web Services*

## Résumé
<a name="deploy-chatops-solution-to-manage-sast-scan-results-summary"></a>

Ce modèle présente une solution complète qui utilise Amazon Q Developer dans les applications de chat afin de rationaliser la gestion des défaillances d'analyse des tests de sécurité des applications statiques (SAST) signalées par le biais SonarQube de ce modèle. Cette approche innovante intègre des actions et des notifications personnalisées dans une interface conversationnelle, permettant une collaboration efficace et des processus décisionnels au sein des équipes de développement.

Dans l'environnement de développement logiciel en évolution rapide d'aujourd'hui, la gestion efficace des résultats du scan SAST est essentielle pour maintenir la qualité et la sécurité du code. Cependant, de nombreuses organisations sont confrontées aux défis importants suivants :
+ Prise de conscience différée des vulnérabilités critiques en raison de l'inefficacité des systèmes de notification
+ Processus de prise de décision lents causés par des flux de travail d'approbation déconnectés
+ Absence de réponses immédiates et exploitables en cas d'échec du scan SAST
+ Communication et collaboration fragmentées autour des résultats de sécurité
+ Configuration manuelle de l'infrastructure fastidieuse et sujette aux erreurs pour les outils de sécurité

Ces problèmes augmentent souvent les risques de sécurité, retardent les publications et réduisent la productivité des équipes. Pour relever efficacement ces défis, il faut une solution capable de rationaliser la gestion des résultats du SAST, d'améliorer la collaboration des équipes et d'automatiser le provisionnement de l'infrastructure.

Les principales fonctionnalités de la solution sont les suivantes :
+ **Notifications personnalisées** — Les alertes et notifications en temps réel sont transmises directement aux canaux de discussion de l'équipe, ce qui permet de détecter et d'agir rapidement en cas de vulnérabilité ou d'échec du scan SAST.
+ **Approbations conversationnelles** — Les parties prenantes peuvent initier et terminer des flux de travail d'approbation pour les résultats du scan SAST de manière fluide via l'interface de chat, accélérant ainsi les processus de prise de décision.
+ **Actions personnalisées** — Les équipes peuvent définir et exécuter des actions personnalisées en fonction des résultats du scan SAST, telles que le déclenchement automatique d'e-mails en cas de défaillance du contrôle qualité ou l'amélioration de la réactivité face aux problèmes de sécurité.
+ **Collaboration centralisée** — Toutes les discussions, décisions et actions liées au scan SAST sont conservées dans un environnement de discussion unifié, ce qui favorise une meilleure collaboration et un partage des connaissances entre les membres de l'équipe.
+ **Infrastructure sous forme de code (IaC)** : l'ensemble de la solution est enveloppé de AWS CloudFormation modèles, ce qui permet un provisionnement plus rapide et plus fiable de l'infrastructure tout en réduisant les erreurs de configuration manuelle.

## Conditions préalables et limitations
<a name="deploy-chatops-solution-to-manage-sast-scan-results-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Rôle Gestion des identités et des accès AWS (IAM) autorisé à créer et à gérer les ressources associées aux ressources Services AWS répertoriées dans [Outils](#deploy-chatops-solution-to-manage-sast-scan-results-tools).
+ Un espace de travail Slack.
+ Amazon Q Developer dans les applications de chat a été ajouté à l'espace de travail Slack requis en tant que plug-in. Pour plus d'informations, consultez la section [Ajouter des applications à votre espace de travail Slack](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace) dans la documentation Slack. Notez l'identifiant de l'espace de travail Slack tel qu'indiqué sur le une AWS Management Console fois l'enregistrement réussi.
+ Un client Amazon Q Developer configuré dans des applications de chat, avec l'ID de l'espace de travail facilement disponible pour la saisie dans la CloudFormation console. Pour obtenir des instructions, consultez la section [Configurer un client Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup) dans le *Guide de l'administrateur des applications de chat Amazon Q pour les développeurs*.
+ Un compte e-mail source créé et vérifié dans Amazon Simple Email Service (Amazon SES) pour envoyer des e-mails d'approbation. Pour les instructions de configuration, consultez [la section Création et vérification des identités e-mail](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) dans le manuel *Amazon Simple Email Service Developer Guide*.
+ Adresse e-mail de destination pour recevoir les notifications d'approbation. Cette adresse peut être une boîte de réception partagée ou une liste de distribution spécifique à une équipe.
+ Une SonarQube instance opérationnelle accessible depuis votre Compte AWS. Pour plus d'informations, consultez les [instructions SonarQube d'installation](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/).
+ Un [jeton SonarQube utilisateur](https://docs.sonarsource.com/sonarqube-server/latest/user-guide/managing-tokens/) autorisé à déclencher et à créer des projets via le pipeline.

**Limites**
+ La création de boutons d'action personnalisés est un processus manuel dans cette solution. 
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="deploy-chatops-solution-to-manage-sast-scan-results-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail pour déployer l'assurance qualité du code automatisée pour la gestion des versions à l'aide d'Amazon Q Developer.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/a977924c-957e-4f91-99d6-ed790e343ea6.png)


Le schéma montre le flux de travail automatisé d'assurance qualité du code :

1. Préparation et téléchargement du code :
   + Le développeur compresse la base de code dans un fichier .zip.
   + Le développeur télécharge manuellement le fichier .zip dans un compartiment Amazon Simple Storage Service (Amazon S3) désigné.

1. Déclenchement et AWS Step Functions orchestration d'événements Amazon S3 :
   + L'événement de téléchargement Amazon S3 déclenche un flux de travail Step Functions.
   + Step Functions orchestre un scan SAST à l'aide de. SonarQube
   + Le flux de travail surveille l'état de la AWS CodeBuild tâche pour déterminer les prochaines actions. En cas de CodeBuild succès (contrôle qualité), le flux de travail s'arrête. En cas d' CodeBuild échec, une AWS Lambda fonction est invoquée à des fins de diagnostic. Pour plus de détails, consultez **AWS Step Functions la section logique** plus loin dans cette section.

1. AWS CodeBuild exécution :
   + La CodeBuild tâche exécute une SonarQube analyse de la base de code téléchargée.
   + Les artefacts de scan sont stockés dans un compartiment Amazon S3 distinct à des fins d'audit et d'analyse.

1. Analyse des défaillances (fonction Lambda) :
   + En CodeBuild cas d'échec, la fonction `CheckBuildStatus` Lambda est déclenchée.
   + En cas de CodeBuild succès, le processus est arrêté et aucune autre action n'est nécessaire.

1. La fonction Lambda analyse la cause de la défaillance (défaillance du contrôle qualité ou autres problèmes)
   + La `CheckBuildStatus` fonction crée une charge utile personnalisée avec des informations détaillées sur les défaillances.
   + La `CheckBuildStatus` fonction publie la charge utile personnalisée dans une rubrique Amazon Simple Notification Service (Amazon SNS).

1. Système de notification :
   + Amazon SNS transmet la charge utile à Amazon Q Developer dans des applications de chat pour l'intégration à Slack.

1. Intégration à Slack :
   + Dans les applications de chat, Amazon Q Developer publie une notification sur le canal Slack désigné.

1. Processus d'approbation :
   + Les approbateurs examinent les détails de l'échec dans la notification Slack.
   + Les approbateurs peuvent initier l'approbation à l'aide du bouton **Approuver** dans Slack.

1. Gestionnaire d'approbation :
   + Une fonction Lambda d'approbation traite l'action d'approbation depuis Slack.
   + La fonction d'approbation publie le message personnalisé sur Amazon SES.

1. Message généré :
   + La fonction d'approbation génère un message personnalisé pour les notifications destinées aux développeurs.

1. Notification aux développeurs :
   + Amazon SES envoie un e-mail au développeur avec les prochaines étapes ou les actions requises.

Ce flux de travail associe le téléchargement manuel du code à des contrôles de qualité automatisés, fournit un feedback immédiat via Slack et permet une intervention humaine si nécessaire, garantissant ainsi un processus de révision du code robuste et flexible.

**AWS Step Functions logique**

Comme indiqué dans le schéma d'architecture précédent, si le transfert du contrôle qualité SonarQube échoue, le flux de travail passe à la fonction `CheckBuildStatus` Lambda. La `CheckBuildStatus` fonction déclenche une notification sur le canal Slack. Chaque notification inclut des informations avec les prochaines étapes suggérées. Les types de notifications sont les suivants :
+ **L'application a échoué lors de l'analyse de sécurité du code** : l'utilisateur reçoit cette notification lorsque le code téléchargé n'a pas réussi le scan SonarQube de sécurité. L'utilisateur peut choisir **APPROVE** pour accepter le build. Cependant, la notification conseille à l'utilisateur de se méfier de la mauvaise qualité du code et des risques de sécurité potentiels. La notification inclut les informations suivantes :
  + Prochaines étapes : Erreur : État du contrôle de qualité : ÉCHEC — Afficher les détails à l'URL fournie.
  + Triez les vulnérabilités comme indiqué dans le document à l'adresse URL fournie.
  + CodeBuild les détails sont disponibles sur place à l'adresse URL fournie.
+ **Le pipeline d'analyse des applications a échoué pour une autre raison** : l'utilisateur reçoit cette notification lorsque le pipeline échoue pour une raison autre que l'échec de l'analyse de sécurité du code. La notification inclut les informations suivantes :
  + Pour les étapes suivantes, cliquez sur le lien fourni pour un dépannage plus approfondi.

Pour voir des captures d'écran des notifications telles qu'elles apparaissent sur une chaîne Slack, rendez-vous dans le [dossier des ressources du référentiel](https://github.com/aws-samples/chatops-slack/tree/main/assets) GitHub chatops-slack.

Le schéma suivant montre un exemple du statut de l'étape Step Functions après l'échec du contrôle qualité.

![\[État de l'étape du flux de travail d'AWS Step Functions après l'échec du test Quality Gate.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/198312ed-e379-49a7-b706-8e79e2142f21/images/40b7ebf0-2518-4413-9717-0bfb7559adde.png)


## Outils
<a name="deploy-chatops-solution-to-manage-sast-scan-results-tools"></a>

**Services AWS**
+ [Amazon Q Developer dans les applications de chat](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) vous permet d'utiliser les canaux de discussion Amazon Chime, Microsoft Teams et Slack pour surveiller les événements opérationnels de vos applications et y répondre. AWS *Avis de fin de support :* le 20 février 2026, le support du service Amazon Chime AWS prendra fin. Après le 20 février 2026, vous ne pourrez plus accéder à la console Amazon Chime ni aux ressources de l'application Amazon Chime. Pour plus d'informations, consultez le billet de [blog](https://aws.amazon.com/blogs/messaging-and-targeting/update-on-support-for-amazon-chime/). Cela n'a aucune incidence sur la disponibilité du [service Amazon Chime SDK](https://aws.amazon.com/chime/chime-sdk/).
+ [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, de bout Comptes AWS en bout Régions AWS.
+ [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.
+ [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 Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) vous permet d'envoyer et de recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.
+ [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.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)est un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et d'autres fonctions Services AWS pour créer des applications critiques pour l'entreprise.

**Autres outils**
+ [Slack](https://slack.com/help/articles/115004071768-What-is-Slack-), une offre de Salesforce, est une plateforme conversationnelle basée sur l'IA qui permet la collaboration par chat et vidéo, automatise les processus sans code et prend en charge le partage d'informations.
+ [SonarQube](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/)est un outil d'analyse sur site conçu pour détecter les problèmes de codage dans plus de 30 langages, frameworks et plateformes IaC.

**Référentiel de code**

Le code de ce modèle est disponible dans le dépôt GitHub [chatops-slack](https://github.com/aws-samples/chatops-slack).

## Bonnes pratiques
<a name="deploy-chatops-solution-to-manage-sast-scan-results-best-practices"></a>
+ **CloudFormation gestion des piles** : si vous rencontrez des défaillances lors de l'exécution de la CloudFormation pile, nous vous recommandons de supprimer la pile défaillante. Recréez-le ensuite avec les valeurs de paramètres correctes. Cette approche permet un déploiement propre et permet d'éviter les conflits potentiels ou les implémentations partielles.
+ **Configuration des e-mails dans une boîte de réception partagée** : lorsque vous configurez le `SharedInboxEmail` paramètre, utilisez une liste de distribution commune accessible à tous les développeurs concernés. Cette approche favorise la transparence et permet aux notifications importantes de parvenir aux membres de l'équipe concernés.
+ **Flux de travail d'approbation** de production : pour les environnements de production, limitez l'accès au canal Slack utilisé pour les approbations de construction. Seuls les approbateurs désignés doivent être membres de cette chaîne. Cette pratique permet de maintenir une chaîne de responsabilité claire et d'améliorer la sécurité en limitant le nombre de personnes habilitées à approuver les modifications critiques.
+ **Autorisations IAM** — Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) dans la documentation IAM.

## Épopées
<a name="deploy-chatops-solution-to-manage-sast-scan-results-epics"></a>

### Effectuer la configuration initiale
<a name="perform-initial-setup"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt [chatops-slack](https://github.com/aws-samples/chatops-slack) pour ce modèle, utilisez la commande suivante.`git clone "git@github.com:aws-samples/chatops-slack.git"` | AWS DevOps, responsable du développement, DevOps ingénieur, administrateur du cloud | 
| Créez les fichiers .zip contenant le code Lambda. | Créez les fichiers .zip pour le code de AWS Lambda fonction de la `ApprovalEmail` fonctionnalité `CheckBuildStatus` et. Pour créer `notification.zip` et`approval.zip`, utilisez les commandes suivantes.<pre>cd chatops-slack/src</pre><pre>chmod -R 775 *</pre><pre>zip -r approval.zip approval</pre><pre>zip -r notification.zip notification</pre> | AWS DevOps, responsable du développement, DevOps ingénieur, administrateur du cloud | 

### Déployez le fichier de pile pre-requisite.yml
<a name="deploy-the-pre-requisite-yml-stack-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez le fichier de `pre-requisite.yml` pile. | Le fichier de `pre-requisite.yml` CloudFormation pile déploie les ressources initiales requises avant que vous n'exécutiez le fichier de `app-security.yml` pile. Pour exécuter le `pre-requisite.yml` fichier, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | Administrateur AWS, AWS DevOps, responsable du développement, DevOps ingénieur | 
| Téléchargez les fichiers .zip dans le compartiment Amazon S3. | Chargez les `approval.zip` fichiers `notification.zip` et que vous avez créés précédemment dans le compartiment Amazon S3 nommé`S3LambdaBucket`. Le fichier de `app-security.yml` CloudFormation pile est utilisé `S3LambdaBucket` pour provisionner la fonction Lambda. | AWS DevOps, responsable du développement, DevOps ingénieur, administrateur système AWS | 

### Exécutez le fichier de pile app-security.yml
<a name="execute-the-app-security-yml-stack-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez le fichier de `app-security.yml` pile. | Les fichiers de `app-security.yml` pile déploient l'infrastructure restante pour le système de notification et d'approbation. Pour exécuter le `app-security.yml` fichier, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | AWS DevOps, administrateur système AWS, DevOps ingénieur, responsable du développement | 
| Testez la configuration des notifications. | Pour tester la configuration des notifications, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html)Une fois le message de test envoyé avec succès, vous devriez voir une notification sur le canal Slack. Pour plus d'informations, consultez la section [Tester les notifications envoyées Services AWS à Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#test-notifications-slack) dans le *guide de l'administrateur des applications de chat Amazon Q pour les développeurs*. | AWS DevOps, administrateur système AWS, DevOps ingénieur, responsable du développement | 

### Configurer le flux d'approbation
<a name="set-up-approval-flow"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez une action Lambda personnalisée. | Pour configurer l' AWS Lambda action personnalisée, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | Administrateur AWS DevOps, responsable du développement, DevOps ingénieur, administrateur Slack | 
| Validez le flux d'approbation. | Pour vérifier que le flux d'approbation fonctionne comme prévu, cliquez sur le bouton **Approuver** dans Slack.Slackbot doit envoyer une notification sur le fil de discussion avec la chaîne de confirmation « L'**e-mail d'approbation a été envoyé** avec succès ». | Administrateur AWS, DevOps ingénieur AWS DevOps, administrateur Slack | 

## Résolution des problèmes
<a name="deploy-chatops-solution-to-manage-sast-scan-results-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Mauvaises configurations de Slack | Pour plus d'informations sur la résolution des problèmes liés aux mauvaises configurations de Slack, consultez la section Résolution des problèmes liés aux développeurs Amazon Q Developer dans le Guide de l'*administrateur d'Amazon Q Developer in Chat applications*. | 
| Le scan a échoué pour une autre raison | Cette erreur signifie que la tâche de génération du code a échoué. Pour résoudre le problème, cliquez sur le lien figurant dans le message. L'échec de la tâche de génération du code peut avoir les causes suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-chatops-solution-to-manage-sast-scan-results.html) | 

## Ressources connexes
<a name="deploy-chatops-solution-to-manage-sast-scan-results-resources"></a>

**AWS documentation**
+ [Configuration d'un client Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html#slack-client-setup)
+ [Création d'une action personnalisée](https://docs.aws.amazon.com/chatbot/latest/adminguide/custom-actions.html#creating-custom-actions)
+ [Création d'une [procédure](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure) d'identification par adresse e-mail](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#verify-email-addresses-procedure)
+ [Tutoriel : Commencez à utiliser Slack](https://docs.aws.amazon.com/chatbot/latest/adminguide/slack-setup.html)

**Autres ressources**
+ [Ajouter des applications à votre espace de travail Slack](https://slack.com/intl/en-in/help/articles/202035138-Add-apps-to-your-Slack-workspace) (documentation Slack)
+ [Génération et utilisation de jetons](https://docs.sonarsource.com/sonarqube/latest/user-guide/user-account/generating-and-using-tokens/) (SonarQube documentation)
+ [Présentation de l'installation du serveur](https://docs.sonarsource.com/sonarqube/latest/setup-and-upgrade/install-the-server/introduction/) (SonarQube documentation)

## Informations supplémentaires
<a name="deploy-chatops-solution-to-manage-sast-scan-results-additional"></a>

Cette solution met l'accent sur les actions personnalisées d'Amazon Q Developer dans les applications de chat à des fins de gestion des versions. Cependant, vous pouvez réutiliser la solution en modifiant le code Lambda en fonction de votre cas d'utilisation spécifique et en le complétant.

**Paramètres des fichiers de CloudFormation pile**

Le tableau suivant présente les paramètres et leurs descriptions pour le fichier de CloudFormation pile`pre-requisite.yml`.


| 
| 
| **Clé** | **Description** | 
| --- |--- |
| `StackName` | Nom de la CloudFormation pile. | 
| `S3LambdaBucket` | Le nom du compartiment Amazon S3 dans lequel vous chargez le code Lambda. Le nom doit être globalement unique. | 
| `SonarToken` | Le jeton SonarQube utilisateur tel que décrit dans la section [Conditions préalables](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). | 

Le tableau suivant présente les paramètres et leurs descriptions pour le fichier de CloudFormation pile`app-security.yml`.


| 
| 
| **Clé** | **Description** | 
| --- |--- |
| `CKMSKeyArn` | Le nom de ressource AWS KMS key Amazon (ARN) utilisé dans les rôles IAM et les fonctions Lambda créés dans cette pile. | 
| `CKMSKeyId` | L' AWS KMS key ID utilisé dans la rubrique Amazon SNS créée dans cette pile. | 
| `EnvironmentType` | Nom de l'environnement client pour le déploiement du pipeline d'analyse des applications. Sélectionnez le nom de l'environnement dans la liste déroulante des valeurs autorisées. | 
| `S3LambdaBucket` | Le nom du compartiment Amazon S3 qui contient les `notification.zip` fichiers `approval.zip` et. | 
| `SESEmail` | Le nom de l'identité e-mail enregistrée dans Amazon SES, tel que décrit dans la section [Conditions préalables](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). Cette identité est l'adresse e-mail source. | 
| `SharedInboxMail` | Adresse e-mail de destination à laquelle les notifications de numérisation sont envoyées. | 
| `SlackChannelId` | L'identifiant de la chaîne Slack sur laquelle vous souhaitez que les notifications soient envoyées. Pour trouver l'identifiant de la chaîne, cliquez avec le bouton droit sur le nom de la **chaîne dans Détails** de la chaîne dans l'application Slack. L'identifiant de la chaîne se trouve en bas. | 
| `SlackWorkspaceId` | L'identifiant de l'espace de travail Slack tel que décrit dans la section [Conditions préalables](#deploy-chatops-solution-to-manage-sast-scan-results-prereqs). **Pour trouver l'identifiant de l'espace de travail Slack, connectez-vous à la AWS Management Console console Amazon Q Developer dans les applications de chat, puis choisissez **Clients configurés**, **Slack**, WorkspaceID.** | 
| `StackName` | Nom de la CloudFormation pile. | 
| `SonarFileDirectory` | Le répertoire qui contient le `sonar.project.<env>.properties` fichier. | 
| `SonarFileName` | Le nom du `sonar.project.<env>properties` fichier. | 
| `SourceCodeZip` | Nom du fichier .zip qui contient le `sonar.project.<env>properties` fichier et le code source. | 

# Déployez des systèmes agentic sur Amazon Bedrock avec le framework CrewAI en utilisant Terraform
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework"></a>

*Vanitha Dontireddy, Amazon Web Services*

## Résumé
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-summary"></a>

[Ce modèle montre comment implémenter des systèmes d'IA multi-agents évolutifs en utilisant le framework [CrewAI](https://www.crewai.com/) intégré à [Amazon Bedrock](https://aws.amazon.com/bedrock/?nc1=h_ls) et Terraform.](https://registry.terraform.io/) La solution permet aux entreprises de créer, de déployer et de gérer des flux de travail d'agents IA sophistiqués via l'infrastructure en tant que code (IaC). Dans ce modèle, les capacités d'orchestration multi-agents de CrewAI se combinent aux modèles de base d'Amazon Bedrock et à l'automatisation de l'infrastructure Terraform. Les équipes peuvent ainsi créer des systèmes d'IA prêts pour la production qui s'attaquent à des tâches complexes avec un minimum de supervision humaine. Le modèle met en œuvre une sécurité, une évolutivité et des meilleures pratiques opérationnelles au niveau de l'entreprise. 

## Conditions préalables et limitations
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS disposant des autorisations appropriées pour [accéder aux modèles de la fondation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [Terraform version 1.5 ou ultérieure installée](https://developer.hashicorp.com/terraform/install)
+ Python version 3.9 ou ultérieure [installée](https://www.python.org/downloads/)
+ [Framework CrewAI installé](https://docs.crewai.com/installation)

**Limites**
+ Les interactions entre les agents sont limitées par les fenêtres contextuelles du modèle.
+ Les considérations relatives à la gestion de l'état de Terraform pour les déploiements à grande échelle s'appliquent à ce modèle.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture"></a>

Dans ce modèle, les interactions suivantes se produisent :
+ Amazon Bedrock fournit les bases de l'intelligence des agents grâce à sa suite de modèles de base (FMs). Il permet aux agents d'IA de disposer de capacités de traitement du langage naturel (NLP), de raisonnement et de prise de décision tout en maintenant une disponibilité et une évolutivité élevées.
+ Le framework CrewAI sert de couche d'orchestration principale pour la création et la gestion des agents d'IA. Il gère les protocoles de communication des agents, la délégation de tâches et la gestion des flux de travail tout en s'intégrant à Amazon Bedrock.
+ Terraform gère l'ensemble de l'infrastructure par le biais du code, y compris les ressources informatiques, le réseau, les groupes de sécurité et les rôles Gestion des identités et des accès AWS (IAM). Il garantit des déploiements cohérents et contrôlés par version dans tous les environnements. Le déploiement de Terraform crée les éléments suivants :
  + AWS Lambda fonction pour exécuter l'application CrewAI
  + Compartiments Amazon Simple Storage Service (Amazon S3) pour le code et les rapports
  + Rôles IAM dotés des autorisations appropriées
  +  CloudWatch Journalisation sur Amazon
  + Exécution planifiée par Amazon EventBridge

Le schéma suivant illustre l'architecture permettant de déployer des systèmes multi-agents CrewAI à l'aide d'Amazon Bedrock et Terraform.

![\[Flux de travail pour déployer les systèmes multi-agents CrewAI à l'aide de Terraform et Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/b46069e9-4c38-405f-b0f0-310eabb06b06/images/b3296b17-e388-46ba-8d71-2ec7ce3ed3e0.png)


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

1. L'utilisateur clone le référentiel.

1. L'utilisateur exécute la commande `terraform apply` pour déployer les AWS ressources.

1. La configuration du modèle Amazon Bedrock inclut la spécification du modèle de base (FM) à utiliser pour configurer les agents CrewAI.

1. Une EventBridge règle est établie pour déclencher la fonction Lambda selon le calendrier défini.

1. Lorsqu'elle est déclenchée (par planification ou manuellement), la fonction Lambda s'initialise et assume le rôle IAM avec des autorisations d'accès et Services AWS Amazon Bedrock.

1. Le framework CrewAI charge les configurations d'agents à partir de fichiers YAML et crée des agents d'IA spécialisés (l'équipe d'*audit de sécurité de l'AWS infrastructure*). La fonction Lambda exécute ces agents de manière séquentielle pour scanner les AWS ressources, analyser les failles de sécurité et générer des rapports d'audit complets.

1. CloudWatch Les journaux capturent des informations d'exécution détaillées à partir de la fonction Lambda avec une période de rétention de 365 jours et un cryptage AWS Key Management Service (AWS KMS) pour répondre aux exigences de conformité. Les journaux fournissent une visibilité sur les activités des agents, le suivi des erreurs et les indicateurs de performance, permettant ainsi une surveillance et un dépannage efficaces du processus d'audit de sécurité.

1. Le rapport d'audit de sécurité est automatiquement généré et stocké dans le compartiment Amazon S3 désigné. La configuration automatisée permet de maintenir une surveillance cohérente de la sécurité avec une charge opérationnelle minimale.

Après le déploiement initial, le flux de travail fournit des audits de sécurité et des rapports continus pour votre AWS infrastructure sans intervention manuelle.

**Vue d'ensemble des agents d'IA**

Ce modèle crée plusieurs agents d'IA, chacun doté de rôles, d'objectifs et d'outils uniques :
+ L'**agent d'analyse de sécurité** collecte et analyse les informations sur les AWS ressources.
+ L'**agent de test de pénétration** identifie les vulnérabilités des AWS ressources.
+ L'**agent expert en conformité** vérifie les configurations par rapport aux normes de conformité.
+ L'**agent rédacteur du rapport** compile les résultats dans des rapports complets.

Ces agents collaborent sur une série de tâches, en tirant parti de leurs compétences collectives pour réaliser des audits de sécurité et générer des rapports complets. (Le `config/agents.yaml` fichier décrit les capacités et les configurations de chaque agent de cette équipe.)

Le traitement de l'analyse de sécurité comprend les actions suivantes :

1. L'agent Security Analyst examine les données collectées sur les AWS ressources, telles que les suivantes :
   + Instances et groupes de sécurité Amazon Elastic Compute Cloud (Amazon EC2)
   + Compartiments et configurations Amazon S3
   + Rôles, politiques et autorisations IAM
   + Configurations du cloud privé virtuel (VPC) et paramètres réseau
   + Bases de données Amazon RDS et paramètres de sécurité
   + Fonctions et configurations Lambda
   + Autres objets Services AWS relevant de la portée de l'audit

1. L'agent de test de pénétration identifie les vulnérabilités potentielles.

1. Les agents collaborent via le framework CrewAI pour partager leurs résultats.

La génération de rapports comprend les actions suivantes :

1. L'agent rédacteur du rapport compile les résultats de tous les autres agents.

1. Les problèmes de sécurité sont organisés en fonction du service, de la gravité et de l'impact sur la conformité.

1. Des recommandations de correction sont générées pour chaque problème identifié.

1. Un rapport d'audit de sécurité complet est créé au format Markdown et téléchargé dans le compartiment Amazon S3 désigné. Les rapports historiques sont conservés pour le suivi de la conformité et l'amélioration de la posture de sécurité.

Les activités de journalisation et de surveillance incluent :
+ CloudWatch les journaux capturent les détails de l'exécution et les éventuelles erreurs.
+ Les métriques d'exécution Lambda sont enregistrées à des fins de surveillance.

**Note**  
Le code de `aws-security-auditor-crew` provient du référentiel GitHub [3P-Agentic\$1Frameworks](https://github.com/aws-samples/3P-Agentic-Frameworks/blob/main/crewai/aws-security-auditor-crew/README.md), disponible dans la collection Samples. AWS 

**Disponibilité et évolutivité**

Vous pouvez étendre le nombre d'agents disponibles à plus que les quatre agents principaux. Pour intégrer des agents spécialisés supplémentaires, envisagez les nouveaux types d'agents suivants :
+ Un agent *spécialisé dans le renseignement sur les menaces* peut effectuer les opérations suivantes :
  + Surveille les flux de menaces externes et établit des corrélations avec les conclusions internes
  + Fournit un contexte sur les menaces émergentes pertinentes pour votre infrastructure
  + Priorise les vulnérabilités en fonction de leur exploitation active dans la nature
+ Les agents *du cadre de conformité* peuvent se concentrer sur des domaines réglementaires spécifiques tels que les suivants :
  + Agent de conformité à la norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS)
  + Agent de conformité à la loi de 1996 sur la portabilité et la responsabilité de l'assurance maladie (HIPAA)
  + Agent de conformité à System and Organization Controls 2 (SOC 2)
  + Agent de conformité au règlement général sur la protection des données (RGPD)

En élargissant judicieusement le nombre d'agents disponibles, cette solution peut fournir des informations de sécurité plus approfondies et plus spécialisées tout en maintenant l'évolutivité dans de grands environnements. AWS Pour plus d'informations sur l'approche de mise en œuvre, le développement d'outils et les considérations relatives à la mise à l'échelle, voir [Informations supplémentaires](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional).

## Outils
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-tools"></a>

**Services AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) est un service d'IA entièrement géré qui met à disposition des modèles de base (FMs) très performants via une API unifiée.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) vous aide à centraliser les journaux de tous vos systèmes et applications, Services AWS afin que vous puissiez les surveiller et les archiver en toute sécurité.
+ [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. Par exemple, des AWS Lambda fonctions, des points de terminaison d'invocation HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. Comptes AWS Dans ce modèle, il est utilisé pour planifier et orchestrer les flux de travail des agents.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.
+ [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. Dans ce modèle, il fournit un stockage d'objets pour les artefacts des agents et la gestion des états.

**Autres outils**
+ [CrewAI](https://www.crewai.com/open-source) est un framework open source basé sur Python permettant de créer des systèmes d'IA multi-agents.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

**Référentiel de code**

Le code de ce modèle est disponible dans le GitHub [deploy-crewai-agents-terraform](https://github.com/aws-samples/deploy-crewai-agents-terraform.git)référentiel.

## Bonnes pratiques
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-best-practices"></a>
+ Mettez en œuvre une gestion d'état appropriée pour Terraform en utilisant un backend Amazon S3 verrouillé par Amazon DynamoDB. Pour plus d'informations, consultez les [meilleures pratiques du backend](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/backend.html) dans *Meilleures pratiques d'utilisation du fournisseur Terraform AWS *.
+ Utilisez les espaces de travail pour séparer les environnements de développement, de préparation et de production.
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.
+ Activez la journalisation et la surveillance détaillées via CloudWatch les journaux.
+ Implémentez des mécanismes de nouvelle tentative et de gestion des erreurs pour les opérations des agents.

## Épopées
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-epics"></a>

### Déployer le framework CrewAI
<a name="deploy-crewai-framework"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Pour cloner le dépôt de ce modèle sur votre machine locale, exécutez la commande suivante :<pre>git clone "git@github.com:aws-samples/deploy-crewai-agents-terraform.git"<br />cd deploy-crewai-agents-terraform</pre> | DevOps ingénieur | 
| Modifiez les variables d'environnement. | Pour modifier les variables d'environnement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps ingénieur | 
| Créez l'infrastructure. | Pour créer l'infrastructure, exécutez les commandes suivantes :<pre>cd terraform</pre><pre>terraform init</pre><pre>terraform plan</pre>Passez en revue attentivement le plan d'exécution. Si les modifications prévues sont acceptables, exécutez la commande suivante :<pre>terraform apply --auto-approve</pre> | DevOps ingénieur | 

### Accédez aux agents CrewAI
<a name="access-crewai-agents"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez aux agents. | Les agents de l'équipe d'audit et de reporting de la sécurité de l' AWS infrastructure sont déployés en tant que fonction Lambda. Pour accéder aux agents, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps ingénieur | 
| (Facultatif) Configurez l'exécution manuelle des agents. | Les agents sont configurés pour fonctionner automatiquement selon un calendrier quotidien (minuit UTC). Toutefois, vous pouvez les déclencher manuellement en procédant comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Pour plus de détails, consultez la section [Tester les fonctions Lambda dans la console dans la documentation](https://docs.aws.amazon.com/lambda/latest/dg/testing-functions.html) Lambda. | DevOps ingénieur | 
| Accédez aux journaux de l'agent pour le débogage. | Les agents CrewAI s'exécutent dans un environnement Lambda avec les autorisations nécessaires pour effectuer des audits de sécurité et stocker des rapports dans Amazon S3. Le résultat est un rapport Markdown qui fournit une analyse complète de la sécurité de votre AWS infrastructure.Pour faciliter le débogage détaillé du comportement de l'agent, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps ingénieur | 
| Afficher les résultats de l'exécution de l'agent. | Pour afficher les résultats de l'exécution d'un agent, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)Les rapports sont stockés avec des noms de fichiers basés sur l'horodatage, comme suit : `security-audit-report-YYYY-MM-DD-HH-MM-SS.md)` | DevOps ingénieur | 
| Surveillez l'exécution des agents. | Pour surveiller l'exécution des agents par le biais de CloudWatch journaux, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html) | DevOps ingénieur | 
|  Personnalisez le comportement de l'agent. | Pour modifier les agents ou leurs tâches, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.html)<pre>cd terraform </pre><pre>terraform apply</pre> | DevOps ingénieur | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources créées. | Pour supprimer toute l'infrastructure créée par ce modèle, exécutez la commande suivante :<pre>terraform plan -destroy </pre>La commande suivante supprimera définitivement toutes les ressources créées par ce modèle. La commande demandera une confirmation avant de supprimer des ressources.Révisez attentivement le plan de destruction. Si les suppressions prévues sont acceptables, exécutez la commande suivante :<pre>terraform destroy</pre> | DevOps ingénieur | 

## Résolution des problèmes
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Comportement des agents | Pour plus d'informations sur ce problème, consultez la section [Tester et résoudre les problèmes du comportement des agents](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) dans la documentation Amazon Bedrock. | 
| Problèmes liés au réseau Lambda | Pour plus d'informations sur ces problèmes, consultez la section [Résoudre les problèmes de réseau dans Lambda dans](https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-networking.html) la documentation Lambda. | 
| Autorisations IAM | Pour plus d'informations sur ces problèmes, consultez la section [Résolution des problèmes liés à l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot.html) dans la documentation IAM. | 

## Ressources connexes
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-resources"></a>

**AWS Blogs**
+ [Créez des systèmes agentiques avec CrewAI et Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/build-agentic-systems-with-crewai-and-amazon-bedrock/)

**AWS documentation**
+ [Documentation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/)
+ [Comment fonctionne Amazon Bedrock Agents](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [AWS Framework Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)

**Autres ressources**
+ [Documentation de CrewAI](https://docs.crewai.com/introduction)
+ [Documentation du fournisseur Terraform AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Informations supplémentaires
<a name="deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-additional"></a>

Cette section contient des informations sur l'approche de mise en œuvre, le développement d'outils et les considérations relatives à la mise à l'échelle liées à la discussion précédente dans [Automation et échelle](#deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework-architecture).

**Méthode de mise en œuvre**

Envisagez l'approche suivante pour ajouter des agents :

1. Configuration de l'agent :
   + Ajoutez de nouvelles définitions d'agent au `config/agents.yaml` fichier.
   + Définissez des antécédents, des objectifs et des outils spécialisés pour chaque agent.
   + Configurez les capacités de mémoire et d'analyse en fonction de la spécialité de l'agent.

1. Orchestration des tâches :
   + Mettez à jour le `config/tasks.yaml` fichier pour inclure les nouvelles tâches spécifiques à l'agent.
   + Créez des dépendances entre les tâches pour garantir un flux d'informations approprié.
   + Mettez en œuvre l'exécution parallèle des tâches, le cas échéant.

**Implémentation technique**

Vous trouverez ci-dessous un ajout au `agents.yaml` fichier pour un agent spécialisé en renseignement sur les menaces proposé :

```
Example new agent configuration in agents.yaml
threat_intelligence_agent:
 name: "Threat Intelligence Specialist"
 role: "Cybersecurity Threat Intelligence Analyst"
 goal: "Correlate AWS security findings with external threat intelligence"
 backstory: "Expert in threat intelligence with experience in identifying emerging threats and attack patterns relevant to cloud infrastructure." 
verbose: true 
allow_delegation: true 
tools: 
- "ThreatIntelligenceTool" 
- "AWSResourceAnalyzer"
```

**Développement d'outils**

Avec le framework CrewAI, vous pouvez prendre les mesures suivantes pour améliorer l'efficacité de votre équipe d'audit de sécurité :
+ Créez des outils personnalisés pour les nouveaux agents.
+ Intégrez des outils externes APIs pour le renseignement sur les menaces.
+ Développez des analyseurs spécialisés pour différents Services AWS

**Considérations relatives au dimensionnement**

Lorsque vous étendez votre système d'audit et de reporting de sécurité de l' AWS infrastructure pour gérer des environnements plus vastes ou des audits plus complets, tenez compte des facteurs d'échelle suivants :
+ **Ressources informatiques**
  + Augmentez l'allocation de mémoire Lambda pour gérer des agents supplémentaires.
  + Envisagez de répartir les charges de travail des agents entre plusieurs fonctions Lambda.
+ **Gestion des coûts**
  + Surveillez l'utilisation de l'API Amazon Bedrock à mesure que le nombre d'agents augmente.
  + Mettez en œuvre l'activation sélective des agents en fonction de l'étendue de l'audit.
+ **Efficacité de la collaboration**
  + Optimisez le partage d'informations entre les agents.
  + Implémentez des structures d'agents hiérarchiques pour les environnements complexes.
+ **Amélioration de la base de connaissances**
  + Fournir aux agents des bases de connaissances spécialisées dans leurs domaines.
  + Mettez régulièrement à jour les connaissances des agents avec les nouvelles meilleures pratiques en matière de sécurité.

# Déployer une tâche AWS Glue avec un pipeline AWS CodePipeline CI/CD
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline"></a>

*Bruno Klein et Luis Henrique Massao Yamada, Amazon Web Services*

## Résumé
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-summary"></a>

Ce modèle montre comment intégrer AWS CodeCommit et AWS CodePipeline à AWS Glue, et comment utiliser AWS Lambda pour lancer des tâches dès qu'un développeur envoie ses modifications dans un référentiel AWS distant. CodeCommit  

Lorsqu'un développeur soumet une modification à un référentiel d'extraction, de transformation et de chargement (ETL) et transmet les modifications à AWS CodeCommit, un nouveau pipeline est invoqué. Le pipeline lance une fonction Lambda qui lance une tâche AWS Glue avec ces modifications. La tâche AWS Glue exécute la tâche ETL.

Cette solution est utile dans les situations où les entreprises, les développeurs et les ingénieurs de données souhaitent lancer des tâches dès que les modifications sont validées et transférées vers les référentiels cibles. Cela permet d'atteindre un niveau supérieur d'automatisation et de reproductibilité, évitant ainsi les erreurs lors du lancement des tâches et du cycle de vie.

## Conditions préalables et limitations
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [Git](https://git-scm.com/) installé sur la machine locale
+ [Amazon Cloud Development Kit (Amazon CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) installé sur la machine locale
+ [Python](https://www.python.org/) installé sur la machine locale
+ Le code de la section *Pièces jointes*

**Limites**
+ Le pipeline est terminé dès que la tâche AWS Glue est lancée avec succès. Il n'attend pas la fin du travail.
+ Le code fourni dans la pièce jointe est destiné à des fins de démonstration uniquement.

## Architecture
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-architecture"></a>

**Pile technologique cible**
+ AWS Glue
+ AWS Lambda
+ AWS CodePipeline
+ AWS CodeCommit

**Architecture cible**

![\[Utiliser Lambda pour lancer une tâche Glue dès qu'un développeur apporte des modifications à un dépôt. CodeCommit\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/99a67388-5939-4267-8324-b6ca8bfa7962/images/917c9041-b94d-4e95-a3c4-9a1115ead228.png)


 

Le processus comprend les étapes suivantes :

1. Le développeur ou l'ingénieur de données apporte une modification au code ETL, valide et transmet la modification à AWS CodeCommit.

1. Le push initie le pipeline.

1. Le pipeline lance une fonction Lambda, qui `codecommit:GetFile` appelle le référentiel et télécharge le fichier vers Amazon Simple Storage Service (Amazon S3).

1. La fonction Lambda lance une nouvelle tâche AWS Glue avec le code ETL.

1. La fonction Lambda termine le pipeline.

**Automatisation et mise à l'échelle**

L'exemple de pièce jointe montre comment intégrer AWS Glue à AWS CodePipeline. Il fournit un exemple de référence que vous pouvez personnaliser ou étendre pour votre propre usage. Pour plus de détails, consultez la section *Epics*.

## Outils
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-tools"></a>
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) — AWS CodePipeline est un service de [livraison continue](https://aws.amazon.com/devops/continuous-delivery/) entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure.
+ [AWS CodeCommit](https://aws.amazon.com/codecommit/) — AWS CodeCommit est un service de [contrôle de source](https://aws.amazon.com/devops/source-control/) entièrement géré qui héberge des référentiels sécurisés basés sur Git.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — AWS Lambda est un service de calcul sans serveur qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs.
+ [AWS Glue](https://aws.amazon.com/glue) — AWS Glue est un service d'intégration de données sans serveur qui facilite la découverte, la préparation et la combinaison de données à des fins d'analyse, d'apprentissage automatique et de développement d'applications.
+ [Client Git](https://git-scm.com/downloads) : Git fournit des outils d'interface graphique. Vous pouvez également utiliser la ligne de commande ou un outil de bureau pour récupérer les artefacts requis GitHub. 
+ [AWS CDK](https://aws.amazon.com/cdk/) — L'AWS CDK est un framework de développement de logiciels open source qui vous aide à définir les ressources de vos applications cloud à l'aide de langages de programmation familiers.

## Épopées
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-epics"></a>

### Déployez l'exemple de code
<a name="deploy-the-sample-code"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configuration de l'AWS CLI. | Configurez l'interface de ligne de commande AWS (AWS CLI) pour cibler et authentifier votre compte AWS actuel. Pour obtenir des instructions, consultez la [documentation de l'AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). | Développeur, DevOps ingénieur | 
| Extrayez les exemples de fichiers de projet. | Extrayez les fichiers de la pièce jointe pour créer un dossier contenant les exemples de fichiers de projet. | Développeur, DevOps ingénieur | 
| Déployez l'exemple de code. | Après avoir extrait les fichiers, exécutez les commandes suivantes depuis l'emplacement d'extraction pour créer un exemple de référence :<pre>cdk bootstrap<br />cdk deploy<br />git init<br />git remote add origin <code-commit-repository-url><br />git stage .<br />git commit -m "adds sample code"<br />git push --set-upstream origin main</pre>Après la dernière commande, vous pouvez surveiller l'état du pipeline et de la tâche AWS Glue. | Développeur, DevOps ingénieur | 
| Personnalisez le code. | Personnalisez le code du fichier etl.py en fonction des besoins de votre entreprise. Vous pouvez réviser le code ETL, modifier les étapes du pipeline ou étendre la solution. | Ingénieur de données | 

## Ressources connexes
<a name="deploy-an-aws-glue-job-with-an-aws-codepipeline-ci-cd-pipeline-resources"></a>
+ [Commencer à utiliser le kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ [Ajouter des tâches dans AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)
+ [Intégrations d'actions source dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/integrations-action-type.html#integrations-source)
+ [Appelez une fonction AWS Lambda dans un pipeline dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html)
+ [Programmation avec AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming.html)
+ [ CodeCommit GetFile API AWS](https://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetFile.html)

## Pièces jointes
<a name="attachments-99a67388-5939-4267-8324-b6ca8bfa7962"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/99a67388-5939-4267-8324-b6ca8bfa7962/attachments/attachment.zip)

# Déployez du code dans plusieurs régions AWS à l'aide d'AWS CodePipeline CodeCommit, AWS et AWS CodeBuild
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Résumé
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-summary"></a>

Ce modèle montre comment créer une infrastructure ou une architecture dans plusieurs régions Amazon Web Services (AWS) à l'aide d'AWS CloudFormation. Il inclut l'intégration continue (CI) /le déploiement continu (CD) dans plusieurs régions AWS pour des déploiements plus rapides. ****Les étapes de ce modèle ont été testées pour la création d'une CodePipeline tâche AWS à déployer dans trois régions AWS, par exemple. Vous pouvez modifier le nombre de régions en fonction de votre cas d'utilisation.

## Conditions préalables et limitations
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ 
  + Un CodeBuild rôle au sein d'*AmazonS3 FullAccess* et *CloudWatchFullAccess*de ses politiques. Ces politiques permettent CodeBuild de suivre les événements d'AWS CodeCommit via Amazon CloudWatch et d'utiliser Amazon Simple Storage Service (Amazon S3) comme magasin d'artefacts.
  + Un CloudFormation rôle AWS avec les politiques suivantes, qui permettent à AWS CloudFormation, lors de la phase finale de construction, de créer ou de mettre à jour des fonctions AWS Lambda, de publier ou de consulter les CloudWatch journaux Amazon, et de créer et de mettre à jour des ensembles de modifications. 
    + *AWSLambdaFullAccess*
    + *AWSCodeDeployFullAccess*
    + *CloudWatchFullAccess*
    + *AWSCloudFormationFullAccess*
    + *AWSCodePipelineFullAccess*
**Note**  
Deux rôles AWS Identity and Access Management (IAM) pour AWS CodeBuild et AWS CloudFormation dotés de politiques appropriées CodeBuild pour effectuer les tâches de CI consistant à tester, regrouper, empaqueter les artefacts et déployer dans plusieurs régions AWS en parallèle.  Vérifiez les politiques créées par CodePipeline pour vérifier qu' CodeBuild AWS CloudFormation dispose des autorisations appropriées dans les phases CI et CD.

## Architecture
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-architecture"></a>

![\[Une CodePipeline tâche AWS déployée dans trois régions AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d44c393c-7243-4d4e-8b84-88a8503af98f/images/5c27fc35-5e62-4292-8b18-a7bc7faf2631.png)


L'architecture multi-régions et le flux de travail de ce modèle comprennent les étapes suivantes.

1. Vous envoyez votre code dans un CodeCommit dépôt.

1. Dès réception d'une mise à jour ou d'une validation du code, CodeCommit invoque un CloudWatch événement qui, à son tour, démarre une CodePipeline tâche.

1. CodePipeline engage le CI géré par CodeBuild. Les tâches suivantes sont effectuées.
   + Test des CloudFormation modèles AWS (facultatif)
   + Packaging des CloudFormation modèles AWS pour chaque région incluse dans le déploiement. Par exemple, ce modèle se déploie en parallèle dans trois régions AWS. Il regroupe CodeBuild donc les CloudFormation modèles AWS dans trois compartiments S3, un dans chaque région spécifiée. Les compartiments S3 sont utilisés uniquement CodeBuild comme référentiels d'artefacts.

1. CodeBuild empaquète les artefacts en tant qu'entrée pour la prochaine phase de déploiement, qui s'exécute en parallèle dans les trois régions AWS. Si vous spécifiez un nombre différent de régions, CodePipeline sera déployé dans ces régions.

## Outils
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-tools"></a>

**Outils**
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) CodePipeline est un service de livraison continue que vous pouvez utiliser pour modéliser, visualiser et automatiser les étapes nécessaires à la publication continue des modifications apportées à vos logiciels.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) CodeBuild est un service de génération entièrement géré qui compile votre code source, exécute des tests unitaires et produit des artefacts prêts à être déployés.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) CodeCommit est un service de contrôle de version hébergé par Amazon Web Services que vous pouvez utiliser pour stocker et gérer des actifs privés (tels que le code source et les fichiers binaires) dans le cloud.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation est un service qui vous aide à modéliser et à configurer vos ressources Amazon Web Services afin que vous puissiez passer moins de temps à gérer ces ressources et plus de temps à vous concentrer sur vos applications exécutées dans AWS.
+ [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — AWS Identity and Access Management (IAM) est un service Web qui vous permet de contrôler en toute sécurité l'accès aux ressources AWS.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet. Il est conçu pour faciliter l'informatique à l'échelle d'Internet pour les développeurs.

**Code**

L'exemple de code suivant concerne le `BuildSpec.yaml` fichier (phase de construction).

```
---
artifacts:
discard-paths: true
files:
- packaged-first-region.yaml
- packaged-second-region.yaml
- packaged-third-region.yaml
phases:
build:
commands:
- echo "********BUILD PHASE - CF PACKAGING**********"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_FIRST_REGION --output-template-file packaged-first-region.yaml --region $FIRST_REGION"
- "aws cloudformation package --template-file sam-template.yaml --s3-bucket $S3_SECOND_REGION --output-template-file packaged-second-region.yaml --region $SECOND_REGION"
- "aws cloudformation package --template-file sam-template-anand.yaml --s3-bucket $S3_THIRD_REGION --output-template-file packaged-third-region.yaml --region $THIRD_REGION"
install:
commands:
- echo "********BUILD PHASE - PYTHON SETUP**********"
runtime-versions:
python: 3.8
post_build:
commands:
- echo "********BUILD PHASE - PACKAGING COMPLETION**********"
pre_build:
commands:
- echo "********BUILD PHASE - DEPENDENCY SETUP**********"
- "npm install --silent --no-progress"
- echo "********BUILD PHASE - DEPENDENCY SETUP DONE**********"
version: 0.2
```

## Épopées
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-epics"></a>

### Préparez le code et le CodeCommit référentiel
<a name="prepare-the-code-and-the-codecommit-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Sélectionnez la région AWS principale pour le déploiement. | Connectez-vous à votre compte AWS et choisissez la région principale pour le déploiement. Le CodeCommit dépôt se trouvera dans la région principale. | DevOps | 
| Créez le CodeCommit référentiel. | Créez le CodeCommit référentiel et insérez-y le code requis. Le code inclut généralement les modèles AWS CloudFormation ou AWS SAM, le code Lambda le cas échéant, et les CodeBuild `buildspec.yaml` fichiers en entrée dans AWS. CodePipeline | DevOps | 
| Insérez le code dans le CodeCommit référentiel. | Dans la section *Pièces jointes*, téléchargez le code de cet exemple, puis insérez-y le code requis. En général, le code peut inclure des modèles AWS CloudFormation ou AWS SAM, du code Lambda et les CodeBuild `buildspec.yaml` fichiers en entrée du pipeline. | DevOps | 

### Phase source : création du pipeline
<a name="source-phase-create-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le CodePipeline job. | Sur la CodePipeline console, choisissez **Create pipeline**. | DevOps | 
| Nommez la CodePipeline tâche et choisissez le paramètre du rôle de service. | Entrez un nom pour la tâche et conservez le paramètre de rôle de service par défaut afin de CodePipeline créer le rôle associé aux politiques nécessaires. | DevOps | 
| Spécifiez l'emplacement du magasin d'artefacts. | Sous **Paramètres avancés**, conservez l'option par défaut afin de CodePipeline créer un compartiment S3 à utiliser pour le stockage des artefacts de code. Si vous utilisez plutôt un compartiment S3 existant, celui-ci doit se trouver dans la région principale que vous avez spécifiée dans le premier épisode épique. | DevOps | 
| Spécifiez la clé de chiffrement. | Conservez l'option par **défaut, Default AWS Managed Key**, ou choisissez d'utiliser votre propre clé gérée par le client AWS Key Management Service (AWS KMS). | DevOps | 
| Spécifiez le fournisseur source. | Dans **Source provider**, sélectionnez **AWS CodeCommit**. | DevOps | 
| Spécifiez le référentiel. | Choisissez le CodeCommit dépôt que vous avez créé dans la première épopée. Si vous avez placé le code dans une branche, choisissez-la. | DevOps | 
| Spécifiez la manière dont les modifications de code sont détectées. | Conservez la valeur par défaut, **Amazon CloudWatch Events**, comme déclencheur de modification CodeCommit pour démarrer la CodePipeline tâche. | DevOps | 

### Phase de construction : Configuration du pipeline
<a name="build-phase-configure-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Spécifiez le fournisseur de build. | Pour le fournisseur de build, choisissez **AWS CodeBuild**. | DevOps | 
| Spécifiez la région AWS. | Choisissez la région principale, que vous avez spécifiée dans la première épopée. | DevOps | 

### Phase de construction : création et configuration du projet
<a name="build-phase-create-and-configure-the-project"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Création du projet | Choisissez **Créer un projet**, puis entrez un nom pour le projet. | DevOps | 
| Spécifiez l'image de l'environnement. | Pour cette démonstration de modèle, utilisez l'image CodeBuild gérée par défaut. Vous avez également la possibilité d'utiliser une image Docker personnalisée si vous en avez une. | DevOps | 
| Spécifiez le système d'exploitation. | Choisissez Amazon Linux 2 ou Ubuntu.Le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/). | DevOps | 
| Spécifiez le rôle du service. | Choisissez le rôle pour lequel vous avez créé le poste CodeBuild avant de commencer à créer le CodePipeline travail. (Voir la section *Conditions préalables*.) | DevOps | 
| Définissez des options supplémentaires. | Pour le **délai d'expiration et le délai** d'**attente, conservez les valeurs par** défaut. Pour le certificat, conservez le paramètre par défaut, sauf si vous souhaitez utiliser un certificat personnalisé. | DevOps | 
| Créez les variables d'environnement. | Pour chaque région AWS dans laquelle vous souhaitez effectuer un déploiement, créez des variables d'environnement en fournissant le nom du compartiment S3 et le nom de la région (par exemple, us-east-1). | DevOps | 
| Indiquez le nom du fichier buildspec, s'il ne s'agit pas de buildspec.yml. | Laissez ce champ vide si le nom du fichier est le nom par défaut,`buildspec.yaml`. Si vous avez renommé le fichier buildspec, entrez le nom ici. Assurez-vous qu'il correspond au nom du fichier qui se trouve dans le CodeCommit référentiel. | DevOps | 
| Spécifiez la journalisation. | Pour consulter les journaux d'Amazon CloudWatch Events, conservez le paramètre par défaut. Vous pouvez également définir n'importe quel nom de groupe ou d'enregistreur spécifique. | DevOps | 

### Ignorer la phase de déploiement
<a name="skip-the-deploy-phase"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ignorez la phase de déploiement et terminez la création du pipeline. | Lorsque vous configurez le pipeline, vous CodePipeline ne pouvez créer qu'une seule étape dans la phase de déploiement. Pour effectuer un déploiement dans plusieurs régions AWS, ignorez cette phase. Une fois le pipeline créé, vous pouvez ajouter plusieurs étapes de phase de déploiement. | DevOps | 

### Phase de déploiement : configurer le pipeline pour le déploiement dans la première région
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-first-region"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez une étape à la phase de déploiement. | Modifiez le pipeline et choisissez **Ajouter une étape** dans la phase de déploiement. Cette première étape concerne la région principale. | DevOps | 
| Indiquez le nom de l'action pour l'étape. | Entrez un nom unique qui reflète la première étape (principale) et la première région. <region>Par exemple, entrez **primary\$1 \$1deploy**. | DevOps | 
| Spécifiez le fournisseur d'actions. | Pour **Action provider**, choisissez AWS CloudFormation. | DevOps | 
| Configurez la région pour la première étape. | Choisissez la première région (principale), la même région où CodePipeline et où vous CodeBuild êtes configurés. Il s'agit de la région principale dans laquelle vous souhaitez déployer la pile. | DevOps | 
| Spécifiez l'artefact d'entrée. | Sélectionnez **BuildArtifact**. Il s'agit du résultat de la phase de construction. | DevOps | 
| Spécifiez l'action à effectuer. | Pour le **mode Action**, choisissez **Create or update a stack (Créer ou mettre à jour une pile**). | DevOps | 
| Entrez un nom pour la CloudFormation pile. |  | DevOps | 
| Spécifiez le modèle pour la première région. | Sélectionnez le nom du package spécifique à la région qui a été empaqueté CodeBuild et déposé dans le compartiment S3 pour la première région (principale). | DevOps | 
| Spécifiez les fonctionnalités. | Des fonctionnalités sont requises si le modèle de pile inclut des ressources IAM ou si vous créez une pile directement à partir d'un modèle contenant des macros. Pour ce modèle, utilisez CAPABILITY\$1IAM, CAPABILITY\$1NAMED\$1IAM, CAPABILITY\$1AUTO\$1EXPAND. | DevOps | 

### Phase de déploiement : configurer le pipeline pour le déploiement dans la deuxième région
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-second-region"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez la deuxième étape à la phase de déploiement. | Pour ajouter une étape pour la deuxième région, modifiez le pipeline et choisissez **Ajouter une étape** dans la phase de déploiement. Important : Le processus de création de la deuxième région est le même que celui de la première région, à l'exception des valeurs suivantes. | DevOps | 
| Indiquez le nom de l'action pour la deuxième étape. | Entrez un nom unique qui reflète la deuxième étape et la deuxième région. | DevOps | 
| Configurez la région pour la deuxième étape. | Choisissez la deuxième région dans laquelle vous souhaitez déployer la pile. | DevOps | 
| Spécifiez le modèle pour la deuxième région. | Sélectionnez le nom du package spécifique à la région qui a été empaqueté CodeBuild et déposé dans le compartiment S3 pour la deuxième région. | DevOps | 

### Phase de déploiement : configurer le pipeline pour le déploiement dans la troisième région
<a name="deploy-phase-configure-the-pipeline-for-deployment-to-the-third-region"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez la troisième étape à la phase de déploiement. | Pour ajouter une étape pour la troisième région, modifiez le pipeline et choisissez **Ajouter une étape** dans la phase de déploiement. Important : Le processus de création de la deuxième région est identique à celui des deux régions précédentes, à l'exception des valeurs suivantes. | DevOps | 
| Indiquez le nom de l'action pour la troisième étape. | Entrez un nom unique qui reflète la troisième étape et la troisième région. | DevOps | 
| Configurez la région pour la troisième étape. | Choisissez la troisième région dans laquelle vous souhaitez déployer la pile. | DevOps | 
| Spécifiez le modèle pour la troisième région. | Sélectionnez le nom du package spécifique à la région qui a été empaqueté CodeBuild et déposé dans le compartiment S3 pour la troisième région. | DevOps | 

### Nettoyez le déploiement
<a name="clean-up-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources AWS. | Pour nettoyer le déploiement, supprimez les CloudFormation piles dans chaque région. Supprimez ensuite les CodePipeline ressources CodeCommit CodeBuild, et de la région principale. | DevOps | 

## Ressources connexes
<a name="deploy-code-in-multiple-aws-regions-using-aws-codepipeline-aws-codecommit-and-aws-codebuild-resources"></a>
+ [Qu'est-ce qu'AWS CodePipeline ?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Modèle d'application sans serveur AWS](https://aws.amazon.com/serverless/sam/)
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [Référence de structure d' CloudFormation architecture AWS pour AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html)

## Pièces jointes
<a name="attachments-d44c393c-7243-4d4e-8b84-88a8503af98f"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/d44c393c-7243-4d4e-8b84-88a8503af98f/attachments/attachment.zip)

# Déployez des charges de travail à partir de DevOps pipelines Azure vers des clusters Amazon EKS privés
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters"></a>

*Mahendra Ranasiddappa, Amazon Web Services*

## Résumé
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-summary"></a>

Ce modèle montre comment implémenter l'intégration continue et la livraison continue (CI/CD) à partir de DevOps pipelines Azure vers des clusters privés Amazon Elastic Kubernetes Service (Amazon EKS). Il répond à un défi critique auquel sont confrontées les entreprises qui améliorent leur niveau de sécurité en optant pour des points de terminaison de serveurs d'API privés pour leurs clusters Amazon EKS.

Un point de terminaison public expose le serveur d'API Kubernetes directement à Internet, ce qui crée une plus grande surface d'attaque que des acteurs malveillants pourraient potentiellement cibler. En passant à un point de terminaison privé, l'accès au plan de contrôle du cluster est limité au cloud privé virtuel (VPC) du client.

Bien que la transition d'un cluster Amazon EKS vers un point de terminaison d'API privé améliore considérablement la sécurité, elle pose des problèmes de connectivité pour les CI/CD plateformes externes telles qu'Azure DevOps. Le point de terminaison privé n'est accessible que depuis le VPC ou les réseaux pairs du cluster. Par conséquent, les DevOps agents Azure standard hébergés par Microsoft, opérant en dehors du réseau AWS privé, ne peuvent pas accéder directement au serveur d'API Kubernetes. Cela interrompt les flux de travail de déploiement classiques qui reposent sur des outils tels que kubectl ou Helm exécutés sur ces agents, car ils ne parviennent pas à établir de connexion avec le cluster.

Pour surmonter ce problème, ce modèle illustre une approche efficace en utilisant des DevOps agents Azure auto-hébergés au sein de clusters Amazon EKS privés. Cette solution offre une optimisation des coûts, une efficacité opérationnelle et une évolutivité supérieures tout en préservant les exigences de sécurité. Cette approche profite particulièrement aux entreprises qui cherchent à rationaliser leurs DevOps processus multicloud sans compromettre les performances ou la sécurité.

## Conditions préalables et limitations
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Command Line Interface [(AWS CLI) version 2.13.17 ou ultérieure, installée.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [Kubectl version 1.25.1 ou ultérieure, installée.](https://kubernetes.io/docs/tasks/tools/)
+ [Un cluster Amazon EKS privé version 1.24 ou ultérieure [créé](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html), avec des autorisations pour créer des espaces de noms, des secrets et des déploiements.](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)
+ Nœuds de travail dans un cluster Amazon EKS dotés d'une connectivité sortante à Internet afin que l' DevOps agent Azure qui s'exécute sur ces nœuds puisse se connecter au pool d' DevOps agents Azure.
+ GitHub compte [créé](https://github.com/signup).
+ Un DevOps projet Azure ayant accès à la configuration des connexions de service, qui sont des connexions authentifiées entre Azure Pipelines et des services externes ou distants, [a été créé](https://learn.microsoft.com/en-us/azure/devops/user-guide/sign-up-invite-teammates?view=azure-devops&tabs=microsoft-account).
+ La AWS Toolkit pour Azure DevOps version 1.15 ou ultérieure installée pour le DevOps projet Azure décrit au point précédent. Pour les instructions d'installation, reportez-vous [AWS Toolkit pour Azure DevOps](https://marketplace.visualstudio.com/items?itemName=AmazonWebServices.aws-vsts-tools)à Visual Studio Marketplace.

**Limites**
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-architecture"></a>

Ce modèle crée ce qui suit :
+ Référentiel **Amazon ECR : le référentiel** Amazon Elastic Container Registry (Amazon ECR) stocke l'image Docker avec l' DevOps agent Azure et l'exemple d'application déployé.
+ **Pool d' DevOps agents Azure** : un pool d'agents DevOps auto-hébergé par Azure enregistre l'agent exécuté sur le cluster Amazon EKS privé.
+ Rôle **IAM : rôle** Gestion des identités et des accès AWS (IAM) permettant à la connexion au service Azure de fournir l'accès requis à l'agent qui s'exécute sur un cluster Amazon EKS privé.
+ Connexion au ** DevOps service Azure : connexion** au service dans un DevOps compte Azure pour utiliser le rôle IAM qui fournit l'accès requis pour que les tâches du pipeline puissent accéder Services AWS.

Le schéma suivant montre l'architecture du déploiement d'un DevOps agent Azure auto-hébergé sur un cluster Amazon EKS privé et du déploiement d'un exemple d'application sur le même cluster.

![\[Déploiement d'un DevOps agent Azure auto-hébergé et d'un exemple d'application sur un cluster Amazon EKS privé.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a965834f-a1e2-4679-bd8c-15eed4f57b55/images/ee22bd3e-311c-46e0-8024-9b7e7752080a.png)


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

1. Déployez un DevOps agent Azure auto-hébergé en tant que déploiement au sein d'un cluster Amazon EKS.

1. Un DevOps agent Azure se connecte au pool d'agents sur un DevOps compte Azure à l'aide d'un jeton d'accès personnel (PAT) pour l'authentification.

1. Azure Pipelines configure un pipeline à déployer en utilisant le code d'un GitHub référentiel.

1. Le pipeline s'exécute sur l'agent à partir du pool d'agents configuré dans la configuration du pipeline. L' DevOps agent Azure obtient les informations relatives aux tâches du pipeline en interrogeant constamment le DevOps compte Azure.

1. L' DevOps agent Azure crée une image Docker dans le cadre de la tâche de pipeline et envoie l'image vers le référentiel Amazon ECR.

1. L' DevOps agent Azure déploie l'exemple d'application sur un cluster Amazon EKS privé dans un espace de noms appelé. `webapp` 

## Outils
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-tools"></a>

**Outils**
+ [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/what-is-eks.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.
+ [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.

**Autres outils**
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.
+ [kubectl](https://kubernetes.io/docs/tasks/tools/) est une interface de ligne de commande qui vous permet d'exécuter des commandes sur des clusters Kubernetes.

**Référentiel de code**
+ Le code de ce modèle est disponible dans le référentiel GitHub [deploy-kubernetes-resources-to- amazon-eks-using-azure -devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops).

## Bonnes pratiques
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-best-practices"></a>
+ Pour Amazon EKS, consultez le [guide des meilleures pratiques Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/introduction.html).
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-epics"></a>

### Création d'une connexion de service
<a name="create-a-service-connection"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Trouvez le GUID de DevOps l'organisation Azure. | Connectez-vous à votre DevOps compte Azure, puis utilisez l'URL suivante pour trouver le GUID de l'organisation : `https://dev.azure.com/{DevOps_Org_ID}/_apis/projectCollections?api-version=6.0` dans l'URL, remplacez-le par votre identifiant `{DevOps_org_ID}` d' DevOps organisation Azure. | AWS DevOps | 
| Configurez un IdP dans le. Compte AWS | Pour configurer un fournisseur d'identité (IdP) dans le cadre Compte AWS d'une connexion au service Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Pour plus de détails, consultez [Comment créer une fédération AWS depuis Azure à DevOps l'aide d'OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/). | AWS DevOps | 
| Créez une politique IAM dans le Compte AWS. | Pour créer une politique IAM afin de fournir les autorisations requises au rôle IAM utilisé par le DevOps pipeline Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Créez un rôle IAM dans le Compte AWS. | Pour configurer un rôle IAM dans Compte AWS la connexion au service Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Federated": "arn:aws:iam::{account_id}:oidc-provider/vstoken.dev.azure.com/{OrganizationGUID}"<br />      },<br />      "Action": "sts:AssumeRoleWithWebIdentity",<br />      "Condition": {<br />        "StringEquals": {<br />          "vstoken.dev.azure.com/{OrganizationGUID}:aud": "api://AzureADTokenExchange",<br />          "vstoken.dev.azure.com/{OrganizationGUID}:sub": "sc://{OrganizationName}/{ProjectName}/{ServiceConnectionName}"<br />        }<br />      }<br />    }<br />  ]<br />}</pre>Dans la politique, fournissez vos informations pour les espaces réservés suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Créez une connexion de service dans le DevOps compte Azure. | Pour configurer une connexion au service Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Pour plus de détails, consultez la section [Créer une connexion de service](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops#create-a-service-connection) dans la documentation Microsoft. | AWS DevOps | 
| Ajoutez le rôle IAM au fichier de configuration Amazon EKS. | Le rôle IAM doit disposer des autorisations nécessaires pour effectuer les opérations requises sur le cluster Amazon EKS. Comme il s'agit d'un rôle de pipeline, le rôle IAM doit être capable de gérer presque tous les types de ressources du cluster. Par conséquent, l'autorisation de `system:masters` groupe est appropriée pour ce rôle.Pour ajouter la configuration requise à Kubernetes, utilisez le code `aws-auth ConfigMap` suivant :<pre>- groups:<br />  - system:masters<br />  rolearn: arn:aws:iam::{account_id}:role/ADO-role<br />  username: ADO-role</pre>`{account_id}`Remplacez-le par votre Compte AWS identifiant.Pour plus d'informations, consultez [Comment Amazon EKS fonctionne avec IAM](https://docs.aws.amazon.com/eks/latest/userguide/security-iam-service-with-iam.html#security-iam-service-with-iam-roles) dans la documentation Amazon EKS. | AWS DevOps | 

### Création d'un pool d'agents
<a name="create-an-agent-pool"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un pool d'agents auto-hébergé. | Pour configurer un pool d'agents auto-hébergé dans le DevOps compte Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Pour plus de détails, consultez la section [Création et gestion de pools d'agents](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues?view=azure-devops&tabs=yaml%2Cbrowser) dans la documentation Microsoft. |  | 

### Créez une image d' DevOps agent Azure et envoyez-la vers Amazon ECR
<a name="build-azure-devops-agent-image-and-push-to-ecr"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| créer un référentiel Amazon ECR ; | Les images Docker utilisées pour déployer l' DevOps agent Azure et l'exemple d'application (`webapp`) sur le cluster Amazon EKS privé doivent être stockées dans un référentiel Amazon ECR. Pour créer un référentiel Amazon ECR, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Pour plus de détails, consultez la section [Création d'un référentiel privé Amazon ECR pour stocker des images](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dans la documentation Amazon ECR. | AWS DevOps | 
| Créez un Dockerfile pour créer l'agent Azure DevOps . | Créez un Dockerfile pour créer l'image Docker sur laquelle l'agent Azure DevOps est installé. Stockez le contenu suivant dans un fichier nommé `Dockerfile` :<pre><br />FROM ubuntu:22.04 <br />ENV TARGETARCH="linux-x64"<br />RUN apt update && apt upgrade -y && apt install -y curl git jq libicu70 unzip wget<br /><br />RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"<br />RUN unzip awscliv2.zip<br />RUN ./aws/install<br />RUN rm -rf aws awscliv2.zip<br /><br />RUN curl -sSL https://get.docker.com/ | sh<br /><br />RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash<br />RUN mkdir -p azp <br />WORKDIR /azp/<br /><br />COPY ./start.sh ./ <br />RUN chmod +x ./start.sh<br /><br />RUN useradd -m -d /home/agent agent <br />RUN chown -R agent:agent /azp /home/agent<br />RUN groupadd -f docker <br />RUN usermod -aG docker agent<br />USER agent<br /><br />ENTRYPOINT [ "./start.sh" ]</pre> | AWS DevOps | 
| Créez un script pour l' DevOps agent Azure. | Pour créer le `start.sh` script, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Créez une image Docker avec l' DevOps agent Azure.  | Pour créer une image Docker afin d'installer l' DevOps agent Azure, utilisez le Dockerfile que vous avez créé précédemment pour créer l'image. Dans le répertoire où le Dockerfile est stocké, exécutez les commandes suivantes :<pre>aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com<br /><br />docker build --platform linux/amd64 -t ado-agent:latest .<br /><br />docker tag ado-agent:latest aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br /><br />docker push aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest</pre>Remplacez `aws_account_id` et `region` par votre Compte AWS identifiant et Région AWS. | AWS DevOps | 

### Déployer l' DevOps agent Azure sur un cluster Amazon EKS privé
<a name="deploy-the-azure-devops-agent-to-a-private-eks-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Générez un jeton d'accès personnel Azure. | L'agent exécuté sur le cluster privé Amazon EKS a besoin d'un jeton d'accès personnel (PAT) afin de pouvoir s'authentifier auprès du DevOps compte Azure. Pour générer un PAT, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>apiVersion: v1<br />kind: Secret<br />metadata:<br />  name: azdevops-pat<br />  namespace: default<br />type: Opaque<br />stringData:<br />  AZP_TOKEN: <PAT Token></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>kubectl create -f ado-secret.yaml</pre>Pour plus de détails, voir [Enregistrer un agent à l'aide d'un jeton d'accès personnel (PAT)](https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/personal-access-token-agent-registration?view=azure-devops) dans la documentation Microsoft. | AWS DevOps | 
| Utilisez le fichier manifeste Kubernetes pour le déploiement de l'agent. | Pour déployer l' DevOps agent Azure sur le cluster privé Amazon EKS, copiez le fichier manifeste suivant et stockez-le sous le nom `agent-deployment.yaml` : <pre>apiVersion: apps/v1<br />kind: Deployment<br />metadata:<br />  name: azure-pipelines-agent-eks<br />  labels:<br />    app: azure-pipelines-agent<br />spec:<br />  replicas: 1<br />  selector:<br />    matchLabels:<br />      app: azure-pipelines-agent<br />  template:<br />    metadata:<br />      labels:<br />        app: azure-pipelines-agent<br />    spec:<br />      containers:<br />      - name: docker<br />        image: docker:dind<br />        securityContext: <br />          privileged: true<br />        volumeMounts:<br />        - name: shared-workspace<br />          mountPath: /workspace<br />        - name: dind-storage<br />          mountPath: /var/lib/docker<br />        env:<br />        - name: DOCKER_TLS_CERTDIR<br />          value: ""<br />      - name: azure-pipelines-agent<br />        image: aws_account_id.dkr.ecr.region.amazonaws.com/webapp:latest<br />        env:<br />        - name: AZP_URL<br />          value: "<Azure account URL>"<br />        - name: AZP_POOL<br />          value: "eks-agent"<br />        - name: AZP_TOKEN<br />          valueFrom:<br />            secretKeyRef:<br />              name: azdevops-pat<br />              key: AZP_TOKEN<br />        - name: AZP_AGENT_NAME<br />          valueFrom:<br />            fieldRef:<br />              fieldPath: metadata.name<br />        - name: DOCKER_HOST<br />          value: tcp://localhost:2375<br />        volumeMounts:<br />        - mountPath: /workspace<br />          name: shared-workspace<br />      volumes:<br />      - name: dind-storage<br />        emptyDir: {}<br />      - name: shared-workspace<br />        emptyDir: {}</pre>Remplacez `aws_account_id` et `<Azure account URL>` par votre Compte AWS identifiant et l'URL de votre DevOps compte Azure. | AWS DevOps | 
| Déployez l'agent sur le cluster Amazon EKS privé. | Pour déployer l'agent Azure Devops sur le cluster privé Amazon EKS, utilisez la commande suivante :<pre>kubectl create -f agent-deployment.tf</pre> | AWS DevOps | 
| Vérifiez que l'agent est en cours d'exécution. | Pour vérifier que l' DevOps agent Azure est en cours d'exécution, utilisez la commande suivante :<pre>kubectl get deploy azure-pipelines-agent-eks<br /></pre>Le résultat attendu doit être similaire à ce qui suit :<pre><br />NAME                        READY   UP-TO-DATE   AVAILABLE   AGE<br />azure-pipelines-agent-eks   1/1     1            1           58s</pre>Assurez-vous que la `READY ` colonne s'affiche`1/1`. | AWS DevOps | 
| Vérifiez que l'agent est enregistré dans le pool d' DevOps agents Azure. | Pour vérifier que l'agent est déployé sur le cluster privé Amazon EKS et qu'il est enregistré dans le pool d'agents`eks-agent`, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Vous devriez voir un agent répertorié avec un **statut** **en ligne**, et le nom de l'agent doit commencer par **azure-pipelines-agent-eks-\$1**. | AWS DevOps | 

### Déployer un exemple d'application
<a name="deploy-sample-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez le référentiel d'exemples d'applications à votre GitHub compte.  | Ajoutez le référentiel AWS d'échantillons suivant à votre GitHub compte :[https://github.com/aws-samples/deploy-kubernetes-resources-to- amazon-eks-using-azure devops](https://github.com/aws-samples/deploy-kubernetes-resources-to-amazon-eks-using-azure-devops) | AWS DevOps | 
| Créez un pipeline. | Pour créer un pipeline dans votre DevOps compte Azure, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)<pre>pool:<br />  name: eks-agent<br />#pool: self-hosted # If you are running self-hosted Azure DevOps Agents<br /><br />stages:<br /># Refering the pipeline template, input parameter that are not specified will be added with defaults<br />- template: ./pipeline_templates/main_template.yaml<br />  parameters:<br />    serviceConnectionName: aws-sc<br />    awsRegion: <your region><br />    awsEKSClusterName: <name of your EKS cluster><br />    projectName: webapp<br /></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | AWS DevOps | 
| Vérifiez que l'exemple d'application a été déployé. | Une fois le pipeline terminé, vérifiez le déploiement réussi de l'exemple d'application en vérifiant à la fois le référentiel Amazon ECR et le cluster Amazon EKS.Pour vérifier les artefacts dans le référentiel Amazon ECR, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html)Par exemple : `20250501.1-image` et `20250501.1-helm`.Pour vérifier le déploiement sur le cluster privé Amazon EKS dans l'espace de noms`webapp`, utilisez la commande suivante :<pre>kubectl get deploy -n webapp </pre>La sortie attendue est la suivante :<pre><br />NAME     READY   UP-TO-DATE   AVAILABLE<br />webapp   1/1     1            1           </pre>Remarque : s'il s'agit de votre première exécution de pipeline, vous devrez peut-être autoriser la connexion au service et le pool d'agents. Recherchez les demandes d'autorisation dans l'interface du DevOps pipeline Azure et approuvez-les pour continuer. | AWS DevOps | 

## Résolution des problèmes
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le pipeline échoue lorsque le nom du référentiel Amazon ECR ne correspond pas `webapp` | L'exemple d'application s'attend à ce que le nom du référentiel Amazon ECR corresponde au `projectName: webapp` paramètre indiqué dans`azure_pipeline.yml`.Pour résoudre ce problème, renommez votre référentiel Amazon ECR en ou mettez à jour `webapp` ce qui suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 
| Erreur : le cluster Kubernetes est inaccessible : le serveur a demandé au client de fournir des informations d'identification | Si vous rencontrez cette erreur à l'étape « Pull and Deploy Helm Chart » de votre pipeline Azure, la cause première provient généralement d'une configuration incorrecte des rôles IAM dans celui de `aws-auth ConfigMap` votre cluster Amazon EKS.Pour résoudre ce problème, vérifiez les points suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters.html) | 

## Ressources connexes
<a name="deploy-workloads-from-azure-devops-pipelines-to-private-amazon-eks-clusters-resources"></a>

**AWS Blogs**
+ [Comment créer une fédération AWS depuis Azure à l' DevOps aide d'OpenID Connect](https://aws.amazon.com/blogs/modernizing-with-aws/how-to-federate-into-aws-from-azure-devops-using-openid-connect/)

**Services AWS documentation**
+ [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)

**Documentation Microsoft**
+ [Qu'est-ce qu'Azure DevOps ?](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops?view=azure-devops)
+ [Qu'est-ce qu'Azure Pipelines ?](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines?view=azure-devops)

# Exécutez des requêtes SQL Amazon Redshift à l'aide de Terraform
<a name="execute-redshift-sql-queries-using-terraform"></a>

*Sylvia Qi et Aditya Ambati, Amazon Web Services*

## Résumé
<a name="execute-redshift-sql-queries-using-terraform-summary"></a>

L'utilisation de l'infrastructure en tant que code (IaC) pour le déploiement et la gestion d'Amazon Redshift est une pratique courante au sein de l'entreprise. DevOps IaC facilite le déploiement et la configuration de diverses ressources Amazon Redshift, telles que les clusters, les instantanés et les groupes de paramètres. Cependant, IaC ne s'étend pas à la gestion des ressources de base de données telles que les tables, les schémas, les vues et les procédures stockées. Ces éléments de base de données sont gérés par le biais de requêtes SQL et ne sont pas directement pris en charge par les outils IaC. Bien qu'il existe des solutions et des outils pour gérer ces ressources, vous préférerez peut-être ne pas ajouter d'outils supplémentaires à votre infrastructure technologique.

Ce modèle décrit une méthodologie qui utilise Terraform pour déployer les ressources de base de données Amazon Redshift, notamment les tables, les schémas, les vues et les procédures stockées. Le modèle distingue deux types de requêtes SQL :
+ **Requêtes non répétables** : ces requêtes sont exécutées une seule fois lors du déploiement initial d'Amazon Redshift afin d'établir les composants essentiels de la base de données. 
+ **Requêtes répétables** : ces requêtes sont immuables et peuvent être réexécutées sans affecter la base de données. La solution utilise Terraform pour surveiller les modifications des requêtes répétables et les appliquer en conséquence.

Pour plus de détails, consultez la section Présentation *de la solution* dans [Informations supplémentaires](#execute-redshift-sql-queries-using-terraform-additional).

## Conditions préalables et limitations
<a name="execute-redshift-sql-queries-using-terraform-prereqs"></a>

**Conditions préalables**

Vous devez avoir un système actif Compte AWS et installer ce qui suit sur votre machine de déploiement :
+ [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (AWS CLI)
+ Un [AWS CLI profil](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) configuré avec les autorisations Amazon Redshift read/write 
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) version 1.6.2 ou ultérieure
+ [Python 3](https://www.python.org/downloads/)
+ [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)

**Limites**
+ Cette solution prend en charge une seule base de données Amazon Redshift car Terraform n'autorise la création d'une seule base de données lors de la création du cluster.
+ Ce modèle n'inclut pas de tests pour valider les modifications apportées aux requêtes répétables avant de les appliquer. Nous vous recommandons d'intégrer de tels tests pour une fiabilité accrue.
+ Pour illustrer la solution, ce modèle fournit un exemple de `redshift.tf` fichier qui utilise un fichier d'état Terraform local. Toutefois, pour les environnements de production, nous vous recommandons vivement d'utiliser un fichier d'état distant doté d'un mécanisme de verrouillage pour améliorer la stabilité et la collaboration.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**

Cette solution est développée et testée sur le [correctif 179 d'Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/cluster-versions.html#cluster-version-179).

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [amazon-redshift-sql-deploy-terraform](https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform).

## Architecture
<a name="execute-redshift-sql-queries-using-terraform-architecture"></a>

Le schéma suivant illustre comment Terraform gère les ressources de base de données Amazon Redshift en gérant à la fois les requêtes SQL non répétables et répétables.

![\[Processus permettant à Terraform de gérer les ressources de base de données Amazon Redshift à l'aide de requêtes SQL.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/0f4467ac-761b-4b6b-a32f-e18a2ca2245d/images/3b6ff9e8-e3d1-48ed-9fa1-4b14f7d3d65b.png)


Le schéma montre les étapes suivantes :

1. Terraform applique des requêtes SQL non répétables lors du déploiement initial du cluster Amazon Redshift.

1. Le développeur valide les modifications apportées aux requêtes SQL répétables.

1. Terraform surveille les modifications apportées aux requêtes SQL répétables.

1. Terraform applique des requêtes SQL répétables à la base de données Amazon Redshift.

La solution fournie par ce modèle est basée sur le [module Terraform pour Amazon Redshift](https://registry.terraform.io/modules/terraform-aws-modules/redshift/aws/latest). Le module Terraform fournit un cluster et une base de données Amazon Redshift. Pour améliorer le module, nous avons utilisé `terraform_data` des ressources qui invoquent un script Python personnalisé pour exécuter des requêtes SQL à l'aide de l'opération d'API Amazon [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)Redshift. Par conséquent, le module peut effectuer les opérations suivantes :
+ Déployez autant de ressources de base de données que vous le souhaitez à l'aide de requêtes SQL après le provisionnement de la base de données.
+ Surveillez en permanence les modifications apportées aux requêtes SQL répétables et appliquez ces modifications à l'aide de Terraform.

Pour plus de détails, consultez la section Présentation *de la solution* dans [Informations supplémentaires](#execute-redshift-sql-queries-using-terraform-additional).

## Outils
<a name="execute-redshift-sql-queries-using-terraform-tools"></a>

**Services AWS**
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html) est un service d'entrepôt de données entièrement géré à l'échelle du pétaoctet situé dans le. AWS Cloud

**Autres outils**
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.
+ [Python](https://www.python.org/) est un langage de programmation polyvalent utilisé dans ce modèle pour exécuter des requêtes SQL. 

## Bonnes pratiques
<a name="execute-redshift-sql-queries-using-terraform-best-practices"></a>
+ [Bonnes pratiques relatives à Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/best-practices.html)
+ [Utilisation de l'API Amazon Redshift Data pour interagir avec les clusters Amazon Redshift](https://aws.amazon.com/blogs/big-data/using-the-amazon-redshift-data-api-to-interact-with-amazon-redshift-clusters/)

## Épopées
<a name="execute-redshift-sql-queries-using-terraform-epics"></a>

### Déployez la solution à l'aide de Terraform
<a name="deploy-the-solution-using-terraform"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| **Clonez le dépôt.** | Pour cloner le référentiel Git contenant le code Terraform pour le provisionnement d'un cluster Amazon Redshift, utilisez la commande suivante.<pre>git clone https://github.com/aws-samples/amazon-redshift-sql-deploy-terraform.git</pre> | DevOps ingénieur | 
| **Mettez à jour les variables Terraform.** | Pour personnaliser le déploiement du cluster Amazon Redshift en fonction de vos besoins spécifiques, mettez à jour les paramètres suivants dans le `terraform.tfvars` fichier.<pre>region                    = "<AWS_REGION>"<br />cluster_identifier        = "<REDSHIFT_CLUSTER_IDENTIFIER>"<br />node_type                 = "<REDSHIFT_NODE_TYPE>"<br />number_of_nodes           = "<REDSHIFT_NODE_COUNT>"<br />database_name             = "<REDSHIFT_DB_NAME>"<br />subnet_ids                = "<REDSHIFT_SUBNET_IDS>"<br />vpc_security_group_ids    = "<REDSHIFT_SECURITY_GROUP_IDS>"<br />run_nonrepeatable_queries = true<br />run_repeatable_queries    = true<br />sql_path_bootstrap        = "<BOOTSTRAP_SQLS_PATH>"<br />sql_path_nonrepeatable    = "<NON-REPEATABLE_SQLS_PATH>"<br />sql_path_repeatable       = "<REPEATABLE_SQLS_PATH>"<br />sql_path_finalize         = "<FINALIZE_SQLS_PATH>"<br />create_random_password    = false<br />master_username           = "<REDSHIFT_MASTER_USERNAME>"</pre> | DevOps ingénieur | 
| Déployez les ressources à l'aide de Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | DevOps ingénieur | 
| (Facultatif) Exécutez des requêtes SQL supplémentaires. | Le référentiel d'exemples fournit plusieurs requêtes SQL à des fins de démonstration. Pour exécuter vos propres requêtes SQL, ajoutez-les dans les dossiers suivants :`/bootstrap` `/nonrepeatable` `/repeatable` `/finalize` |  | 

### Surveiller l'exécution des instructions SQL
<a name="monitor-the-execution-of-sql-statements"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Surveillez le déploiement des instructions SQL. | Vous pouvez surveiller les résultats des exécutions SQL sur un cluster Amazon Redshift. Pour obtenir des exemples de résultats illustrant un échec ou une exécution réussie de SQL, reportez-vous à la section *Exemples d'instructions SQL* dans [Informations supplémentaires](#execute-redshift-sql-queries-using-terraform-additional).  | DBA, ingénieur DevOps  | 
| nettoyer les ressources. | Pour supprimer toutes les ressources déployées par Terraform, exécutez la commande suivante.<pre>terraform destroy</pre> | DevOps ingénieur | 

### Valider les résultats
<a name="validate-the-results"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez les données dans le cluster Amazon Redshift. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/execute-redshift-sql-queries-using-terraform.html) | ADMINISTRATEUR DE BASES DE DONNÉES, AWS DevOps | 

## Ressources connexes
<a name="execute-redshift-sql-queries-using-terraform-resources"></a>

**AWS documentation**
+ [Clusters provisionnés par Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)
+ [Résolution des problèmes liés à l'API Amazon Redshift Data](https://docs.aws.amazon.com/redshift/latest/mgmt/data-api-troubleshooting.html)

**Autres ressources**
+ [Commande : appliquer](https://developer.hashicorp.com/terraform/cli/commands/apply) (documentation Terraform)

## Informations supplémentaires
<a name="execute-redshift-sql-queries-using-terraform-additional"></a>

**Présentation de la solution**

Pour utiliser la solution, vous devez organiser vos requêtes SQL Amazon Redshift de manière spécifique. Toutes les requêtes SQL doivent être stockées dans des fichiers dotés d'une `.sql` extension.

Dans l'exemple de code fourni avec ce modèle, les requêtes SQL sont organisées dans la structure de dossiers suivante. Vous pouvez modifier le code (`sql-queries.tf`et`sql-queries.py`) pour qu'il fonctionne avec n'importe quelle structure adaptée à votre cas d'utilisation unique.

```
/bootstrap
     |- Any # of files
     |- Any # of sub-folders
/nonrepeatable
     |- Any # of files
     |- Any # of sub-folders
/repeatable
     /udf
          |- Any # of files
          |- Any # of sub-folders
     /table
          |- Any # of files
          |- Any # of sub-folders
     /view
          |- Any # of files
          |- Any # of sub-folders
     /stored-procedure
          |- Any # of files
          |- Any # of sub-folders
/finalize
     |- Any # of files
     |- Any # of sub-folders
```

Compte tenu de la structure de dossiers précédente, lors du déploiement du cluster Amazon Redshift, Terraform exécute les requêtes dans l'ordre suivant :

1. `/bootstrap`

1. `/nonrepeatable`

1. `/repeatable`

1. `/finalize`

Le `/repeatable` dossier contient quatre sous-dossiers :`/udf`, `/table``/view`, et`/stored-procedure`. Ces sous-dossiers indiquent l'ordre dans lequel Terraform exécute les requêtes SQL.

Le script Python qui exécute les requêtes SQL est`sql-queries.py`. Tout d'abord, le script lit tous les fichiers et sous-dossiers d'un répertoire source spécifique, par exemple le `sql_path_bootstrap` paramètre. Le script exécute ensuite les requêtes en appelant l'opération d'API Amazon [ExecuteStatement](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html)Redshift. Un fichier contient peut-être une ou plusieurs requêtes SQL. L'extrait de code suivant montre la fonction Python qui exécute les instructions SQL stockées dans un fichier sur un cluster Amazon Redshift.

```
def execute_sql_statement(filename, cluster_id, db_name, secret_arn, aws_region):
    """Execute SQL statements in a file"""
    redshift_client = boto3.client(
        'redshift-data', region_name=aws_region)
    contents = get_contents_from_file(filename),
    response = redshift_client.execute_statement(
        Sql=contents[0],
        ClusterIdentifier=cluster_id,
        Database=db_name,
        WithEvent=True,
        StatementName=filename,
        SecretArn=secret_arn
    )
    ...
```

Le script Terraform `sql-queries.tf` crée les ressources [terraform\$1data](https://developer.hashicorp.com/terraform/language/resources/terraform-data) qui appellent le script. `sql-queries.py` Il existe une `terraform_data` ressource pour chacun des quatre dossiers : `/bootstrap``/nonrepeatable`,`/repeatable`, et`/finalize`. L'extrait de code suivant montre la `terraform_data` ressource qui exécute les requêtes SQL dans le `/bootstrap` dossier.

```
locals {
  program               = "${path.module}/sql-queries.py"
  redshift_cluster_name = try(aws_redshift_cluster.this[0].id, null)
}

resource "terraform_data" "run_bootstrap_queries" {
  count      = var.create && var.run_nonrepeatable_queries && (var.sql_path_bootstrap != "") && (var.snapshot_identifier == null) ? 1 : 0
  depends_on = [aws_redshift_cluster.this[0]]

  provisioner "local-exec" {
    command = "python3 ${local.program} ${var.sql_path_bootstrap} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn} ${local.aws_region}"
  }
}
```

Vous pouvez contrôler l'exécution de ces requêtes à l'aide des variables suivantes. Si vous ne souhaitez pas exécuter de requêtes dans `sql_path_bootstrap``sql_path_nonrepeatable`, `sql_path_repeatable``sql_path_finalize`, ou définir leurs valeurs sur`""`.

```
  run_nonrepeatable_queries = true
  run_repeatable_queries    = true
  sql_path_bootstrap        = "src/redshift/bootstrap"
  sql_path_nonrepeatable    = "src/redshift/nonrepeatable"
  sql_path_repeatable       = "src/redshift/repeatable"
  sql_path_finalize         = "src/redshift/finalize"
```

Lorsque vous exécutez`terraform apply`, Terraform prend en compte la `terraform_data` ressource ajoutée une fois le script terminé, quels que soient les résultats du script. Si certaines requêtes SQL ont échoué et que vous souhaitez les exécuter à nouveau, vous pouvez supprimer manuellement la ressource de l'état Terraform et l'exécuter à nouveau. `terraform apply` Par exemple, la commande suivante supprime la `run_bootstrap_queries` ressource de l'état Terraform.

`terraform state rm module.redshift.terraform_data.run_bootstrap_queries[0]`

L'exemple de code suivant montre comment la `run_repeatable_queries` ressource surveille les modifications dans le `repeatable` dossier à l'aide du [hachage sha256](https://developer.hashicorp.com/terraform/language/functions/sha256). Si un fichier du dossier est mis à jour, Terraform marque l'ensemble du répertoire pour une mise à jour. Ensuite, Terraform exécute à nouveau les requêtes dans le répertoire lors de la suivante. `terraform apply`

```
resource "terraform_data" "run_repeatable_queries" {
  count      = var.create_redshift && var.run_repeatable_queries && (var.sql_path_repeatable != "") ? 1 : 0
  depends_on = [terraform_data.run_nonrepeatable_queries]

  # Continuously monitor and apply changes in the repeatable folder
  triggers_replace = {
    dir_sha256 = sha256(join("", [for f in fileset("${var.sql_path_repeatable}", "**") : filesha256("${var.sql_path_repeatable}/${f}")]))
  }

  provisioner "local-exec" {
    command = "python3 ${local.sql_queries} ${var.sql_path_repeatable} ${local.redshift_cluster_name} ${var.database_name} ${var.redshift_secret_arn}"
  }
}
```

Pour affiner le code, vous pouvez implémenter un mécanisme permettant de détecter et d'appliquer des modifications uniquement aux fichiers qui ont été mis à jour dans le `repeatable` dossier, plutôt que d'appliquer les modifications à tous les fichiers sans distinction.

**Exemples d'instructions SQL**

La sortie suivante montre un échec de l'exécution de SQL, ainsi qu'un message d'erreur.

```
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/nonrepeatable testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): src/redshift/nonrepeatable/table/admin/admin.application_family.sql
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Status: FAILED
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): SQL execution failed.
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec): Error message: ERROR: syntax error at or near ")"
module.redshift.terraform_data.run_nonrepeatable_queries[0] (local-exec):   Position: 244
module.redshift.terraform_data.run_nonrepeatable_queries[0]: Creation complete after 3s [id=ee50ba6c-11ae-5b64-7e2f-86fd8caa8b76]
```

Le résultat suivant montre une exécution SQL réussie.

```
module.redshift.terraform_data.run_bootstrap_queries[0]: Provisioning with 'local-exec'...
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Executing: ["/bin/sh" "-c" "python3 modules/redshift/sql-queries.py src/redshift/bootstrap testcluster-1 db1 arn:aws:secretsmanager:us-east-1:XXXXXXXXXXXX:secret:/redshift/master_user/password-8RapGH us-east-1"]
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): src/redshift/bootstrap/db.sql
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): -------------------------------------------------------------------
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): Status: FINISHED
module.redshift.terraform_data.run_bootstrap_queries[0] (local-exec): SQL execution successful.
module.redshift.terraform_data.run_bootstrap_queries[0]: Creation complete after 2s [id=d565ef6d-be86-8afd-8e90-111e5ea4a1be]
```

# Exportez les rapports AWS Backup de l'ensemble d'une organisation dans AWS Organizations sous forme de fichier CSV
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file"></a>

*Aromal Raj Jayarajan et Purushotham GK, Amazon Web Services*

## Résumé
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-summary"></a>

Ce modèle montre comment exporter les rapports de tâches AWS Backup provenant de l'ensemble d'une organisation dans AWS Organizations sous forme de fichier CSV. La solution utilise AWS Lambda et Amazon EventBridge pour classer les rapports de tâches AWS Backup en fonction de leur statut, ce qui peut faciliter la configuration d'automatisations basées sur le statut.

AWS Backup aide les entreprises à gérer et à automatiser de manière centralisée la protection des données sur l'ensemble des services AWS, dans le cloud et sur site. Toutefois, pour les tâches AWS Backup configurées au sein d'AWS Organizations, les rapports consolidés ne sont disponibles que dans l'AWS Management Console du compte de gestion de chaque organisation. Le fait de transférer ces rapports en dehors du compte de gestion peut réduire les efforts nécessaires à l'audit et élargir le champ des automatisations, des notifications et des alertes.

## Conditions préalables et limitations
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-prereqs"></a>

**Prérequis**
+ Un compte AWS actif
+ Une [organisation](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html) active au sein d'AWS Organizations qui inclut au moins un compte de gestion et un compte de membre
+ AWS Backup configuré au niveau de l'organisation dans AWS Organizations (pour plus d'informations, consultez [Automatiser la sauvegarde centralisée à grande échelle sur l'ensemble des services AWS à l'aide d'AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/) sur le blog AWS)
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), installé et configuré sur votre machine locale

**Limites**

La solution fournie dans ce modèle identifie les ressources AWS configurées uniquement pour les tâches AWS Backup. Le rapport ne permet pas d'identifier les ressources AWS qui ne sont pas configurées pour la sauvegarde via AWS Backup.

## Architecture
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-architecture"></a>

**Pile technologique cible**
+ AWS Backup
+ AWS CloudFormation
+ Amazon EventBridge
+ AWS Lambda
+ AWS Security Token Service (AWS STS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Identity and Access Management (IAM)

**Architecture cible**

Le schéma suivant montre un exemple de flux de travail pour l'exportation des rapports de travail AWS Backup provenant de l'ensemble d'une organisation dans AWS Organizations sous forme de fichier CSV.

![\[Utilisation EventBridge de Lambda, AWS STS et IAM pour exporter les rapports de tâches AWS Backup provenant de l'ensemble d'une organisation au format CSV.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/74955aad-cc6d-488b-aa34-ae43f50fec60/images/5c39c79f-e731-4ad0-b404-51ebe0976420.png)


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

1. Une règle d' EventBridge événement planifié invoque une fonction Lambda dans le compte AWS du membre (de reporting).

1. La fonction Lambda utilise ensuite AWS STS pour assumer un rôle IAM disposant des autorisations requises pour se connecter au compte de gestion.

1. La fonction Lambda effectue ensuite les opérations suivantes :
   + Demande le rapport consolidé sur les tâches AWS Backup au service AWS Backup
   + Catégorise les résultats en fonction du statut de la tâche AWS Backup
   + Convertit la réponse en fichier CSV
   + Télécharge les résultats dans un compartiment Amazon S3 du compte de reporting, dans des dossiers étiquetés en fonction de leur date de création.

## Outils
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-tools"></a>

**Outils**
+ [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) est un service entièrement géré qui vous aide à centraliser et à automatiser la protection des données sur l'ensemble des services AWS, dans le cloud et sur site.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [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. Par exemple, les fonctions AWS Lambda, les points de terminaison d'appel HTTP utilisant des destinations d'API ou les bus d'événements dans d'autres comptes AWS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [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.

**Code**

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

## Bonnes pratiques
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-best-practices"></a>
+ [Bonnes pratiques de sécurité pour Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) (*Guide de l'utilisateur Amazon S3*)
+ [Bonnes pratiques d'utilisation des fonctions AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) (Guide du développeur *AWS Lambda*)
+ [Bonnes pratiques pour le compte de gestion](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html) (*Guide de l'utilisateur d'AWS Organizations*)

## Épopées
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-epics"></a>

### Déployer les composants de la solution
<a name="deploy-the-solution-components"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | Clonez le GitHub [aws-backup-report-generator](https://github.com/aws-samples/aws-backup-report-generator)dépôt en exécutant la commande suivante dans une fenêtre de terminal :<pre>git clone https://github.com/aws-samples/aws-backup-report-generator.git</pre>Pour plus d'informations, consultez la section [Clonage d'un dépôt](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) dans la GitHub documentation. | AWS DevOps, DevOps ingénieur | 
| Déployez les composants de la solution sur le compte AWS du membre (de reporting). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | DevOps ingénieur, AWS DevOps | 

### Tester la solution
<a name="test-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Assurez-vous que la EventBridge règle s'exécute avant de procéder au test. | Assurez-vous que la EventBridge règle s'exécute en attendant au moins 24 heures ou en augmentant la fréquence des rapports dans le CloudFormation fichier **template-reporting.yml** du modèle.**Pour augmenter la fréquence des rapports**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps ingénieur | 
| Vérifiez le rapport généré dans le compartiment Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps ingénieur | 

### Nettoyage de vos ressources
<a name="clean-up-your-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les composants de la solution du compte membre (de reporting). | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps ingénieur | 
| Supprimez les composants de la solution du compte de gestion. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.html) | AWS DevOps, DevOps ingénieur | 

## Ressources connexes
<a name="export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file-resources"></a>
+ [Tutoriel : Utilisation d'AWS Lambda avec des événements planifiés (documentation](https://docs.aws.amazon.com/lambda/latest/dg/services-cloudwatchevents-tutorial.html) AWS Lambda)
+ [Création d'événements planifiés pour exécuter les fonctions AWS Lambda](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/scheduled-events-invoking-lambda-example.html) (SDK AWS pour la documentation) JavaScript 
+ [Tutoriel IAM : déléguer l'accès entre les comptes AWS à l'aide de rôles IAM (documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) IAM)
+ [Terminologie et concepts d'AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) (documentation AWS Organizations)
+ [Création de plans de rapports à l'aide de la console AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-report-plan-console.html) (documentation AWS Backup)
+ [Création d'un rapport d'audit](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-audit-report.html) (documentation AWS Backup)
+ [Création de rapports à la demande](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-on-demand-reports.html) (documentation AWS Backup)
+ [Qu'est-ce qu'AWS Backup ?](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) (Documentation AWS Backup)
+ [Automatisez la sauvegarde centralisée à grande échelle sur l'ensemble des services AWS à l'aide d'AWS Backup](https://aws.amazon.com/blogs/storage/automate-centralized-backup-at-scale-across-aws-services-using-aws-backup/) (article de blog AWS)

# Exporter les balises d'une liste d' EC2 instances Amazon vers un fichier CSV
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file"></a>

*Sida Ju et Pac Joonhyun, Amazon Web Services*

## Résumé
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-summary"></a>

Ce modèle montre comment exporter par programmation les balises d'une liste d'instances Amazon Elastic Compute Cloud EC2 (Amazon) vers un fichier CSV.

En utilisant l'exemple de script Python fourni, vous pouvez réduire le temps nécessaire pour examiner et classer vos EC2 instances Amazon par des balises spécifiques. Par exemple, vous pouvez utiliser le script pour identifier et classer rapidement une liste d'instances que votre équipe de sécurité a signalées comme nécessitant des mises à jour logicielles.

## Conditions préalables et limitations
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-prereqs"></a>

**Conditions préalables**
+ Python 3 installé et configuré
+ Interface de ligne de commande (AWS CLI) (AWS CLI) installée et configurée

**Limites**

L'exemple de script Python fourni dans ce modèle permet de rechercher EC2 des instances Amazon uniquement sur la base des attributs suivants :
+ Instance IDs
+  IPv4 Adresses privées
+  IPv4 Adresses publiques

## Outils
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-tools"></a>
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.
+ [virtualenv](https://virtualenv.pypa.io/en/latest/) vous aide à créer des environnements Python isolés.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.

**Référentiel de code**

L'exemple de script Python pour ce modèle est disponible dans le référentiel GitHub [search-ec2](https://github.com/aws-samples/search-ec2-instances-export-tags) -. instances-export-tags

## Épopées
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-epics"></a>

### Installation et configuration des prérequis
<a name="install-and-configure-the-prerequisites"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | Si vous recevez des erreurs lors de l'exécution des commandes de l'AWS CLI, [assurez-vous que vous utilisez la version la plus récente de l'AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html).Clonez le instances-export-tags dépôt GitHub [search-ec2-](https://github.com/aws-samples/search-ec2-instances-export-tags) en exécutant la commande Git suivante dans une fenêtre de terminal :<pre>git clone https://github.com/aws-samples/search-ec2-instances-export-tags.git</pre> | DevOps ingénieur | 
| Installez et activez virtualenv. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html)Pour plus d'informations, consultez le guide de l'utilisateur de [virtualenv](https://virtualenv.pypa.io/en/latest/user_guide.html). | DevOps ingénieur | 
| Installez les dépendances. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file.html) | DevOps ingénieur | 
| Configurez un profil nommé AWS.  | Si ce n'est pas déjà fait, configurez un profil nommé AWS qui inclut les informations d'identification requises pour exécuter le script. Pour créer un profil nommé, exécutez la commande [aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods).Pour plus d'informations, consultez la section [Utilisation de profils nommés](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) dans la documentation de l'AWS CLI. | DevOps ingénieur | 

### Configurer et exécuter le script Python
<a name="configure-and-run-the-python-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le fichier d'entrée. | Créez un fichier d'entrée contenant la liste des EC2 instances Amazon pour lesquelles le script doit rechercher et exporter des balises. Vous pouvez répertorier les instances IDs, IPv4 les adresses privées ou IPv4 les adresses publiques.Assurez-vous que chaque EC2 instance Amazon est répertoriée sur sa propre ligne dans le fichier d'entrée.**Exemple de fichier d'entrée**<pre>1    i-0547c351bdfe85b9f<br />2    54.157.194.156<br />3    172.31.85.33<br />4    54.165.198.144<br />5    i-0b6223b5914111a4b<br />6    172.31.85.44<br />7    54.165.198.145<br />8    172.31.80.219<br />9    172.31.94.199</pre> | DevOps ingénieur | 
| Exécutez le script python. | Exécutez le script en exécutant la commande suivante dans le terminal :<pre>python search_instances.py -i INPUTFILE -o OUTPUTFILE -r REGION [-p PROFILE]</pre>Remplacez `INPUTFILE` par le nom de votre fichier d'entrée. `OUTPUTFILE`Remplacez-le par le nom que vous souhaitez attribuer au fichier de sortie CSV. `REGION`Remplacez-le par la région AWS dans laquelle se trouvent vos EC2 ressources Amazon. Si vous utilisez un profil nommé AWS, remplacez-le `PROFILE` par le profil nommé que vous utilisez.Pour obtenir la liste des paramètres pris en charge et leur description, exécutez la commande suivante :<pre>python search_instances.py -h</pre>Pour plus d'informations et pour voir un exemple de fichier de sortie, consultez le `README.md` fichier dans le référentiel GitHub [search-ec2](https://github.com/aws-samples/search-ec2-instances-export-tags) -. instances-export-tags | DevOps ingénieur | 

## Ressources connexes
<a name="export-tags-for-a-list-of-amazon-ec2-instances-to-a-csv-file-resources"></a>
+ [Configuration de l'interface de ligne de commande AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) *(Guide de l'utilisateur de l'interface* de ligne de commande AWS)

# Générez un CloudFormation modèle AWS contenant les règles gérées par AWS Config à l'aide de Troposphere
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere"></a>

*Lucas Nation et Freddie Wilson, Amazon Web Services*

## Résumé
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-summary"></a>

De nombreuses organisations utilisent les règles [gérées par AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html) pour évaluer la conformité de leurs ressources Amazon Web Services (AWS) par rapport aux meilleures pratiques courantes. Cependant, la maintenance de ces règles peut prendre beaucoup de temps et ce modèle vous permet de tirer parti de [Troposphere](https://troposphere.readthedocs.io/en/latest/quick_start.html), une bibliothèque Python, pour générer et gérer les règles gérées par AWS Config.

Le modèle vous aide à gérer vos règles gérées par AWS Config en utilisant un script Python pour convertir une feuille de calcul Microsoft Excel contenant des règles gérées par AWS en un CloudFormation modèle AWS. Troposphere agit comme une infrastructure en tant que code (IaC), ce qui signifie que vous pouvez mettre à jour la feuille de calcul Excel avec des règles gérées, au lieu d'utiliser un fichier au format JSON ou YAML. Vous utilisez ensuite le modèle pour lancer une CloudFormation pile AWS qui crée et met à jour les règles gérées dans votre compte AWS.

Le CloudFormation modèle AWS définit chaque règle gérée par AWS Config à l'aide de la feuille de calcul Excel et vous permet d'éviter de créer manuellement des règles individuelles dans l'AWS Management Console. *Le script définit par défaut les paramètres de chaque règle gérée sur un dictionnaire vide et les paramètres `ComplianceResourceTypes` par défaut de la portée sur. `THE_RULE_IDENTIFIER.template file`* Pour plus d'informations sur l'identifiant de règle, consultez la section [Création de règles gérées par AWS Config avec des CloudFormation modèles AWS](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) dans la documentation AWS Config.

## Conditions préalables et limitations
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Connaissance de l'utilisation de CloudFormation modèles AWS pour créer des règles gérées par AWS Config. Pour plus d'informations à ce sujet, consultez la section [Création de règles gérées par AWS Config avec CloudFormation des modèles](https://docs.aws.amazon.com/config/latest/developerguide/aws-config-managed-rules-cloudformation-templates.html) AWS dans la documentation AWS Config.  
+ Python 3, installé et configuré. Pour plus d'informations à ce sujet, consultez la [documentation Python](https://www.python.org/).
+ Un environnement de développement intégré (IDE) existant.  
+ Identifiez vos unités organisationnelles (OUs) dans une colonne de l'exemple de feuille de calcul `excel_config_rules.xlsx` Excel (ci-joint).

## Épopées
<a name="generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere-epics"></a>

### Personnalisation et configuration des règles gérées par AWS Config
<a name="customize-and-configure-the-aws-config-managed-rules"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettez à jour l'exemple de feuille de calcul Excel. | Téléchargez l'exemple de feuille de calcul `excel_config_rules.xlsx` Excel (ci-joint) et étiquetez `Implemented` les règles gérées par AWS Config que vous souhaitez utiliser. Les règles marquées comme étant `Implemented` seront ajoutées au CloudFormation modèle AWS. | Developer | 
| (Facultatif) Mettez à jour le fichier config\$1rules\$1params.json avec les paramètres des règles AWS Config. | Certaines règles gérées par AWS Config nécessitent des paramètres et doivent être transmises au script Python sous forme de fichier JSON à l'aide de l'`--param-file`option. Par exemple, la règle `access-keys-rotated` gérée utilise le `maxAccessKeyAge` paramètre suivant :<pre>{<br />         "access-keys-rotated": {<br />             "InputParameters": {<br />                 "maxAccessKeyAge": 90<br />             }<br />         }<br />     }</pre>Dans cet exemple de paramètre, la valeur `maxAccessKeyAge` est fixée à 90 jours. Le script lit le fichier de paramètres et ajoute ceux `InputParameters` qu'il trouve. | Developer | 
| (Facultatif) Mettez à jour le fichier config\$1rules\$1params.json avec AWS Config. ComplianceResourceTypes | Par défaut, le script Python `ComplianceResourceTypes` extrait les modèles définis par AWS. Si vous souhaitez modifier le champ d'application d'une règle gérée par AWS Config spécifique, vous devez la transmettre au script Python sous forme de fichier JSON à l'aide de l'`--param-file`option.Par exemple, l'exemple de code suivant montre comment le `ComplianceResourceTypes` formulaire `ec2-volume-inuse-check` est défini dans la `["AWS::EC2::Volume"]` liste :<pre>{<br />         "ec2-volume-inuse-check": {<br />             "Scope": {<br />                 "ComplianceResourceTypes": [<br />                     "AWS::EC2::Volume"<br />                 ]<br />             }<br />         }<br />     }</pre> | Developer | 

### Exécutez le script Python
<a name="run-the-python-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez les packages pip à partir du fichier requirements.txt.  | Téléchargez le `requirements.txt` fichier (joint) et exécutez la commande suivante dans votre IDE pour installer les packages Python :`pip3 install -r requirements.txt` | Developer | 
| Exécutez le script python.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html)Vous pouvez également ajouter les paramètres facultatifs suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Developer | 

### Déployez les règles gérées par AWS Config
<a name="deploy-the-aws-config-managed-rules"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/generate-an-aws-cloudformation-template-containing-aws-config-managed-rules-using-troposphere.html) | Developer | 

## Pièces jointes
<a name="attachments-07c1cfff-fc9e-4a1f-bd36-48f025808bd8"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/07c1cfff-fc9e-4a1f-bd36-48f025808bd8/attachments/attachment.zip)

# Donnez aux instances de SageMaker bloc-notes un accès temporaire à un CodeCommit référentiel dans un autre compte AWS
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account"></a>

*Helge Aufderheide, Amazon Web Services*

## Résumé
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-summary"></a>

Ce modèle montre comment accorder aux instances d'Amazon SageMaker Notebook et aux utilisateurs un accès temporaire à un CodeCommit référentiel AWS qui se trouve dans un autre compte AWS. Ce modèle montre également comment vous pouvez accorder des autorisations granulaires pour des actions spécifiques que chaque entité peut effectuer sur chaque référentiel.

Organisations stockent souvent CodeCommit les référentiels dans un compte AWS différent de celui qui héberge leur environnement de développement. Cette configuration multi-comptes permet de contrôler l'accès aux référentiels et de réduire le risque de suppression accidentelle de ceux-ci. Pour accorder ces autorisations entre comptes, il est recommandé d'utiliser les rôles AWS Identity and Access Management (IAM). Les identités IAM prédéfinies de chaque compte AWS peuvent ensuite assumer temporairement les rôles nécessaires pour créer une chaîne de confiance contrôlée entre les comptes.

**Note**  
Vous pouvez appliquer une procédure similaire pour accorder à d'autres identités IAM l'accès entre comptes à un CodeCommit référentiel. Pour plus d'informations, consultez [Configurer l'accès entre comptes à un CodeCommit référentiel AWS à l'aide de rôles](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) dans le *guide de l' CodeCommit utilisateur AWS*.

## Conditions préalables et limitations
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif avec un CodeCommit référentiel (*compte A*)
+ Un deuxième compte AWS actif avec une instance de SageMaker bloc-notes (*compte B*)
+ Un utilisateur AWS disposant des autorisations suffisantes pour créer et modifier des rôles IAM dans le compte A
+ Un deuxième utilisateur AWS disposant des autorisations suffisantes pour créer et modifier des rôles IAM dans le compte B

## Architecture
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-architecture"></a>

Le schéma suivant montre un exemple de flux de travail permettant d'accorder à une instance de SageMaker bloc-notes et aux utilisateurs d'un compte AWS un accès croisé à un CodeCommit référentiel :

![\[Flux de travail pour l'accès entre comptes à CodeCommit\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/54d0fdb3-6d25-4433-9f67-c87846633d61/images/97a799af-ce88-4495-a61c-d0cd22493ce2.png)


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

1. Le rôle d'utilisateur AWS et le rôle d'instance de SageMaker bloc-notes dans le compte B supposent un [profil nommé](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles).

1. La politique d'autorisation du profil nommé spécifie un rôle d' CodeCommit accès dans le compte A que le profil assume ensuite.

1. La politique de confiance du rôle d' CodeCommit accès dans le compte A permet au profil nommé dans le compte B d'assumer le rôle CodeCommit d'accès.

1. La politique d'autorisations IAM du CodeCommit référentiel dans le compte A autorise le rôle CodeCommit d'accès à accéder au CodeCommit référentiel.

**Pile technologique**
+ CodeCommit
+ Git
+ IAM
+ pip
+ SageMaker

## Outils
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-tools"></a>
+ [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.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [Git](https://git-scm.com/) est un système de contrôle de version distribué permettant de suivre les modifications du code source pendant le développement de logiciels.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)est un utilitaire qui vous permet de transférer et d'extraire du code depuis des CodeCommit référentiels en étendant Git.
+ [pip](https://pypi.org/project/pip/) est le programme d'installation du package pour Python. Vous pouvez utiliser pip pour installer des packages à partir de l'index des packages Python et d'autres index.

## Bonnes pratiques
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-best-practices"></a>

Lorsque vous définissez des autorisations à l'aide de politiques IAM, assurez-vous de n'accorder que les autorisations requises pour effectuer une tâche. Pour plus d'informations, veuillez consulter la rubrique [Accorder les autorisations de moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dans la documentation IAM.

Lorsque vous implémentez ce modèle, veillez à effectuer les opérations suivantes :
+ Vérifiez que les principes IAM disposent uniquement des autorisations requises pour effectuer des actions spécifiques et nécessaires au sein de chaque référentiel. Par exemple, il est recommandé d'autoriser les principes IAM approuvés à appliquer et à fusionner les modifications apportées à des branches spécifiques du référentiel, mais de ne demander des fusions qu'aux branches protégées. 
+ Vérifiez que les principes IAM se voient attribuer différents rôles IAM en fonction de leurs rôles et responsabilités respectifs pour chaque projet. Par exemple, les autorisations d'accès d'un développeur seront différentes de celles d'un responsable de publication ou d'un administrateur AWS. 

## Épopées
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-epics"></a>

### Configuration des rôles IAM
<a name="configure-the-iam-roles"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le rôle CodeCommit d'accès et la politique d'autorisations. | Pour automatiser le processus de configuration manuelle décrit dans cette épopée,**** vous pouvez utiliser un [ CloudFormation modèle AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).Dans le compte qui contient le CodeCommit référentiel (*compte A*), procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Avant de transférer cette configuration dans votre environnement de production, il est recommandé de rédiger votre propre politique IAM qui applique les autorisations du [moindre privilège.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) Pour plus d'informations, consultez la section **Informations supplémentaires** de ce modèle. | AWS en général, AWS DevOps | 
| Accordez à l'instance du SageMaker bloc-notes l'autorisation d'assumer le rôle CodeCommit d'accès dans le compte A. | Dans le compte qui contient le rôle IAM de l'instance de SageMaker bloc-notes (*compte B),* procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)Pour consulter le nom de ressource Amazon (ARN) de votre dépôt, consultez [Afficher les détails CodeCommit du référentiel](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-view-repository-details.html) dans le *guide de CodeCommit l'utilisateur AWS*. | AWS en général, AWS DevOps | 

### Configurez votre instance de SageMaker bloc-notes dans le compte B
<a name="set-up-your-sagemaker-notebook-instance-in-account-b"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez un profil utilisateur sur l'instance de SageMaker bloc-notes AWS pour assumer le rôle dans le compte A.  | [Assurez-vous que la dernière version de l'interface de ligne de commande AWS (AWS CLI) est installée.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)Dans le compte qui contient l'instance de SageMaker bloc-notes (*compte B),* procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.html)<pre>------.aws/config--------------<br />[profile remoterepouser]<br />role_arn = arn:aws:iam::<ID of Account A>:role/<rolename><br />role_session_name = remoteaccesssession<br />region = eu-west-1<br />credential_source  = Ec2InstanceMetadata<br />----------------------------------</pre> | AWS en général, AWS DevOps | 
| Installez l’utilitaire git-remote-codecommit. | Suivez les instructions de l'[étape 2 : Installation git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install) dans le *guide de CodeCommit l'utilisateur AWS*. | Scientifique des données | 

### Accédez au référentiel
<a name="access-the-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez au CodeCommit référentiel à l'aide des commandes Git ou SageMaker. | **Pour utiliser Git**Les principaux IAM qui assument le rôle de l'instance de SageMaker bloc-notes dans le compte B peuvent désormais exécuter des commandes Git pour accéder au CodeCommit référentiel du compte A. Par exemple, les utilisateurs peuvent exécuter des commandes telles que `git clone``git pull`, et. `git push`Pour obtenir des instructions, consultez la section [Se connecter à un CodeCommit référentiel AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) dans le *guide de CodeCommit l'utilisateur AWS*.Pour plus d'informations sur l'utilisation de Git avec CodeCommit, consultez [Getting started with AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started-cc.html) dans le *guide de CodeCommit l'utilisateur AWS*.**À utiliser SageMaker**Pour utiliser Git depuis la SageMaker console, vous devez autoriser Git à récupérer les informations d'identification de votre CodeCommit dépôt. Pour obtenir des instructions, consultez la section [Associer un CodeCommit référentiel d'un autre compte AWS à une instance de bloc-notes](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-cross.html) dans la SageMaker documentation. | Git, console bash | 

## Ressources connexes
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-resources"></a>
+ [Configurer l'accès entre comptes à un CodeCommit référentiel AWS à l'aide de rôles](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) ( CodeCommit documentation AWS)
+ [Tutoriel IAM : déléguer l'accès entre les comptes AWS à l'aide de rôles IAM (documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) IAM)

## Informations supplémentaires
<a name="give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account-additional"></a>

**Restreindre CodeCommit les autorisations à des actions spécifiques**

Pour limiter les actions qu'un principal IAM peut effectuer dans le CodeCommit référentiel, modifiez les actions autorisées dans la politique CodeCommit d'accès.

Pour plus d'informations sur les opérations CodeCommit d'API, consultez la [référence CodeCommit des autorisations](https://docs.aws.amazon.com/codecommit/latest/userguide/auth-and-access-control-permissions-reference.html) dans le *guide de CodeCommit l'utilisateur AWS*.

**Note**  
Vous pouvez également modifier la politique gérée par [AWSCodeCommitPowerUser](https://docs.aws.amazon.com/codecommit/latest/userguide/security-iam-awsmanpol.html#managed-policies-poweruser)AWS en fonction de votre cas d'utilisation.

**Restreindre CodeCommit les autorisations à des référentiels spécifiques**

Pour créer un environnement mutualisé dans lequel plusieurs référentiels de code ne sont accessibles qu'à des utilisateurs spécifiques, procédez comme suit :

1. Créez plusieurs rôles CodeCommit d'accès dans le compte A. Configurez ensuite la politique de confiance de chaque rôle d'accès pour permettre à des utilisateurs spécifiques du compte B d'assumer le rôle.

1. Limitez les référentiels de code que chaque rôle peut assumer en ajoutant une condition **« Ressource »** à la politique de chaque rôle CodeCommit d'accès.

**Exemple de condition de « ressource » qui restreint l'accès d'un principal IAM à un référentiel spécifique CodeCommit **

```
"Resource" : [<REPOSITORY_ARN>,<REPOSITORY_ARN> ]
```

**Note**  
Pour identifier et différencier plusieurs référentiels de code dans le même compte AWS, vous pouvez attribuer différents préfixes aux noms des référentiels. **Par exemple, vous pouvez nommer les référentiels de code avec des préfixes correspondant à différents groupes de développeurs, tels que myproject-subproject1-repo1 et **myproject-subproject2-repo1**.** Vous pouvez ensuite créer un rôle IAM pour chaque groupe de développeurs en fonction des préfixes qui leur ont été attribués. **Par exemple, vous pouvez créer un rôle nommé **myproject-subproject1-repoaccess et lui accorder l'accès à** tous les référentiels de code qui incluent le préfixe myproject-subproject1.**

**Exemple de condition de « ressource » faisant référence à un ARN de référentiel de code qui inclut un préfixe spécifique**

```
"Resource" : arn:aws:codecommit:<region>:<account-id>:myproject-subproject1-*
```

# Mettre en œuvre une stratégie GitHub de branchement Flow pour les environnements multi-comptes DevOps
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens et Abhilash Vinod, Amazon Web Services*

## Résumé
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Lors de la gestion d'un référentiel de code source, différentes stratégies de branchement affectent les processus de développement et de publication des logiciels utilisés par les équipes de développement. Trunk, Flow et GitHub Gitflow sont des exemples de stratégies de branchement courantes. Ces stratégies utilisent différentes branches et les activités effectuées dans chaque environnement sont différentes. Organisations qui mettent en œuvre DevOps des processus bénéficieraient d'un guide visuel pour les aider à comprendre les différences entre ces stratégies de branchement. L'utilisation de ce visuel dans votre organisation aide les équipes de développement à aligner leur travail et à respecter les normes organisationnelles. Ce modèle fournit ce visuel et décrit le processus de mise en œuvre d'une stratégie de branchement GitHub Flow dans votre organisation.

Ce modèle fait partie d'une série de documentation sur le choix et la mise en œuvre de stratégies de DevOps succursales pour les organisations qui en ont plusieurs Comptes AWS. Cette série est conçue pour vous aider à appliquer la bonne stratégie et les meilleures pratiques dès le départ, afin de rationaliser votre expérience dans le cloud. GitHub Flow n'est qu'une des stratégies de branchement possibles que votre organisation peut utiliser. Cette série de documentation couvre également les modèles de branchement [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) et [Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Si ce n'est pas déjà fait, nous vous recommandons de consulter [Choisir une stratégie de branchement Git pour les DevOps environnements multi-comptes](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) avant de mettre en œuvre les instructions de ce modèle. Veuillez faire preuve de diligence raisonnable pour choisir la bonne stratégie de succursale pour votre organisation.

Ce guide fournit un schéma qui montre comment une organisation peut mettre en œuvre la stratégie GitHub Flow. Il est recommandé de consulter le guide [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) pour passer en revue les meilleures pratiques. Ce modèle inclut les tâches, les étapes et les restrictions recommandées pour chaque étape du DevOps processus.

## Conditions préalables et limitations
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Conditions préalables**
+ Git, [installé](https://git-scm.com/downloads). Il est utilisé comme outil de dépôt de code source.
+ [Draw.io, installé.](https://github.com/jgraph/drawio-desktop/releases) Cette application permet de visualiser et de modifier le diagramme.

## Architecture
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Architecture cible**

Le schéma suivant peut être utilisé comme un [carré de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Vous alignez les branches sur l'axe vertical avec les AWS environnements sur l'axe horizontal pour déterminer les actions à effectuer dans chaque scénario. Les chiffres indiquent la séquence des actions du flux de travail. Cet exemple vous emmène d'une `feature` succursale à un déploiement en production.

![\[Carré punnett des activités de GitHub Flow dans chaque branche et environnement.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/780a5bce-3cd2-4092-8537-b7a77c3d6b8d/images/8a2a774a-cd85-466e-838e-a9a1f3b58a63.png)


Pour plus d'informations sur les Comptes AWS environnements et les branches d'une approche GitHub Flow, consultez [Choisir une stratégie de branchement Git pour les environnements multi-comptes DevOps ](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach).

**Automatisation et mise à l'échelle**

L'intégration continue et la livraison continue (les CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CD pipelines) fournissent également une gouvernance et des garanties aux équipes de développement en garantissant la cohérence, les normes, les meilleures pratiques et les niveaux d'acceptation minimaux pour l'acceptation et le déploiement des fonctionnalités. Pour plus d'informations, voir [Pratiquer l'intégration continue et la livraison continue sur AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS propose une suite de services de développement conçus pour vous aider à créer des CI/CD pipelines. Par exemple, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)il s'agit d'un service de livraison continue entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compile le code source, exécute des tests et produit des ready-to-deploy progiciels. Pour plus d'informations, consultez la section [Outils de développement sur AWS](https://aws.amazon.com/products/developer-tools/).

## Outils
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS services et outils**

AWS fournit une suite de services de développement que vous pouvez utiliser pour implémenter ce modèle :
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)est un service de référentiel d'artefacts géré hautement évolutif qui vous permet de stocker et de partager des progiciels pour le développement d'applications.
+ [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 CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatise les déploiements vers Amazon Elastic Compute Cloud EC2 (Amazon) ou vers des instances, des AWS Lambda fonctions ou des services Amazon Elastic Container Service (Amazon ECS) sur site.
+ [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.

**Autres outils**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) est une application pour créer des organigrammes et des diagrammes. Le référentiel de code contient des modèles au format .drawio pour Draw.io.
+ [Figma](https://www.figma.com/design-overview/) est un outil de conception en ligne conçu pour la collaboration. Le référentiel de code contient des modèles au format .fig pour Figma.

**Référentiel de code**

Ce fichier source pour le diagramme de ce modèle est disponible dans le référentiel GitHub [Git Branching Strategy for GitHub Flow](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/github-flow). Il inclut des fichiers aux formats PNG, draw.io et Figma. Vous pouvez modifier ces diagrammes pour soutenir les processus de votre organisation.

## Bonnes pratiques
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Suivez les meilleures pratiques et recommandations décrites dans [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance et [Choosing a Git Branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy pour les environnements multi-comptes. DevOps Ils vous aident à mettre en œuvre efficacement le développement GitHub basé sur Flow, à favoriser la collaboration, à améliorer la qualité du code et à rationaliser le processus de développement.

## Épopées
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Révision des GitHub flux de travail Flow
<a name="reviewing-the-github-flow-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue le processus GitHub Flow standard. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 
| Passez en revue le processus de correction de bogues GitHub Flow. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 
| Passez en revue le processus du correctif GitHub Flow. | GitHub Flow est conçu pour permettre une diffusion continue, dans le cadre de laquelle les modifications de code sont déployées fréquemment et de manière fiable dans des environnements supérieurs. L'essentiel est que chaque `feature` branche puisse être déployée à tout moment.`Hotfix`les branches, qui sont apparentées à `feature` ou à `bugfix` des branches, peuvent suivre le même processus que l'une ou l'autre de ces branches. Cependant, étant donné leur urgence, les correctifs ont généralement une priorité plus élevée. En fonction des politiques de l'équipe et de l'urgence de la situation, certaines étapes du processus pourraient être accélérées. Par exemple, les révisions de code pour les correctifs peuvent être accélérées. Par conséquent, bien que le processus de correction soit parallèle au processus de correction des fonctionnalités ou des bogues, l'urgence des correctifs peut justifier des modifications de la conformité procédurale. Il est essentiel d'établir des directives relatives à la gestion des correctifs afin de s'assurer qu'ils sont gérés de manière efficace et sécurisée. | DevOps ingénieur | 

## Résolution des problèmes
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Conflits entre branches | Un problème courant qui peut survenir avec le modèle GitHub Flow est lorsqu'un correctif doit être appliqué en production`feature`, `bugfix` mais qu'une modification correspondante doit se produire dans une `hotfix` branche ou une branche où les mêmes ressources sont modifiées. Nous vous recommandons de fusionner fréquemment les modifications depuis `main` les branches inférieures afin d'éviter des conflits importants lors de la fusion avec`main`. | 
| Maturité des équipes | GitHub Flow encourage les déploiements quotidiens vers des environnements supérieurs, en adoptant une véritable intégration continue et une livraison continue (CI/CD). Il est impératif que l'équipe possède la maturité technique nécessaire pour créer des fonctionnalités et créer des tests d'automatisation pour celles-ci. L'équipe doit effectuer un examen exhaustif des demandes de fusion avant que les modifications ne soient approuvées. Cela favorise une solide culture d'ingénierie qui favorise la qualité, la responsabilité et l'efficacité du processus de développement. | 

## Ressources connexes
<a name="implement-a-github-flow-branching-strategy-for-multi-account-devops-environments-resources"></a>

Ce guide n'inclut pas de formation à Git ; toutefois, de nombreuses ressources de haute qualité sont disponibles sur Internet si vous avez besoin de cette formation. Nous vous recommandons de commencer par le site de [documentation Git](https://git-scm.com/doc).

Les ressources suivantes peuvent vous aider dans votre parcours de branchement GitHub Flow dans le AWS Cloud.

**AWS DevOps orientation**
+ [AWS DevOps Conseils](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Architecture de référence du pipeline de déploiement](https://pipelines.devops.aws.dev/)
+ [Qu'est-ce que c'est DevOps ?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps resources](https://aws.amazon.com/devops/resources/)

**GitHub Guidage du flux**
+ [GitHub Tutoriel de démarrage rapide de Flow](https://docs.github.com/en/get-started/using-github/github-flow) () GitHub
+ [Pourquoi GitHub Flow ?](https://githubflow.github.io/)

**Autres ressources**
+ [Méthodologie d'application à douze facteurs (12factor.net](https://12factor.net/))

# Mettre en œuvre une stratégie de branchement Gitflow pour les environnements multi-comptes DevOps
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens, Stephen DiCato, Abhilash Vinod et Tim Wondergem, Amazon Web Services*

## Résumé
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

Lors de la gestion d'un référentiel de code source, différentes stratégies de branchement affectent les processus de développement et de publication des logiciels utilisés par les équipes de développement. Trunk, Gitflow et Flow sont des exemples de stratégies de branchement courantes. GitHub Ces stratégies utilisent différentes branches et les activités effectuées dans chaque environnement sont différentes. Organisations qui mettent en œuvre DevOps des processus bénéficieraient d'un guide visuel pour les aider à comprendre les différences entre ces stratégies de branchement. L'utilisation de ce visuel dans votre organisation aide les équipes de développement à aligner leur travail et à respecter les normes organisationnelles. Ce modèle fournit ce visuel et décrit le processus de mise en œuvre d'une stratégie de branchement Gitflow dans votre organisation.

Ce modèle fait partie d'une série de documentation sur le choix et la mise en œuvre de stratégies de DevOps succursales pour les organisations qui en ont plusieurs Comptes AWS. Cette série est conçue pour vous aider à appliquer la bonne stratégie et les meilleures pratiques dès le départ, afin de rationaliser votre expérience dans le cloud. Gitflow n'est qu'une des stratégies de branchement possibles que votre organisation peut utiliser. Cette série de documentation couvre également les modèles de branchement [Trunk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) et [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html). Si ce n'est pas déjà fait, nous vous recommandons de consulter [Choisir une stratégie de branchement Git pour les DevOps environnements multi-comptes](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) avant de mettre en œuvre les instructions de ce modèle. Veuillez faire preuve de diligence raisonnable pour choisir la bonne stratégie de succursale pour votre organisation.

Ce guide fournit un schéma qui montre comment une organisation peut mettre en œuvre la stratégie Gitflow. Il est recommandé de consulter le guide [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) pour connaître les meilleures pratiques. Ce modèle inclut les tâches, les étapes et les restrictions recommandées pour chaque étape du DevOps processus.

## Conditions préalables et limitations
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Conditions préalables**
+ Git, [installé](https://git-scm.com/downloads). Il est utilisé comme outil de dépôt de code source.
+ [Draw.io, installé.](https://github.com/jgraph/drawio-desktop/releases) Cette application permet de visualiser et de modifier le diagramme.
+ (Facultatif) Plugin Gitflow, [installé.](https://github.com/nvie/gitflow)

## Architecture
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Architecture cible**

Le schéma suivant peut être utilisé comme un [carré de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Vous alignez les branches sur l'axe vertical avec les AWS environnements sur l'axe horizontal pour déterminer les actions à effectuer dans chaque scénario. Les chiffres indiquent la séquence des actions du flux de travail. Cet exemple vous emmène d'une branche fonctionnelle au déploiement en production.

![\[Punnett carré des activités de Gitflow dans chaque branche et environnement.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


Pour plus d'informations sur les Comptes AWS environnements et les branches d'une approche Gitflow, consultez [Choisir une stratégie de branchement Git pour les environnements DevOps multi-comptes](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/).

**Automatisation et évolutivité**

L'intégration continue et la livraison continue (les CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CD pipelines) fournissent également une gouvernance et des garanties aux équipes de développement en garantissant la cohérence, les normes, les meilleures pratiques et les niveaux d'acceptation minimaux pour l'acceptation et le déploiement des fonctionnalités. Pour plus d'informations, voir [Pratiquer l'intégration continue et la livraison continue sur AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS propose une suite de services de développement conçus pour vous aider à créer des CI/CD pipelines. Par exemple, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)il s'agit d'un service de livraison continue entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compile le code source, exécute des tests et produit des ready-to-deploy progiciels. Pour plus d'informations, consultez la section [Outils de développement sur AWS](https://aws.amazon.com/products/developer-tools/).

## Outils
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS services et outils**

AWS fournit une suite de services de développement que vous pouvez utiliser pour implémenter ce modèle :
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)est un service de référentiel d'artefacts géré hautement évolutif qui vous permet de stocker et de partager des progiciels pour le développement d'applications.
+ [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 CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatise les déploiements vers Amazon Elastic Compute Cloud EC2 (Amazon) ou vers des instances, des AWS Lambda fonctions ou des services Amazon Elastic Container Service (Amazon ECS) sur site.
+ [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.

**Autres outils**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) est une application pour créer des organigrammes et des diagrammes. Le référentiel de code contient des modèles au format .drawio pour Draw.io.
+ [Figma](https://www.figma.com/design-overview/) est un outil de conception en ligne conçu pour la collaboration. Le référentiel de code contient des modèles au format .fig pour Figma.
+ (Facultatif) Le [plugin Gitflow](https://github.com/nvie/gitflow) est une collection d'extensions Git qui fournissent des opérations de dépôt de haut niveau pour le modèle de branchement Gitflow.

**Référentiel de code**

Ce fichier source pour le diagramme de ce modèle est disponible dans le GitFlow référentiel GitHub [Git Branching Strategy for](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow). Il inclut des fichiers aux formats PNG, draw.io et Figma. Vous pouvez modifier ces diagrammes pour soutenir les processus de votre organisation.

## Bonnes pratiques
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Suivez les meilleures pratiques et recommandations décrites dans [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance et [Choosing a Git Branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy pour les environnements multi-comptes. DevOps Ils vous aident à mettre en œuvre efficacement le développement basé sur Gitflow, à favoriser la collaboration, à améliorer la qualité du code et à rationaliser le processus de développement.

## Épopées
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Révision des flux de travail Gitflow
<a name="reviewing-the-gitflow-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue le processus standard de Gitflow. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 
| Passez en revue le processus Gitflow du correctif. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 
| Passez en revue le processus de correction de bogues Gitflow. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Conflits entre branches | Un problème courant qui peut survenir avec le modèle Gitflow est celui où un correctif doit être apporté en production, mais une modification correspondante doit se produire dans un environnement inférieur, où une autre branche modifie les mêmes ressources. Nous vous recommandons de n'avoir qu'une seule branche de version active à la fois. Si plusieurs d'entre elles sont actives à la fois, les modifications apportées aux environnements peuvent se répercuter et vous risquez de ne pas être en mesure de faire passer une succursale en production. | 
| Fusion | Les versions doivent être fusionnées dans la version principale et développées dès que possible afin de consolider le travail dans les branches principales. | 
| Fusion de squash | N'utilisez une fusion par squash que lorsque vous fusionnez d'une `feature` branche à une autre`develop`. L'utilisation de fusions de courges dans les branches supérieures pose des difficultés lors de la fusion des modifications vers les branches inférieures. | 

## Ressources connexes
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

Ce guide n'inclut pas de formation à Git ; toutefois, de nombreuses ressources de haute qualité sont disponibles sur Internet si vous avez besoin de cette formation. Nous vous recommandons de commencer par le site de [documentation Git](https://git-scm.com/doc).

Les ressources suivantes peuvent vous aider dans votre parcours de création de succursales Gitflow dans le. AWS Cloud

**AWS DevOps orientation**
+ [AWS DevOps Conseils](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Architecture de référence du pipeline de déploiement](https://pipelines.devops.aws.dev/)
+ [Qu'est-ce que c'est DevOps ?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps resources](https://aws.amazon.com/devops/resources/)

**Guidage Gitflow**
+ [Le blog original de Gitflow (article de blog](https://nvie.com/posts/a-successful-git-branching-model/) de Vincent Driessen)
+ Flux de travail [Gitflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) (Atlassian)
+ [Gitflow on GitHub : Comment utiliser les flux de travail Git Flow avec GitHub Based Repos](https://youtu.be/WQuxeEvaCxs) (YouTube vidéo)
+ [Exemple d'initialisation de Git Flow](https://www.youtube.com/watch?v=d4cDLBFbekw) (YouTube vidéo)
+ [La branche de lancement de Gitflow du début à la fin](https://www.youtube.com/watch?v=rX80eKPdA28) (YouTube vidéo)

**Autres ressources**

[Méthodologie d'application à douze facteurs (12factor.net](https://12factor.net/))

# Mettre en œuvre une stratégie de branchement Trunk pour les environnements multi-comptes DevOps
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments"></a>

*Mike Stephens et Rayjan Wilson, Amazon Web Services*

## Résumé
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-summary"></a>

Lors de la gestion d'un référentiel de code source, différentes stratégies de branchement affectent les processus de développement et de publication des logiciels utilisés par les équipes de développement. Trunk, Flow et GitHub Gitflow sont des exemples de stratégies de branchement courantes. Ces stratégies utilisent différentes branches et les activités effectuées dans chaque environnement sont différentes. Organisations qui mettent en œuvre DevOps des processus bénéficieraient d'un guide visuel pour les aider à comprendre les différences entre ces stratégies de branchement. L'utilisation de ce visuel dans votre organisation aide les équipes de développement à aligner leur travail et à respecter les normes organisationnelles. Ce modèle fournit ce visuel et décrit le processus de mise en œuvre d'une stratégie de branchement Trunk dans votre organisation.

Ce modèle fait partie d'une série de documentation sur le choix et la mise en œuvre de stratégies de DevOps succursales pour les organisations qui en ont plusieurs Comptes AWS. Cette série est conçue pour vous aider à appliquer la bonne stratégie et les meilleures pratiques dès le départ, afin de rationaliser votre expérience dans le cloud. Trunk n'est qu'une des stratégies de branchement possibles que votre organisation peut utiliser. Cette série de documentation couvre également les modèles de branchement [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) [et Gitflow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html). Si ce n'est pas déjà fait, nous vous recommandons de consulter [Choisir une stratégie de branchement Git pour les DevOps environnements multi-comptes](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) avant de mettre en œuvre les instructions de ce modèle. Veuillez faire preuve de diligence raisonnable pour choisir la bonne stratégie de succursale pour votre organisation.

Ce guide fournit un schéma qui montre comment une organisation peut mettre en œuvre la stratégie Trunk. Il est recommandé de consulter le guide officiel [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) pour connaître les meilleures pratiques. Ce modèle inclut les tâches, les étapes et les restrictions recommandées pour chaque étape du DevOps processus.

## Conditions préalables et limitations
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**Conditions préalables**
+ Git, [installé](https://git-scm.com/downloads). Il est utilisé comme outil de dépôt de code source.
+ [Draw.io, installé.](https://github.com/jgraph/drawio-desktop/releases) Cette application permet de visualiser et de modifier le diagramme.

## Architecture
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**Architecture cible**

Le schéma suivant peut être utilisé comme un [carré de Punnett](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia). Vous alignez les branches sur l'axe vertical avec les AWS environnements sur l'axe horizontal pour déterminer les actions à effectuer dans chaque scénario. Les chiffres indiquent la séquence des actions du flux de travail. Cet exemple vous emmène d'une `feature` succursale à un déploiement en production.

![\[Punnett square of the Trunk : activités dans chaque succursale et environnement\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/5df23e4d-84fe-4ab3-a54f-96b6406abc57/images/ad549ef4-90ad-47c1-bd01-f21d6ce5511a.png)


Pour plus d'informations sur les Comptes AWS environnements et les branches d'une approche Trunk, consultez [Choisir une stratégie de branchement Git pour les environnements multi-comptes DevOps ](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach).

**Automatisation et mise à l'échelle**

L'intégration continue et la livraison continue (les CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CD pipelines) fournissent également une gouvernance et des garanties aux équipes de développement en garantissant la cohérence, les normes, les meilleures pratiques et les niveaux d'acceptation minimaux pour l'acceptation et le déploiement des fonctionnalités. Pour plus d'informations, voir [Pratiquer l'intégration continue et la livraison continue sur AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html).

AWS propose une suite de services de développement conçus pour vous aider à créer des CI/CD pipelines. Par exemple, [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)il s'agit d'un service de livraison continue entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure. [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)compile le code source, exécute des tests et produit des ready-to-deploy progiciels. Pour plus d'informations, consultez la section [Outils de développement sur AWS](https://aws.amazon.com/products/developer-tools/).

## Outils
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS services et outils**

AWS fournit une suite de services de développement que vous pouvez utiliser pour implémenter ce modèle :
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)est un service de référentiel d'artefacts géré hautement évolutif qui vous permet de stocker et de partager des progiciels pour le développement d'applications.
+ [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 CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)automatise les déploiements vers Amazon Elastic Compute Cloud EC2 (Amazon) ou vers des instances, des AWS Lambda fonctions ou des services Amazon Elastic Container Service (Amazon ECS) sur site.
+ [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.

**Autres outils**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) — Une application pour créer des organigrammes et des diagrammes.
+ [Figma](https://www.figma.com/design-overview/) est un outil de conception en ligne conçu pour la collaboration. Le référentiel de code contient des modèles au format .fig pour Figma.

**Référentiel de code**

Ce fichier source pour le diagramme de ce modèle est disponible dans le référentiel GitHub [Git Branching Strategy for Trunk](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/trunk). Il inclut des fichiers aux formats PNG, draw.io et Figma. Vous pouvez modifier ces diagrammes pour soutenir les processus de votre organisation.

## Bonnes pratiques
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

Suivez les meilleures pratiques et recommandations décrites dans [AWS DevOps Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html) Guidance et [Choosing a Git Branching](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/) strategy pour les environnements multi-comptes. DevOps Ils vous aident à mettre en œuvre efficacement le développement basé sur Trunk, à favoriser la collaboration, à améliorer la qualité du code et à rationaliser le processus de développement.

## Épopées
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Révision du flux de travail Trunk
<a name="reviewing-the-trunk-workflow"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue le processus Trunk standard. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Conflits entre branches | Un problème courant qui peut survenir avec le modèle Trunk est lorsqu'un correctif doit être appliqué en production, mais qu'un changement correspondant doit se produire dans une `feature` succursale, où les mêmes ressources sont modifiées. Nous vous recommandons de fusionner fréquemment les modifications depuis `main` les branches inférieures afin d'éviter des conflits importants lors de la fusion vers`main`. | 

## Ressources connexes
<a name="implement-a-trunk-branching-strategy-for-multi-account-devops-environments-resources"></a>

Ce guide n'inclut pas de formation à Git ; toutefois, de nombreuses ressources de haute qualité sont disponibles sur Internet si vous avez besoin de cette formation. Nous vous recommandons de commencer par le site de [documentation Git](https://git-scm.com/doc).

Les ressources suivantes peuvent vous aider dans votre parcours de branchement Trunk dans le AWS Cloud.

**AWS DevOps orientation**
+ [AWS DevOps Conseils](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [Architecture de référence des pipelines de déploiement d’AWS](https://pipelines.devops.aws.dev/)
+ [Qu'est-ce que c'est DevOps ?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps resources](https://aws.amazon.com/devops/resources/)

**Guidage du coffre**
+ [Développement basé sur le tronc](https://trunkbaseddevelopment.com/)

**Autres ressources**
+ [Méthodologie d'application à douze facteurs (12factor.net](https://12factor.net/))

# Mettez en œuvre une analyse Checkov personnalisée et centralisée pour appliquer la politique avant de déployer AWS l'infrastructure
<a name="centralized-custom-checkov-scanning"></a>

*Benjamin Morris, Amazon Web Services*

## Résumé
<a name="centralized-custom-checkov-scanning-summary"></a>

Ce modèle fournit un cadre d' GitHub actions pour écrire des politiques Checkov personnalisées dans un référentiel qui peut être réutilisé au sein d'une GitHub organisation. En suivant ce modèle, une équipe de sécurité de l'information peut rédiger, ajouter et gérer des politiques personnalisées en fonction des exigences de l'entreprise. Les politiques personnalisées peuvent être intégrées automatiquement à tous les pipelines de l' GitHub organisation. Cette approche peut être utilisée pour appliquer les normes de l'entreprise en matière de ressources avant que celles-ci ne soient déployées.

## Conditions préalables et limitations
<a name="centralized-custom-checkov-scanning-prereqs"></a>

**Prérequis**
+ Un actif Compte AWS
+ Une GitHub organisation utilisant des GitHub actions
+ AWS infrastructure déployée avec HashiCorp Terraform ou AWS CloudFormation

**Limites**
+ Ce modèle est écrit pour GitHub Actions. Cependant, il peut être adapté à des cadres d'intégration continue et de livraison continue (CI/CD) similaires tels que. GitLab Aucune version payante spécifique de GitHub n'est requise.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité des régions, consultez la section [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) dans la AWS documentation, puis choisissez le lien correspondant au service.

## Architecture
<a name="centralized-custom-checkov-scanning-architecture"></a>

Ce modèle est conçu pour être déployé sous forme de GitHub référentiel contenant un flux de travail GitHub réutilisable et des politiques Checkov personnalisées. Le flux de travail réutilisable peut analyser à la fois Terraform et les référentiels CloudFormation d'infrastructure en tant que code (IaC).

Le schéma suivant montre le référentiel des ** GitHub flux de travail réutilisables et le référentiel** des **politiques Custom Checkov** sous forme d'icônes distinctes. Toutefois, vous pouvez implémenter ces référentiels en tant que référentiels distincts ou en tant que référentiel unique. L'exemple de code utilise un référentiel unique, avec des fichiers pour les flux de travail (`.github/workflows`) et des fichiers pour les politiques personnalisées (`custom_policies`dossier et fichier de `.checkov.yml` configuration) dans le même référentiel.

![\[GitHub Actions utilise un GitHub flux de travail réutilisable et des politiques Checkov personnalisées pour évaluer IaC.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/6c0c941f-14f9-4569-92da-9f81ab3e525c/images/a1539ce5-0ee6-4af1-bd01-cafad0f71708.png)


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

1. Un utilisateur crée une pull request dans un GitHub référentiel.

1. Les flux de travail du pipeline commencent dans GitHub Actions, y compris une référence à un flux de travail réutilisable Checkov.

1. Le flux de travail de pipeline télécharge le flux de travail réutilisable Checkov référencé depuis un référentiel externe et exécute ce flux de travail de Checkov à l'aide GitHub d'Actions.

1. Le flux de travail réutilisable Checkov télécharge les politiques personnalisées à partir d'un référentiel externe.

1. Le flux de travail réutilisable Checkov évalue l'iAc du GitHub référentiel par rapport aux politiques Checkov intégrées et personnalisées. Le flux de travail réutilisable Checkov réussit ou échoue selon que des problèmes de sécurité sont détectés ou non.

**Automatisation et mise à l'échelle**

Ce modèle permet une gestion centralisée de la configuration de Checkov, afin que les mises à jour des politiques puissent être appliquées en un seul endroit. Toutefois, ce modèle nécessite que chaque référentiel utilise un flux de travail contenant une référence au flux de travail réutilisable central. Vous pouvez ajouter cette référence manuellement ou utiliser des scripts pour transférer le fichier vers le `.github/workflows` dossier de chaque référentiel.

## Outils
<a name="centralized-custom-checkov-scanning-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. Checkov peut scanner CloudFormation.

**Autres outils**
+ [Checkov](https://www.checkov.io/) est un outil d'analyse de code statique qui vérifie les erreurs de configuration liées à la sécurité et à la conformité dans iAC.
+ [GitHub Actions](https://github.com/features/actions) est intégré à la GitHub plateforme pour vous aider à créer, partager et exécuter des flux de travail au sein de vos GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser des tâches telles que la création, le test et le déploiement de votre code.
+ [Terraform](https://www.terraform.io/) est un outil IaC HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud. Checkov peut scanner Terraform.

**Référentiel de code**

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

## Bonnes pratiques
<a name="centralized-custom-checkov-scanning-best-practices"></a>
+ Pour maintenir une posture de sécurité cohérente, alignez les politiques de sécurité de votre entreprise sur les politiques de Checkov.
+ Au cours des premières phases de mise en œuvre des politiques personnalisées de Checkov, vous pouvez utiliser l'option soft-fail de votre scan Checkov pour autoriser la fusion des iAc présentant des problèmes de sécurité. Au fur et à mesure que le processus arrive à maturité, passez de l'option soft-fail à l'option hardfail.

## Épopées
<a name="centralized-custom-checkov-scanning-epics"></a>

### Créez un référentiel Checkov central pour les politiques personnalisées
<a name="create-a-central-checkov-repository-for-custom-policies"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un référentiel Checkov central. | Créez un référentiel pour stocker les politiques Checkov personnalisées qui seront utilisées au sein de l'organisation.Pour un démarrage rapide, vous pouvez copier le contenu du référentiel de ce modèle dans votre GitHub [centralized-custom-checkov-sast ](https://github.com/aws-samples/centralized-custom-checkov-sast)référentiel central Checkov. | DevOps ingénieur | 
| Créez un référentiel pour les flux de travail réutilisables. | Si un référentiel pour les flux de travail réutilisables existe déjà, ou si vous prévoyez d'inclure des fichiers de flux de travail réutilisables dans le même référentiel que les politiques Checkov personnalisées, vous pouvez ignorer cette étape.Créez un GitHub référentiel pour héberger les flux de travail réutilisables. Les pipelines d'autres référentiels référenceront ce référentiel. | DevOps ingénieur | 

### Créez des flux de travail Checkov réutilisables et exemples
<a name="create-reusable-and-example-checkov-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez un flux de travail Checkov réutilisable. | Créez un flux de travail d' GitHub actions Checkov réutilisable (fichier YAML) dans le référentiel de flux de travail réutilisables. Vous pouvez adapter ce flux de travail réutilisable à partir du fichier de flux de travail fourni dans ce modèle.Un exemple de modification que vous pourriez vouloir apporter est de modifier le flux de travail réutilisable pour utiliser l'option soft-fail. Le réglage `soft-fail` sur `true` permet de terminer le travail avec succès même en cas d'échec du scan Checkov. Pour obtenir des instructions, consultez la section [Défaillance matérielle et logicielle](https://www.checkov.io/2.Basics/Hard%20and%20soft%20fail.html) dans la documentation de Checkov. | DevOps ingénieur | 
| Ajoutez un exemple de flux de travail. | Ajoutez un exemple de flux de travail Checkov qui fait référence au `reusable` flux de travail. Cela fournira un modèle expliquant comment réutiliser le `reusable` flux de travail. Dans le référentiel d'exemples, `checkov-source.yaml` se trouve le flux de travail réutilisable et `checkov-scan.yaml` l'exemple qui consomme`checkov-source`.Pour plus de détails sur la rédaction d'un exemple de flux de travail Checkov, voir [Informations supplémentaires](#centralized-custom-checkov-scanning-additional). | DevOps ingénieur | 

### Associer les politiques de l'entreprise aux politiques personnalisées de Checkov
<a name="associate-company-policies-to-checkov-custom-policies"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déterminez les politiques qui peuvent être appliquées avec Checkov. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralized-custom-checkov-scanning.html)Pour plus de détails sur la création de politiques personnalisées Checkov, consultez la section [Présentation des politiques personnalisées](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html) dans la documentation de Checkov. | Sécurité et conformité | 
| Ajoutez des politiques personnalisées de Checkov. | Convertissez les politiques d'entreprise identifiées en politiques Checkov personnalisées dans le référentiel central. Vous pouvez écrire des politiques Checkov simples en Python ou en YAML. | Sécurité | 

### Mettre en œuvre des politiques personnalisées Checkov centralisées
<a name="implement-centralized-checkov-custom-policies"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez le flux de travail réutilisable Checkov à tous les référentiels. | À ce stade, vous devriez avoir un exemple de flux de travail Checkov qui fait référence au flux de travail réutilisable. Copiez l'exemple de flux de travail Checkov qui fait référence au flux de travail réutilisable dans chaque référentiel qui l'exige. | DevOps ingénieur | 
| Créez un mécanisme pour garantir que Checkov s'exécute avant les fusions. | Pour garantir que le flux de travail Checkov est exécuté pour chaque pull request, créez une [vérification de statut](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks) qui nécessite un flux de travail Checkov réussi avant de pouvoir fusionner les pull requests. GitHub vous permet d'exiger l'exécution de flux de travail spécifiques avant de pouvoir fusionner les pull requests. | DevOps ingénieur | 
| Créez un PAT à l'échelle de l'organisation et partagez-le en tant que secret. | Si votre GitHub organisation est visible publiquement, vous pouvez ignorer cette étape.Ce modèle nécessite que le flux de travail Checkov soit en mesure de télécharger des politiques personnalisées à partir du référentiel de politiques personnalisées de votre GitHub organisation. Vous devez fournir des autorisations permettant au flux de travail Checkov d'accéder à ces référentiels.Pour ce faire, [créez un jeton d'accès personnel](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) (PAT) autorisé à lire les référentiels de l'organisation. Partagez ce PAT avec les référentiels, soit sous forme de secret à l'échelle de l'organisation (si vous utilisez un forfait payant), soit sous forme de secret dans chaque référentiel (version gratuite). Dans l'exemple de code, le nom par défaut du secret est`ORG_PAT`. | DevOps ingénieur | 
| (Facultatif) Protégez les fichiers du flux de travail Checkov contre toute modification. | Pour protéger les fichiers du flux de travail Checkov contre les modifications indésirables, vous pouvez utiliser un `CODEOWNERS` fichier. Le `CODEOWNERS` fichier est généralement déployé à la racine du répertoire.Par exemple, pour demander l'approbation du `secEng` groupe de votre GitHub organisation lorsque le `checkov-scan.yaml` fichier est modifié, ajoutez ce qui suit au `CODEOWNERS` fichier d'un référentiel :<pre>[Checkov]<br />.github/workflows/checkov-scan.yaml @myOrg/secEng</pre>Un `CODEOWNERS` fichier est spécifique au référentiel dans lequel il se trouve. Pour protéger le flux de travail Checkov utilisé par le référentiel, vous devez ajouter (ou mettre à jour) un `CODEOWNERS` fichier dans chaque référentiel.Pour plus d'informations sur la protection des fichiers de flux de travail Checkov, voir [Informations supplémentaires](#centralized-custom-checkov-scanning-additional). Pour plus d'informations sur `CODEOWNERS` les fichiers, consultez la documentation officielle de votre CI/CD fournisseur (par exemple [GitHub](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)). | DevOps ingénieur | 

## Ressources connexes
<a name="centralized-custom-checkov-scanning-resources"></a>
+ [Vue d'ensemble des politiques personnalisées de Checkov](https://www.checkov.io/3.Custom%20Policies/Custom%20Policies%20Overview.html)
+ [CloudFormation Analyse de configuration](https://www.checkov.io/7.Scan%20Examples/Cloudformation.html)
+ [GitHub Actions > Workflows réutilisables](https://docs.github.com/en/actions/using-workflows/reusing-workflows)

## Informations supplémentaires
<a name="centralized-custom-checkov-scanning-additional"></a>

**Écrire des fichiers de flux de travail Checkov**

Lorsque vous écrivez`checkov-scan.yaml`, réfléchissez au moment où vous voulez qu'il s'exécute. La `on` clé de niveau supérieur détermine le moment où le flux de travail s'exécute. Dans le référentiel d'exemple, le flux de travail s'exécute lorsqu'une pull request cible la `main` branche (et chaque fois que la branche source de cette pull request est modifiée). Le flux de travail peut également être exécuté selon les besoins grâce à la `workflow_dispatch` clé.

Vous pouvez modifier les conditions de déclenchement du flux de travail en fonction de la fréquence à laquelle vous souhaitez que le flux de travail s'exécute. Par exemple, vous pouvez modifier le flux de travail pour qu'il s'exécute chaque fois que du code est envoyé vers une branche en le `pull_request` remplaçant par `push` et en supprimant la `branches` clé.

Vous pouvez modifier l'exemple de fichier de flux de travail que vous avez créé dans un référentiel individuel. Par exemple, vous pouvez modifier le nom de la branche cible de `main` à `production` si un référentiel est structuré autour d'une `production` branche.

**Protection des fichiers de flux de travail Checkov**

L'analyse Checkov fournit des informations utiles sur d'éventuelles erreurs de configuration de sécurité. Cependant, certains développeurs peuvent percevoir cela comme un obstacle à leur productivité et tenter de supprimer ou de désactiver le flux de numérisation.

Il existe plusieurs moyens de résoudre ce problème, notamment une meilleure communication sur la valeur à long terme de l'analyse de sécurité et une documentation plus claire sur le déploiement d'une infrastructure sécurisée. Il s'agit d'approches « souples » importantes en matière de DevSecOps collaboration qui peuvent être considérées comme la solution à la cause première de ce problème. Cependant, vous pouvez également utiliser des contrôles techniques tels qu'un `CODEOWNERS` fichier comme garde-fous pour aider les développeurs à rester sur la bonne voie.

**Schéma de test dans un bac à sable**

Pour tester ce modèle dans un environnement sandbox, procédez comme suit :

1. Créez une nouvelle GitHub organisation. Créez un jeton avec accès en lecture seule à tous les référentiels de l'organisation. Ce jeton étant destiné à un environnement sandbox et non à un environnement payant, vous ne pourrez pas le stocker dans un secret à l'échelle de l'organisation.

1. Créez un `checkov` référentiel pour contenir la configuration Checkov et un `github-workflows` référentiel pour contenir la configuration du flux de travail réutilisable. Remplissez les référentiels avec le contenu du référentiel d'exemple.

1. Créez un référentiel d'applications, puis copiez et collez le `checkov-scan.yaml` flux de travail `.github/workflows` dans son dossier. Ajoutez un secret au référentiel qui contient le PAT que vous avez créé pour l'accès en lecture seule de l'organisation. Le secret par défaut est`ORG_PAT`.

1. Créez une pull request qui ajoute du Terraform ou CloudFormation du code au référentiel d'applications. Checkov doit scanner et renvoyer un résultat.

# Implémentez les diagnostics et le dépannage de Kubernetes basés sur l'IA grâce à l'intégration de K8sGPT et Amazon Bedrock
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration"></a>

*Ishwar Chauthaiwale, Muskan., et Prafful Gupta, Amazon Web Services*

## Résumé
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-summary"></a>

Ce modèle montre comment implémenter les diagnostics et le dépannage de Kubernetes basés sur l'IA en intégrant K8sGPT au modèle Anthropic Claude v2 disponible sur Amazon Bedrock. La solution fournit une analyse en langage naturel et des étapes de résolution des problèmes liés au cluster Kubernetes via une architecture hôte Bastion sécurisée. En combinant l'expertise de K8sGPT Kubernetes avec les capacités linguistiques avancées d'Amazon Bedrock DevOps , les équipes peuvent identifier et résoudre rapidement les problèmes liés aux clusters. Grâce à ces fonctionnalités, il est possible de réduire le temps moyen de résolution (MTTR) jusqu'à 50 %. 

Ce modèle cloud natif tire parti d'Amazon Elastic Kubernetes Service (Amazon EKS) pour la gestion de Kubernetes. Le modèle met en œuvre les meilleures pratiques de sécurité grâce à des rôles Gestion des identités et des accès AWS (IAM) appropriés et à l'isolation du réseau. Cette solution est particulièrement utile pour les entreprises qui souhaitent rationaliser leurs opérations Kubernetes et améliorer leurs capacités de résolution des problèmes grâce à l'assistance de l'IA.

## Conditions préalables et limitations
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS avec les autorisations appropriées
+ AWS Command Line Interface (AWS CLI) [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Un cluster Amazon EKS
+ Accès au modèle Anthropic Claude 2 sur [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ Un hôte bastion avec les paramètres de groupe de sécurité requis
+ [K8sGPT installé](https://docs.k8sgpt.ai/getting-started/installation/)

**Limites**
+ L'analyse K8sGpt est limitée par la taille de la fenêtre contextuelle du modèle Claude v2.
+ Les limites tarifaires de l'API Amazon Bedrock s'appliquent en fonction des quotas de votre compte.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ Amazon EKS [version 1.31 ou ultérieure](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)
+ [Modèle Claude 2](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html) sur Amazon Bedrock
+ [K8SGPT v0.4.2 ou version ultérieure](https://github.com/k8sgpt-ai/k8sgpt/releases)

## Architecture
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-architecture"></a>

Le schéma suivant montre l'architecture des diagnostics Kubernetes basés sur l'IA à l'aide de K8sGPT intégré à Amazon Bedrock dans le. AWS Cloud

![\[Flux de travail pour les diagnostics Kubernetes à l'aide de K8sGPT intégré à Amazon Bedrock.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/09bc08f6-e191-4cef-b26b-dcb6225b15cc/images/8789891d-4a90-44b0-a108-387f6d96496b.png)


L'architecture présente le flux de travail suivant :

1. Les développeurs accèdent à l'environnement via une connexion sécurisée à l'hôte Bastion. Cette EC2 instance Amazon sert de point d'entrée sécurisé et contient l'installation de l'interface de ligne de commande (CLI) K8SGPT et les configurations requises.

1. L'hôte Bastion, configuré avec des rôles IAM spécifiques, établit des connexions sécurisées au cluster Amazon EKS et aux points de terminaison Amazon Bedrock. K8sGPT est installé et configuré sur l'hôte Bastion pour effectuer une analyse du cluster Kubernetes.

1. Amazon EKS gère le plan de contrôle Kubernetes et les nœuds de travail, fournissant ainsi l'environnement cible pour l'analyse K8sGPT. Le service s'exécute sur plusieurs zones de disponibilité au sein d'un cloud privé virtuel (VPC), ce qui contribue à garantir une disponibilité et une résilience élevées. Amazon EKS fournit des données opérationnelles via l'API Kubernetes, ce qui permet une analyse complète des clusters.

1. K8sGPT envoie des données d'analyse à Amazon Bedrock, qui fournit le modèle de base Claude v2 (FM) pour le traitement du langage naturel. Le service traite l'analyse K8sGPT pour générer des explications lisibles par l'homme et propose des suggestions de correction détaillées en fonction des problèmes identifiés. Amazon Bedrock fonctionne comme un service d'IA sans serveur offrant une disponibilité et une évolutivité élevées.

**Note**  
Tout au long de ce flux de travail, IAM contrôle l'accès entre les composants par le biais de rôles et de politiques, en gérant l'authentification pour les interactions entre l'hôte Bastion, Amazon EKS et Amazon Bedrock. L'IAM met en œuvre le principe du moindre privilège et permet une communication interservices sécurisée dans l'ensemble de l'architecture.

**Automatisation et mise à l'échelle**

Les opérations K8sGPT peuvent être automatisées et mises à l'échelle sur plusieurs clusters Amazon EKS à l'aide de divers outils et outils. Services AWS Cette solution prend en charge l'intégration continue et l'intégration du déploiement continu (CI/CD) à l'aide de [Jenkins](https://www.jenkins.io/), d'[GitHub Actions](https://docs.github.com/en/actions/get-started/understand-github-actions) ou [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)pour une analyse planifiée. L'opérateur K8sGPT permet une surveillance continue au sein du cluster grâce à des fonctionnalités automatisées de détection des problèmes et de création de rapports. Pour les déploiements à l'échelle de l'entreprise, vous pouvez utiliser [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) pour planifier des scans et déclencher des réponses automatisées à l'aide de scripts personnalisés. AWS L'intégration du SDK permet un contrôle programmatique sur un large parc de clusters.

## Outils
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-tools"></a>

**Services AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [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.
+ [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.

**Autres outils**
+ [K8sGPT](https://k8sgpt.ai/) est un outil open source basé sur l'IA qui transforme la gestion de Kubernetes. Il agit en tant qu'expert en ingénierie de fiabilité des sites virtuels (SRE), analysant, diagnostiquant et résolvant automatiquement les problèmes liés au cluster Kubernetes. Les administrateurs peuvent interagir avec K8sGPT en langage naturel et obtenir des informations claires et exploitables sur l'état du cluster, les pannes de pods et les défaillances de service. Les analyseurs intégrés de l'outil détectent un large éventail de problèmes, des composants mal configurés aux contraintes de ressources, et fournissent des easy-to-understand explications et des solutions.

## Bonnes pratiques
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-best-practices"></a>
+ Mettez en œuvre des contrôles d'accès sécurisés en utilisant AWS Systems Manager Session Manager for [Bastion Host Access](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html).
+ Assurez-vous que l'authentification K8sGPT utilise des rôles IAM dédiés dotés des autorisations de moindre privilège pour les interactions avec Amazon Bedrock et Amazon EKS. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.
+ Configurez le [balisage des ressources](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html), activez la CloudWatch [journalisation Amazon pour les pistes d'audit](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) et implémentez l'[anonymisation des données](https://aws.amazon.com/solutions/guidance/data-anonymization-on-aws/) pour les informations sensibles. 
+ Maintenez des sauvegardes régulières des configurations K8sGPT tout en configurant des programmes de numérisation automatisés pendant les heures creuses afin de minimiser l'impact opérationnel.

## Épopées
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-epics"></a>

### Ajoutez Amazon Bedrock à la liste des fournisseurs de backend AI.
<a name="add-br-to-ai-backend-provider-list"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Définissez Amazon Bedrock comme fournisseur de backend AI pour K8sGPT. | Pour définir Amazon Bedrock comme fournisseur de [backend](https://docs.k8sgpt.ai/reference/providers/backend/) AI r pour K8sGPT, utilisez la commande suivante : AWS CLI <pre>k8sgpt auth add -b amazonbedrock \<br /> -r us-west-2 \<br /> -m anthropic.claude-v2 \<br /> -n endpoint-name <br /></pre>L'exemple de commande utilise `us-west-2` pour Région AWS. Toutefois, vous pouvez sélectionner une autre région, à condition que le cluster Amazon EKS et le modèle Amazon Bedrock correspondant soient disponibles et activés dans cette région sélectionnée.Pour vérifier qu'il `amazonbedrock` est ajouté à la liste des fournisseurs de backend AI et qu'il est en bon `Active` état, exécutez la commande suivante :<pre>k8sgpt auth list</pre>Voici un exemple du résultat attendu de cette commande :<pre>Default: <br />> openai<br />Active: <br />> amazonbedrock<br />Unused: <br />> openai<br />> localai<br />> ollama<br />> azureopenai<br />> cohere<br />> amazonsagemaker<br />> google<br />> noopai<br />> huggingface<br />> googlevertexai<br />> oci<br />> customrest<br />> ibmwatsonxai</pre> | AWS DevOps | 

### Analyser les ressources à l'aide d'un filtre
<a name="scan-resources-using-a-filter"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Consultez la liste des filtres disponibles. | Pour voir la liste de tous les filtres disponibles, utilisez la AWS CLI commande suivante :<pre>k8sgpt filters list</pre>Voici un exemple du résultat attendu de cette commande :<pre>Active: <br />> Deployment<br />> ReplicaSet<br />> PersistentVolumeClaim<br />> Service<br />> CronJob<br />> Node<br />> MutatingWebhookConfiguration<br />> Pod<br />> Ingress<br />> StatefulSet<br />> ValidatingWebhookConfiguration</pre> | AWS DevOps | 
| Scannez un pod dans un espace de noms spécifique à l'aide d'un filtre. | Cette commande est utile pour le débogage ciblé de problèmes de pod spécifiques au sein d'un cluster Kubernetes, en utilisant les fonctionnalités d'Amazon Bedrock AI pour analyser et expliquer les problèmes détectés.Pour scanner un pod dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Pod -n default</pre>Voici un exemple du résultat attendu de cette commande :<pre>100% |████████████████████████████████████████████████████████| (1/1, 645 it/s)        <br />AI Provider: amazonbedrock<br /><br />0: Pod default/crashme()<br />- Error: the last termination reason is Error container=crashme pod=crashme<br />Error: The pod named crashme terminated because the container named crashme crashed.<br />Solution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.</pre> | AWS DevOps | 
| Analysez un déploiement dans un espace de noms spécifique à l'aide d'un filtre. | Cette commande est utile pour identifier et résoudre les problèmes spécifiques au déploiement, en particulier lorsque l'état réel ne correspond pas à l'état souhaité.Pour analyser un déploiement dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Deployment -n default</pre>Voici un exemple du résultat attendu de cette commande :<pre>100% |██████████████████████████████████████████████████████████| (1/1, 10 it/min)        <br />AI Provider: amazonbedrock<br /><br />0: Deployment default/nginx()<br />- Error: Deployment default/nginx has 1 replicas but 2 are available<br /> Error: The Deployment named nginx in the default namespace has 1 replica specified but 2 pod replicas are running.<br />Solution: Check if any other controllers like ReplicaSet or StatefulSet have created extra pods. Delete extra pods or adjust replica count to match available pods.</pre> | AWS DevOps | 
| Scannez un nœud dans un espace de noms spécifique à l'aide d'un filtre. | Pour scanner un nœud dans un espace de noms spécifique à l'aide d'un filtre, utilisez la AWS CLI commande suivante :<pre>k8sgpt analyze --backend amazonbedrock --explain --filter Node -n default </pre>Voici un exemple du résultat attendu de cette commande :<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> | AWS DevOps | 

### Analyser les résultats détaillés
<a name="analyze-detailed-outputs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Obtenez des résultats détaillés. |  Pour obtenir des résultats détaillés, utilisez la AWS CLI commande suivante :<pre>k8sgpt analyze --backend amazonbedrock --explain --ouput json</pre>Voici un exemple du résultat attendu de cette commande :<pre>{<br />  "provider": "amazonbedrock",<br />  "errors": null,<br />  "status": "ProblemDetected",<br />  "problems": 1,<br />  "results": [<br />    {<br />      "kind": "Pod",<br />      "name": "default/crashme",<br />      "error": [<br />        {<br />          "Text": "the last termination reason is Error container=crashme pod=crashme",<br />          "KubernetesDoc": "",<br />          "Sensitive": []<br />        }<br />      ],<br />      "details": " Error: The pod named crashme terminated because the container named crashme crashed.\nSolution: Check logs for crashme pod to identify reason for crash. Restart pod or redeploy application to resolve crash.",<br />      "parentObject": ""<br />    }<br />  ]<br />}</pre> | AWS DevOps | 
| Vérifiez les pods problématiques. | Pour vérifier la présence de pods problématiques spécifiques, utilisez la AWS CLI commande suivante :<pre>kubectl get pods --all-namespaces | grep -v Running</pre>Voici un exemple du résultat attendu de cette commande :<pre>NAMESPACE    NAME      READY    STATUS          RESTARTS      AGE                                       <br />default     crashme     0/1   CrashLoopBackOff   260(91s ago)   21h</pre> | AWS DevOps | 
| Obtenez des informations spécifiques aux applications. | Cette commande est particulièrement utile lorsque :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration.html)Pour obtenir des informations spécifiques à l'application, utilisez la commande suivante :<pre>k8sgpt analyze --backend amazonbedrock --explain -L app=nginx -n default</pre>Voici un exemple du résultat attendu de cette commande :<pre>AI Provider: amazonbedrock<br /><br />No problems detected</pre> |  | 

## Ressources connexes
<a name="implement-ai-powered-kubernetes-diagnostics-and-troubleshooting-with-k8sgpt-and-amazon-bedrock-integration-resources"></a>

**Blogues AWS**
+ [Automatisez le dépannage d'Amazon EKS à l'aide d'un flux de travail Amazon Bedrock agentic](https://aws.amazon.com/blogs/machine-learning/automate-amazon-eks-troubleshooting-using-an-amazon-bedrock-agentic-workflow/)
+ [Utilisez K8sGPT et Amazon Bedrock pour simplifier la maintenance des clusters Kubernetes](https://aws.amazon.com/blogs/machine-learning/use-k8sgpt-and-amazon-bedrock-for-simplified-kubernetes-cluster-maintenance/)

**AWS documentation**
+ AWS CLI [commandes : [create-cluster et describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/eks/create-cluster.html)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/eks/describe-cluster.html)
+ [Commencez à utiliser Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) (documentation Amazon EKS)
+ [Bonnes pratiques de sécurité dans l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentation IAM)

**Autres ressources**
+ [K8SGPT](https://k8sgpt.ai/)

# Détectez automatiquement les modifications et lancez différents CodePipeline pipelines pour un monorepo dans CodeCommit
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit"></a>

*Helton Ribeiro, Petrus Batalha et Ricardo Morais, Amazon Web Services*

## Résumé
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-summary"></a>

**Remarque** : n' AWS Cloud9 est plus disponible pour les nouveaux clients. Les clients existants de AWS Cloud9 peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Ce modèle vous permet de détecter automatiquement les modifications apportées au code source d'une application monorepo, puis de lancer un pipeline AWS CodePipeline qui exécute l'intégration AWS CodeCommit et la livraison continues (CI/CD) automation for each microservice. This approach means that each microservice in your monorepo-based application can have a dedicated CI/CDpipeline), ce qui garantit une meilleure visibilité, un partage facilité du code et une collaboration, une standardisation et une découvrabilité améliorées.

La solution décrite dans ce modèle n'effectue aucune analyse de dépendance entre les microservices du monorepo. Il détecte uniquement les modifications du code source et lance le CI/CD pipeline correspondant.

Le modèle est utilisé AWS Cloud9 comme environnement de développement intégré (IDE) et AWS Cloud Development Kit (AWS CDK) pour définir une infrastructure en utilisant deux CloudFormation piles : `MonoRepoStack` et`PipelinesStack`. La `MonoRepoStack` pile crée le monorepo dans AWS CodeCommit et la AWS Lambda fonction qui initie les pipelines. CI/CD La `PipelinesStack` pile définit l'infrastructure de votre pipeline.

**Important**  
Le flux de travail de ce modèle est une preuve de concept (PoC). Nous vous recommandons de l'utiliser uniquement dans un environnement de test. Si vous souhaitez utiliser l'approche de ce modèle dans un environnement de production, consultez les [meilleures pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation Gestion des identités et des accès AWS (IAM) et apportez les modifications requises à vos rôles IAM et. Services AWS 

## Conditions préalables et limitations
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-prereqs"></a>

**Conditions préalables**
+ Un AWS compte actif.
+ AWS Command Line Interface (AWS CLI), installé et configuré. Pour plus d'informations, consultez la section [Installation, mise à jour et désinstallation du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) dans la AWS CLI documentation.  
+ Python 3 et`pip`, installé sur votre machine locale. Pour plus d'informations, consultez la [documentation Python](https://www.python.org/). 
+ AWS CDK, installé et configuré. Pour plus d'informations, consultez la section [Mise en route avec le AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) dans la AWS CDK documentation. 
+ Un AWS Cloud9 IDE, installé et configuré. Pour plus d'informations, consultez la section [Configuration AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/setting-up.html) dans la AWS Cloud9 documentation. 
+ Le référentiel de [déclencheurs multi-pipelines GitHub AWS CodeCommit monorepo](https://github.com/aws-samples/monorepo-multi-pipeline-trigger), cloné sur votre machine locale. 
+ Répertoire existant contenant le code d'application que vous souhaitez utiliser pour créer et déployer CodePipeline.
+ Connaissance et expérience des DevOps meilleures pratiques en matière de AWS Cloud. Pour vous familiariser davantage DevOps, vous pouvez utiliser le modèle [Créez une architecture faiblement couplée avec des microservices en utilisant des DevOps pratiques et AWS Cloud9](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-a-loosely-coupled-architecture-with-microservices-using-devops-practices-and-aws-cloud9.html) sur le site Web du guide AWS prescriptif.  

## Architecture
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-architecture"></a>

Le schéma suivant montre comment utiliser le AWS CDK pour définir une infrastructure à deux AWS CloudFormation piles : `MonoRepoStack` et`PipelinesStack`.

![\[Flux de travail permettant d'utiliser le kit AWS CDK pour définir une infrastructure à deux CloudFormation piles.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/b0bb1094-b598-4b3d-ab8b-ad9b0eb45f38.png)


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

1. Le processus bootstrap utilise le AWS CDK pour créer les AWS CloudFormation piles et`MonoRepoStack`. `PipelinesStack`

1. La `MonoRepoStack` pile crée le CodeCommit référentiel pour votre application et la fonction `monorepo-event-handler` Lambda qui est lancée après chaque validation.

1. La `PipelinesStack` pile crée les pipelines CodePipeline initiés par la fonction Lambda. Chaque microservice doit disposer d'un pipeline d'infrastructure défini.

1. Le pipeline pour `microservice-n` est initié par la fonction Lambda et démarre ses CI/CD étapes isolées basées sur le code source dans. CodeCommit

1. Le pipeline pour `microservice-1` est initié par la fonction Lambda et démarre ses CI/CD étapes isolées basées sur le code source dans. CodeCommit

Le schéma suivant montre le déploiement des AWS CloudFormation stacks `MonoRepoStack` et `PipelinesStack` dans un compte.

![\[Déploiement des CloudFormation stacks MonoRepoStack et PipelinesStack dans un compte AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a3397158-a208-4033-844e-969af13ae8b6/images/39e60e49-dea2-486d-8a2c-6cae438f69b4.png)


1. Un utilisateur modifie le code dans l'un des microservices de l'application.

1. L'utilisateur transfère les modifications d'un dépôt local vers un CodeCommit dépôt.

1. L'activité push lance la fonction Lambda qui reçoit tous les push vers le référentiel. CodeCommit 

1. La fonction Lambda lit un paramètre dans Parameter Store, une fonctionnalité de AWS Systems Manager, pour récupérer l'ID de validation le plus récent. Le paramètre a le format de dénomination :`/MonoRepoTrigger/{repository}/{branch_name}/LastCommit`. Si le paramètre n'est pas trouvé, la fonction Lambda lit le dernier ID de validation dans le CodeCommit référentiel et enregistre la valeur renvoyée dans Parameter Store.

1. Après avoir identifié l'ID de validation et les fichiers modifiés, la fonction Lambda identifie les pipelines pour chaque répertoire de microservices et lance le pipeline requis. CodePipeline 

## Outils
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-tools"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel permettant de définir l'infrastructure cloud dans le code et de la provisionner via CloudFormation celle-ci.
+ [Python](https://www.python.org/) est un langage de programmation qui permet de travailler rapidement et d'intégrer des systèmes plus efficacement.

**Code**

Le code source et les modèles de ce modèle sont disponibles dans le référentiel de déclencheurs [multi-pipelines GitHub AWS CodeCommit monorepo](https://github.com/aws-samples/monorepo-multi-pipeline-trigger).

## Bonnes pratiques
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-best-practices"></a>
+ Cet exemple d'architecture n'inclut pas de solution de surveillance pour l'infrastructure déployée. Si vous souhaitez déployer cette solution dans un environnement de production, nous vous recommandons d'activer la surveillance. Pour plus d'informations, consultez la section [Surveiller vos applications sans serveur avec CloudWatch Application Insights](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/monitor-app-insights.html) dans la documentation AWS Serverless Application Model (AWS SAM).
+ Lorsque vous modifiez l'exemple de code fourni par ce modèle, suivez les [meilleures pratiques de développement et de déploiement de l'infrastructure cloud](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) décrites dans la AWS CDK documentation.
+ Lorsque vous définissez vos pipelines de microservices, consultez les [meilleures pratiques de sécurité décrites](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html) dans la AWS CodePipeline documentation.
+ Vous pouvez également vérifier les meilleures pratiques de votre AWS CDK code à l'aide de l'utilitaire [cdk-nag](https://github.com/cdklabs/cdk-nag). Cet outil utilise un ensemble de règles, regroupées par packs, pour évaluer votre code. Les packs disponibles sont les suivants :
  + [AWS Bibliothèque de solutions](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#awssolutions)
  + [Sécurité de la Health Insurance Portability and Accountability Act (HIPAA)](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#hipaa-security)
  + [Institut national des normes et de la technologie (NIST) 800-53 rev 4](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-4)
  + [NIST 800-53 version 5](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#nist-800-53-rev-5)
  + [Norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS) 3.2.1](https://github.com/cdklabs/cdk-nag/blob/main/RULES.md#pci-dss-321)

## Épopées
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-epics"></a>

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un environnement Python virtuel. | Dans votre AWS Cloud9 IDE, créez un environnement Python virtuel et installez les dépendances requises en exécutant la commande suivante :`make install` | Developer | 
| Bootstrap le Compte AWS et Région AWS pour le. AWS CDK | Démarrez le fichier requis Compte AWS et la région en exécutant la commande suivante :`make bootstrap account-id=<your-AWS-account-ID> region=<required-region>` | Developer | 

### Ajouter un nouveau pipeline pour un microservice
<a name="add-a-new-pipeline-for-a-microservice"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Ajoutez votre exemple de code dans le répertoire de votre application. | Ajoutez le répertoire contenant votre exemple de code d'application au `monorepo-sample` répertoire du référentiel de déclencheurs GitHub [AWS CodeCommit monorepo multi-pipelines](https://github.com/aws-samples/monorepo-multi-pipeline-trigger) clonés. | Developer | 
| Modifiez le fichier `monorepo-main.json`. | Ajoutez le nom du répertoire du code de votre application et le nom du pipeline au `monorepo-main.json` fichier du référentiel cloné. | Developer | 
| Créez le pipeline. | Dans le `Pipelines` répertoire du référentiel, ajoutez le pipeline `class` de votre application. Le répertoire contient deux exemples de fichiers, `pipeline_hotsite.py` et`pipeline_demo.py`. Chaque fichier comporte trois étapes : source, génération et déploiement.Vous pouvez copier l'un des fichiers et y apporter des modifications conformément aux exigences de votre application.  | Developer | 
| Modifiez le fichier `monorepo_config.py`. | Dans`service_map`, ajoutez le nom du répertoire de votre application et la classe que vous avez créée pour le pipeline.Par exemple, le code suivant montre une définition de pipeline dans le `Pipelines` répertoire qui utilise un fichier nommé `pipeline_mysample.py` avec une `MySamplePipeline` classe :<pre>...<br /># Pipeline definition imports<br />from pipelines.pipeline_demo import DemoPipeline<br />from pipelines.pipeline_hotsite import HotsitePipeline<br />from pipelines.pipeline_mysample import MySamplePipeline<br /><br />### Add your pipeline configuration here<br />service_map: Dict[str, ServicePipeline]  = {<br />    # folder-name -> pipeline-class<br />    'demo': DemoPipeline(),<br />    'hotsite': HotsitePipeline(),<br />    'mysample': MySamplePipeline()<br />}</pre> | Developer | 

### Déployez la MonoRepoStack pile
<a name="deploy-the-monorepostack-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez la AWS CloudFormation pile. | Déployez la AWS CloudFormation `MonoRepoStack` pile avec les valeurs de paramètres par défaut dans le répertoire racine du référentiel cloné en exécutant la `make deploy-core` commande.Vous pouvez modifier le nom du dépôt en exécutant la `make deploy-core monorepo-name=<repo_name>` commande.Vous pouvez déployer les deux pipelines simultanément à l'aide de la `make deploy monorepo-name=<repo_name>` commande. | Developer | 
| Validez le CodeCommit référentiel. | Vérifiez que vos ressources ont été créées en exécutant la `aws codecommit get-repository --repository-name <repo_name>` commande. Étant donné que la CloudFormation pile crée le CodeCommit référentiel dans lequel le monorepo est stocké, n'exécutez pas la `cdk destroy MonoRepoStack ` commande si vous avez commencé à y apporter des modifications. | Developer | 
| Validez les résultats de la CloudFormation pile. | Vérifiez que la CloudFormation `MonoRepoStack` pile est correctement créée et configurée en exécutant la commande suivante :<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE --query 'StackSummaries[?StackName == 'MonoRepoStack']'</pre> | Developer | 

### Déployez la PipelinesStack pile
<a name="deploy-the-pipelinesstack-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez la CloudFormation pile. | La AWS CloudFormation `PipelinesStack` pile doit être déployée après le déploiement de la `MonoRepoStack` pile. La taille de la pile augmente lorsque de nouveaux microservices sont ajoutés à la base de code du monorepo et est redéployée lorsqu'un nouveau microservice est intégré.Déployez la PipelinesStack pile en exécutant la `make deploy-pipelines` commande.Vous pouvez également déployer simultanément les deux pipelines en exécutant la `make deploy monorepo-name=<repo_name>` commande.L'exemple de sortie suivant montre comment le `PipelinesStacks` déploiement imprime URLs les microservices à la fin de l'implémentation :<pre>Outputs:<br />PipelinesStack.demourl = .cloudfront.net<br />PipelinesStack.hotsiteurl = .cloudfront.net</pre> | Developer | 
| Validez les résultats de la AWS CloudFormation pile. | Vérifiez que la AWS CloudFormation `PipelinesStacks` pile est correctement créée et configurée en exécutant la commande suivante :<pre>aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE --query 'StackSummaries[?StackName == 'PipelinesStack']'</pre> | Developer | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez vos AWS CloudFormation piles. | Exécutez la commande `make destroy`. | Developer | 
| Supprimez les compartiments S3 de vos pipelines. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | Developer | 

## Résolution des problèmes
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| J'ai rencontré AWS CDK des problèmes. | Consultez la section [Résolution AWS CDK des problèmes courants](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html) dans la documentation AWS CDK. | 
| J'ai envoyé mon code de microservice, mais le pipeline de microservices n'a pas fonctionné. | **Validation de configuration***Vérifiez la configuration de la branche :*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*Validez les fichiers de configuration :*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Résolution des problèmes sur la console***AWS CodePipeline chèques :*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)*AWS Lambda résolution des problèmes :*[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 
| Je dois redéployer tous mes microservices.  | Il existe deux approches pour forcer le redéploiement de tous les microservices. Choisissez l'option qui correspond à vos besoins.**Approche 1 : supprimer un paramètre dans Parameter Store**Cette méthode implique la suppression d'un paramètre spécifique dans le magasin de paramètres de Systems Manager qui suit le dernier ID de validation utilisé pour le déploiement. Lorsque vous supprimez ce paramètre, le système est obligé de redéployer tous les microservices lors du prochain déclencheur, car il le perçoit comme un nouvel état.Étapes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Avantages :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Inconvénients :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)**Approche 2 : envoyer un commit dans chaque sous-dossier monorepo**Cette méthode consiste à apporter une modification mineure et à l'insérer dans chaque sous-dossier de microservice du monorepo pour initier leurs pipelines individuels.Étapes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Avantages :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html)Inconvénients :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.html) | 

## Ressources connexes
<a name="automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit-resources"></a>
+ [Intégration et livraison continues (CI/CD) à l'aide de CDK Pipelines](https://docs.aws.amazon.com/cdk/latest/guide/cdk_pipeline.html) (documentation)AWS CDK 
+ [module aws-cdk/pipelines](https://docs.aws.amazon.com/cdk/api/latest/docs/pipelines-readme.html) (référence d'API)AWS CDK 

# Intégrer un référentiel Bitbucket à AWS Amplify à l'aide d'AWS CloudFormation
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation"></a>

*Alwin Abraham, Amazon Web Services*

## Résumé
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-summary"></a>

AWS Amplify vous aide à déployer et à tester rapidement des sites Web statiques sans avoir à configurer l'infrastructure généralement requise. Vous pouvez déployer l'approche de ce modèle si votre entreprise souhaite utiliser Bitbucket pour le contrôle de source, que ce soit pour migrer le code d'application existant ou créer une nouvelle application. En utilisant AWS CloudFormation pour configurer automatiquement Amplify, vous offrez une visibilité sur les configurations que vous utilisez.

Ce modèle décrit comment créer un pipeline et un environnement de déploiement continus (CI/CD) frontaux en utilisant AWS CloudFormation pour intégrer un référentiel Bitbucket à AWS Amplify. L'approche du modèle signifie que vous pouvez créer un pipeline frontal Amplify pour des déploiements répétables.

## Conditions préalables et limitations
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-prereqs"></a>

**Prérequis******
+ Un compte Amazon Web Services (AWS) actif
+ Un compte Bitbucket actif avec accès administrateur
+ [Accès à un terminal utilisant [cURL](https://curl.se/) ou l'application Postman](https://www.postman.com/)
+ Connaissance d'Amplify
+ Connaissance d'AWS CloudFormation
+ Connaissance des fichiers au format YAML

## Architecture
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-architecture"></a>

![\[Diagram showing user interaction with Bitbucket repository connected to AWS Amplify in AWS Cloud region.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/images/25d73a9d-d2ae-40bc-9ebc-57f9bd13884a.png)


**Pile technologique**
+ Amplify
+ AWS CloudFormation
+ Bitbucket

## Outils
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-tools"></a>
+ [AWS Amplify — Amplify](https://docs.aws.amazon.com/amplify/) aide les développeurs à développer et à déployer des applications mobiles et Web basées sur le cloud.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS CloudFormation est un service qui vous aide à modéliser et à configurer vos ressources AWS afin que vous puissiez passer moins de temps à gérer ces ressources et plus de temps à vous concentrer sur vos applications exécutées dans AWS.
+ [Bitbucket](https://bitbucket.org/) — Bitbucket est une solution de gestion de référentiels Git conçue pour les équipes professionnelles. Il vous offre un emplacement central pour gérer les référentiels Git, collaborer sur votre code source et vous guider tout au long du processus de développement.

 

**Code**

Le `bitbucket-amplify.yml` fichier (joint) contient le CloudFormation modèle AWS pour ce modèle.

## Épopées
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-epics"></a>

### Configuration du référentiel Bitbucket
<a name="configure-the-bitbucket-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| (Facultatif) Créez un dépôt Bitbucket.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Vous pouvez également utiliser un dépôt Bitbucket existant. | DevOps ingénieur | 
| Ouvrez les paramètres de l'espace de travail. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps ingénieur | 
| Créez un OAuth consommateur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html) | DevOps ingénieur | 
| Obtenez un jeton OAuth d'accès.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)`curl -X POST -u "KEY:SECRET" https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials `Remplacez `KEY` et `SECRET` par la clé et le secret que vous avez enregistrés précédemment. 2. Enregistrez le jeton d'accès sans utiliser les guillemets. Le jeton n'est valide que pour une durée limitée et la durée par défaut est de deux heures. Vous devez exécuter le CloudFormation modèle AWS dans ce délai. | DevOps ingénieur | 

### Création et déploiement de la CloudFormation pile AWS
<a name="create-and-deploy-the-aws-cloudformation-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
|  Téléchargez le CloudFormation modèle AWS. | Téléchargez le CloudFormation modèle `bitbucket-amplify.yml` AWS (ci-joint). Ce modèle crée le CI/CD pipeline dans Amplify, en plus du projet et de la branche Amplify. |  | 
| Créez et déployez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)5. Choisissez **Next**, puis **Create Stack**. | DevOps ingénieur | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le code dans la branche de votre référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation.html)Pour plus d'informations à ce sujet, consultez les [commandes Git de base](https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776639767.html) dans la documentation de Bitbucket.  | Développeur d’applications | 

## Ressources connexes
<a name="integrate-a-bitbucket-repository-with-aws-amplify-using-aws-cloudformation-resources"></a>

[Méthodes d'authentification](https://developer.atlassian.com/bitbucket/api/2/reference/meta/authentication) (documentation Atlassian)

## Pièces jointes
<a name="attachments-24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/24ae87ed-aa5d-4114-9c5d-bdcb4d40a78b/attachments/attachment.zip)

# Lancez un CodeBuild projet sur des comptes AWS à l'aide de Step Functions et d'une fonction proxy Lambda
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function"></a>

*Richard Milner-Watts et Amit Anjarlekar, Amazon Web Services*

## Résumé
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-summary"></a>

Ce modèle montre comment lancer un CodeBuild projet AWS de manière asynchrone sur plusieurs comptes AWS à l'aide d'AWS Step Functions et d'une fonction de proxy AWS Lambda. Vous pouvez utiliser l'exemple de machine à états Step Functions du modèle pour tester le succès de votre CodeBuild projet.

CodeBuild vous aide à lancer des tâches opérationnelles à l'aide de l'interface de ligne de commande AWS (AWS CLI) à partir d'un environnement d'exécution entièrement géré. Vous pouvez modifier le comportement de votre CodeBuild projet au moment de l'exécution en remplaçant les variables d'environnement. En outre, vous pouvez l'utiliser CodeBuild pour gérer les flux de travail. Pour plus d'informations, consultez [Service Catalog Tools](https://service-catalog-tools-workshop.com/tools.html) sur le site Web d'AWS Workshop et [Schedule jobs in Amazon RDS for PostgreSQL using AWS et EventBridge Amazon sur le blog de base de données CodeBuild AWS](https://aws.amazon.com/blogs/database/schedule-jobs-in-amazon-rds-for-postgresql-using-aws-codebuild-and-amazon-eventbridge/).

## Conditions préalables et limitations
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-prereqs"></a>

**Conditions préalables**
+ Deux comptes AWS actifs : un compte source pour appeler une fonction proxy Lambda avec Step Functions et un compte cible pour créer un CodeBuild exemple de projet à distance

**Limites**
+ Ce modèle ne peut pas être utilisé pour copier [des artefacts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html) entre comptes.

## Architecture
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-architecture"></a>

Le schéma suivant montre l'architecture créée par ce modèle.

![\[Schéma d'architecture du lancement d'un CodeBuild projet sur plusieurs comptes AWS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/857ba3ae-eb9a-4d6b-b73e-e596f41c8cb8.png)


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

1. La machine d'état Step Functions analyse la carte d'entrée fournie et invoque la fonction proxy Lambda (`codebuild-proxy-lambda`) pour chaque compte, région et projet que vous avez définis.

1. La fonction de proxy Lambda utilise AWS Security Token Service (AWS STS) pour assumer un rôle de proxy IAM (`codebuild-proxy-role`), qui est associé à une politique IAM (`codebuild-proxy-policy`) dans le compte cible.

1. À l'aide du rôle assumé, la fonction Lambda lance le CodeBuild projet et renvoie l'ID de CodeBuild tâche. La machine à états Step Functions boucle et interroge la CodeBuild tâche jusqu'à ce qu'elle reçoive un statut de réussite ou d'échec.

La logique de la machine à états est illustrée dans l'image suivante.

![\[Flux de travail de la machine à états Step Functions\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/809a5716-56e5-477c-aac6-02243675a2f2/images/4729bbfc-79ad-455d-a85a-b96cce00f432.png)


**Pile technologique**
+ AWS CloudFormation
+ CodeBuild
+ IAM
+ Lambda
+ Step Functions
+ X-Ray

## Outils
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [AWS CloudFormation Designer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-json-editor.html) fournit un éditeur JSON et YAML intégré qui vous permet de visualiser et de modifier des CloudFormation modèles.
+ [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 Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) est un service d'orchestration sans serveur qui vous permet de combiner les fonctions AWS Lambda et d'autres services AWS pour créer des applications critiques pour l'entreprise.
+ [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) vous aide à collecter des données sur les demandes traitées par votre application et fournit des outils que vous pouvez utiliser pour visualiser, filtrer et obtenir des informations sur ces données afin d'identifier les problèmes et les opportunités d'optimisation.

**Code**

L'exemple de code pour ce modèle est disponible dans le référentiel GitHub [Cross Account CodeBuild Proxy](https://github.com/aws-samples/cross-account-codebuild-proxy). Ce modèle utilise la bibliothèque AWS Lambda Powertools for Python pour fournir des fonctionnalités de journalisation et de suivi. Pour plus d'informations sur cette bibliothèque et ses utilitaires, consultez [Powertools for AWS Lambda (Python)](https://docs.powertools.aws.dev/lambda/python/latest/).

## Bonnes pratiques
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-best-practices"></a>

1. Ajustez les valeurs du temps d'attente dans la machine d'état Step Function afin de minimiser les demandes d'interrogation concernant le statut du travail. Utilisez le temps d'exécution prévu pour le CodeBuild projet.

1. Ajustez la `MaxConcurrency` propriété de la carte dans Step Functions pour contrôler le nombre de CodeBuild projets pouvant être exécutés en parallèle.

1. Si nécessaire, consultez l'exemple de code pour connaître l'état de préparation à la production. Déterminez quelles données peuvent être enregistrées par la solution et déterminez si le CloudWatch chiffrement Amazon par défaut est suffisant.

## Épopées
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-epics"></a>

### Créez la fonction de proxy Lambda et le rôle IAM associé dans le compte source
<a name="create-the-lambda-proxy-function-and-associated-iam-role-in-the-source-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Enregistrez le compte AWS IDs. | Un compte AWS IDs est requis pour configurer l'accès entre les comptes.Enregistrez l'ID de compte AWS pour vos comptes source et cible. Pour plus d'informations, consultez la section [Trouver votre identifiant de compte AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId) dans la documentation IAM. | AWS DevOps | 
| Téléchargez les CloudFormation modèles AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Dans les CloudFormation modèles AWS, `<SourceAccountId>` il s'agit de l'ID de compte AWS du compte source et `<TargetAccountId>` de l'ID de compte AWS du compte cible. | AWS DevOps | 
| Créez et déployez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html)Vous devez créer la CloudFormation pile AWS pour la fonction proxy Lambda avant de créer des ressources dans des comptes cibles. Lorsque vous créez une politique de confiance dans un compte cible, le rôle IAM est traduit du nom du rôle en identifiant interne. C'est pourquoi le rôle IAM doit déjà exister. | AWS DevOps | 
| Confirmez la création de la fonction proxy et de la machine à états. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Créez un rôle IAM dans le compte cible et lancez un exemple CodeBuild de projet
<a name="create-an-iam-role-in-the-target-account-and-launch-a-sample-codebuild-project"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et déployez la CloudFormation pile AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Vérifiez la création de l'exemple de CodeBuild projet.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

### Testez la fonction de proxy Lambda entre comptes
<a name="test-the-cross-account-lambda-proxy-function"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez la machine à états. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 
| Validez les variables d'environnement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | AWS DevOps | 

## Résolution des problèmes
<a name="launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| L'exécution de Step Functions prend plus de temps que prévu. | Ajustez les `MaxConcurrency` propriétés de la carte dans la machine d'état Step Function pour contrôler le nombre de CodeBuild projets pouvant être exécutés en parallèle. | 
| L'exécution des CodeBuild travaux prend plus de temps que prévu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/launch-a-codebuild-project-across-aws-accounts-using-step-functions-and-a-lambda-proxy-function.html) | 

# Gérez le basculement multi-AZ pour les clusters EMR à l'aide d'Application Recovery Controller
<a name="multi-az-failover-spark-emr-clusters-arc"></a>

*Aarti Rajput, Ashish Bhatt, Neeti Mishra et Nidhi Sharma, Amazon Web Services*

## Résumé
<a name="multi-az-failover-spark-emr-clusters-arc-summary"></a>

Ce modèle propose une stratégie de reprise après sinistre efficace pour les charges de travail Amazon EMR afin de garantir la haute disponibilité et la cohérence des données dans plusieurs zones de disponibilité au sein d'une même zone. Région AWS La conception utilise [Amazon Application Recovery Controller](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) et un [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) pour gérer les opérations de basculement et la distribution du trafic pour un cluster EMR basé sur Apache Spark. 

Dans des conditions standard, la zone de disponibilité principale héberge un cluster EMR actif et une application dotée de fonctionnalités complètes read/write . En cas de défaillance inattendue d'une zone de disponibilité, le trafic est automatiquement redirigé vers la zone de disponibilité secondaire, où un nouveau cluster EMR est lancé. Les deux zones de disponibilité accèdent à un bucket Amazon Simple Storage Service (Amazon S3) partagé via des points de terminaison de [passerelle dédiés](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html), ce qui garantit une gestion cohérente des données. Cette approche minimise les temps d'arrêt et permet une restauration rapide des charges de travail critiques liées au Big Data en cas de défaillance de la zone de disponibilité. La solution est utile dans des secteurs tels que la finance ou le commerce de détail, où les analyses en temps réel sont cruciales.

## Conditions préalables et limitations
<a name="multi-az-failover-spark-emr-clusters-arc-prereqs"></a>

**Conditions préalables**
+ Un actif [Compte AWS](https://aws.amazon.com/resources/create-account/)
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) sur Amazon Elastic Compute Cloud (Amazon) EC2
+ Accès depuis le nœud principal du cluster EMR à Amazon S3.
+ AWS Infrastructure multi-AZ

**Limites**
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

**Versions du produit**
+ [Amazon EMR 6.x et versions ultérieures](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)

## Architecture
<a name="multi-az-failover-spark-emr-clusters-arc-architecture"></a>

**Pile technologique cible**
+ Cluster Amazon EMR
+ Amazon Application Recovery Controller
+ Application Load Balancer
+ Compartiment Amazon S3
+ Points de terminaison de passerelle pour Amazon S3

**Architecture cible**

![\[Architecture pour un mécanisme de restauration automatique avec Application Recovery Controller.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e5ecdb66-0eef-4a6a-8367-982a55104748/images/e982d580-13db-4bdd-9f6b-6400d7c31c01.png)


Cette architecture assure la résilience des applications en utilisant plusieurs zones de disponibilité et en mettant en œuvre un mécanisme de restauration automatique via l'Application Recovery Controller.

1. L'Application Load Balancer achemine le trafic vers l'environnement Amazon EMR actif, qui est généralement le cluster EMR principal de la zone de disponibilité principale.

1. Le cluster EMR actif traite les demandes d'application et se connecte à Amazon S3 via son point de terminaison dédié à la passerelle Amazon S3 pour les opérations de lecture et d'écriture.

1. Amazon S3 sert de référentiel de données central et est potentiellement utilisé comme point de contrôle ou comme stockage partagé entre des clusters EMR. Les clusters EMR préservent la cohérence des données lorsqu'ils écrivent directement sur Amazon S3 via le `s3://` protocole et le [système de fichiers EMR (EMRFS).](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-fs.html) 

1. Application Recovery Controller surveille en permanence l'état de santé de la zone de disponibilité principale et gère automatiquement les opérations de basculement lorsque cela est nécessaire.

1. Si l'Application Recovery Controller détecte une défaillance dans le cluster EMR principal, il prend les mesures suivantes :
   + Lance le processus de basculement vers le cluster EMR secondaire dans la zone de disponibilité 2.
   + Met à jour les configurations de routage pour diriger le trafic vers le cluster secondaire.

## Outils
<a name="multi-az-failover-spark-emr-clusters-arc-tools"></a>

**Services AWS**
+ [Amazon Application Recovery Controller](https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html) vous**** aide à gérer et à coordonner la restauration de vos applications dans toutes Régions AWS les zones de disponibilité. Ce service simplifie le processus et améliore la fiabilité de la restauration des applications en réduisant les étapes manuelles requises par les outils et processus traditionnels.
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) fonctionne au niveau de la couche application, qui est la septième couche du modèle d'interconnexion des systèmes ouverts (OSI). Il répartit le trafic applicatif entrant sur plusieurs cibles, telles que EC2 les instances, dans plusieurs zones de disponibilité. La disponibilité de votre application s'en trouve accrue.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) est une plateforme de mégadonnées qui fournit le traitement des données, l'analyse interactive et l'apprentissage automatique pour les frameworks open source tels qu'Apache Spark, Apache Hive et Presto.
+ [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.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) fournit une interface de service Web simple que vous pouvez utiliser pour stocker et récupérer n'importe quel volume de données, à tout moment et en tout lieu. Grâce à ce service, vous pouvez facilement créer des applications qui utilisent le stockage cloud natif.
+ Les [points de terminaison de passerelle pour Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) sont des passerelles que vous spécifiez dans votre table de routage pour accéder à Amazon S3 depuis votre cloud privé virtuel (VPC) via le réseau. AWS 

## Bonnes pratiques
<a name="multi-az-failover-spark-emr-clusters-arc-best-practices"></a>
+ Suivez les [AWS meilleures pratiques en matière de sécurité, d'identité et de conformité](https://aws.amazon.com/architecture/security-identity-compliance/?cards-all.sort-by=%5b…%5d.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all) afin de garantir une architecture robuste et sécurisée.
+ Alignez l'architecture avec le [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/).
+ Utilisez Amazon S3 Access Grants pour gérer l'accès à Amazon S3 depuis votre cluster EMR basé sur Spark. Pour plus de détails, consultez le billet de blog [Use Amazon EMR with S3 Access Grants to Spark Access to Amazon](https://aws.amazon.com/blogs/big-data/use-amazon-emr-with-s3-access-grants-to-scale-spark-access-to-amazon-s3/) S3.
+ [Améliorez les performances de Spark avec Amazon S3](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-performance.html).

## Épopées
<a name="multi-az-failover-spark-emr-clusters-arc-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Connectez-vous au AWS Management Console. | Connectez-vous au en [AWS Management Console](https://console.aws.amazon.com/)tant qu'utilisateur IAM. Pour obtenir des instructions, consultez la [AWS documentation](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-iam-user-sign-in-tutorial.html). | AWS DevOps | 
| Configurez le AWS CLI. **** | Installez le AWS CLI ou mettez-le à jour vers la dernière version afin de pouvoir interagir avec Services AWS le AWS Management Console. Pour obtenir des instructions, consultez la [AWS CLI documentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). | AWS DevOps | 

### Déployez une application Spark sur votre cluster EMR
<a name="deploy-a-spark-application-on-your-emr-cluster"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Créez un cluster EMR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Configurez les paramètres de sécurité pour le cluster EMR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Connectez-vous au cluster EMR. | Connectez-vous au nœud principal du cluster EMR via SSH à l'aide de la paire de clés fournie.Assurez-vous que le fichier de paires de clés se trouve dans le même répertoire que votre application.Exécutez les commandes suivantes pour définir les autorisations correctes pour la paire de clés et établir la connexion SSH :<pre>chmod 400 <key-pair-name><br />ssh -i ./<key-pair-name> hadoop@<master-node-public-dns></pre> | AWS DevOps | 
| Déployez l'application Spark. | Après avoir établi la connexion SSH, vous serez dans la console Hadoop.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 
| Surveillez l'application Spark. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

### Transférer le trafic vers une autre zone de disponibilité
<a name="shift-traffic-to-another-availability-zone"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un Application Load Balancer. | Configurez le groupe cible qui achemine le trafic entre les nœuds principaux Amazon EMR déployés dans deux zones de disponibilité au sein d'un. Région AWSPour obtenir des instructions, consultez la section [Création d'un groupe cible pour votre Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) dans la documentation d'Elastic Load Balancing. | AWS DevOps | 
| Configurez le décalage zonal dans Application Recovery Controller. | Au cours de cette étape, vous allez utiliser la [fonction de changement de zone](https://docs.aws.amazon.com/r53recovery/latest/dg/arc-zonal-shift.html) d'Application Recovery Controller pour transférer le trafic vers une autre zone de disponibilité.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html)Pour utiliser le AWS CLI, consultez les [exemples d'utilisation du AWS CLI avec décalage de zone dans](https://docs.aws.amazon.com/r53recovery/latest/dg/getting-started-cli-zonalshift.html) la documentation d'Application Recovery Controller. | AWS DevOps | 
| Vérifiez la configuration et la progression du changement de zone. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/multi-az-failover-spark-emr-clusters-arc.html) | AWS DevOps | 

## Ressources connexes
<a name="multi-az-failover-spark-emr-clusters-arc-resources"></a>
+ AWS CLI commandes :
  + [create-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/create-cluster.html)
  + [describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/describe-cluster.html)
  + [arc-zonal-shift](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/arc-zonal-shift/index.html)
+ [Configuration des types d'instances de cluster Amazon EMR et meilleures pratiques pour les instances Spot (documentation](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html) Amazon EMR)
+ [Bonnes pratiques de sécurité dans l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentation IAM)
+ [Utiliser des profils d'instance](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) (documentation IAM)
+ [Utiliser le décalage de zone et le décalage automatique de zone pour restaurer les applications dans ARC](https://docs.aws.amazon.com/r53recovery/latest/dg/multi-az.html) (documentation Application Recovery Controller)

# Gérez les blue/green déploiements de microservices vers plusieurs comptes et régions à l'aide des services de code AWS et des clés multirégionales AWS KMS
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys"></a>

*Balaji Vedagiri, Vanitha Dontireddy, Ashish Kumar, Faisal Shahdad, Vivek Thangamuthu et Anand Krishna Varanasi, Amazon Web Services*

## Résumé
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-summary"></a>

Ce modèle décrit comment déployer une application de microservices globale à partir d'un compte AWS central vers plusieurs comptes de charge de travail et régions conformément à une stratégie de blue/green déploiement. Le modèle prend en charge les éléments suivants :
+ Les logiciels sont développés dans un compte central, tandis que les charges de travail et les applications sont réparties sur plusieurs comptes et régions AWS.
+ Une seule clé multirégionale du système de gestion des clés AWS (AWS KMS) est utilisée pour le chiffrement et le déchiffrement afin de couvrir la reprise après sinistre.
+ La clé KMS est spécifique à une région et doit être maintenue ou créée dans trois régions différentes pour les artefacts du pipeline. Une clé multirégionale KMS permet de conserver le même identifiant de clé dans toutes les régions.
+ Le modèle de branchement du flux de travail Git est implémenté avec deux branches (development et main) et le code est fusionné à l'aide de pull requests (PRs). La fonction AWS Lambda déployée à partir de cette pile crée un PR entre la branche de développement et la branche principale. La fusion des relations publiques avec la succursale principale lance un CodePipeline pipeline AWS, qui orchestre le flux d'intégration continue et de livraison continue (CI/CD) et déploie les stacks sur tous les comptes.

Ce modèle fournit un exemple de configuration d'infrastructure sous forme de code (IaC) via AWS CloudFormation Stacks pour illustrer ce cas d'utilisation. Le blue/green déploiement de microservices est mis en œuvre à l'aide d'AWS CodeDeploy.

## Conditions préalables et limitations
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-prereqs"></a>

**Conditions préalables**
+ Quatre comptes AWS actifs :
  + Un compte d'outils pour gérer le pipeline de code et maintenir le CodeCommit référentiel AWS.
  + Trois comptes de charge de travail (test) pour déployer la charge de travail des microservices.
+ Ce modèle utilise les régions suivantes. Si vous souhaitez utiliser d'autres régions, vous devez apporter les modifications appropriées aux piles multirégionales AWS CodeDeploy et AWS KMS.
  + Compte Tools (AWS CodeCommit) : `ap-south-1`
  + Compte de charge de travail (test) 1 : `ap-south-1`
  + Compte de charge de travail (test) 2 : `eu-central-1`
  + Compte de charge de travail (test) 3 : `us-east-1`
+ Trois compartiments Amazon Simple Storage Service (Amazon S3) pour les régions de déploiement de chaque compte de charge de travail. (Ils sont appelés`S3BUCKETNAMETESTACCOUNT1`, `S3BUCKETNAMETESTACCOUNT2 ` et `S3BUCKETNAMETESTACCOUNT3 ` plus tard dans ce modèle.)

  Par exemple, vous pouvez créer ces compartiments dans des comptes et des régions spécifiques avec des noms de compartiments uniques comme suit (remplacez *xxxx* par un nombre aléatoire) :

  ```
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-xxxx-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-xxxx-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-xxxx-us-east-1 --region us-east-1
  
  #Example
  ##In Test Account 1
  aws s3 mb s3://ecs-codepipeline-18903-ap-south-1 --region ap-south-1
  ##In Test Account 2
  aws s3 mb s3://ecs-codepipeline-18903-eu-central-1 --region eu-central-1
  ##In Test Account 3
  aws s3 mb s3://ecs-codepipeline-18903-us-east-1 --region us-east-1
  ```

**Limites**

Le modèle utilise AWS CodeBuild et d'autres fichiers de configuration pour déployer un exemple de microservice. Si vous avez un autre type de charge de travail (par exemple, sans serveur), vous devez mettre à jour toutes les configurations pertinentes.

## Architecture
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-architecture"></a>

**Pile technologique cible**
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodeBuild
+ AWS CodeDeploy
+ AWS CodePipeline

**Architecture cible**

![\[Architecture cible pour le déploiement de microservices sur plusieurs comptes et régions\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a144c977-6823-4b08-a215-fae779b3ce7c/images/eedfabdb-f266-4190-b271-5caf7ac9b47b.png)


**Automatisation et mise à l'échelle**

La configuration est automatisée à l'aide de modèles de CloudFormation pile AWS (iAc). Il peut être facilement adapté à plusieurs environnements et comptes.

## Outils
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-tools"></a>

**Services AWS**
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS.
+ [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.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatise les déploiements vers Amazon Elastic Compute Cloud (Amazon EC2) ou des instances sur site, les fonctions AWS Lambda ou les services Amazon Elastic Container Service (Amazon ECS).
+ [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à 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 Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [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.

**Outils supplémentaires**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué open source qui fonctionne avec le CodeCommit référentiel AWS.
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs. Ce modèle utilise Docker pour créer et tester des images de conteneurs localement.
+ [cfn-lint](https://github.com/aws-cloudformation/cfn-lint) et [cfn-nag](https://github.com/stelligent/cfn_nag) sont des outils open source qui vous aident à examiner les CloudFormation piles pour détecter d'éventuelles erreurs ou problèmes de sécurité.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel [ Blue/Green des déploiements GitHub mondiaux dans plusieurs régions et comptes](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline).

## Épopées
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-epics"></a>

### Configurer les variables d’environnement
<a name="set-up-environment-variables"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exportez les variables d'environnement pour le déploiement de la CloudFormation pile. | Définissez les variables d'environnement qui seront utilisées comme entrée dans les CloudFormation piles ultérieurement dans ce modèle.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Package et déploiement des CloudFormation stacks pour l'infrastructure
<a name="package-and-deploy-the-cloudformation-stacks-for-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Clonez le [référentiel d'échantillons](https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline) dans un nouveau référentiel sur votre lieu de travail :<pre>##In work location<br />git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git</pre> | AWS DevOps | 
| Package des ressources Cloudformation. | Au cours de cette étape, vous devez empaqueter les artefacts locaux CloudFormation auxquels les modèles font référence pour créer les ressources d'infrastructure requises pour des services tels qu'Amazon Virtual Private Cloud (Amazon VPC) et Application Load Balancer.Les modèles sont disponibles dans le `Infra` dossier du référentiel de code.<pre>##In TestAccount1##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT1REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT1}.template</pre><pre>##In TestAccount2##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT2REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT2}.template</pre><pre>##In TestAccount3##<br />aws cloudformation package \<br />    --template-file mainInfraStack.yaml \<br />    --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \<br />    --s3-prefix infraStack \<br />    --region $TESTACCOUNT3REGION \<br />    --output-template-file infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Validez les modèles de package. | Validez les modèles de package :<pre>aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT1}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT2}.template<br /><br />aws cloudformation validate-template \<br />    --template-body file://infrastructure_${TESTACCOUNT3}.template</pre> | AWS DevOps | 
| Déployez les fichiers du package dans les comptes de charge de travail, | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Envoyez un exemple d'image et redimensionnez Amazon ECS
<a name="push-a-sample-image-and-scale-amazon-ecs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Transférez un exemple d'image dans le référentiel Amazon ECR. | Transférez un exemple d'image (NGINX) dans le référentiel Amazon Elastic Container Registry (Amazon ECR) `web` nommé (tel que défini dans les paramètres). Vous pouvez personnaliser l'image selon vos besoins.Pour vous connecter et définir les informations d'identification permettant de transférer une image vers Amazon ECR, suivez les instructions de la documentation [Amazon ECR.](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)Les commandes sont les suivantes :<pre>  docker pull nginx<br />  docker images<br />  docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest<br />  docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag </pre> | AWS DevOps | 
| Faites évoluer Amazon ECS et vérifiez l'accès. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Configurer les services et les ressources de code
<a name="set-up-code-services-and-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un CodeCommit référentiel dans le compte Tools. | Créez un CodeCommit référentiel dans le compte d'outils à l'aide du `codecommit.yaml` modèle, qui se trouve dans le `code` dossier du GitHub référentiel. Vous ne devez créer ce référentiel que dans la seule région où vous prévoyez de développer le code.<pre>aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides  CodeCommitReponame=$CODECOMMITREPONAME \<br />ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml  --region $TOOLSACCOUNTREGION \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Créez un compartiment S3 pour gérer les artefacts générés par CodePipeline. | Créez un compartiment S3 pour gérer les artefacts CodePipeline générés à l'aide du `pre-reqs-bucket.yaml` modèle, qui se trouve dans le `code` dossier du GitHub référentiel. Les piles doivent être déployées dans les trois comptes de charge de travail (test) et d'outils et dans les régions.<pre>aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \<br />TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \<br />TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \<br />--template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Configurez une clé KMS multirégionale. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
| Configurez le CodeBuild projet dans le compte Outils. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 
| Configurez CodeDeploy dans les comptes de charge de travail. | Utilisez le `codedeploy.yaml` modèle figurant dans le `code` dossier du GitHub référentiel pour le configurer CodeDeploy dans les trois comptes de charge de travail. La sortie de `mainInfraStack` inclut les Amazon Resource Names (ARNs) du cluster Amazon ECS et l'écouteur Application Load Balancer.Les valeurs des piles d'infrastructure sont déjà exportées, elles sont donc importées par les modèles de CodeDeploy pile.<pre>##WorkloadAccount1##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides  ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount2##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM<br /><br />##WorkloadAccount3##<br />aws cloudformation deploy --stack-name ecscodedeploystack \<br />--parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \<br />--template-file codedeploy.yaml  --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### Configuration CodePipeline dans le compte d'outils
<a name="set-up-codepipeline-in-the-tools-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un pipeline de code dans le compte Tools. | Dans le compte des outils, exécutez la commande :<pre>aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides  \<br />TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \<br />TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \<br />TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \<br />CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \<br />CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \<br />--template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 
| Fournissez un accès CodePipeline et des CodeBuild rôles dans la politique clé d'AWS KMS et dans la politique de compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | AWS DevOps | 

### Appelez et testez le pipeline
<a name="call-and-test-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Transférez les modifications au CodeCommit référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

### Nettoyage
<a name="clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez toutes les ressources déployées. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) |  | 

## Résolution des problèmes
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les modifications que vous avez apportées au référentiel ne sont pas déployées. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys.html) | 

## Ressources connexes
<a name="manage-blue-green-deployments-of-microservices-to-multiple-accounts-and-regions-by-using-aws-code-services-and-aws-kms-multi-region-keys-resources"></a>
+ [Transférer une image Docker](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) (documentation Amazon ECR)
+ [Connectez-vous à un CodeCommit référentiel AWS](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html) ( CodeCommit documentation AWS)
+ [Résolution des problèmes liés à AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html) ( CodeBuild documentation AWS)

# Surveillez les référentiels Amazon ECR pour détecter les autorisations génériques à l'aide d'AWS et d'AWS Config CloudFormation
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config"></a>

*Vikrant Telkar, Wassim Benhallam et Sajid Momin, Amazon Web Services*

## Résumé
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-summary"></a>

Sur le cloud Amazon Web Services (AWS), Amazon Elastic Container Registry (Amazon ECR) est un service géré de registre d'images de conteneurs qui prend en charge les référentiels privés dotés d'autorisations basées sur les ressources à l'aide d'AWS Identity and Access Management (IAM).

IAM prend en charge le caractère générique `*` « » dans les attributs de ressource et d'action, ce qui facilite le choix automatique de plusieurs éléments correspondants. Dans votre environnement de test, vous pouvez autoriser tous les utilisateurs AWS authentifiés à accéder à un référentiel Amazon ECR en utilisant l'[autorisation `ecr:*` générique](https://docs.aws.amazon.com/lambda/latest/operatorguide/wildcard-permissions-iam.html) dans un élément principal de votre déclaration de politique de [dépôt](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html). L'autorisation `ecr:*` générique peut être utile lors du développement et des tests dans des comptes de développement qui ne peuvent pas accéder à vos données de production.

Cependant, vous devez vous assurer que l'autorisation `ecr:*` générique n'est pas utilisée dans vos environnements de production car elle peut entraîner de graves failles de sécurité. L'approche de ce modèle vous aide à identifier les référentiels Amazon ECR qui contiennent l'autorisation `ecr:*` générique dans les déclarations de politique relatives aux référentiels.   Le modèle fournit des étapes et un CloudFormation modèle AWS pour créer une règle personnalisée dans AWS Config. Une fonction AWS Lambda surveille ensuite les déclarations de politique de votre référentiel Amazon ECR pour `ecr:*` détecter les autorisations génériques. S'il trouve des déclarations de politique de dépôt non conformes, Lambda demande à AWS Config d'envoyer un événement à EventBridge EventBridge Amazon, puis lance une rubrique Amazon Simple Notification Service (Amazon SNS). La rubrique SNS vous informe par e-mail des déclarations de politique de dépôt non conformes.

## Conditions préalables et limitations
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Interface de ligne de commande AWS (AWS CLI), installée et configurée. Pour plus d'informations à ce sujet, consultez la section [Installation, mise à jour et désinstallation de l'interface de ligne de commande AWS dans la](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) documentation de l'interface de ligne de commande AWS.
+ Un référentiel Amazon ECR existant avec une déclaration de politique jointe, installé et configuré dans votre environnement de test. Pour plus d'informations à ce sujet, consultez les [sections Création d'un référentiel privé](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) et [Définition d'une déclaration de politique de dépôt](https://docs.aws.amazon.com/AmazonECR/latest/userguide/set-repository-policy.html) dans la documentation Amazon ECR.
+ AWS Config, configuré dans votre région AWS préférée. Pour plus d'informations à ce sujet, consultez [Getting started with AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html) dans la documentation AWS Config.
+ Le `aws-config-cloudformation.template` fichier (joint), téléchargé sur votre ordinateur local.

 

**Limites**
+ La solution de ce modèle est régionale et vos ressources doivent être créées dans la même région. 

## Architecture
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-architecture"></a>

Le schéma suivant montre comment AWS Config évalue les déclarations de politique du référentiel Amazon ECR. 

![\[AWS Config workflow with Lambda, Amazon ECR, EventBridge, SNS, and email notification components.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/images/49bbf14b-0a18-4d4a-86ab-162d37708e01.png)


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

1. AWS Config initie une règle personnalisée. 

1. La règle personnalisée invoque une fonction Lambda pour évaluer la conformité des déclarations de politique du référentiel Amazon ECR. La fonction Lambda identifie ensuite les déclarations de politique de référentiel non conformes.

1. La fonction Lambda envoie le statut de non-conformité à AWS Config.

1. AWS Config envoie un événement à EventBridge.

1. EventBridge publie les notifications de non-conformité sur une rubrique SNS.

1. Amazon SNS envoie une alerte par e-mail à vous ou à un utilisateur autorisé.

**Automatisation et mise à l'échelle**

La solution de ce modèle peut surveiller un certain nombre de déclarations de politique relatives au référentiel Amazon ECR, mais toutes les ressources que vous souhaitez évaluer doivent être créées dans la même région.

## Outils
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-tools"></a>
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) — AWS vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs comptes AWS et régions AWS.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) — AWS Config fournit une vue détaillée de la configuration des ressources AWS dans votre compte AWS. Elle indique comment les ressources sont liées entre elles et comment elles ont été configurées dans le passé, pour que vous puissiez observer comment les configurations et les relations changent au fil du temps.
+ [Amazon ECR****](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) —**** Amazon Elastic Container Registry (Amazon ECR) est un service de registre d'images de conteneurs géré par AWS qui est sécurisé, évolutif et fiable. Amazon ECR prend en charge les référentiels privés avec des autorisations basées sur les ressources à l'aide d' IAM.                                 
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) — Amazon EventBridge est un service de bus d'événements sans serveur que vous pouvez utiliser pour connecter vos applications à des données provenant de diverses sources. EventBridge fournit un flux de données en temps réel provenant de vos applications, de vos applications SaaS et des services AWS à des cibles telles que les fonctions AWS Lambda, les points de terminaison d'invocation HTTP utilisant des destinations d'API ou les bus d'événements d'autres comptes.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) — AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous payez uniquement le temps de calcul que vous utilisez. Vous n'exposez aucuns frais quand votre code n'est pas exécuté.
+ [Amazon SNS —](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Amazon Simple Notification Service (Amazon SNS) coordonne et gère la distribution ou l'envoi de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail. Les abonnés reçoivent tous les messages publiés dans les rubriques auxquelles ils sont abonnés, et tous les abonnés à une rubrique reçoivent les mêmes messages. 

**Code**

Le code de ce modèle est disponible dans le `aws-config-cloudformation.template` fichier (joint).

## Épopées
<a name="monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config-epics"></a>

### Création de la CloudFormation pile AWS
<a name="create-the-aws-cloudformation-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la CloudFormation pile AWS. | Créez une CloudFormation pile AWS en exécutant la commande suivante dans l'interface de ligne de commande AWS :<pre>$ aws cloudformation create-stack --stack-name=AWSConfigECR \<br />    --template-body  file://aws-config-cloudformation.template \<br />    --parameters ParameterKey=<email>,ParameterValue=<myemail@example.com> \<br />    --capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps | 

### Testez la règle personnalisée AWS Config
<a name="test-the-aws-config-custom-rule"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez la règle personnalisée AWS Config. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/monitor-amazon-ecr-repositories-for-wildcard-permissions-using-aws-cloudformation-and-aws-config.html) | AWS DevOps | 

## Pièces jointes
<a name="attachments-01bbf5f8-27aa-4c64-9a03-7fcccc0955b8"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/01bbf5f8-27aa-4c64-9a03-7fcccc0955b8/attachments/attachment.zip)

# Optimisez les déploiements multicomptes sans serveur en utilisant les flux de travail et AWS CDK Actions GitHub
<a name="optimize-multi-account-serverless-deployments"></a>

*Sarat Chandra Pothula et VAMSI KRISHNA SUNKAVALLI, Amazon Web Services*

## Résumé
<a name="optimize-multi-account-serverless-deployments-summary"></a>

Organisations qui déploient une infrastructure sans serveur sur plusieurs Comptes AWS environnements sont souvent confrontées à des défis tels que la duplication de code, les processus manuels et les pratiques incohérentes. La solution de ce modèle montre comment utiliser les flux de travail réutilisables AWS Cloud Development Kit (AWS CDK) in Go et GitHub Actions pour rationaliser la gestion de l'infrastructure sans serveur multi-comptes. Cette solution montre comment définir les ressources cloud sous forme de code, mettre en œuvre des processus de integration/continuous déploiement continu standardisés (CI/CD) et créer des composants modulaires et réutilisables. 

En utilisant ces outils, les entreprises peuvent gérer efficacement les ressources entre comptes, mettre en œuvre des pipelines de déploiement cohérents et simplifier les architectures sans serveur complexes. Cette approche améliore également la sécurité et la conformité en appliquant des pratiques normalisées d'utilisation Comptes AWS, ce qui permet d'améliorer la productivité et de réduire les erreurs lors du développement et du déploiement d'applications sans serveur.

## Conditions préalables et limitations
<a name="optimize-multi-account-serverless-deployments-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Gestion des identités et des accès AWS Les [rôles et autorisations](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html) (IAM) sont en place pour le processus de déploiement. Cela inclut les autorisations pour accéder aux référentiels Amazon Elastic Container Registry (Amazon ECR), AWS Lambda créer des fonctions et toute autre ressource requise sur l'ensemble de la cible. Comptes AWS
+ AWS Command Line Interface [(AWS CLI) version 2.9.11 ou ultérieure, [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ AWS Cloud Development Kit (AWS CDK) [version 2.114.1 ou ultérieure, [installée et démarrée](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install).](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap)
+ Go 1.22 ou version ultérieure, [installé.](https://go.dev/doc/install)
+ [Docker 24.0.6 ou version ultérieure, installé.](https://docs.docker.com/engine/install/)

**Limites**
+ **Compatibilité linguistique** — Go est un langage populaire pour les applications sans serveur. Cependant, outre Go, il AWS CDK prend en charge d'autres langages de programmation, notamment C\$1, Java, Python et TypeScript. Si votre organisation possède déjà des bases de code ou une expertise dans d'autres langages, vous devrez peut-être adapter ou apprendre Go pour utiliser pleinement la solution décrite dans le modèle.
+ **Courbe d'apprentissage** — L' AWS CDK adoption de flux de travail « Go » (s'il s'agit d'une nouveauté pour l'entreprise) et GitHub réutilisables peut impliquer une courbe d'apprentissage pour les développeurs et les DevOps équipes. Une formation et une documentation peuvent être nécessaires pour garantir une adoption harmonieuse et une utilisation efficace de ces technologies.

## Architecture
<a name="optimize-multi-account-serverless-deployments-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Architecture des flux de travail AWS CDK et GitHub Actions pour la gestion de l'infrastructure sans serveur multi-comptes.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/8d61917b-bd27-44fa-ae95-55358aaf8812/images/a4b36793-95c7-42f7-a92f-99b4722c9c64.png)


Cette solution exécute les étapes suivantes :

1. Le développeur clone le référentiel, crée une nouvelle branche et modifie le code de l'application dans son environnement local.

1. Le développeur valide ces modifications et envoie la nouvelle branche dans le GitHub référentiel.

1. Le développeur crée une pull request dans le GitHub référentiel, proposant de fusionner sa branche de fonctionnalité ou de nouvelle fonctionnalité dans la branche principale.

1. Cette pull request déclenche le flux de travail des GitHub actions d'intégration continue (CI). Les flux de travail CI et de déploiement continu (CD) de ce modèle utilisent des flux de travail réutilisables, qui sont des modèles modulaires prédéfinis qui peuvent être partagés et exécutés dans différents projets ou référentiels. Les flux de travail réutilisables favorisent la standardisation et l'efficacité CI/CD des processus.

1. Le flux de travail CI configure l'environnement nécessaire, génère une balise Docker pour l'image et crée l'image Docker à l'aide du code de l'application. 

1. Le flux de travail CI s'authentifie AWS en utilisant le rôle central Compte AWS GitHub OIDC. Pour les flux de travail CI, le rôle Compte AWS GitHub OIDC central utilise AWS Security Token Service (AWS STS) pour obtenir des informations d'identification temporaires. Ces informations d'identification permettent au rôle de créer et de transférer des images Docker vers le référentiel Amazon ECR de la centrale. Compte AWS

1. Le flux de travail CI envoie l'image Docker créée vers Amazon ECR.

1. Le flux de travail CI stocke la balise d'image dans le magasin de paramètres de Systems Manager.

1. Une fois le flux de travail CI terminé avec succès, la balise d'image Docker est sortie. 

1. Lors du déclenchement du flux de travail sur CD, le développeur saisit manuellement la balise d'image de l'image Docker qu'il souhaite déployer. Cette balise d'image correspond à la balise qui a été générée et envoyée à Amazon ECR pendant le flux de travail CI.

1. Le développeur déclenche manuellement le flux de travail sur CD, qui utilise le flux de travail réutilisable sur CD. 

1. Le flux de travail du CD s'authentifie à AWS l'aide du rôle central Compte AWS GitHub OIDC. Pour le flux de travail sur CD, AWS STS il est d'abord utilisé pour assumer le rôle central de l' Compte AWS GitHub OIDC. Ce rôle assume ensuite les rôles d'amorçage du CDK pour les déploiements de comptes cibles. 

1. Le flux de travail sur CD utilise le AWS CDK pour synthétiser des AWS CloudFormation modèles.

1. Le flux de travail CD déploie l'application sur la cible Compte AWS à l'aide de CDK deploy, en utilisant la balise image spécifiée manuellement pour la fonction Lambda.

## Outils
<a name="optimize-multi-account-serverless-deployments-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
+ [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 à travers Comptes AWS et Régions AWS. CloudFormation fait partie intégrante du processus de AWS CDK déploiement. Le CDK synthétise les CloudFormation modèles, puis les utilise CloudFormation pour créer ou mettre à jour les ressources de l' AWS environnement.
+ [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.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

**Autres outils**
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.
+ [Go](https://go.dev/doc/install) est un langage de programmation open source pris en charge par Google.

**Référentiel de code**

Le code de ce modèle est disponible dans le cicd-github-actions référentiel GitHub [aws-cdk-golang-serverless-](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions).

## Bonnes pratiques
<a name="optimize-multi-account-serverless-deployments-best-practices"></a>
+ **Conception modulaire** : organisez votre AWS CDK code en structures ou en piles modulaires et réutilisables, afin de promouvoir la réutilisation et la maintenabilité du code sur plusieurs comptes et projets.
+ **Séparation des préoccupations** — Séparez le code d'infrastructure du code d'application, ce qui permet un déploiement et une gestion indépendants de chaque composant.
+ **Gestion des versions et immuabilité** : traitez votre infrastructure comme du code (IaC) et utilisez Git pour le contrôle de version. Adoptez des principes d'infrastructure immuables en créant de nouvelles ressources au lieu de modifier les ressources existantes.
+ **Tests et validation** : mettez en œuvre des stratégies de test complètes, notamment des tests unitaires, des tests d'intégration et end-to-end des tests, afin de garantir l'exactitude et la fiabilité de votre AWS CDK code et de vos déploiements.
+ **Sécurité et conformité** : suivez les meilleures pratiques en matière de AWS sécurité, telles que l'accès au moindre privilège, les communications sécurisées et le chiffrement des données. Mettez en œuvre des contrôles de conformité et des mécanismes d'audit pour garantir le respect des politiques organisationnelles et des exigences réglementaires. Mettez en œuvre les meilleures pratiques de sécurité pour les images de conteneur, telles que l'analyse des vulnérabilités, l'application de la signature des images et le respect des exigences de conformité de votre entreprise.
+ **Surveillance et journalisation** : configurez des mécanismes de surveillance et de journalisation pour suivre l'état et les performances de vos applications et infrastructures sans serveur. Services AWS À utiliser comme Amazon CloudWatch AWS CloudTrail, et à des AWS X-Ray fins de surveillance et d'audit.
+ **Automatisation et CI/CD** : utilisez des flux de travail GitHub réutilisables et d'autres CI/CD outils pour automatiser les processus de création, de test et de déploiement, afin de garantir des déploiements cohérents et reproductibles sur plusieurs comptes.
+ **Gestion de l'environnement** : maintenez des environnements distincts (par exemple, développement, mise en scène et production). Mettez en œuvre des stratégies pour promouvoir les changements entre les environnements, en garantissant des tests et une validation appropriés avant les déploiements en production.
+ **Documentation et collaboration** — Documentez le code de votre infrastructure, les processus de déploiement et les meilleures pratiques pour faciliter le partage des connaissances et la collaboration au sein de votre équipe.
+ **Optimisation des coûts** — Mettez en œuvre des stratégies de surveillance et d'optimisation des coûts, telles que la rationalisation des ressources, l'utilisation de l'auto-scaling et la mise à profit de services d'optimisation des AWS coûts tels que et. AWS Budgets AWS Cost Explorer
+ **Reprise après sinistre et sauvegarde** : planifiez des scénarios de reprise après sinistre en mettant en œuvre des mécanismes de sauvegarde et de restauration pour vos applications sans serveur et vos ressources d'infrastructure.
+ **Amélioration continue** — Passez régulièrement en revue et mettez à jour vos pratiques, outils et processus afin de les aligner sur les meilleures pratiques, les recommandations de sécurité et les avancées technologiques les plus récentes de l'écosystème sans serveur.
+ **Améliorez le niveau de sécurité** : [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)à utiliser pour améliorer le niveau de sécurité de votre cloud privé virtuel (VPC) en configurant les points de terminaison VPC d'interface pour Amazon ECR et Parameter Store. AWS Lambda AWS Systems Manager 

## Épopées
<a name="optimize-multi-account-serverless-deployments-epics"></a>

### Configuration des environnements
<a name="set-up-the-environments"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un référentiel Amazon ECR dans le centre Compte AWS. | Pour partager des images de conteneurs entre plusieurs Comptes AWS, vous devez configurer l'accès entre comptes pour Amazon ECR. Tout d'abord, créez un référentiel Amazon ECR dans le centre Compte AWS.Pour créer un référentiel Amazon ECR, exécutez la commande suivante :<pre>aws ecr create-repository --repository-name sample-repo</pre>Dans une tâche ultérieure, accordez l'accès pull à l'autre Comptes AWS personne qui doit utiliser l'image du conteneur. | AWS DevOps | 
| Ajoutez des autorisations entre comptes au référentiel Amazon ECR. | Pour ajouter des autorisations entre comptes au référentiel Amazon ECR dans le système central Compte AWS, exécutez le code suivant :<pre>{<br />  "Version": "2008-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "LambdaECRImageRetrievalPolicy",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "Service": "lambda.amazonaws.com"<br />      },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />      "Condition": {<br />        "StringLike": {<br />          "aws:sourceArn": "arn:aws:lambda:<Target_Region>:<Target_Account_ID>:function:*"<br />        }<br />      }<br />    },<br />    {<br />      "Sid": "new statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<Target_Account_ID>:root"<br />        },<br />      "Action": [<br />        "ecr:BatchGetImage",<br />        "ecr:GetDownloadUrlForLayer",<br />      ],<br />    }<br />  ] <br />}</pre> | AWS DevOps | 
| Configurez un rôle pour le rôle GitHub OIDC dans la centrale Compte AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | AWS DevOps | 
| Démarrez l' AWS environnement dans la cible Comptes AWS. | Configurez un environnement CDK dans un environnement spécifique Région AWS qui permet Compte AWS les déploiements entre comptes à partir d'un compte central et applique le principe du moindre privilège au rôle d'exécution. CloudFormation Pour [démarrer un](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) AWS environnement, exécutez la commande suivante :<pre>cdk bootstrap aws://<Target_Account_ID>/<Target_Region> --trust <Central_Account_ID> --cloudformation-execution-policies arn:aws:iam::aws:policy/<Least_Privilege_Policy></pre> | AWS DevOps | 
| Accordez l'accès aux rôles Compte AWS OIDC centraux aux rôles Compte AWS bootstrap cibles. | Le bootstrap du CDK crée les rôles IAM suivants, conçus pour être assumés par le central au Compte AWS cours des différentes étapes du processus de déploiement du CDK :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Chaque rôle dispose d'autorisations spécifiques adaptées à son objectif, conformément au principe du moindre privilège. Le `Target_Account_ID` et `Target_Region` dans le nom de chaque rôle indique que ces rôles sont uniques selon Comptes AWS les différentes régions. Cette approche permet une identification et une gestion claires dans les configurations multi-comptes et multi-régions.<pre>Target Account CDK Bootstrap Roles<br />arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region><br />arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region></pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)Pour mettre à jour la politique d'autorisation pour le rôle OIDC dans la centrale Compte AWS, utilisez le code suivant :<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Action": "sts:AssumeRole",<br />            "Resource": [<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-deploy-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-file-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-image-publishing-role-<Target_Account_ID>-<Target_Region>",<br />                "arn:aws:iam::<Target_Account_ID>:role/cdk-lookup-role-<Target_Account_ID>-<Target_Region>"<br />            ]<br />        }<br />    ]<br /> }<br /></pre> | AWS DevOps | 

### Créez l'image Docker
<a name="build-the-docker-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel du projet. | Pour cloner le [GitHub dépôt](https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions) de ce modèle, exécutez la commande suivante :<pre>git clone https://github.com/aws-samples/aws-cdk-golang-serverless-cicd-github-actions.git</pre> | AWS DevOps | 
| Accédez au chemin Dockerfile. | Pour accéder au chemin Dockerfile, exécutez la commande suivante :<pre>cd lambda</pre> | AWS DevOps | 
| Authentifiez Docker avec Amazon ECR. | Amazon ECR nécessite un accès sécurisé à vos référentiels de conteneurs privés. En signant de cette manière, vous autorisez Docker sur votre machine ou CI/CD environnement local à interagir avec Amazon ECR en toute sécurité.Pour authentifier Docker auprès d'Amazon ECR, exécutez la commande suivante :<pre>aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com</pre>Révisez les espaces réservés `AWS_REGION` et `AWS_Account_ID` utilisez vos informations. | AWS DevOps | 
| Développez l’image Docker. | Pour créer l'image Docker, exécutez la commande suivante :<pre>docker build --platform linux/arm64 -t sample-app .</pre> | AWS DevOps | 
| Marquez et appuyez sur l'image Docker. | Pour étiqueter et transférer l'image Docker vers le référentiel Amazon ECR, exécutez les commandes suivantes :<pre>docker tag sample-app:latest <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre><pre>docker push <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<ECR_REPOSITORY>:<DOCKER_TAG></pre>Révisez les espaces réservés `AWS_Account_ID``AWS_REGION`,`ECR_REPOSITORY`, et `DOCKER_TAG` avec vos informations. | AWS DevOps | 

### Déployez l' AWS CDK application
<a name="deploy-the-cdk-app"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Synthétisez la pile CDK avec des variables spécifiques à l'environnement. | Pour générer le CloudFormation modèle de votre infrastructure tel que défini dans votre code CDK, exécutez la commande suivante :<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk synth</pre>Modifiez les espaces réservés suivants avec vos informations :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | AWS DevOps | 
| Déployez la pile CDK. | Pour déployer la pile CDK sur votre Compte AWS, exécutez la commande suivante. L'`--require-approval never`indicateur signifie que le CDK approuvera et exécutera automatiquement *toutes les* modifications. Cela inclut les modifications que le CDK signalerait normalement comme nécessitant une révision manuelle (telles que les modifications de la politique IAM ou la suppression de ressources). Assurez-vous que votre code CDK et votre CI/CD pipeline sont bien testés et sécurisés avant d'utiliser le `--require-approval never` drapeau dans les environnements de production.<pre>ENV=<environment> IMAGETAG=<image_tag> ECR_ARN=<ecr_repo_arn> cdk deploy --require-approval never</pre> | AWS DevOps | 

### Automatisez CI/CD à l'aide GitHub des workflows Actions
<a name="automate-ci-cd-using-github-actions-workflows"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une branche de fonctionnalités et ajoutez vos modifications. | Utilisez le référentiel cloné que vous avez créé précédemment, créez une branche de fonctionnalités, puis ajoutez vos modifications au code de l'application. Utilisez les commandes suivantes :<pre>git checkout -b <feature_branch><br />git add .<br />git commit -m "add your changes"<br />git push origin <feature_branch></pre>Voici des exemples de modifications :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html)GitHub Les actions utiliseront les flux de travail réutilisables et déclencheront les CI/CD pipelines. | AWS DevOps | 
| Fusionnez vos modifications. | Créez une pull request et fusionnez vos modifications avec la commande principale. | AWS DevOps | 

## Résolution des problèmes
<a name="optimize-multi-account-serverless-deployments-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| `AccessDenied`des erreurs lors du déploiement de ressources entre Comptes AWS, par exemple,`AccessDenied: User not authorized to perform: "sts:AssumeRole"`. | Pour résoudre ce problème, procédez comme suit pour vérifier les autorisations entre comptes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| Problèmes de compatibilité dus à des incohérences de version, par exemple une `undefined: awscdkStack` erreur avec une version obsolète du CDK. | Pour résoudre ce problème, procédez comme suit pour vérifier que vous utilisez les versions requises de AWS CDK and Go :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/optimize-multi-account-serverless-deployments.html) | 
| Défaillances du pipeline CI/CD, par exemple, en `Error: No such file or directory` raison d'une configuration YAML incorrecte ou de branches protégées`Permission denied`. | Pour résoudre les problèmes liés à la configuration GitHub des actions, vérifiez que les flux de travail réutilisables sont correctement référencés et configurés. | 

## Ressources connexes
<a name="optimize-multi-account-serverless-deployments-resources"></a>

**Ressources AWS**
+ [AWS Bonnes pratiques en matière de sécurité, d'identité et de conformité](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [AWS CDK Atelier](https://cdkworkshop.com/60-go.html)
+ [AWS Bibliothèque de kits de développement Cloud](https://pkg.go.dev/github.com/aws/aws-cdk-go/awscdk/v2)
+ [Création d'une fonction Lambda à l'aide d'une image de conteneur](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html)
+ [Identity and Access Management pour Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam.html)
+ [Utilisation du kit AWS CDK dans Go](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-go.html)

**Autres ressources**
+ [Configuration d'OpenID Connect dans Amazon Web Services (documentation](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)) GitHub 
+ [Documentation sur le Golang](https://golang.org/doc/)
+ [Démarrage rapide pour les GitHub actions](https://docs.github.com/en/actions/writing-workflows/quickstart) (GitHub documentation)
+ [Réutilisation des flux de travail](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) (GitHub documentation)

# Provisionner AWS Service Catalog des produits basés sur AWS CloudFormation des modèles à l'aide d' GitHub actions
<a name="provision-aws-service-catalog-products-using-github-actions"></a>

*Ashish Bhatt et Ruchika Modi, Amazon Web Services*

## Résumé
<a name="provision-aws-service-catalog-products-using-github-actions-summary"></a>

Ce modèle fournit aux organisations une approche rationalisée utilisant des [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)produits et des portefeuilles pour fournir des services standardisés et conformes à Services AWS toutes les équipes. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)permet de combiner les composants essentiels des produits et des portefeuilles Service Catalog pour le provisionnement de l'infrastructure réseau de base. AWS Cloud Ce modèle favorise également DevOps les pratiques en intégrant l'infrastructure en tant que code (IaC) dans les flux de travail de développement automatisés à l'aide d'[GitHub actions](https://github.com/features/actions).

AWS Service Catalog permet aux entreprises de créer et de gérer des services informatiques approuvés sur AWS, offrant des avantages tels que la standardisation, le contrôle centralisé, le provisionnement en libre-service et la gestion des coûts. En automatisant le déploiement des portefeuilles et des produits Service Catalog par le biais d' GitHub actions, les entreprises peuvent effectuer les opérations suivantes :
+ Réalisez des déploiements cohérents et reproductibles. 
+ Utilisez le contrôle de version pour IaC. 
+ Intégrez la gestion des ressources cloud aux flux de développement existants. 

Cette combinaison rationalise les opérations dans le cloud, renforce la conformité et accélère la fourniture de services approuvés tout en réduisant les erreurs manuelles et en améliorant l'efficacité globale.

## Conditions préalables et limitations
<a name="provision-aws-service-catalog-products-using-github-actions-prereqs"></a>

**Prérequis**
+ Un actif Compte AWS 
+ Accès au [GitHub référentiel](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ Compréhension de base de AWS CloudFormation et AWS Service Catalog
+ Un compartiment Amazon Simple Storage Service (Amazon S3) pour héberger des modèles CloudFormation 
+ Rôle Gestion des identités et des accès AWS (IAM) nommé `github-actions` qui est utilisé pour la connectivité entre et GitHub AWS

**Limites**
+ Le code réutilisable de ce modèle a été testé uniquement avec GitHub des actions.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**

La solution de ce modèle a été créée à l'aide des actions [GitHub Marketplace](https://github.com/marketplace) suivantes et de leurs versions respectives :
+ `actions/checkout@v4`
+ `aws-actions/configure-aws-credentials@v2`
+ `aws-actions/aws-cloudformation-github-deploy@v1.2.0`

## Architecture
<a name="provision-aws-service-catalog-products-using-github-actions-architecture"></a>

Le schéma suivant montre l'architecture de cette solution.

![\[Utiliser GitHub des actions pour approvisionner les produits Service Catalog sur la base CloudFormation de modèles.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/49f82fa7-0c74-4581-bf92-95505dca264c/images/a13c7b41-534e-4a9e-bdca-2974fa40a49a.png)


1. Les administrateurs ou les ingénieurs de plateforme CloudFormation transfèrent les modèles standardisés vers un GitHub référentiel, où ils sont conservés. Le GitHub dépôt contient également des flux de travail qui automatisent le provisionnement à l' AWS Service Catalog aide GitHub d'actions.

1. GitHub Actions déclenche un flux de travail qui se connecte à l' AWS Cloud aide d'un fournisseur OpenID Connect (OIDC) pour approvisionner Service Catalog.

1. Service Catalog contient le portefeuille et les produits que les développeurs peuvent directement utiliser pour fournir AWS des ressources standardisées. Ce modèle regroupe AWS des ressources telles que les clouds privés virtuels (VPCs), les sous-réseaux, les passerelles NAT et Internet, ainsi que les tables de routage.

1. Une fois que le développeur a créé un produit Service Catalog, Service Catalog le convertit en AWS ressources préconfigurées et standardisées. Les développeurs gagnent ainsi du temps car ils n'ont pas besoin de provisionner des ressources individuelles et de les configurer manuellement.

## Outils
<a name="provision-aws-service-catalog-products-using-github-actions-tools"></a>

**Services AWS**
+ [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 à travers Comptes AWS et Régions AWS. Il s'agit d'un service d'infrastructure sous forme de code (IaC) qui peut être facilement utilisé comme l'un des types de produits AWS Service Catalog.
+ [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 Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted.html)vous permet de gérer de manière centralisée le catalogue des services informatiques approuvés AWS. Les utilisateurs finaux peuvent déployer rapidement uniquement les services informatiques approuvés dont ils ont besoin, en respectant les contraintes définies par votre organisation.
+ [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**
+ [GitHub Actions](https://docs.github.com/en/actions) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [service-catalog-with-github-actions](https://github.com/aws-samples/service-catalog-with-github-actions). Le dépôt contient les fichiers intéressants suivants :
+ `github/workflows`:
  + `e2e-test.yaml`— Ce fichier appelle`workflow.yaml`, qui est le [flux de travail réutilisable](https://docs.github.com/en/actions/sharing-automations/reusing-workflows). Ce flux de travail est déclenché dès qu'il y a un commit et un push sur une branche.
  + `workflow.yaml`— Ce fichier contient le flux de travail réutilisable pour cette solution et est configuré avec `workflow_call` comme déclencheur. En tant que flux de travail réutilisable, il `workflow.yaml` peut être appelé depuis n'importe quel autre flux de travail.
+ `templates`:
  + `servicecatalog-portfolio.yaml`— Ce CloudFormation modèle inclut des ressources qui fournissent le portefeuille Service Catalog et le produit Service Catalog. Le modèle contient un ensemble de paramètres utilisés lors du provisionnement du portefeuille et des produits Service Catalog. Un paramètre accepte l'URL d'un fichier Amazon S3 où le modèle `vpc.yaml` est chargé. Bien que ce modèle inclut le `vpc.yaml` fichier pour provisionner AWS les ressources, vous pouvez également utiliser le paramètre URL du fichier S3 pour la configuration.
  + `vpc.yaml`— Ce CloudFormation modèle contient AWS des ressources à ajouter au produit Service Catalog. AWS les ressources incluent les VPCs sous-réseaux, les passerelles Internet, les passerelles NAT et les tables de routage. Le `vpc.yaml` modèle est un exemple de la manière dont vous pouvez utiliser n'importe quel CloudFormation modèle avec un modèle de produit et de portefeuille Service Catalog.

## Bonnes pratiques
<a name="provision-aws-service-catalog-products-using-github-actions-best-practices"></a>
+ Consultez les [meilleures pratiques de sécurité AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html) dans la AWS Service Catalog documentation. 
+ Consultez [la section Renforcement de la sécurité pour GitHub les actions](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions) dans la GitHub documentation.

## Épopées
<a name="provision-aws-service-catalog-products-using-github-actions-epics"></a>

### Configuration d'un poste de travail local
<a name="set-up-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez Git sur votre poste de travail local. | Pour installer et configurer Git sur votre poste de travail local, utilisez les instructions [Getting Started — Install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) de la documentation Git. | Développeur d’applications | 
| Clonez le dépôt GitHub du projet. | Pour cloner le dépôt GitHub du projet, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingénieur | 

### Configurer le fournisseur OIDC
<a name="set-up-the-oidc-provider"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez un fournisseur OIDC. | Créez un fournisseur OpenID Connect (OIDC) qui permet aux flux de travail GitHub Actions d'accéder aux ressources AWS, sans avoir à stocker les informations d' AWS identification sous forme de secrets de longue durée. GitHub Pour obtenir des instructions, consultez [la section Configuration d'OpenID Connect dans Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) dans la GitHub documentation.Une fois qu'un fournisseur OIDC est configuré, la politique de confiance du rôle IAM`github-actions`, mentionnée plus haut dans les [conditions préalables](#provision-aws-service-catalog-products-using-github-actions-prereqs), sera mise à jour. | Administrateur AWS, AWS DevOps, AWS général | 

### Pipeline Trigger GitHub Actions pour déployer le portefeuille et les produits Service Catalog
<a name="trigger-github-actions-pipeline-to-deploy-sc-portfolio-and-products"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mettre à jour `e2e-test.yaml`. | Le `e2e-test.yaml` fichier déclenche le flux de travail réutilisable à l'adresse`workflow.yaml`. Mettez à jour et validez les valeurs des paramètres d'entrée suivants dans `e2e-test.yaml` :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingénieur | 

### Valider le déploiement
<a name="validate-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez les ressources du Service Catalog. | Pour valider les ressources du Service Catalog, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | AWS DevOps | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez la CloudFormation pile. | Pour supprimer la CloudFormation pile, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html)Pour plus d'informations, voir [Supprimer une pile de la CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) dans la CloudFormation documentation | DevOps ingénieur, administrateur AWS | 

## Résolution des problèmes
<a name="provision-aws-service-catalog-products-using-github-actions-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| `e2e-test``Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions``Did you forget to run actions/checkout before running your local action?` | Pour vous assurer que les paramètres de référentiel corrects sont activés, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | 

## Ressources connexes
<a name="provision-aws-service-catalog-products-using-github-actions-resources"></a>

**AWS documentation**
+ [Présentation du Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

**Autres ressources**
+ [À propos des événements qui déclenchent des flux de travail](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#about-events-that-trigger-workflows) (GitHub documentation)
+ [Réutilisation des flux de travail](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) (GitHub documentation)

## Informations supplémentaires
<a name="provision-aws-service-catalog-products-using-github-actions-additional"></a>

Pour voir des captures d'écran liées aux [Epics](#provision-aws-service-catalog-products-using-github-actions-epics), rendez-vous dans le dossier **Images** du GitHub dépôt de ce modèle. Les captures d'écran suivantes sont disponibles :
+ [AWS Service Catalog portefeuille, section de l'administration](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_portfolio.png)
+ [AWS Service Catalog produit, section Administration](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product.png)
+ [AWS Service Catalog produit, User/Provisioning section](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product_User.png)

# Fournissez des rôles IAM avec le moindre privilège en déployant une solution de distribution automatique de rôles
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution"></a>

*Benjamin Morris, Nima Fotouhi, Aman Kaur Gandhi et Tchad Moon, Amazon Web Services*

## Résumé
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-summary"></a>

Les autorisations de rôle Gestion des identités et des accès AWS surdimensionnées (IAM) pour les pipelines peuvent présenter des risques inutiles pour une organisation. Les développeurs accordent parfois des autorisations étendues pendant le développement, mais négligent de limiter les autorisations après avoir résolu le problème avec leur code. Cela pose un problème lorsque des rôles puissants sont présents sans aucun besoin commercial et n'ont peut-être jamais été revus par un ingénieur en sécurité.

Ce modèle offre une solution à ce problème : le distributeur automatique de rôles (RVM). À l'aide d'un modèle de déploiement sécurisé et centralisé, le RVM montre comment fournir des rôles IAM avec le moindre privilège pour les pipelines de GitHub référentiels individuels avec un minimum d'efforts de la part des développeurs. Le RVM étant une solution centrale, vous pouvez configurer vos équipes de sécurité en tant que réviseurs requis pour approuver les modifications. Cette approche permet à la sécurité de rejeter les demandes de rôle de pipeline avec des autorisations excessives. 

Le RVM prend le code Terraform en entrée et génère des rôles IAM prêts pour le pipeline en sortie. Les entrées requises sont l' Compte AWS ID, le nom du GitHub référentiel et la politique d'autorisation. Le RVM utilise ces entrées pour créer la politique de confiance et la politique d'autorisation du rôle. La politique de confiance qui en résulte permet au GitHub référentiel spécifié d'assumer le rôle et de l'utiliser pour les opérations de pipeline.

Le RVM utilise un rôle IAM (configuré lors du bootstrap). Ce rôle est autorisé à assumer un rôle role-provisioning-role dans chaque compte de l'organisation. Le rôle est configuré via AWS Control Tower Account Factory for Terraform (AFT) ou. AWS CloudFormation StackSets Ce role-provisioning-roles sont les rôles qui créent réellement les rôles de pipeline pour les développeurs.

## Conditions préalables et limitations
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+  GitHub Organisation utilisée pour déployer une infrastructure sous forme de code (IaC) par le biais d' GitHub actions. (*ne GitHub Enterprise/Premium/Ultimate sont pas***** obligatoires.)
+ Un AWS environnement multi-comptes. Il n'est pas nécessaire d'en faire partie AWS Organizations.
+ Mécanisme permettant de déployer un rôle IAM dans tous les domaines Comptes AWS (par exemple, AFT ou CloudFormation StackSets).
+ Terraform version 1.3 ou ultérieure [installée et configurée](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli).
+ [Terraform AWS Provider version 4 ou ultérieure [installée et configurée](https://github.com/hashicorp/terraform-provider-aws/releases).](https://developer.hashicorp.com/terraform/language/providers/configuration)

**Limites**
+ Le code de ce modèle est spécifique à GitHub Actions et Terraform. Cependant, les concepts généraux du modèle peuvent être réutilisés dans d'autres cadres d'intégration et de livraison continues (CI/CD).
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section [AWS Services par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-architecture"></a>

Le schéma suivant illustre le flux de travail pour ce modèle.

![\[Workflow permettant d'automatiser la création et le déploiement de rôles IAM à l'aide d' GitHub actions.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/215c590e-0c84-411d-be6e-b1739f1e19d2/images/82fcdc9f-9576-4e7c-b7fe-b45046ba79d2.png)


Le flux de travail pour l'utilisation typique du distributeur automatique de rôles comprend les étapes suivantes :

1. Un développeur envoie du code contenant du code Terraform pour un rôle IAM récemment demandé vers le référentiel RVM. GitHub Cette action déclenche le pipeline d' GitHub actions RVM.

1. Le pipeline utilise une politique de confiance OpenID Connect (OIDC) pour assumer le rôle d'hypothèse de rôle du RVM.

1. Au fur et à mesure que le pipeline RVM s'exécute, il assume le rôle de flux de travail RVM dans le compte dans lequel il fournit le nouveau rôle IAM du développeur. (Le rôle de flux de travail RVM a été fourni à l'aide d'AFT ou CloudFormation StackSets.)

1. Le RVM crée le rôle IAM du développeur avec les autorisations et la confiance appropriées, afin que le rôle puisse être assumé par d'autres pipelines d'applications.

1. Les développeurs d'applications peuvent configurer leurs pipelines d'applications pour assumer ce rôle fourni par RVM.

Le rôle créé inclut les autorisations demandées par le développeur et une `ReadOnlyAccess` politique. Le rôle n'est assumé que par les pipelines qui s'exécutent sur la `main` branche du référentiel spécifié par le développeur. Cette approche permet de garantir que la protection et les révisions des succursales peuvent être nécessaires pour utiliser le rôle.

**Automatisation et mise à l'échelle**

Les autorisations de moindre privilège nécessitent une attention particulière aux détails pour chaque rôle fourni. Ce modèle réduit la complexité requise pour créer ces rôles, permettant aux développeurs de créer les rôles dont ils ont besoin sans trop d'apprentissage ou d'efforts supplémentaires.

## Outils
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-tools"></a>

**Services 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 Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)est un service de gestion de comptes qui vous aide à Comptes AWS en regrouper plusieurs au sein d'une organisation que vous créez et gérez de manière centralisée.

**Autres outils**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué et open source. Cela inclut la possibilité de créer un [compte d'organisation](https://docs.github.com/en/get-started/learning-about-github/types-of-github-accounts#organization-accounts).
+ [GitHub Actions](https://docs.github.com/en/actions/writing-workflows/quickstart) est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

**Référentiel de code**

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

## Bonnes pratiques
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-best-practices"></a>
+ **Facilitez le bon chemin et compliquez le mauvais chemin** — Faites en sorte qu'il soit facile de faire le bon choix. Si les développeurs rencontrent des difficultés avec le processus de provisionnement du RVM, ils peuvent tenter de créer des rôles par d'autres moyens, ce qui mine la nature centrale du RVM. Assurez-vous que votre équipe de sécurité fournit des conseils clairs sur la manière d'utiliser le RVM de manière sûre et efficace.

  Vous devez également empêcher les développeurs de faire le mauvais choix. Utilisez des politiques de contrôle des services (SCPs) ou des limites d'autorisation pour limiter les rôles qui peuvent créer d'autres rôles. Cette approche peut aider à limiter la création de rôles au seul RVM et à d'autres sources fiables.
+ **Donnez de bons exemples** — Inévitablement, certains développeurs adapteront les rôles existants dans le référentiel RVM en tant que modèles informels pour accorder des autorisations à leurs nouveaux rôles. Si vous disposez d'exemples d'autorisations minimales à partir desquels ils peuvent copier, cela peut réduire le risque que les développeurs demandent des autorisations étendues et comportant de nombreux caractères génériques. Si vous commencez avec des rôles très autorisés contenant de nombreux jokers, ce problème peut se multiplier au fil du temps.
+ **Utilisez des conventions et conditions de dénomination** : même si un développeur ne connaît pas tous les noms de ressources que son application va créer, il doit tout de même limiter les autorisations relatives aux rôles en utilisant une convention de dénomination. Par exemple, s'ils créent des compartiments Amazon S3, la valeur de leur clé de ressource peut sembler `arn:aws:s3:::myorg-myapp-dev-*` telle que leur rôle ne dispose pas d'autorisations autres que les compartiments portant ce nom. L'application de la convention de dénomination par le biais d'une politique IAM présente l'avantage supplémentaire d'améliorer le respect de la convention de dénomination. Cette amélioration est due au fait que la création de ressources non correspondantes ne sera pas autorisée.
+ **Exiger des révisions par pull request (PR)** — L'avantage de la solution RVM réside dans le fait qu'elle crée un emplacement central où les nouveaux rôles du pipeline peuvent être examinés. Cependant, cette conception n'est utile que s'il existe des garde-fous qui permettent de garantir que le code sécurisé et de haute qualité est transmis au RVM. Protégez les branches utilisées pour déployer du code (par exemple,`main`) contre les envois directs et exigez des approbations pour toute demande de fusion qui les cible.
+ **Configurer les rôles en lecture seule** : par défaut, le RVM fournit une `readonly` version de chaque rôle demandé. Ce rôle peut être utilisé dans des CI/CD pipelines qui n'écrivent pas de données, tels qu'un flux de travail de `terraform plan` pipeline. Cette approche permet d'éviter les modifications indésirables en cas de mauvais comportement d'un flux de travail en lecture seule.

  Par défaut, la `ReadOnlyAccess` politique AWS gérée est attachée à la fois aux rôles en lecture seule et aux rôles en lecture-écriture. Cette politique réduit le besoin d'itérations lors de la détermination des autorisations requises, mais elle peut être trop permissive pour certaines organisations. Si vous le souhaitez, vous pouvez supprimer la politique du code Terraform.
+ **Accorder des autorisations minimales** — Suivez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-epics"></a>

### Préparer l'environnement
<a name="prepare-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez le référentiel d'échantillons dans votre GitHub organisation. | [Clonez](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) le référentiel de [ce](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) modèle ou associez-le à votre GitHub organisation afin de l'adapter à vos besoins.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps ingénieur | 
| Déterminez le Compte AWS pour le RVM. | Déterminez le déploiement de l'infrastructure Compte AWS à utiliser pour le RVM. N'utilisez pas le compte de gestion ou le compte root. | Architecte du cloud | 
| (Facultatif) Autorisez la création des pipelines de l'organisation PRs. | Cette étape n'est nécessaire que si vous souhaitez autoriser la création du `generate_providers_and_account_vars` flux de travail PRs.Pour autoriser la création de pipelines de votre organisation PRs, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Pour plus d'informations, consultez [la section Gestion GitHub des paramètres des actions pour un référentiel](https://docs.github.com/en/enterprise-server@3.10/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests) dans la GitHub documentation. | DevOps ingénieur | 
| Accordez des autorisations en lecture seule au compte RVM. | Créez une politique de délégation dans votre compte de gestion qui accorde à votre compte RVM des autorisations en lecture seule. Cela permet à vos GitHub flux de travail RVM d'extraire dynamiquement une liste des comptes de votre AWS organisation lorsque le `generate_providers_and_account_vars.py` script s'exécute. Utilisez le code suivant et remplacez-le `<YOUR RVM Account ID>` par l' Compte AWS ID que vous avez sélectionné à l'étape 2 :<pre>{<br />  "Version": "2012-10-17",		 	 	 <br />  "Statement": [<br />    {<br />      "Sid": "Statement",<br />      "Effect": "Allow",<br />      "Principal": {<br />        "AWS": "arn:aws:iam::<YOUR RVM Account ID>:root"<br />      },<br />      "Action": [<br />        "organizations:ListAccounts",<br />        "organizations:DescribeOrganization",<br />        "organizations:DescribeOrganizationalUnit",<br />        "organizations:ListRoots",<br />        "organizations:ListAWSServiceAccessForOrganization",<br />        "organizations:ListDelegatedAdministrators"<br />      ],<br />      "Resource": "*"<br />    }<br />  ]<br />}</pre> | Administrateur du cloud | 
| Mettez à jour les valeurs par défaut à partir de l'exemple de dépôt. | Pour configurer le RVM afin qu'il fonctionne dans votre environnement spécifique Région AWS, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps ingénieur | 

### Initialisation de l'infrastructure
<a name="initialize-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Démarrez le dépôt RVM. | Cette étape est nécessaire pour créer les rôles OIDC Trust et IAM utilisés par le pipeline RVM lui-même, afin qu'il puisse commencer à fonctionner et à vendre d'autres rôles.Dans le contexte de votre compte RVM, exécutez manuellement une `terraform apply` commande depuis le `scripts/bootstrap` répertoire. Fournissez toutes les valeurs requises sur la base de la documentation des variables. | DevOps ingénieur | 

### Configuration des opérations
<a name="configure-operations"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez les `github-workflow-rvm-readonly` rôles `github-workflow-rvm` et sur tous les comptes. | Choisissez une méthode de déploiement conforme aux pratiques de votre organisation, telle que AFT ou StackSets. Utilisez cette méthode pour déployer les deux rôles IAM du `scripts/assumed_role/main.tf` fichier (noms par défaut `github-workflow-rvm` et`github-workflow-rvm-readonly`) sur chaque compte sur lequel vous souhaitez que le RVM puisse créer des rôles de pipeline.Ces rôles IAM ont des politiques de confiance qui permettent au rôle d'acceptation de rôle du compte RVM (ou son `readonly` équivalent) de l'assumer. Les rôles sont également soumis à des politiques d'autorisation IAM qui leur permettent de lire et d'écrire (sauf en utilisant le `readonly` rôle) les rôles correspondants`github-workflow-role-*`. | Administrateur AWS | 
| Exécutez le `generate_providers_and_account_vars` flux de travail. | Pour configurer votre RVM afin qu'elle soit prête à créer des rôles de pipeline, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html)Une fois le flux de travail terminé, le RVM est prêt à :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| J'ai créé un rôle à l'aide du RVM, mais je ne suis GitHub pas en mesure de l'assumer. | Vérifiez que le nom du GitHub dépôt correspond au nom fourni au `github_workflow_roles` module. Les rôles sont définis de manière à ce qu'un seul référentiel puisse les assumer.De même, vérifiez que la branche utilisée dans le GitHub pipeline correspond au nom de la branche fournie au `github_workflow_roles` module. Généralement, les rôles créés par RVM dotés d'autorisations d'écriture ne peuvent être utilisés que par les flux de travail limités à la `main` branche (c'est-à-dire les déploiements provenant de). `main` | 
| Mon rôle en lecture seule ne parvient pas à exécuter son pipeline car il n'est pas autorisé à lire une ressource spécifique. | Bien que la `ReadOnlyAccess` politique fournisse des autorisations étendues en lecture seule, elle ne comporte pas certaines actions de lecture (par exemple, certaines AWS Security Hub CSPM actions).Vous pouvez ajouter des autorisations d'action spécifiques en utilisant le `inline_policy_readonly` paramètre du `github-workflow-roles` module. | 

## Ressources connexes
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-resources"></a>
+ [Bonnes pratiques d'utilisation AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-bestpractices.html)
+ [Organisation de votre AWS environnement à l'aide de plusieurs comptes](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html)
+ [Présentation de AWS Control Tower Account Factory pour Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)
+ [Bonnes pratiques en matière de politiques](https://docs.aws.amazon.com/codepipeline/latest/userguide/security_iam_service-with-iam-policy-best-practices.html) 

## Informations supplémentaires
<a name="provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution-additional"></a>

**Utilisation d' GitHub environnements**

GitHub les environnements constituent une approche alternative aux restrictions d'accès aux rôles basées sur les branches. Si vous préférez utiliser un GitHub environnement, voici un exemple de syntaxe pour une condition supplémentaire dans la politique de confiance IAM. Cette syntaxe indique que le rôle ne peut être utilisé que lorsque l' GitHub action est exécutée dans l'`Production`environnement.

```
"StringLike": {
    "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:environment:Production"
}
```

L'exemple de syntaxe utilise les valeurs d'espace réservé suivantes :
+ `octo-org`est le nom GitHub de l'organisation.
+ `octo-repo`est le nom du dépôt.
+ `Production`est le nom de GitHub l'environnement spécifique.

# Publier CloudWatch les statistiques Amazon dans un fichier CSV
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Résumé
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-summary"></a>

Ce modèle utilise un script Python pour récupérer les CloudWatch métriques Amazon et pour convertir les informations des métriques dans un fichier de valeurs séparées par des virgules (CSV) pour une meilleure lisibilité. Le script utilise le service AWS dont les métriques doivent être récupérées comme argument obligatoire. Vous pouvez spécifier la région AWS et le profil d'identification AWS en tant qu'arguments facultatifs. Si vous ne spécifiez pas ces arguments, le script utilise la région et le profil par défaut configurés pour le poste de travail sur lequel le script est exécuté. Une fois le script exécuté, il génère et stocke un fichier CSV dans le même répertoire.

Consultez la section *Pièces jointes* pour le script et les fichiers associés fournis avec ce modèle.

## Conditions préalables et limitations
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-prereqs"></a>

**Conditions préalables**
+ Python 3.x
+ Interface de ligne de commande AWS (AWS CLI)

**Limites**

Le script prend actuellement en charge les services AWS suivants :
+ AWS Lambda
+ Amazon Elastic Compute Cloud (Amazon EC2)
  + Par défaut, le script ne collecte pas les métriques de volume Amazon Elastic Block Store (Amazon EBS). Pour collecter les métriques Amazon EBS, vous devez modifier le `metrics.yaml` fichier joint.
+ Amazon Relational Database Service (Amazon RDS)
  + Toutefois, le script ne prend pas en charge Amazon Aurora.
+ Application Load Balancer
+ Network Load Balancer
+ Amazon API Gateway

## Outils
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-tools"></a>
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) est un service de surveillance conçu pour les DevOps ingénieurs, les développeurs, les ingénieurs de fiabilité des sites (SREs) et les responsables informatiques. CloudWatch fournit des données et des informations exploitables pour vous aider à surveiller vos applications, à répondre aux changements de performances à l'échelle du système, à optimiser l'utilisation des ressources et à obtenir une vue unifiée de l'état de fonctionnement. CloudWatch collecte des données opérationnelles et de surveillance sous forme de journaux, de mesures et d'événements, et fournit une vue unifiée des ressources, des applications et des services AWS exécutés sur AWS et sur des serveurs sur site.

## Épopées
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-epics"></a>

### Installation et configuration des prérequis
<a name="install-and-configure-the-prerequisites"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez les prérequis. | Exécutez la commande suivante :<pre>$ pip3 install -r requirements.txt</pre> | Developer | 
| Configuration de l'AWS CLI. | Exécutez la commande suivante : <pre>$ aws configure</pre> | Developer | 

### Configuration du script Python
<a name="configure-the-python-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ouvrez le script. | Pour modifier la configuration par défaut du script, ouvrez`metrics.yaml`. | Developer | 
| Définissez la période du script. | Il s'agit de la période à récupérer. La période par défaut est de 5 minutes (300 secondes). Vous pouvez modifier la période, mais tenez compte des limites suivantes : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/publish-amazon-cloudwatch-metrics-to-a-csv-file.html)Dans le cas contraire, l'opération d'API ne renverra aucun point de données. | Developer | 
| Définissez les heures du script. | Cette valeur indique le nombre d'heures de métriques que vous souhaitez récupérer. La valeur par défaut est 1 heure. Pour récupérer plusieurs jours de métriques, indiquez la valeur en heures. Par exemple, pour 2 jours, spécifiez 48. | Developer | 
| Modifiez les valeurs statistiques du script.  | (Facultatif) La valeur des statistiques globales est`Average`, qui est utilisée lors de l'extraction de métriques auxquelles aucune valeur statistique spécifique n'est attribuée. Le script prend en charge les valeurs statistiques `Maximum``SampleCount`, et`Sum`. | Developer | 

### Exécutez le script Python
<a name="run-the-python-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez le script. | Utilisez la commande suivante : <pre>$ python3 cwreport.py <service> </pre>Pour consulter la liste des valeurs de service, des options `region ` et `profile ` des paramètres, exécutez la commande suivante :<pre> $ python3 cwreport.py -h</pre>Pour plus d'informations sur les paramètres facultatifs, consultez la section *Informations supplémentaires*. | Developer | 

## Ressources connexes
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-resources"></a>
+ [Configuration de l'AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Utilisation des CloudWatch métriques Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)
+ [ CloudWatch Documentation Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)
+ [EC2 CloudWatch Métriques](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics)
+ [Métriques AWS Lambda](https://docs.aws.amazon.com/lambda/latest/operatorguide/logging-metrics.html)
+ [Métriques Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html#rds-cw-metrics-instance)
+ [Mesures relatives à l'Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html)
+ [Métriques du Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-cloudwatch-metrics.html)
+ [Métriques Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-metrics-and-dimensions.html)

## Informations supplémentaires
<a name="publish-amazon-cloudwatch-metrics-to-a-csv-file-additional"></a>

**Utilisation des scripts**

```
$ python3 cwreport.py -h
```

**Exemple de syntaxe**

```
python3 cwreport.py <service> <--region=Optional Region> <--profile=Optional credential profile>
```

**Paramètres**
+ **service (obligatoire)** ‒ Le service sur lequel vous souhaitez exécuter le script. Le script prend actuellement en charge les services suivants : AWS Lambda, Amazon, EC2 Amazon RDS, Application Load Balancer, Network Load Balancer et API Gateway.
+ **région (facultatif)** ‒ La région AWS à partir de laquelle récupérer les métriques. La région par défaut est`ap-southeast-1`.
+ **profil (facultatif)** ‒ Le profil nommé à utiliser dans l'interface de ligne de commande AWS. Si ce paramètre n'est pas spécifié, le profil d'identification configuré par défaut est utilisé.

**Exemples**
+ Pour utiliser la région par défaut `ap-southeast-1` et les informations d'identification configurées par défaut pour récupérer EC2 les métriques Amazon : `$ python3 cwreport.py ec2`
+ Pour spécifier une région et récupérer les métriques d'API Gateway, procédez comme suit : `$ python3 cwreport.py apigateway --region us-east-1`
+ Pour spécifier un profil AWS et récupérer les EC2 métriques Amazon : `$ python3 cwreport.py ec2 --profile testprofile`
+ Pour spécifier à la fois la région et le profil pour récupérer EC2 les métriques Amazon : `$ python3 cwreport.py ec2 --region us-east-1 --profile testprofile`

## Pièces jointes
<a name="attachments-0a915a9d-2eef-4da1-8283-3cf4a115b3b2"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/0a915a9d-2eef-4da1-8283-3cf4a115b3b2/attachments/attachment.zip)

# Supprimez les EC2 entrées Amazon Comptes AWS de l'autre côté AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad et Tamilselvan P, Amazon Web Services*

## Résumé
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-summary"></a>

Active Directory (AD) est un outil de script Microsoft qui gère les informations de domaine et les interactions des utilisateurs avec les services réseau. Il est largement utilisé par les fournisseurs de services gérés (MSPs) pour gérer les informations d'identification et les autorisations d'accès des employés. Étant donné que les attaquants publicitaires peuvent utiliser des comptes inactifs pour tenter de pirater une organisation, il est important de trouver les comptes inactifs et de les désactiver dans le cadre d'un programme de maintenance de routine. Avec AWS Directory Service for Microsoft Active Directory, vous pouvez exécuter Microsoft Active Directory en tant que service géré. Ce modèle peut vous aider à configurer AWS Lambda l'automatisation pour trouver et supprimer rapidement les comptes inactifs.

Si les scénarios suivants s'appliquent à votre organisation, ce modèle peut vous aider :
+ **Gestion centralisée d'AD** : si votre organisation en possède plusieurs Comptes AWS, chacune avec son propre déploiement AD, il peut être difficile de gérer les comptes utilisateurs et les autorisations d'accès de manière cohérente sur tous les comptes. Avec une solution de nettoyage AD multicomptes, vous pouvez désactiver ou supprimer les comptes inactifs de toutes les instances AD de manière centralisée.
+ **Restructuration ou migration d'AD** : si votre organisation prévoit de restructurer ou de migrer son déploiement AD, une solution de nettoyage AD multi-comptes peut vous aider à préparer l'environnement. La solution peut vous aider à supprimer les comptes inutiles ou inactifs, à simplifier le processus de migration et à réduire les conflits ou problèmes potentiels.

Lorsque vous utilisez ce modèle, vous pouvez bénéficier des avantages suivants :
+ Améliorez les performances des bases de données et des serveurs, et corrigez les failles de sécurité liées aux comptes inactifs.
+ Si votre serveur AD est hébergé dans le cloud, la suppression des comptes inactifs peut également réduire les coûts de stockage tout en améliorant les performances. Vos factures mensuelles peuvent diminuer en raison de la baisse des frais de bande passante et des ressources informatiques.
+ Tenez les attaquants potentiels à distance grâce à un Active Directory propre.

## Conditions préalables et limitations
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-prereqs"></a>

**Conditions préalables**
+ Un parent actif Compte AWS et un ou plusieurs comptes enfants. Dans ce modèle, un *compte parent* est l'endroit où Active Directory est créé. *Les comptes enfants* hébergent des serveurs Windows et sont joints via le compte parent Active Directory.
+ Git [est installé](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) et configuré sur un poste de travail local.
+ Terraform [installé](https://learn.hashicorp.com/tutorials/terraform/install-cli) et configuré sur un poste de travail local.
+ AWS Managed Microsoft AD répertoire configuré dans le compte parent et partagé avec tous les comptes enfants. Pour plus de détails, voir [Tutoriel : Partage de votre AWS Managed Microsoft AD répertoire pour une jonction de EC2 domaine fluide](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) dans le Guide d'*AWS Directory Service administration*.
+ Une connexion d'appairage au cloud privé virtuel (VPC) ou une AWS Transit Gateway connexion disponible entre le VPC de AWS Directory Service (compte parent) et le VPC des instances Amazon Elastic Compute Cloud ( EC2Amazon) (comptes enfants). *Pour plus de détails, consultez la section [Configurer une connexion d'appairage VPC entre le propriétaire de l'annuaire et le compte du consommateur de l'annuaire](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc) dans le AWS Directory Service Guide d'administration.*
+ Une machine Windows configurée avec le `EC2WindowsUserdata` script sur tous les comptes parent et enfant. Le fichier de script est disponible à la racine du [référentiel de code](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup) de ce modèle.
+ Un rôle entre comptes Gestion des identités et des accès AWS (IAM) disponible sur chaque compte enfant configuré avec une politique de confiance autorisant l'utilisation d'une AWS Lambda fonction du compte parent. Pour plus d'informations, consultez la section [Envoi et réception d'événements entre Amazon Comptes AWS EventBridge dans](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEvents-CrossAccountEventDelivery.html) le *guide de EventBridge l'utilisateur Amazon*.
+ Les valeurs secrètes suivantes sont disponibles dans le AWS Systems Manager Parameter Store du compte parent :
  + `domainJoinUser`— Nom d'utilisateur du service d'annuaire
  + `domainJoinPassword`— Mot de passe du service d'annuaire

  Pour plus d'informations sur les secrets, voir [Créer un AWS Secrets Manager secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dans le *Guide de AWS Secrets Manager l'utilisateur*.

**Limites**
+ La création d'une ressource dans un compte enfant n'est pas automatisée avec Terraform. Vous devez créer les ressources suivantes manuellement à l'aide de AWS Management Console :
  +  EventBridge Règle Amazon pour envoyer les événements de EC2 résiliation d'Amazon au compte parent
  + Création de rôles EC2 entre comptes Amazon dans le compte enfant avec politique de confiance
  + Peering VPC ou connexion Transit Gateway
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ [Terraform version 1.1.9 ou ultérieure](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider version 3.0 ou supérieure](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Architecture
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-architecture"></a>

Le schéma suivant montre l'architecture de haut niveau de la solution.

![\[Processus d'utilisation de l'automatisation Lambda pour supprimer les EC2 entrées de différents comptes AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c397d873-e10d-44b6-8352-5f1380ab94ca/images/bd6c80a7-e490-47db-bd47-165314e1ea8a.png)


Le schéma d'architecture illustre le processus suivant :

1. Dans les comptes enfants, la EventBridge règle collecte tous les événements de EC2 résiliation d'Amazon. La règle envoie les EventBridge événements présents dans le compte parent.

1. À partir du compte parent, EventBridge collecte tous les événements et contient la règle permettant de déclencher la fonction Lambda. `ADcleanup-Lambda`

1. Le compte parent reçoit tous les événements de résiliation du compte parent ou enfant et déclenche la fonction Lambda.

1. La fonction Lambda appelle les groupes Amazon EC2 Auto Scaling à l'aide du module Python boto et obtient l'ID d'instance aléatoire. L'ID d'instance est utilisé pour exécuter les commandes de Systems Manager.

1. La fonction Lambda effectue un autre appel à Amazon à EC2 l'aide du module boto. La fonction Lambda obtient les adresses IP privées des serveurs Windows en cours d'exécution et les stocke dans une variable temporaire. Dans les étapes 5.1 et 5.2, les EC2 instances Windows en cours d'exécution sont collectées à partir de comptes enfants.

1. La fonction Lambda lance un nouvel appel à Systems Manager pour obtenir les informations de l'ordinateur auquel il est connecté. AWS Directory Service

1. Un AWS Systems Manager document permet d'exécuter la PowerShell commande sur les serveurs Amazon EC2 Windows pour obtenir les adresses IP privées des ordinateurs connectés à AD. (Le document Systems Manager utilise l'ID d'instance obtenu à l'étape 4.)

1. Le nom d'utilisateur et les mots de passe du domaine AD sont stockés dans le AWS Systems Manager Parameter Store. AWS Lambda et Systems Manager appellent Parameter Store et obtiennent les valeurs du nom d'utilisateur et du mot de passe à utiliser pour se connecter à AD.

1. À l'aide du document Systems Manager, le PowerShell script est exécuté sur le serveur Amazon EC2 Windows à l'aide de l'identifiant d'instance obtenu précédemment à l'étape 4.

1. Amazon EC2 se connecte AWS Directory Service à l'aide de PowerShell commandes et supprime les ordinateurs inutilisés ou inactifs.

## Outils
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-tools"></a>

**AWS services**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)propose plusieurs manières d'utiliser Microsoft Active Directory (AD) avec d'autres, Services AWS comme Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) pour SQL Server et FSx Amazon pour Windows File Server.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permet à vos charges de travail et à vos AWS ressources sensibles aux annuaires d'utiliser Microsoft Active Directory dans le. AWS Cloud
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [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. Par exemple, AWS Lambda des fonctions, des points de terminaison d'appel HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. 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. Avec IAM, vous pouvez spécifier qui ou quoi peut accéder aux services et aux ressources AWS, gérer de manière centralisée les autorisations détaillées et analyser les accès pour affiner les autorisations entre elles. AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)vous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle.
+ [AWS Systems Manager les documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) définissent les actions que Systems Manager exécute sur vos instances gérées. Systems Manager inclut plus d'une centaine de documents préconfigurés que vous pouvez utiliser en spécifiant des paramètres lors de l'exécution.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) est une fonctionnalité AWS Systems Manager et fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)est un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [aws-lambda-ad-cleanup-terraform-samples](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/tree/main/multiple-account-cleanup).

## Bonnes pratiques
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Joignez automatiquement des domaines.**Lorsque vous lancez une instance Windows destinée à faire partie d'un Directory Service domaine, rejoignez le domaine pendant le processus de création de l'instance au lieu de l'ajouter manuellement ultérieurement. Pour rejoindre automatiquement un domaine, sélectionnez le répertoire approprié dans la liste déroulante des **répertoires de jonction de domaines** lors du lancement d'une nouvelle instance. Pour plus de détails, consultez la [section Joindre sans difficulté une instance Amazon EC2 Windows à votre AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) dans le *guide d'Directory Service administration*.
+ **Supprimez les comptes inutilisés.**Il est courant de trouver dans AD des comptes qui n'ont jamais été utilisés. Tout comme les comptes désactivés ou inactifs qui restent dans le système, les comptes non utilisés négligés peuvent ralentir votre système publicitaire ou rendre votre organisation vulnérable aux violations de données.
+ **Automatisez les nettoyages d'Active Directory.**Pour atténuer les risques de sécurité et empêcher les comptes obsolètes d'affecter les performances d'AD, effectuez des nettoyages AD à intervalles réguliers. Vous pouvez accomplir la plupart des tâches de gestion et de nettoyage d'AD en écrivant des scripts. Les tâches incluent par exemple la suppression de comptes désactivés et inactifs, la suppression de groupes vides et inactifs et la localisation de comptes utilisateurs et de mots de passe expirés.

## Épopées
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-epics"></a>

### Configurer des comptes pour enfants
<a name="set-up-child-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un rôle multicompte dans le compte enfant. | Pour créer un rôle multicompte dans un compte enfant, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 
| Créez une règle d'événement dans le compte enfant. | Pour créer une EventBridge règle pour chaque compte enfant, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Pour plus de détails, consultez [la section Création de règles réagissant aux événements sur Amazon EventBridge dans](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) le *guide de EventBridge l'utilisateur Amazon*. | DevOps ingénieur | 
| Créez une EC2 instance et rejoignez-la à AD. | Pour créer une EC2 instance pour Windows, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 

### Configuration du poste de travail local
<a name="set-up-the-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un dossier de projet et ajoutez les fichiers. | Pour cloner le référentiel et créer un dossier de projet, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 
| Créez le `adcleanup.zip` fichier. | Pour compresser le `lambda_function.py` fichier, exécutez la commande suivante :`zip -r adcleanup.zip lambda_function.py` | DevOps ingénieur | 

### Provisionner l'architecture cible à l'aide de la configuration Terraform
<a name="provision-the-target-architecture-using-the-terraform-configuration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Fournissez des valeurs pour les variables Terraform. | Pour le compte enfant, fournissez les valeurs des `arn` variables suivantes sous forme de chaînes dans le `terraform.tfvars` fichier :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 
| Initialisez la configuration Terraform. | Pour initialiser votre répertoire de travail contenant les fichiers Terraform, exécutez la commande suivante :`terraform init` | DevOps ingénieur | 
| Prévisualisez les modifications. | Vous pouvez prévisualiser les modifications que Terraform apportera à l'infrastructure avant que celle-ci ne soit déployée. Pour valider que Terraform apportera les modifications nécessaires, exécutez la commande suivante :`terraform plan —-var-file=examples/terraform.tfvars` | DevOps ingénieur | 
| Exécutez les actions proposées. | Pour vérifier que les résultats de la `terraform plan` commande sont conformes aux attentes, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 

### Vérification du déploiement
<a name="verify-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez et testez la fonction Lambda. | Pour vérifier que le déploiement a bien eu lieu, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Les résultats de l'exécution indiquent le résultat de la fonction. | DevOps ingénieur | 
| Afficher les résultats de l'exécution des EventBridge règles depuis le compte parent. | Pour consulter les résultats de la EventBridge règle basée sur les événements de EC2 résiliation d'Amazon depuis le compte parent, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Dans la CloudWatch console, la page **Log groups** affiche les résultats de la fonction Lambda. | DevOps ingénieur | 
| Afficher les résultats de l'exécution des EventBridge règles à partir du compte enfant. | Pour consulter les résultats de la EventBridge règle basée sur les événements de EC2 résiliation d'Amazon liés au compte enfant, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.html)Dans la CloudWatch console, la page **Log groups** affiche les résultats de la fonction Lambda. | DevOps ingénieur | 

### Nettoyer l'infrastructure après utilisation
<a name="clean-up-infrastructure-after-use"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez l'infrastructure. | Pour nettoyer l'infrastructure que vous avez créée, utilisez la commande suivante :`terraform destroy`Pour confirmer la `destroy` commande, tapez`yes`. | DevOps ingénieur | 
| Vérifiez après le nettoyage. | Vérifiez que les ressources ont été correctement supprimées. | DevOps ingénieur | 

## Résolution des problèmes
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Problème de connexion entre AWS Directory Service (compte parent) et l' EC2 instance Amazon (compte enfant) : vous ne pouvez pas associer les ordinateurs du compte enfant à AD même si le peering VPC est disponible. | Ajoutez le routage dans le VPCs. Pour obtenir des instructions, consultez la section [Configurer une connexion d'appairage VPC entre le propriétaire du répertoire et le compte du consommateur de l'annuaire](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html#step1_configure_owner_account_vpc) dans la documentation. AWS Directory Service  | 

## Ressources connexes
<a name="remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad-resources"></a>

**AWS documentation**
+ [Amazon EventBridge et Gestion des identités et des accès AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Configurer des autorisations d’instance requises pour Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Gestion des identités et des accès pour Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Politiques IAM basées sur l'identité pour Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)
+ [Joindre manuellement une instance Amazon EC2 Windows à votre AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)

**Autres ressources**
+ [AWS Fournisseur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentation Terraform)
+ [Configuration du backend](https://developer.hashicorp.com/terraform/language/backend) (documentation Terraform)
+ [Installer Terraform (documentation Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli))
+ [Module de démarrage Python](https://pypi.org/project/boto/) (référentiel Python Package Index)
+ [Téléchargement du binaire Terraform (documentation](https://www.terraform.io/downloads) Terraform)

# Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad"></a>

*Dr. Rahul Sharad Gaikwad et Tamilselvan P, Amazon Web Services*

## Résumé
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-summary"></a>

Active Directory (AD) est un outil de script Microsoft qui gère les informations de domaine et les interactions des utilisateurs avec les services réseau. Il est largement utilisé par les fournisseurs de services gérés (MSPs) pour gérer les informations d'identification et les autorisations d'accès des employés. Étant donné que les attaquants publicitaires peuvent utiliser des comptes inactifs pour tenter de pirater une organisation, il est important de trouver les comptes inactifs et de les désactiver dans le cadre d'un programme de maintenance de routine. Avec AWS Directory Service for Microsoft Active Directory, vous pouvez exécuter Microsoft Active Directory en tant que service géré. 

Ce modèle peut vous aider à configurer AWS Lambda l'automatisation pour trouver et supprimer rapidement les comptes inactifs. Lorsque vous utilisez ce modèle, vous pouvez bénéficier des avantages suivants :
+ Améliorez les performances des bases de données et des serveurs, et corrigez les failles de sécurité liées aux comptes inactifs.
+ Si votre serveur AD est hébergé dans le cloud, la suppression des comptes inactifs peut également réduire les coûts de stockage tout en améliorant les performances. Vos factures mensuelles peuvent diminuer en raison de la baisse des frais de bande passante et des ressources informatiques.
+ Tenez les attaquants potentiels à distance grâce à un Active Directory propre.

## Conditions préalables et limitations
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Git [est installé](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) et configuré sur un poste de travail local.
+ Terraform [installé](https://learn.hashicorp.com/tutorials/terraform/install-cli) et configuré sur un poste de travail local.
+ Ordinateur Windows doté de modules Active Directory (`ActiveDirectory`).
+ Un répertoire AWS Managed Microsoft AD et des informations d'identification stockées dans un [paramètre du AWS Systems Manager Parameter Store.](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)
+ Gestion des identités et des accès AWS *rôle (IAM) avec autorisations d'accès aux éléments Services AWS répertoriés dans [Outils](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools).* Pour plus d'informations sur IAM, consultez la section [Ressources connexes](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources).

**Limites**
+ Ce modèle ne prend pas en charge la configuration entre comptes.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

**Versions du produit**
+ [Terraform version 1.1.9 ou ultérieure](https://developer.hashicorp.com/terraform/install)
+ [Terraform AWS Provider version 3.0 ou supérieure](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Architecture
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Processus d'utilisation de l'automatisation Lambda pour supprimer des EC2 entrées de Managed Microsoft AD.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/6b50dcc5-4f4b-4eea-85a7-04cebc9f7454/images/b7fc5962-bfb8-4f5a-968e-7487b1d48c4f.png)


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

1. Amazon EventBridge déclenche la AWS Lambda fonction en fonction d'une expression cron. (Pour ce modèle, le calendrier des expressions cron est d'une fois par jour.)

1. Le rôle et la politique IAM requis sont créés et attachés AWS Lambda via Terraform.

1. La AWS Lambda fonction est exécutée et appelle Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling Groups à l'aide du module Python boto. La fonction Lambda obtient l'identifiant d'instance aléatoire. L'identifiant d'instance est utilisé pour exécuter AWS Systems Manager des commandes.

1. AWS Lambda effectue un autre appel à Amazon à l' EC2 aide du module boto et obtient les adresses IP privées des serveurs Windows en cours d'exécution et les stocke dans une variable temporaire.

1. AWS Lambda lance un nouvel appel à Systems Manager pour obtenir les informations de l'ordinateur auquel il est connecté Directory Service.

1. Un AWS Systems Manager document permet d'exécuter le PowerShell script sur les serveurs Amazon EC2 Windows pour obtenir les adresses IP privées des ordinateurs connectés à AD.

1. Le nom d'utilisateur et les mots de passe du domaine AD sont stockés dans le AWS Systems Manager Parameter Store. AWS Lambda et Systems Manager appellent Parameter Store et obtiennent les valeurs du nom d'utilisateur et du mot de passe à utiliser pour connecter AD.

1. À l'aide du document Systems Manager, le PowerShell script est exécuté sur le serveur Amazon EC2 Windows à l'aide de l'identifiant d'instance obtenu précédemment à l'étape 3.

1. Amazon EC2 se connecte Directory Service à l'aide de PowerShell commandes et supprime les ordinateurs inutilisés ou inactifs.

## Outils
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools"></a>

**Services AWS**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)propose plusieurs manières d'utiliser Microsoft Active Directory (AD) avec d'autres, Services AWS comme Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) pour SQL Server et FSx Amazon pour Windows File Server.
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permet à vos charges de travail et à vos AWS ressources sensibles aux annuaires d'utiliser Microsoft Active Directory dans le. AWS Cloud
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [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. Par exemple, des AWS Lambda fonctions, des points de terminaison d'invocation HTTP utilisant des destinations d'API ou des bus d'événements dans d'autres. 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. Avec IAM, vous pouvez spécifier qui ou quoi peut accéder aux services et aux ressources AWS, gérer de manière centralisée les autorisations détaillées et analyser les accès pour affiner les autorisations entre elles. AWS
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)vous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle.
+ [AWS Systems Manager les documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) définissent les actions que Systems Manager exécute sur vos instances gérées. Systems Manager inclut plus d'une centaine de documents préconfigurés que vous pouvez utiliser en spécifiant des paramètres lors de l'exécution.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) est une fonctionnalité AWS Systems Manager et fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure open source sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)est un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code** **C**

Le code de ce modèle est disponible dans le référentiel de [solutions GitHub Custom AD Cleanup Automation](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/). 

## Bonnes pratiques
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-best-practices"></a>
+ **Joignez automatiquement des domaines.**Lorsque vous lancez une instance Windows destinée à faire partie d'un Directory Service domaine, rejoignez le domaine pendant le processus de création de l'instance au lieu de l'ajouter manuellement ultérieurement. Pour rejoindre automatiquement un domaine, sélectionnez le répertoire approprié dans la liste déroulante des **répertoires de jointure de domaines** lors du lancement d'une nouvelle instance. Pour plus de détails, consultez la [section Joindre sans difficulté une instance Amazon EC2 Windows à votre AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) dans le *guide d'Directory Service administration*.
+ **Supprimez les comptes inutilisés.**Il est courant de trouver dans AD des comptes qui n'ont jamais été utilisés. Tout comme les comptes désactivés ou inactifs qui restent dans le système, les comptes non utilisés négligés peuvent ralentir votre système publicitaire ou rendre votre organisation vulnérable aux violations de données.
+ **Automatisez les nettoyages d'Active Directory.**Pour atténuer les risques de sécurité et empêcher les comptes obsolètes d'affecter les performances d'AD, effectuez des nettoyages AD à intervalles réguliers. Vous pouvez accomplir la plupart des tâches de gestion et de nettoyage d'AD en écrivant des scripts. Les tâches incluent par exemple la suppression de comptes désactivés et inactifs, la suppression de groupes vides et inactifs et la localisation de comptes utilisateurs et de mots de passe expirés. 

## Épopées
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-epics"></a>

### Configuration de votre environnement
<a name="set-up-your-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un dossier de projet et ajoutez les fichiers. | Pour cloner le référentiel et créer un dossier de projet, procédez comme suit : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 

### Provisionner l'architecture cible à l'aide de la configuration Terraform
<a name="provision-the-target-architecture-by-using-the-terraform-configuration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Initialisez la configuration Terraform. | Pour initialiser votre répertoire de travail contenant les fichiers Terraform, exécutez la commande suivante.`terraform init` | DevOps ingénieur | 
| Prévisualisez les modifications. | Vous pouvez prévisualiser les modifications que Terraform apportera à l'infrastructure avant que celle-ci ne soit déployée. Pour valider que Terraform apportera les modifications nécessaires, exécutez la commande suivante.`terraform plan` | DevOps ingénieur | 
| Exécutez les actions proposées. | Pour vérifier que les résultats de la `terraform plan` commande sont conformes aux attentes, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps ingénieur | 
| Nettoyez l'infrastructure. | Pour nettoyer l'infrastructure que vous avez créée, utilisez la commande suivante.`terraform destroy`Pour confirmer la commande de destruction, tapez`yes`. | DevOps ingénieur | 

### Vérification du déploiement
<a name="verify-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez et testez la fonction Lambda. | Pour vérifier que le déploiement a bien eu lieu, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)Les résultats de l'exécution indiquent le résultat de la fonction. | DevOps ingénieur | 
| Affichez les résultats de la fonction Lambda. | Dans ce modèle, une EventBridge règle exécute la fonction Lambda une fois par jour. Pour afficher les résultats de la fonction Lambda, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)Dans la CloudWatch console, la page **Log groups** affiche les résultats de la fonction Lambda. | DevOps ingénieur | 

### Nettoyer l'infrastructure après utilisation
<a name="clean-up-infrastructure-after-use"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez les infrastructures. | Pour nettoyer l'infrastructure que vous avez créée, utilisez la commande suivante.`terraform destroy`Pour confirmer la commande de destruction, tapez`yes`. | DevOps ingénieur | 
| Vérifiez après le nettoyage. | Vérifiez que les ressources ont été correctement supprimées. | DevOps ingénieur | 

## Résolution des problèmes
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Si vous essayez de supprimer l'ordinateur AD, le message « Accès refusé » s'affiche. L'ordinateur AD ne peut pas être supprimé car, par défaut, l'action tente de supprimer deux adresses IP privées connectées dans le cadre des services AD. | Pour éviter cette erreur, utilisez l'opération Python suivante pour ignorer les deux premiers ordinateurs lorsque vous listez les différences entre la sortie d'un ordinateur AD et la sortie de votre machine exécutant Windows.<pre>Difference = Difference[2:]</pre> | 
| Lorsque Lambda exécute un PowerShell script sur un serveur Windows, il s'attend à ce que les modules Active Directory soient disponibles par défaut. Si les modules ne sont pas disponibles, une fonction Lambda crée une erreur indiquant « Get- n'AdComputer est pas installé sur l'instance ». | Pour éviter cette erreur, installez les modules requis en utilisant les données utilisateur des EC2 instances. Utilisez le [EC2WindowsUserdata](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/blob/main/EC2WindowsUserdata)script qui se trouve dans le GitHub dépôt de ce modèle. | 

## Ressources connexes
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources"></a>

**AWS documentation**
+ [Amazon EventBridge et Gestion des identités et des accès AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Configurer des autorisations d’instance requises pour Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Gestion des identités et des accès pour Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Joindre manuellement une instance Amazon EC2 Windows à votre AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Utilisation de politiques IAM basées sur l'identité dans AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)

**Autres ressources**
+ [AWS Fournisseur](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (documentation Terraform)
+ [Configuration du backend](https://developer.hashicorp.com/terraform/language/backend) (documentation Terraform)
+ [Installer Terraform (documentation Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli))
+ [Module de démarrage Python](https://pypi.org/project/boto/) (référentiel Python Package Index)
+ [Téléchargement du binaire Terraform (documentation](https://www.terraform.io/downloads) Terraform)

# Exécutez des tests unitaires pour les tâches ETL Python en AWS Glue utilisant le framework pytest
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework"></a>

*Praveen Kumar Jeyarajan et Vaidy Sankaran, Amazon Web Services*

## Résumé
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-summary"></a>

Vous pouvez exécuter des tests unitaires pour des tâches d'extraction, de transformation et de chargement (ETL) en Python AWS Glue dans un [environnement de développement local](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html), mais la réplication de ces tests dans un DevOps pipeline peut s'avérer difficile et chronophage. Les tests unitaires peuvent être particulièrement difficiles lorsque vous modernisez le processus ETL du mainframe sur des piles AWS technologiques. Ce modèle vous montre comment simplifier les tests unitaires, tout en préservant les fonctionnalités existantes, en évitant d'interrompre les fonctionnalités clés de l'application lorsque vous publiez de nouvelles fonctionnalités et en maintenant des logiciels de haute qualité. Vous pouvez utiliser les étapes et les exemples de code de ce modèle pour exécuter des tests unitaires pour les tâches ETL Python en AWS Glue utilisant le framework pytest dans AWS CodePipeline. Vous pouvez également utiliser ce modèle pour tester et déployer plusieurs AWS Glue tâches.

## Conditions préalables et limitations
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Une URI d'image Amazon Elastic Container Registry (Amazon ECR) pour AWS Glue votre bibliothèque, téléchargée depuis la galerie publique [Amazon](https://gallery.ecr.aws/glue/aws-glue-libs) ECR
+ terminal Bash (sur n'importe quel système d'exploitation) avec un profil pour la cible Compte AWS et Région AWS
+ [Python 3.10 ou version](https://www.python.org/downloads/) ultérieure
+ [Pytest](https://github.com/pytest-dev/pytest)
+ bibliothèque [Moto](https://github.com/getmoto/moto) Python pour les tests Services AWS

## Architecture
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-architecture"></a>

Le schéma suivant décrit comment intégrer les tests unitaires pour les processus AWS Glue ETL basés sur Python dans un pipeline typique à l'échelle AWS DevOps d'une entreprise.

![\[Tests unitaires pour les processus ETL d'AWS Glue.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/82781ca8-4da0-4df0-bf23-32992fece231/images/6286dafc-f1e0-4967-beed-4dedc6047c10.png)


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

1. Au stade source, AWS CodePipeline utilise un bucket Amazon Simple Storage Service (Amazon S3) versionné pour stocker et gérer les actifs du code source. Ces ressources incluent un exemple de tâche ETL Python (`sample.py`), un fichier de test unitaire (`test_sample.py`) et un AWS CloudFormation modèle. CodePipeline Transfère ensuite le code le plus récent de la branche principale vers le AWS CodeBuild projet pour un traitement ultérieur.

1. Au cours de la phase de création et de publication, le code le plus récent de l'étape source précédente est testé à l'unité à l'aide d'une image Amazon ECR AWS Glue publique. Le rapport de test est ensuite publié dans les groupes de CodeBuild rapports. L'image du conteneur dans le référentiel public Amazon ECR pour les AWS Glue bibliothèques inclut tous les fichiers binaires nécessaires à l'exécution locale de tâches ETL [PySparkbasées sur](https://spark.apache.org/docs/latest/api/python/) des tests unitaires. AWS Glue Le référentiel de conteneurs public comporte trois balises d'image, une pour chaque version prise en charge par AWS Glue. À des fins de démonstration, ce modèle utilise la balise `glue_libs_4.0.0_image_01` image. Pour utiliser cette image de conteneur comme image d'exécution CodeBuild, copiez l'URI de l'image qui correspond à la balise d'image que vous souhaitez utiliser, puis mettez à jour le `pipeline.yml` fichier dans le GitHub référentiel de la `TestBuild` ressource.

1. Lors de la phase de déploiement, le CodeBuild projet est lancé et le code est publié dans un compartiment Amazon S3 si tous les tests sont réussis.

1. L'utilisateur déploie la AWS Glue tâche à l'aide du CloudFormation modèle figurant dans le `deploy` dossier.

## Outils
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-tools"></a>

**Services AWS**
+ [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 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.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)est un service ETL entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets offrant une évolutivité, une disponibilité des données, une sécurité et des performances de pointe.

**Autres outils**
+ [Python](https://www.python.org/) est un langage de programmation de haut niveau interprété à usage général.
+ [Moto](https://github.com/getmoto/moto) est une bibliothèque Python pour les tests Services AWS.
+ [Pytest](https://github.com/pytest-dev/pytest) est un framework permettant d'écrire de petits tests unitaires évolutifs pour prendre en charge des tests fonctionnels complexes pour les applications et les bibliothèques.
+ [La bibliothèque Python ETL](https://github.com/awslabs/aws-glue-libs) for AWS Glue est un référentiel pour les bibliothèques Python utilisées dans le développement local de tâches PySpark par lots pour AWS Glue.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [aws-glue-jobs-unit-testing](https://github.com/aws-samples/aws-glue-jobs-unit-testing). Le référentiel inclut les ressources suivantes :
+ Exemple de AWS Glue tâche basée sur Python dans le dossier `src`
+ Cas de tests unitaires associés (créés à l'aide du framework pytest) dans le dossier `tests`
+ Un CloudFormation modèle (écrit en YAML) dans le dossier `deploy`

## Bonnes pratiques
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-best-practices"></a>

**Sécurité des CodePipeline ressources**

Il est recommandé d'utiliser le chiffrement et l'authentification pour les référentiels sources qui se connectent à vos pipelines. CodePipeline Pour plus d'informations, consultez [la section Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/codepipeline/latest/userguide/security-best-practices.html) dans la CodePipeline documentation.

**Surveillance et journalisation des CodePipeline ressources**

Il est recommandé d'utiliser les fonctionnalités de AWS journalisation pour déterminer les actions que les utilisateurs effectuent sur votre compte et les ressources qu'ils utilisent. Les fichiers journaux contiennent les informations suivantes :
+ Heure et date des actions
+ Adresse IP source des actions
+ Quelles actions ont échoué en raison d'autorisations inadéquates

Les fonctionnalités de journalisation sont disponibles dans AWS CloudTrail et Amazon CloudWatch Events. Vous pouvez l'utiliser CloudTrail pour enregistrer les appels d' AWS API et les événements connexes effectués par ou pour votre compte Compte AWS. Pour plus d'informations, consultez la section [Journalisation des appels d' CodePipeline API AWS CloudTrail](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring-cloudtrail-logs.html) dans la CodePipeline documentation.

Vous pouvez utiliser CloudWatch les événements pour surveiller vos AWS Cloud ressources et vos applications en cours d'exécution AWS. Vous pouvez également créer des alertes dans CloudWatch Événements. Pour plus d'informations, consultez la section [Surveillance CodePipeline des événements](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html) dans la CodePipeline documentation.

## Épopées
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-epics"></a>

### Déployer le code source
<a name="deploy-the-source-code"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Préparez l'archive de code pour le déploiement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | DevOps ingénieur | 
| Créez la CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html)La pile crée une CodePipeline vue en utilisant Amazon S3 comme source. Dans les étapes ci-dessus, le pipeline est **aws-glue-unit-test-pipeline**. | AWS DevOps, DevOps ingénieur | 

### Exécutez les tests unitaires
<a name="run-the-unit-tests"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez les tests unitaires dans le pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps ingénieur | 

### Nettoyez toutes les AWS ressources
<a name="clean-up-all-aws-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez les ressources de votre environnement. | Pour éviter des coûts d'infrastructure supplémentaires, assurez-vous de supprimer la pile après avoir testé les exemples fournis dans ce modèle.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | AWS DevOps, DevOps ingénieur | 

## Résolution des problèmes
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le rôle CodePipeline de service ne peut pas accéder au compartiment Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework.html) | 
| CodePipeline renvoie une erreur indiquant que le compartiment Amazon S3 n'est pas versionné. | CodePipeline nécessite que le compartiment Amazon S3 source soit versionné. Activez le versionnement sur votre compartiment Amazon S3. Pour obtenir des instructions, consultez la section [Activation de la gestion des versions sur les buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html). | 

## Ressources connexes
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-resources"></a>
+ [AWS Glue](https://aws.amazon.com/glue/)
+ [Développer et tester des AWS Glue emplois au niveau local](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-libraries.html)
+ [AWS CloudFormation pour AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html)

## Informations supplémentaires
<a name="run-unit-tests-for-python-etl-jobs-in-aws-glue-using-the-pytest-framework-additional"></a>

En outre, vous pouvez déployer les AWS CloudFormation modèles à l'aide du AWS Command Line Interface (AWS CLI). Pour plus d'informations, consultez la section [Déploiement rapide de modèles avec transformations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deploy.html) dans la CloudFormation documentation.

# Configuration d'un CI/CD pipeline à l'aide d'AWS CodePipeline et d'AWS CDK
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk"></a>

*Konstantin Zarudaev, Yasha Dabas, Lars Kinder et Cizer Pereira, Amazon Web Services*

## Accueil
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-summary"></a>

L'automatisation de votre processus de création et de publication de logiciels grâce à l'intégration et à la livraison continues (CI/CD) supports repeatable builds and rapid delivery of new features to your users. You can quickly and easily test each code change, and you can catch and fix bugs before releasing your software. By running each change through your staging and release process, you can verify the quality of your application or infrastructure code. CI/CDincarne une culture, un ensemble de principes de fonctionnement et un [ensemble de pratiques qui aident les équipes de](https://aws.amazon.com/devops/#cicd) développement d'applications à apporter des modifications de code plus fréquemment et de manière plus fiable). L'implémentation est également connue sous le nom de pipeline *CI/CD*.

Ce modèle définit un pipeline d'intégration et de livraison continues (CI/CD) réutilisable sur Amazon Web Services (AWS) avec un référentiel AWS CodeCommit . Le CodePipeline pipeline AWS est écrit à l'aide d'[AWS Cloud Development Kit (AWS CDK) v2](https://aws.amazon.com/cdk/).

Vous pouvez ainsi modéliser les différentes étapes du processus de publication de votre logiciel via l'interface AWS Management Console, l'AWS Command Line Interface (AWS CLI), CloudFormation AWS ou AWS SDKs. CodePipeline Ce modèle illustre la mise en œuvre d'AWS CDK CodePipeline et de ses composants à l'aide d'AWS CDK. Outre la création de bibliothèques, AWS CDK inclut une boîte à outils (la commande CLI`cdk`), qui est le principal outil pour interagir avec votre application AWS CDK. Entre autres fonctions, le kit d'outils permet de convertir une ou plusieurs piles en CloudFormation modèles et de les déployer sur un compte AWS.

Le pipeline inclut des tests visant à valider la sécurité de vos bibliothèques tierces et contribue à garantir une publication accélérée et automatisée dans les environnements spécifiés. Vous pouvez améliorer la sécurité globale de vos applications en les soumettant à un processus de validation.

L'objectif de ce modèle est d'accélérer votre utilisation des CI/CD pipelines pour déployer votre code tout en garantissant que les ressources que vous déployez respectent les DevOps meilleures pratiques. Après avoir implémenté l'[exemple de code](https://github.com/aws-samples/aws-codepipeline-cicd), vous disposerez d'un [AWS CodePipeline](https://aws.amazon.com/codepipeline/) avec des processus de linting, de test, de vérification de sécurité, de déploiement et de post-déploiement. Ce modèle inclut également des étapes pour Makefile. À l'aide d'un Makefile, les développeurs peuvent reproduire CI/CD les étapes localement et accélérer le processus de développement.

## Conditions préalables et limitations
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Une compréhension de base dans les domaines suivants :
  + AWS CDK
  + AWS CloudFormation
  + AWS CodePipeline
  + TypeScript

**Limites**

Ce modèle utilise [AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) TypeScript uniquement pour. Il ne couvre pas les autres langues prises en charge par AWS CDK.

**Versions du produit**

Utilisez les dernières versions des outils suivants :
+ Interface de ligne de commande AWS (AWS CLI)
+ cfn\$1nag
+ git-remote-codecommit
+ Node.js

## Architecture
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-architecture"></a>

**Pile technologique cible**
+ AWS CDK
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodePipeline

**Architecture cible**

Le pipeline est déclenché par une modification du CodeCommit référentiel AWS (`SampleRepository`). Au début, CodePipeline crée des artefacts, se met à jour et lance le processus de déploiement. Le pipeline qui en résulte déploie une solution dans trois environnements indépendants :
+ Dev — Vérification du code en trois étapes dans l'environnement de développement actif
+ Test — Environnement de test d'intégration et de régression
+ Prod — Environnement de production

Les trois étapes incluses dans la phase de développement sont le linting, la sécurité et les tests unitaires. Ces étapes s'exécutent en parallèle pour accélérer le processus. Pour garantir que le pipeline ne fournit que des artefacts fonctionnels, il sera arrêté de fonctionner chaque fois qu'une étape du processus échoue. Après un déploiement en phase de développement, le pipeline exécute des tests de validation pour vérifier les résultats. En cas de succès, le pipeline déploiera ensuite les artefacts dans l'environnement de test, qui contient une validation après le déploiement. La dernière étape consiste à déployer les artefacts dans l'environnement Prod.

Le schéma suivant montre le flux de travail entre le CodeCommit référentiel et les processus de création et de mise à jour exécutés par CodePipeline, les trois étapes de l'environnement de développement, ainsi que le déploiement et la validation ultérieurs dans chacun des trois environnements.

![\[L'environnement de développement inclut le linting, la sécurité et les tests unitaires, tous incluant le déploiement et la validation.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)


## Outils
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur l'ensemble des comptes et des régions AWS. Dans ce modèle, les CloudFormation modèles peuvent être utilisés pour créer un CodeCommit référentiel et un pipeline CodePipeline CI/CD.
+ [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.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) est un CI/CD service qui 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.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.

**Autres outils**
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) est un outil open source qui recherche des modèles dans des CloudFormation modèles afin d'identifier les problèmes de sécurité potentiels.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)est un utilitaire permettant de transférer et d'extraire du code depuis des CodeCommit référentiels en étendant Git.
+ [Node.js](https://nodejs.org/en/docs/) est un environnement d' JavaScript exécution piloté par les événements conçu pour créer des applications réseau évolutives.

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [AWS CodePipeline with CI/CD practices](https://github.com/aws-samples/aws-codepipeline-cicd).

## Bonnes pratiques
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-best-practices"></a>

Passez en revue les ressources, telles que les politiques AWS Identity and Access Management (IAM), pour vérifier qu'elles sont conformes aux meilleures pratiques de votre organisation.

## Épopées
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-epics"></a>

### Outils d'installation
<a name="install-tools"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez des outils sur macOS ou Linux. | Si vous utilisez macOS ou Linux, vous pouvez installer les outils en exécutant la commande suivante dans votre terminal préféré ou en utilisant [Homebrew pour Linux.](https://docs.brew.sh/Homebrew-on-Linux)<pre>brew install<br />brew install git-remote-codecommit<br />brew install ruby brew-gem<br />brew-gem install cfn-nag</pre> | DevOps ingénieur | 
| Configurez l'AWS CLI. | Pour configurer l'AWS CLI, suivez les instructions correspondant à votre système d'exploitation :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps ingénieur | 

### Configuration du déploiement initial
<a name="set-up-the-initial-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez ou clonez le code. | Pour obtenir le code utilisé par ce modèle, effectuez l'une des opérations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html)<pre>git clone --depth 1 https://github.com/aws-samples/aws-codepipeline-cicd.git</pre>Supprimez le `.git` répertoire du référentiel cloné.<pre>cd ./aws-codepipeline-cicd<br />rm -rf ./.git</pre>Plus tard, vous utiliserez un CodeCommit dépôt AWS nouvellement créé comme origine distante. | DevOps ingénieur | 
| Connectez-vous au compte AWS. | Vous pouvez vous connecter à l'aide d'un jeton de sécurité temporaire ou d'une authentification par zone d'atterrissage. Pour vérifier que vous utilisez le bon compte et la bonne région AWS, exécutez les commandes suivantes.<pre>AWS_REGION="eu-west-1"<br />ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)<br />echo "${ACCOUNT_NUMBER}"</pre> | DevOps ingénieur | 
| Démarrez l'environnement. | Pour démarrer un environnement AWS CDK, exécutez les commandes suivantes.<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre>Une fois que vous avez réussi à démarrer l'environnement, le résultat suivant doit être affiché.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre>Pour plus d'informations sur le démarrage d'AWS CDK, consultez la documentation du CDK [AWS](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html). | DevOps ingénieur | 
| Synthétisez un modèle. | Pour synthétiser une application AWS CDK, utilisez la `cdk synth` commande.<pre>npm run cdk synth</pre>Le résultat suivant doit s'afficher.<pre>Successfully synthesized to <path-to-directory>/aws-codepipeline-cicd/cdk.out<br />Supply a stack id (CodePipeline, Dev-MainStack) to display its template.</pre> | DevOps ingénieur | 
| Déployez la CodePipeline pile. | Maintenant que vous avez amorcé et synthétisé le CloudFormation modèle, vous pouvez le déployer. Le déploiement créera le CodePipeline pipeline et un CodeCommit référentiel, qui seront la source et le déclencheur du pipeline.<pre>npm run cdk -- deploy CodePipeline --require-approval never</pre>Après avoir exécuté la commande, vous devriez constater un déploiement réussi de la CodePipeline pile et des informations de sortie. Vous `CodePipeline.RepositoryName` donne le nom du CodeCommit référentiel dans le compte AWS.<pre>CodePipeline: deploying...<br />CodePipeline: creating CloudFormation changeset...<br />✅  CodePipeline<br />Outputs:<br />CodePipeline.RepositoryName = SampleRepository<br />Stack ARN:<br />arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CodePipeline/STACK-ID</pre> | DevOps ingénieur | 
| Configurez le CodeCommit référentiel et la branche distants. | Une fois le déploiement réussi, CodePipeline lancera la première exécution du pipeline, que vous trouverez dans la [ CodePipeline console AWS](https://eu-west-1.console.aws.amazon.com/codesuite/codepipeline/pipelines). Comme AWS CDK CodeCommit n'initie pas de branche par défaut, cette exécution initiale du pipeline échouera et renverra le message d'erreur suivant.<pre>The action failed because no branch named main was found in the selected AWS CodeCommit repository SampleRepository. Make sure you are using the correct branch name, and then try again. Error: null</pre>Pour corriger cette erreur, configurez une origine distante en tant que `SampleRepository` et créez la `main` branche requise.<pre>RepoName=$(aws cloudformation describe-stacks --stack-name CodePipeline --query "Stacks[0].Outputs[?OutputKey=='RepositoryName'].OutputValue" --output text)<br />echo "${RepoName}"<br />#<br />git init<br />git branch -m master main<br />git remote add origin codecommit://${RepoName}<br />git add .<br />git commit -m "Initial commit"<br />git push -u origin main</pre> | DevOps ingénieur | 

### Testez le CodePipeline pipeline déployé
<a name="test-the-deployed-codepipeline-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez une modification pour activer le pipeline. | Après un déploiement initial réussi, vous devriez disposer d'un CI/CD pipeline complet avec une `main` branche pour `SampleRepository` en tant que branche source. Dès que vous validez les modifications apportées à la `main` branche, le pipeline lance et exécute la séquence d'actions suivante :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps ingénieur | 

### Testez localement en utilisant un Makefile
<a name="test-locally-by-using-a-makefile"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez le processus de développement à l'aide d'un Makefile. | Vous pouvez exécuter l'ensemble du pipeline localement à l'aide de la `make` commande, ou vous pouvez exécuter une étape individuelle (par exemple,`make linting`).Pour tester l'utilisation`make`, effectuez les actions suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | Développeur d'applications, DevOps ingénieur | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources de l'application AWS CDK. | Pour nettoyer votre application AWS CDK, exécutez la commande suivante.<pre>cdk destroy --all</pre>Sachez que les compartiments Amazon Simple Storage Service (Amazon S3) créés lors du démarrage ne sont pas automatiquement supprimés. Ils ont besoin d'une politique de rétention autorisant leur suppression, ou vous devez les supprimer manuellement dans votre compte AWS. | DevOps ingénieur | 

## Résolution des problèmes
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le modèle ne fonctionne pas comme prévu. | Si quelque chose ne va pas et que le modèle ne fonctionne pas, assurez-vous que vous disposez des éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | 

## Ressources connexes
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-resources"></a>
+ [Premiers pas avec les tâches courantes dans IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)
+ [ CodePipeline Documentation AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [Kit de développement logiciel AWS](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

# Configurez une journalisation centralisée à l'échelle de l'entreprise à l'aide de Terraform
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform"></a>

*Aarti Rajput, Yashwant Patel et Nishtha Yadav, Amazon Web Services*

## Résumé
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-summary"></a>

La journalisation centralisée est vitale pour l'infrastructure cloud d'une entreprise, car elle fournit une visibilité sur ses opérations, sa sécurité et sa conformité. Au fur et à mesure que votre entreprise adapte son AWS environnement à plusieurs comptes, une stratégie structurée de gestion des journaux devient fondamentale pour exécuter les opérations de sécurité, répondre aux exigences d'audit et atteindre l'excellence opérationnelle.

Ce modèle fournit un cadre évolutif et sécurisé pour centraliser les journaux provenant de multiples services, afin de permettre la gestion Comptes AWS des journaux à l'échelle de l'entreprise dans le cadre de déploiements complexes. AWS La solution est automatisée à l'aide de Terraform, un outil d'infrastructure en tant que code (IaC) HashiCorp qui garantit des déploiements cohérents et répétables et minimise la configuration manuelle. En combinant Amazon CloudWatch Logs, Amazon Data Firehose et Amazon Simple Storage Service (Amazon S3), vous pouvez mettre en œuvre un pipeline robuste d'agrégation et d'analyse des journaux qui fournit :
+ Gestion centralisée des journaux au sein de votre organisation dans AWS Organizations
+ Collecte de journaux automatisée avec contrôles de sécurité intégrés
+ Traitement évolutif des journaux et stockage durable
+ Rapports de conformité et pistes d'audit simplifiés
+ Informations opérationnelles et surveillance en temps réel

La solution collecte les journaux à partir des AWS Lambda conteneurs, des fonctions et des instances de base de données Amazon Elastic Kubernetes Service (Amazon EKS) via Logs. CloudWatch Il transmet automatiquement ces journaux vers un compte de journalisation dédié à l'aide de filtres CloudWatch d'abonnement. Firehose gère le pipeline de streaming de journaux à haut débit vers Amazon S3 pour un stockage à long terme. Amazon Simple Queue Service (Amazon SQS) est configuré pour recevoir des notifications d'événements Amazon S3 lors de la création d'un objet. Cela permet l'intégration avec les services d'analyse, notamment :
+ Amazon OpenSearch Service pour la recherche dans les journaux, la visualisation et les analyses en temps réel
+ Amazon Athena pour les requêtes basées sur SQL
+ Amazon EMR pour le traitement à grande échelle
+ Lambda pour une transformation personnalisée
+ Amazon Quick Sight pour les tableaux de bord

Toutes les données sont cryptées à l'aide de AWS Key Management Service (AWS KMS), et l'ensemble de l'infrastructure est déployée à l'aide de Terraform pour une configuration cohérente dans tous les environnements.

Cette approche de journalisation centralisée permet aux entreprises d'améliorer leur niveau de sécurité, de respecter les exigences de conformité et d'optimiser l'efficacité opérationnelle de leur AWS infrastructure.

## Conditions préalables et limitations
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-prereqs"></a>

**Conditions préalables**
+ Une zone de landing zone pour votre organisation créée en utilisant [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)
+ [Account Factory pour Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html), déployé et configuré avec les comptes requis
+ [Terraform](https://developer.hashicorp.com/terraform/downloads) pour le provisionnement de l'infrastructure
+ Gestion des identités et des accès AWS Rôles et politiques [(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html) pour l'accès entre comptes

Pour obtenir des instructions sur la configuration AWS Control Tower des comptes AFT et Application, consultez la [section Epics](#set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics).

**Comptes obligatoires**

Votre organisation AWS Organizations doit inclure les comptes suivants :
+ **Compte d'application** : un ou plusieurs comptes sources sur lesquels Services AWS (Amazon EKS, Lambda et Amazon RDS) s'exécutent et génèrent des journaux
+ **Compte Log Archive** : un compte dédié pour le stockage et la gestion centralisés des journaux

**Versions du produit**
+ [AWS Control Tower version 3.1](https://docs.aws.amazon.com/controltower/latest/userguide/2023-all.html#lz-3-1) ou ultérieure
+ [Terraform version 0.15.0](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) ou ultérieure

## Architecture
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-architecture"></a>

Le schéma suivant illustre une architecture de journalisation AWS centralisée qui fournit une solution évolutive pour collecter, traiter et stocker les journaux de plusieurs comptes d'applications dans un compte Log Archive dédié. Cette architecture gère efficacement les journaux provenant Services AWS notamment d'Amazon RDS, Amazon EKS et Lambda, et les achemine via un processus rationalisé vers les compartiments S3 régionaux du compte Log Archive.

![\[Architecture de journalisation centralisée AWS pour collecter des journaux à partir de plusieurs comptes d'applications.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9fc71a10-65d6-437b-9128-cc27bda11af4/images/2e916040-0f11-4712-a8dd-31c95194ce5d.png)


Le flux de travail comprend cinq processus :

1. **Processus de journalisation**
   + Le processus de flux de journaux commence dans les comptes de l'application, où sont Services AWS générés différents types de journaux, tels que les journaux généraux, les journaux d'erreurs, les journaux d'audit, les journaux de requêtes lentes d'Amazon RDS, les journaux du plan de contrôle d'Amazon EKS et les journaux d'exécution et d'erreur de Lambda.
   + CloudWatch sert de point de collecte initial. Il rassemble ces journaux au niveau du groupe de journaux au sein de chaque compte d'application.
   + Dans CloudWatch, [les filtres d'abonnement](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html) déterminent quels journaux doivent être transférés au compte central. Ces filtres vous permettent de contrôler de manière précise le transfert des journaux, afin que vous puissiez spécifier des modèles de journal exacts ou des flux de journaux complets à des fins de centralisation.

1. **Transfert de journaux entre comptes**
   + Les journaux sont transférés vers le compte Log Archive. CloudWatch les filtres d'abonnement facilitent le transfert entre comptes et préservent le contexte régional.
   + L'architecture établit plusieurs flux parallèles pour gérer efficacement différentes sources de journaux, afin de garantir des performances et une évolutivité optimales.

1. **Traitement des journaux dans le compte Log Archive**
   + Dans le compte Log Archive, Firehose traite les flux de journaux entrants.
   + Chaque région gère des flux de diffusion Firehose dédiés qui peuvent transformer, convertir ou enrichir les logs selon les besoins.
   + Ces flux Firehose fournissent les journaux traités aux compartiments S3 du compte Log Archive, qui se trouve dans la même région que les comptes de l'application source (région A dans le schéma) afin de respecter les exigences de souveraineté des données.

1. **Notifications et flux de travail supplémentaires**
   + Lorsque les logs atteignent leurs compartiments S3 de destination, l'architecture implémente un système de notification à l'aide d'Amazon SQS.
   + Les files d'attente SQS régionales permettent un traitement asynchrone et peuvent déclencher des flux de travail, des analyses ou des systèmes d'alerte supplémentaires en fonction des journaux stockés.

1. **AWS KMS pour la sécurité**

   L'architecture intègre des éléments AWS KMS de sécurité. AWS KMS fournit des clés de chiffrement pour les compartiments S3. Cela garantit que tous les journaux stockés maintiennent le chiffrement au repos tout en conservant le chiffrement régional pour répondre aux exigences de résidence des données.

## Outils
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-tools"></a>

**Services AWS**
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) est un service de surveillance et d'observabilité qui collecte des données opérationnelles et de surveillance sous forme de journaux, de mesures et d'événements. Il fournit une vue unifiée des AWS ressources, des applications et des services qui s'exécutent sur AWS et sur des serveurs sur site.
+ CloudWatch Les [filtres d'abonnement aux journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html) sont des expressions qui correspondent à un modèle des événements de journal entrants et fournissent les événements de journal correspondants à la AWS ressource spécifiée pour un traitement ou une analyse ultérieurs.
+ [AWS Control Tower Account Factory For Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) met en place un pipeline Terraform pour vous aider à approvisionner et à personnaliser des comptes dans. AWS Control Tower AFT fournit un provisionnement de comptes basé sur Terraform tout en vous permettant de gérer vos comptes avec. AWS Control Tower
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) fournit des données de streaming en temps réel vers des destinations telles qu'Amazon S3, Amazon Redshift et Amazon Service. OpenSearch Il s'adapte automatiquement au débit de vos données et ne nécessite aucune administration continue.
+ [Amazon Elastic Kubernetes Service (Amazon EKS) est un service d'orchestration de conteneurs géré qui facilite le déploiement, la gestion et le dimensionnement d'applications conteneurisées à l'aide de Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html). Il gère automatiquement la disponibilité et l'évolutivité des nœuds du plan de contrôle Kubernetes.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) crée et contrôle les clés de chiffrement pour chiffrer vos données. AWS KMS s'intègre Services AWS à d'autres services pour vous aider à protéger les données que vous stockez avec ces services.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)est un service de calcul sans serveur qui vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Il adapte automatiquement vos applications en exécutant du code en réponse à chaque déclencheur, et ne facture que le temps de calcul que vous utilisez.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) est un service de base de données relationnelle géré qui facilite la configuration, l'exploitation et le dimensionnement d'une base de données relationnelle dans le cloud. Il fournit une capacité rentable et redimensionnable tout en automatisant les tâches d'administration fastidieuses.
+ [Amazon Simple Queue Service (Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)) est un service de mise en file d'attente de messages qui vous permet de découpler et de dimensionner les microservices, les systèmes distribués et les applications sans serveur. Il élimine la complexité de la gestion et de l'exploitation d'un intergiciel orienté message.
+ [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 offre évolutivité, disponibilité des données, sécurité et performances. Il peut stocker et récupérer n'importe quelle quantité de données n'importe où sur le Web.

**Autres outils**
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

**Code**

Le code de ce modèle est disponible dans le référentiel de [journalisation GitHub centralisé](https://github.com/aws-samples/sample-centralised-logging-at-enterprise-scale-using-terraform).

## Bonnes pratiques
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-best-practices"></a>
+ Utilisez [plusieurs Comptes AWS au sein d'une même organisation dans AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts.html). Cette pratique permet une gestion centralisée et une journalisation standardisée entre les comptes.
+ Configurez les [compartiments S3 avec le versionnement, les politiques de cycle de vie et la réplication entre](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) régions. Mettez en œuvre le chiffrement et la journalisation des accès pour des raisons de sécurité et de conformité.
+ Mettez en œuvre des [normes de journalisation communes en utilisant le format JSON](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData-discoverable-fields.html) avec des horodatages et des champs standard. Utilisez une structure de préfixes et une corrélation cohérentes IDs pour faciliter le suivi et l'analyse.
+ Activez [les contrôles de sécurité grâce au AWS KMS chiffrement](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html) et à l'accès avec le moindre privilège. Maintenez une AWS CloudTrail surveillance et une rotation régulière des clés pour une sécurité renforcée.
+ Configurez [CloudWatch des métriques et des alertes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) pour le suivi des livraisons. Surveillez les coûts et les performances grâce à des notifications automatisées.
+ Configurez [les politiques de rétention Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) pour répondre aux exigences de conformité et activez la journalisation des accès au serveur Amazon S3 pour suivre toutes les demandes adressées à vos compartiments S3. Tenez à jour la documentation relative aux politiques relatives aux compartiments S3 et aux règles de cycle de vie. Révisez régulièrement les journaux d'accès, les autorisations des compartiments et les configurations de stockage afin de garantir la conformité et les [meilleures pratiques en matière de sécurité](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html).

## Épopées
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-epics"></a>

### Comptes de configuration AWS Control Tower, AFT et d'application
<a name="set-up-ctowerlong-aft-and-application-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez un AWS Control Tower environnement avec AFT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | Administrateur AWS | 
| Activez le partage des ressources pour l'organisation. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | Administrateur AWS | 
| Vérifiez ou approvisionnez les comptes de l'application. | Pour configurer de nouveaux comptes d'application pour votre cas d'utilisation, créez-les via AFT. Pour plus d'informations, voir [Provisionner un nouveau compte avec AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-provision-account.html) dans la AWS Control Tower documentation. | Administrateur AWS | 

### Configuration des fichiers de configuration pour les comptes d'applications
<a name="set-up-configuration-files-for-application-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez `Application_account` le contenu du dossier dans le `aft-account-customizations` référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Vérifiez et modifiez les paramètres d'entrée pour configurer le compte de l'application. | Au cours de cette étape, vous configurez le fichier de configuration pour créer des ressources dans les comptes d'applications, notamment les groupes de CloudWatch journaux, les filtres CloudWatch d'abonnement, les rôles et politiques IAM, ainsi que les détails de configuration pour les fonctions Amazon RDS, Amazon EKS et Lambda.Dans votre `aft-account-customizations` référentiel, dans le `Application_account` dossier, configurez les paramètres d'entrée du `terraform.tfvars` fichier en fonction des exigences de votre organisation :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 

### Configuration des fichiers de configuration pour le compte Log Archive
<a name="set-up-configuration-files-for-the-log-archive-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Copiez `Log_archive_account` le contenu du dossier dans le `aft-account-customizations` référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Vérifiez et modifiez les paramètres d'entrée pour configurer le compte Log Archive. | Au cours de cette étape, vous configurez le fichier de configuration pour créer des ressources dans le compte Log Archive, notamment les flux de diffusion Firehose, les compartiments S3, les files d'attente SQS, ainsi que les rôles et politiques IAM.Dans le `Log_archive_account` dossier de votre `aft-account-customizations` référentiel, configurez les paramètres d'entrée dans le `terraform.tfvars` fichier en fonction des exigences de votre organisation :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 

### Exécutez des commandes Terraform pour provisionner des ressources
<a name="run-terraform-commands-to-provision-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Option 1 - Déployez les fichiers de configuration Terraform depuis AFT. | Dans AFT, le pipeline AFT est déclenché une fois que vous avez envoyé le code contenant les modifications de configuration dans le GitHub `aft-account-customizations` référentiel. AFT détecte automatiquement les modifications et lance le processus de personnalisation du compte.Après avoir apporté des modifications à vos fichiers Terraform (`terraform.tfvars`), validez et transférez vos modifications dans votre référentiel : `aft-account-customizations`<pre>$ git add *<br />$ git commit -m "update message"<br />$ git push origin main</pre>Si vous utilisez une autre branche (par exemple`dev`), remplacez-la `main` par le nom de votre succursale. | DevOps ingénieur | 
| Option 2 - Déployez le fichier de configuration Terraform manuellement. | Si vous n'utilisez pas AFT ou si vous souhaitez déployer la solution manuellement, vous pouvez utiliser les commandes Terraform suivantes à partir des dossiers `Application_account` et `Log_archive_account` :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 

### Valider les ressources
<a name="validate-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez les filtres d'abonnement. | Pour vérifier que les filtres d'abonnement transfèrent correctement les journaux des groupes de journaux du compte de l'application vers le compte Log Archive :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Vérifiez les streams Firehose. | Pour vérifier que les streams Firehose contenus dans le compte Log Archive traitent correctement les journaux de l'application :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Validez les compartiments S3 centralisés. | Pour vérifier que les compartiments S3 centralisés reçoivent et organisent correctement les journaux :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Validez les files d'attente SQS. | Pour vérifier que les files d'attente SQS reçoivent des notifications pour les nouveaux fichiers journaux :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Option 1 - Désaffecter le fichier de configuration Terraform d'AFT. | Lorsque vous supprimez les fichiers de configuration Terraform et que vous appliquez les modifications, AFT lance automatiquement le processus de suppression des ressources.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 
| Option 2 — Nettoyez les ressources Terraform manuellement. | Si vous n'utilisez pas AFT ou si vous souhaitez nettoyer les ressources manuellement, utilisez les commandes Terraform suivantes à partir des dossiers `Application_account` et `Log_archive_account` :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | DevOps ingénieur | 

## Résolution des problèmes
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| La destination CloudWatch Logs n'a pas été créée ou est inactive. | Validez les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| Le filtre d'abonnement a échoué ou est bloqué en attente. | Vérifiez les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 
| Le flux de livraison Firehose n'affiche aucun enregistrement entrant. | Vérifiez les paramètres suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-centralized-logging-at-enterprise-scale-by-using-terraform.html) | 

## Ressources connexes
<a name="set-up-centralized-logging-at-enterprise-scale-by-using-terraform-resources"></a>
+ [Configuration de l'infrastructure Terraform (documentation](https://developer.hashicorp.com/terraform/tutorials/aws-get-started) Terraform)
+ [Déployer AWS Control Tower Account Factory pour Terraform (AFT) (AWS Control Tower documentation)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [Tutoriel IAM : Déléguer l'accès à l' Comptes AWS aide de rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) () IAMdocumentation

# Configurer le end-to-end chiffrement des applications sur Amazon EKS à l'aide du gestionnaire de certificats et de Let's Encrypt
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt"></a>

*Mahendra Evasiddappa et Vasanth Jeyaraj, Amazon Web Services*

## Résumé
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-summary"></a>

La mise en œuvre du end-to-end chiffrement peut être complexe et vous devez gérer les certificats pour chaque actif de votre architecture de microservices. Bien que vous puissiez mettre fin à la connexion TLS (Transport Layer Security) à la périphérie du réseau Amazon Web Services (AWS) à l'aide d'un Network Load Balancer ou d'Amazon API Gateway, certaines organisations end-to-end exigent le chiffrement.

Ce modèle utilise le contrôleur d'entrée NGINX pour l'entrée. En effet, lorsque vous créez une entrée Kubernetes, la ressource d'entrée utilise un Network Load Balancer. Le Network Load Balancer n'autorise pas le téléchargement de certificats clients. Par conséquent, vous ne pouvez pas obtenir un TLS mutuel avec Kubernetes Ingress.

Ce modèle est destiné aux organisations qui ont besoin d'une authentification mutuelle entre tous les microservices de leurs applications. Le protocole TLS mutuel réduit le fardeau lié à la gestion des noms d'utilisateur ou des mots de passe et peut également utiliser le cadre de sécurité clé en main. L'approche de ce modèle est compatible si votre entreprise possède un grand nombre d'appareils connectés ou doit se conformer à des directives de sécurité strictes.

Ce modèle permet d'améliorer le niveau de sécurité de votre entreprise en implémentant le end-to-end chiffrement pour les applications exécutées sur Amazon Elastic Kubernetes Service (Amazon EKS). Ce modèle fournit un exemple d'application et de code dans le référentiel de GitHub [End-to-end chiffrement sur Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme) pour montrer comment un microservice fonctionne avec le end-to-end chiffrement sur Amazon EKS. L'approche du modèle utilise [cert-manager](https://cert-manager.io/docs/), un module complémentaire de Kubernetes, avec [Let's Encrypt](https://letsencrypt.org/) comme autorité de certification (CA). Let's Encrypt est une solution rentable pour gérer les certificats et fournit des certificats gratuits valables pendant 90 jours. Cert-Manager automatise le provisionnement à la demande et la rotation des certificats lorsqu'un nouveau microservice est déployé sur Amazon EKS. 

**Public visé**

Ce modèle est recommandé aux utilisateurs qui ont de l'expérience avec Kubernetes, TLS, Amazon Route 53 et le système de noms de domaine (DNS).

## Conditions préalables et limitations
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un cluster Amazon EKS existant.
+ Interface de ligne de commande AWS (AWS CLI) version 1.7 ou ultérieure, installée et configurée sur macOS, Linux ou Windows.
+ L'utilitaire de ligne de `kubectl` commande, installé et configuré pour accéder au cluster Amazon EKS. Pour plus d'informations à ce sujet, consultez la section [Installation de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) dans la documentation Amazon EKS.
+ Nom DNS existant pour tester l'application. Pour plus d'informations à ce sujet, consultez la section [Enregistrement de noms de domaine à l'aide d'Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/registrar.html) dans la documentation Amazon Route 53. 
+ La dernière version de [Helm](https://docs.aws.amazon.com/eks/latest/userguide/helm.html), installée sur votre machine locale. Pour plus d'informations à ce sujet, consultez la section [Utilisation de Helm avec Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/helm.html) dans la documentation Amazon EKS et dans le référentiel GitHub [Helm](https://github.com/helm/helm). 
+ Le GitHub [End-to-end chiffrement sur le référentiel Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme), cloné sur votre machine locale. 
+ Remplacez les valeurs suivantes dans les `trustpolicy.json` fichiers `policy.json` et du référentiel de GitHub [End-to-end chiffrement cloné sur Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme) :
  + `<account number>`— Remplacez-le par l'ID de compte AWS du compte dans lequel vous souhaitez déployer la solution. 
  + `<zone id>`— Remplacez par l'ID de zone Route 53 du nom de domaine. 
  + `<node_group_role>`— Remplacez par le nom du rôle AWS Identity and Access Management (IAM) associé aux nœuds Amazon EKS.
  + `<namespace>`— Remplacez par l'espace de noms Kubernetes dans lequel vous déployez le NGINX Ingress Controller et l'exemple d'application.
  + `<application-domain-name>`— Remplacez par le nom de domaine DNS de Route 53.

**Limites**
+ Ce modèle ne décrit pas comment alterner les certificats et montre uniquement comment utiliser les certificats avec des microservices sur Amazon EKS. 

## Architecture
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-architecture"></a>

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

![\[Flux de travail pour configurer le chiffrement des applications sur Amazon EKS à l'aide du gestionnaire de certificats et de Let's Encrypt.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9aa3ee9e-73db-41f5-a467-b5c47fef496e/images/40692ede-6fb3-474e-8c9e-85c51529e8ad.png)


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

1. Un client envoie une demande d'accès à l'application au nom DNS.

1. L'enregistrement Route 53 est un CNAME pour le Network Load Balancer.

1. Le Network Load Balancer transmet la demande au NGINX Ingress Controller configuré avec un écouteur TLS. La communication entre le NGINX Ingress Controller et le Network Load Balancer suit le protocole HTTPS.

1. Le NGINX Ingress Controller effectue un routage basé sur le chemin en fonction de la demande du client au service d'application.

1. Le service d'application transmet la demande au module d'application. L'application est conçue pour utiliser le même certificat en appelant des secrets.

1. Les pods exécutent l'exemple d'application à l'aide des certificats cert-manager. La communication entre le NGINX Ingress Controller et les pods utilise le protocole HTTPS.


| 
| 
| Remarque : Cert-Manager s'exécute dans son propre espace de noms. Il utilise un rôle de cluster Kubernetes pour fournir des certificats sous forme de secrets dans des espaces de noms spécifiques. Vous pouvez associer ces espaces de noms aux modules d'application et au NGINX Ingress Controller.  | 
| --- |

## Outils
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-tools"></a>

**Services AWS**
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) EKS) est un service géré que vous pouvez utiliser pour exécuter Kubernetes sur AWS sans avoir à installer, exploiter et gérer votre propre plan de contrôle ou vos propres nœuds Kubernetes.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) distribue automatiquement votre trafic entrant sur plusieurs cibles, conteneurs et adresses IP.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est un service Web DNS hautement disponible et évolutif.

**Autres outils**
+ [cert-manager](https://cert-manager.io/docs/installation/supported-releases/) est un module complémentaire de Kubernetes qui demande des certificats, les distribue aux conteneurs Kubernetes et automatise le renouvellement des certificats.
+ [NGINX Ingress Controller](https://kubernetes.github.io/ingress-nginx/) est une solution de gestion du trafic pour les applications cloud natives dans Kubernetes et les environnements conteneurisés.

## Épopées
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-epics"></a>

### Création et configuration d'une zone hébergée publique avec Route 53
<a name="create-and-configure-a-public-hosted-zone-with-route-53"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une zone hébergée publique sur Route 53. | Connectez-vous à l'AWS Management Console, ouvrez la console Amazon Route 53, choisissez **Hosted zones**, puis **Create hosted zone**. Créez une zone hébergée publique et enregistrez l'ID de zone. Pour plus d'informations à ce sujet, consultez [la section Création d'une zone hébergée publique](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) dans la documentation Amazon Route 53.ACME DNS01 utilise le fournisseur DNS pour demander au gestionnaire de certificats de délivrer le certificat. Ce défi vous demande de prouver que vous contrôlez le DNS de votre nom de domaine en saisissant une valeur spécifique dans un enregistrement TXT sous ce nom de domaine. Une fois que Let's Encrypt a fourni un jeton à votre client ACME, celui-ci crée un enregistrement TXT dérivé de ce jeton et de votre clé de compte, et place cet enregistrement à. `_acme-challenge.<YOURDOMAIN>` Let's Encrypt interroge ensuite le DNS pour cet enregistrement. S'il trouve une correspondance, vous pouvez procéder à l'émission d'un certificat. | AWS DevOps | 

### Configurer un rôle IAM pour autoriser le gestionnaire de certificats à accéder à la zone hébergée publique
<a name="configure-an-iam-role-to-allow-cert-manager-to-access-the-public-hosted-zone"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la politique IAM pour cert-manager.  | Une politique IAM est requise pour fournir à cert-manager l'autorisation de valider que vous êtes propriétaire du domaine Route 53. L'`policy.json`exemple de politique IAM est fourni dans le `1-IAMRole` répertoire du référentiel de GitHub [End-to-end chiffrement cloné sur Amazon EKS](https://github.com/aws-samples/end-to-end-encryption-on-amazon-eks#readme).Entrez la commande suivante dans l'AWS CLI pour créer la politique IAM.<pre>aws iam create-policy \<br />  --policy-name PolicyForCertManager \<br />  --policy-document file://policy.json</pre> | AWS DevOps | 
| Créez le rôle IAM pour cert-manager. | Après avoir créé la politique IAM, vous devez créer un rôle IAM. L'`trustpolicy.json`exemple de rôle IAM est fourni dans le `1-IAMRole` répertoire.Entrez la commande suivante dans l'AWS CLI pour créer le rôle IAM.<pre>aws iam create-role \<br />  --role-name RoleForCertManager \<br />  --assume-role-policy-document file://trustpolicy.json</pre> | AWS DevOps | 
| Attachez la stratégie au rôle. | Entrez la commande suivante dans l'AWS CLI pour associer la politique IAM au rôle IAM. `AWS_ACCOUNT_ID`Remplacez-le par l'ID de votre compte AWS. <pre>aws iam attach-role-policy \<br />  --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/PolicyForCertManager \<br />  --role-name RoleForCertManager</pre> | AWS DevOps | 

### Configurer le contrôleur d'entrée NGINX dans Amazon EKS
<a name="set-up-the-nginx-ingress-controller-in-amazon-eks"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le NGINX Ingress Controller. | Installez la version la plus récente d'`nginx-ingress`utilisation de Helm. Vous pouvez modifier la `nginx-ingress` configuration en fonction de vos besoins avant de la déployer. Ce modèle utilise un Network Load Balancer annoté et orienté vers l'interne, disponible dans le répertoire. `5-Nginx-Ingress-Controller` Installez le NGINX Ingress Controller en exécutant la commande Helm suivante depuis le répertoire. `5-Nginx-Ingress-Controller``helm install test-nginx nginx-stable/nginx-ingress  -f  5-Nginx-Ingress-Controller/values_internal_nlb.yaml` | AWS DevOps | 
| Vérifiez que le NGINX Ingress Controller est installé. | Entrez la commande `helm list`. La sortie doit indiquer que le NGINX Ingress Controller est installé. | AWS DevOps | 
| Créez un enregistrement Route 53 A. | L'enregistrement A pointe vers le Network Load Balancer créé par NGINX Ingress Controller.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

### Configurer NGINX VirtualServer sur Amazon EKS
<a name="set-up-nginx-virtualserver-on-amazon-eks"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez NGINX VirtualServer. | La VirtualServer ressource NGINX est une configuration d'équilibrage de charge qui constitue une alternative à la ressource d'entrée. La configuration permettant de créer la VirtualServer ressource NGINX est disponible dans le `nginx_virtualserver.yaml` fichier du répertoire. `6-Nginx-Virtual-Server` Entrez la commande suivante `kubectl` pour créer la ressource NGINX VirtualServer .`kubectl apply -f  nginx_virtualserver.yaml`Assurez-vous de mettre à jour le nom de domaine de l'application, le secret du certificat et le nom du service de l'application dans le `nginx_virtualserver.yaml` fichier. | AWS DevOps | 
| Vérifiez que NGINX VirtualServer est créé. | Entrez la commande suivante `kubectl` pour vérifier que la VirtualServer ressource NGINX a été créée avec succès.`kubectl get virtualserver`Vérifiez que la `Host` colonne correspond au nom de domaine de votre application. | AWS DevOps | 
| Déployez le serveur Web NGINX avec le protocole TLS activé. | Ce modèle utilise un serveur Web NGINX avec TLS activé comme application pour tester le chiffrement. end-to-end Les fichiers de configuration requis pour déployer l'application de test sont disponibles dans le `demo-webserver` répertoire. Entrez la commande suivante `kubectl` pour déployer l'application de test.`kubectl apply -f nginx-tls-ap.yaml` | AWS DevOps | 
| Vérifiez que les ressources de l'application de test sont créées. | Entrez les commandes suivantes `kubectl` pour vérifier que les ressources requises sont créées pour l'application de test :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 
| Validez l'application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt.html) | AWS DevOps | 

## Ressources connexes
<a name="set-up-end-to-end-encryption-for-applications-on-amazon-eks-using-cert-manager-and-let-s-encrypt-resources"></a>

**Ressources AWS**
+ [Création d'enregistrements à l'aide de la console Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) (documentation Amazon Route 53)
+ [Utilisation d'un Network Load Balancer avec le contrôleur d'entrée NGINX sur Amazon EKS](https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/) (article de blog AWS)

**Autres ressources**
+ [Route 53](https://cert-manager.io/docs/configuration/acme/dns01/route53/) (documentation du gestionnaire de certificats)
+ [Configuration du fournisseur de défis DNS01](https://cert-manager.io/docs/configuration/acme/dns01/) (documentation du gestionnaire de certificats)
+ [Défi DNS Let's Encrypt](https://letsencrypt.org/docs/challenge-types/#dns-01-challenge) (documentation Let's Encrypt)

# Simplifiez le déploiement d'applications multi-locataires Amazon EKS en utilisant Flux
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux"></a>

*Nadeem Rahaman, Aditya Ambati, Aniket Dekate et Shrikant Patil, Amazon Web Services*

## Résumé
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-summary"></a>

De nombreuses entreprises proposant des produits et services sont des secteurs réglementés par les données qui doivent maintenir des barrières entre leurs fonctions commerciales internes. Ce modèle décrit comment vous pouvez utiliser la fonctionnalité multi-tenant d'Amazon Elastic Kubernetes Service (Amazon EKS) pour créer une plate-forme de données qui assure une isolation logique et physique entre les locataires ou les utilisateurs qui partagent un seul cluster Amazon EKS. Le modèle fournit une isolation grâce aux approches suivantes :
+ Isolation de l'espace de noms Kubernetes
+ Contrôle d’accès basé sur les rôles (RBAC)
+ Stratégies réseau
+ Quotas de ressources
+ Gestion des identités et des accès AWS Rôles (IAM) pour les comptes de service (IRSA)

En outre, cette solution utilise Flux pour maintenir la configuration du locataire immuable lorsque vous déployez des applications. Vous pouvez déployer vos applications mutualisées en spécifiant le référentiel client qui contient le `kustomization.yaml` fichier Flux dans votre configuration.

Ce modèle implémente les éléments suivants :
+ Un AWS CodeCommit référentiel, AWS CodeBuild des projets et un AWS CodePipeline pipeline, créés en déployant manuellement des scripts Terraform.
+ Composants réseau et informatiques nécessaires à l'hébergement des locataires. Ils sont créés par CodePipeline et CodeBuild en utilisant Terraform.
+ Les espaces de noms des locataires, les politiques réseau et les quotas de ressources, qui sont configurés via un diagramme de Helm.
+ Applications appartenant à différents locataires, déployées à l'aide de Flux.

Nous vous recommandons de planifier et de créer soigneusement votre propre architecture pour la mutualisation en fonction de vos exigences uniques et de vos considérations de sécurité. Ce modèle constitue un point de départ pour votre mise en œuvre.

## Conditions préalables et limitations
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ AWS Command Line Interface [(AWS CLI) version 2.11.4 ou ultérieure, [installée et configurée](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) version 0.12 ou ultérieure installée sur votre machine locale
+ [Terraform AWS Provider](https://registry.terraform.io/providers/hashicorp/aws/latest) version 3.0.0 ou ultérieure
+ [Kubernetes Provider](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs) version 2.10 ou ultérieure
+ [Helm Provider](https://registry.terraform.io/providers/hashicorp/helm/latest/docs) version 2.8.0 ou ultérieure
+ [Kubectl Provider](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs) version 1.14 ou ultérieure

**Limites**
+ **Dépendance à l'égard des déploiements manuels de Terraform :** La configuration initiale du flux de travail, y compris la création de CodeCommit référentiels, de CodeBuild projets et de CodePipeline pipelines, repose sur des déploiements manuels de Terraform. Cela introduit une limite potentielle en termes d'automatisation et d'évolutivité, car cela nécessite une intervention manuelle pour les modifications de l'infrastructure.
+ **CodeCommit dépendance aux référentiels :** le flux de travail repose sur CodeCommit les référentiels en tant que solution de gestion du code source et est étroitement associé Services AWSà.

## Architecture
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-architecture"></a>

**Architectures cibles**

Ce modèle déploie trois modules pour créer le pipeline, le réseau et l'infrastructure de calcul d'une plate-forme de données, comme illustré dans les diagrammes suivants.

*Architecture du pipeline :*

![\[Infrastructure de pipeline pour l'architecture multi-locataires Amazon EKS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/76a4a23d-4275-427a-ae36-51c9a3803128.png)


*Architecture réseau :*

![\[Infrastructure réseau pour l'architecture multi-locataires Amazon EKS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/e542249a-19a3-4c99-b6f5-fdf80fee4edf.png)


*Architecture de calcul :*

![\[Infrastructure de calcul pour l'architecture multi-locataires Amazon EKS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/97b700a7-74b6-4f9d-b53a-76de42409a8e/images/91bd1ca8-17f0-433c-8600-4c8e6c474e31.png)


## Outils
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-tools"></a>

**Services AWS**
+ [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.
+ [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 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.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)est un hub central qui connecte des clouds privés virtuels (VPCs) et des réseaux sur site.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.

**Autres outils**
+ Les politiques réseau de [Cilium prennent en charge les politiques réseau](https://cilium.io/use-cases/network-policy/#:~:text=Cilium%20implements%20Kubernetes%20Network%20Policies,%2C%20Kafka%2C%20gRPC%2C%20etc.) Kubernetes L3 et L4. Ils peuvent être étendus avec des politiques L7 afin de fournir une sécurité au niveau de l'API pour HTTP, Kafka et gRPC, ainsi que pour d'autres protocoles similaires.
+ [Flux](https://fluxcd.io/) est un outil de diffusion continue (CD) basé sur Git qui automatise les déploiements d'applications sur Kubernetes.
+ [Helm](https://helm.sh/docs/) est un gestionnaire de packages open source pour Kubernetes qui vous aide à installer et à gérer des applications sur votre cluster Kubernetes.
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [EKS Multi-Tenancy Terraform Solution](https://github.com/aws-samples/aws-eks-multitenancy-deployment).

## Bonnes pratiques
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-best-practices"></a>

Pour les directives et les meilleures pratiques relatives à l'utilisation de cette implémentation, consultez les rubriques suivantes :
+ [Bonnes pratiques en matière de location multiple Amazon EKS](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Documentation sur les flux](https://fluxcd.io/flux/get-started/)

## Épopées
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-epics"></a>

### Créez des pipelines pour les étapes de construction, de test et de déploiement de Terraform
<a name="create-pipelines-for-terraform-build-test-and-deploy-stages"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel du projet. | Clonez le référentiel GitHub [EKS Multi-Tenancy Terraform Solution](https://github.com/aws-samples/aws-eks-multitenancy-deployment) en exécutant la commande suivante dans une fenêtre de terminal :<pre>git clone https://github.com/aws-samples/aws-eks-multitenancy-deployment.git</pre> | AWS DevOps | 
| Démarrez le compartiment Terraform S3 et Amazon DynamoDB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Mettez à jour les `locals.tf` fichiers `run.sh` et. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Déployez le module de pipeline. | Pour créer des ressources de pipeline, exécutez manuellement les commandes Terraform suivantes. Il n'existe aucune orchestration pour exécuter ces commandes automatiquement.<pre>./run.sh -m pipeline -e demo -r <AWS_REGION> -t init<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t plan<br />./run.sh -m pipeline -e demo -r <AWS_REGION> -t apply</pre> | AWS DevOps | 

### Création de l'infrastructure réseau
<a name="create-the-network-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Démarrez le pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html)Après cette première exécution, le pipeline démarre automatiquement chaque fois que vous validez une modification dans la branche principale du CodeCommit référentiel.Le pipeline comprend les [étapes](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages) suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Validez les ressources créées via le module réseau. | Vérifiez que les AWS ressources suivantes ont été créées après le déploiement réussi du pipeline :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Création de l'infrastructure informatique
<a name="create-the-compute-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Mise `locals.tf` à jour pour permettre l'accès du CodeBuild projet au VPC. | Pour déployer les modules complémentaires pour le cluster privé Amazon EKS, le CodeBuild projet doit être attaché au VPC Amazon EKS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Mettez à jour les `buildspec` fichiers pour créer le module de calcul. | Dans le `templates` dossier, dans tous les fichiers `buildspec` YAML, définissez la valeur de la `TF_MODULE_TO_BUILD` variable de `network` à `compute` :<pre>TF_MODULE_TO_BUILD: "compute"</pre> | AWS DevOps | 
| Mettez à jour le `values` fichier du diagramme Helm de gestion des locataires. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Validez les ressources de calcul. | Après avoir mis à jour les fichiers au cours des étapes précédentes, CodePipeline démarre automatiquement. Vérifiez qu'il a créé les AWS ressources suivantes pour l'infrastructure de calcul :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 

### Vérifiez la gestion des locataires et les autres ressources
<a name="check-tenant-management-and-other-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez les ressources de gestion des locataires dans Kubernetes. | Exécutez les commandes suivantes pour vérifier que les ressources de gestion des locataires ont été créées avec succès à l'aide de Helm.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | AWS DevOps | 
| Vérifiez les déploiements d'applications clientes. | Exécutez les commandes suivantes pour vérifier que les applications clientes ont été déployées.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) |  | 

## Résolution des problèmes
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Vous recevez un message d'erreur similaire au suivant :`Failed to checkout and determine revision: unable to clone unknown error: You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit.` | Pour résoudre le problème, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux.html) | 

## Ressources connexes
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-resources"></a>
+ [Blueprints Amazon EKS pour Terraform](https://github.com/aws-ia/terraform-aws-eks-blueprints)
+ [Guides des meilleures pratiques Amazon EKS, section sur l'hébergement mutualisé](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/)
+ [Site web de Flux](https://fluxcd.io/)
+ [Site web de Helm](https://helm.sh/)

## Informations supplémentaires
<a name="simplify-amazon-eks-multi-tenant-application-deployment-by-using-flux-additional"></a>

Voici un exemple de structure de référentiel pour le déploiement d'applications clientes :

```
applications
sample_tenant_app
├── README.md
├── base
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── ingress.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── tenant-1
    │   ├── configmap.yaml
    │   ├── deployment.yaml
    │   └── kustomization.yaml
    └── tenant-2
        ├── configmap.yaml
        └── kustomization.yaml
```

# Simplifiez le développement et le déploiement des robots Amazon Lex à l'aide d'un flux de travail automatisé
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow"></a>

*Balaji Panneerselvam, Attila Dancso, Pavan Dusanapudi, Anand Jumnani et James O'Hara, Amazon Web Services*

## Résumé
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-summary"></a>

Le développement et le déploiement de robots conversationnels Amazon Lex peuvent s'avérer difficiles lorsque vous essayez de gérer plusieurs fonctionnalités, développeurs et environnements. Un flux de travail automatisé utilisant les principes de l'infrastructure en tant que code (IaC) peut aider à rationaliser le processus. Ce modèle peut contribuer à améliorer la productivité des développeurs Amazon Lex et à permettre une gestion efficace du cycle de vie des bots de la manière suivante :
+ **Permettre le développement simultané de plusieurs fonctionnalités** - Grâce à un flux de travail automatisé, les développeurs peuvent travailler sur différentes fonctionnalités en parallèle dans des branches distinctes. Les modifications peuvent ensuite être fusionnées et déployées sans bloquer d'autres tâches.
+ **Utilisez l'interface utilisateur de la console Amazon Lex** : les développeurs peuvent utiliser la console conviviale Amazon Lex pour créer et tester des robots. Les robots sont ensuite décrits dans le code d'infrastructure pour le déploiement.
+ **Promouvoir les robots dans tous les environnements** - Le flux de travail automatise la promotion des versions de robots provenant d'environnements inférieurs, tels que le développement, les tests et la production. Cette approche réduit les risques et les frais généraux liés aux promotions manuelles.
+ **Maintenir le contrôle des versions** : la gestion des définitions de bots dans Git, plutôt que uniquement via le service Amazon Lex, vous permet de contrôler les versions et d'établir une piste d'audit. Les modifications sont suivies auprès des développeurs individuels, contrairement à ce qui se passe lorsque vous utilisez AWS Management Console ou APIs modifiez uniquement les robots stockés dans AWS. 

En automatisant le processus de publication du bot Amazon Lex, les équipes peuvent fournir des fonctionnalités plus rapidement, tout en réduisant les risques et les efforts. Les bots restent sous contrôle de version plutôt qu'isolés dans la console Amazon Lex. 

## Conditions préalables et limitations
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-prereqs"></a>

**Prérequis**
+ Le flux de travail implique plusieurs Comptes AWS environnements (développement, production et DevOps), ce qui nécessite une gestion des comptes et des configurations d'accès entre comptes.
+ Python 3.9 est disponible dans votre environnement de déploiement ou votre pipeline.
+ Git [est installé](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) et configuré sur un poste de travail local pour le contrôle du code source.
+ AWS Command Line Interface (AWS CLI) [installé](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) et configuré pour s'authentifier à l'aide de la ligne de commande ou de Python.

**Limites**
+ **Accès au référentiel** — Le flux de travail suppose que le pipeline d'intégration continue et de livraison continue (CI/CD) dispose des autorisations nécessaires pour valider les modifications apportées au référentiel de code source. 
+ **Version initiale du bot** : l'outillage nécessite qu'une version initiale du bot soit déployée à l'aide de AWS CloudFormation modèles. Vous devez créer la première itération du bot et la valider dans le dépôt avant que le flux de travail automatisé puisse prendre le relais.
+ **Conflits de fusion** — Bien que le flux de travail vise à permettre le développement simultané, il existe toujours un risque de conflits de fusion lors de l'intégration de modifications provenant de différentes branches. La résolution des conflits dans les configurations des robots peut nécessiter une intervention manuelle.

**Versions du produit**
+ [Python 3.9](https://www.python.org/downloads/) ou supérieur
+ [AWS CDK v2 2.124.0 ou supérieur](https://docs.aws.amazon.com/cdk/api/versions.html)
+ [AWS SDK pour Python (Boto3)](https://docs.aws.amazon.com/pythonsdk/)1,28 ou supérieur

## Architecture
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-architecture"></a>

Le schéma suivant présente l'architecture de haut niveau et les principaux composants de la solution.

![\[Flux de travail pour automatiser le développement et le déploiement des robots Amazon Lex.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/3c7f9d16-9708-43c4-afa6-9d804d6b9dad/images/cdc73e82-a777-4e88-8bf8-a73c9bacb47f.png)


Les principaux composants sont les suivants :
+ **Repo de bots Lex : référentiel** Git qui stocke les définitions iAc pour les robots Amazon Lex.
+ **DevOps**— Un espace Compte AWS dédié au logement des CI/CD pipelines et des ressources connexes pour le processus de développement et de déploiement.
+ **Pipelines** : AWS CodePipeline instances qui automatisent les différentes étapes du cycle de développement et de déploiement du bot, telles que la création d'un nouveau bot, l'exportation de la définition d'un bot, l'importation d'une définition de bot et la suppression d'un bot.
+ **Bots de tickets et bot principal** : les ressources du bot Amazon Lex, où les bots de ticket sont des robots spécifiques aux fonctionnalités développés par des équipes ou des développeurs individuels et le bot principal est le bot de base qui intègre toutes les fonctionnalités.

Le schéma d'architecture illustre le flux de travail suivant :

1. **Bot principal de référence** : le point de départ du flux de travail consiste à définir la base de référence du bot principal dans l'environnement de développement (Dev). Le bot principal sert de base au développement futur et aux ajouts de fonctionnalités.

1. **Créer un bot de tickets** : lorsqu'une nouvelle fonctionnalité ou une modification est requise, un bot de tickets est créé. Le bot de tickets est essentiellement une copie ou une branche du bot principal sur laquelle les développeurs peuvent travailler sans affecter la version principale.

1. **Exporter le bot de tickets** : une fois le travail sur le bot de tickets terminé, celui-ci est exporté depuis le service Amazon Lex. Ensuite, la branche qui contient le ticket bot est rebasée à partir de la branche principale. Cette étape garantit que toutes les modifications apportées au bot principal pendant le développement du bot de tickets sont incorporées, réduisant ainsi les conflits potentiels.

1. **Importer un bot de tickets rebasé et valider** — Le bot de tickets rebasé est réimporté dans l'environnement de développement et validé pour garantir qu'il fonctionne correctement avec les dernières modifications apportées par la branche principale. Si la validation est réussie, une pull request (PR) est créée pour fusionner les modifications du ticket bot dans la branche principale.

1. **Supprimer le bot de tickets** — Une fois que les modifications ont été fusionnées avec succès dans la branche principale, le bot de tickets n'est plus nécessaire. Le bot de tickets peut être supprimé pour que l'environnement reste propre et gérable.

1. **Déployer le bot principal dans l'environnement de développement et le tester** : le bot principal mis à jour, qui inclut désormais les nouvelles fonctionnalités ou modifications, est déployé dans l'environnement de développement. Ici, il est soumis à des tests approfondis pour s'assurer que toutes les fonctionnalités fonctionnent comme prévu.

1. **Déployer le bot principal dans l'environnement de production** : une fois que les tests dans l'environnement de développement sont terminés et réussis, le bot principal est déployé dans l'environnement de production. Cette étape est la dernière étape du flux de travail, au cours de laquelle les nouvelles fonctionnalités sont mises à la disposition des utilisateurs finaux.

**Automatisation et mise à l'échelle**

Le flux de travail automatisé permet aux développeurs de travailler sur différentes fonctionnalités en parallèle, chacune dans des branches distinctes. Cela facilite le développement simultané, permettant aux équipes de collaborer efficacement et de fournir des fonctionnalités plus rapidement. Les branches étant isolées les unes des autres, les modifications peuvent être fusionnées et déployées sans bloquer ou interférer avec les autres travaux en cours.

Le flux de travail automatise le déploiement et la promotion des versions de bots dans différents environnements, tels que le développement, les tests et la production.

Le stockage des définitions de bots dans un système de contrôle de version tel que Git fournit une piste d'audit complète et permet une collaboration efficace. Les modifications sont suivies auprès des développeurs individuels, ce qui garantit la transparence et la responsabilité tout au long du cycle de développement. Cette approche facilite également les révisions du code, permettant aux équipes d'identifier et de résoudre les problèmes avant le déploiement en production.

En utilisant une autre AWS CodePipeline méthode Services AWS, le flux de travail automatisé peut évoluer pour s'adapter à l'augmentation des charges de travail et à la taille des équipes.

## Outils
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)est un framework de développement de logiciels open source permettant de définir AWS Cloud l'infrastructure dans le code en utilisant des langages de programmation familiers et en la provisionnant via. CloudFormation L'exemple d'implémentation de ce modèle utilise Python.
+ [AWS CDK Interface de ligne de commande (AWS CDK CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) - Le AWS CDK kit d'outils est le principal outil d'interaction avec votre AWS CDK application. Il exécute votre application, interroge le modèle d'application que vous avez défini, produit et déploie les CloudFormation modèles générés par le CDK.
+ [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, de bout Comptes AWS en bout Régions AWS. Ce modèle est utilisé CloudFormation pour déployer les configurations du bot Amazon Lex et les ressources associées en utilisant l'infrastructure sous forme de code.
+ [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. Ce modèle est utilisé CodeBuild pour créer et empaqueter les artefacts de déploiement.
+ [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. Ce modèle est utilisé CodePipeline pour orchestrer le pipeline de livraison continue.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/what-is.html) permet de créer Service AWS des interfaces conversationnelles (bots) pour les applications utilisant la voix et le texte.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.

**Autres outils**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué open source.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [management-framework-sample-for-amazon-lex](https://github.com/aws-samples/management-framework-sample-for-amazon-lex). Le dépôt de code contient les dossiers et fichiers suivants :
+ `prerequisite`dossier — Contient les définitions de CloudFormation pile (à l'aide du AWS CDK) pour configurer les ressources et les environnements requis.
+ `prerequisite/lexmgmtworkflow`dossier — Répertoire principal du projet Lex Management Workflow, y compris les définitions des piles et le code Python.
+ `prerequisite/tests`— Contient des tests unitaires.
+ `src`dossier : répertoire du code source, y compris le wrapper de gestion des robots Amazon Lex et les utilitaires.
+ `src/dialogue_lambda`— Répertoire du code source de la fonction Lambda du crochet de dialogue qui intercepte et traite les entrées des utilisateurs lors d'une conversation avec un bot Amazon Lex.

## Bonnes pratiques
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-best-practices"></a>
+ **Séparation des préoccupations**
  + Maintenez une séparation claire des responsabilités entre DevOps les environnements de développement et de production.
  + Utilisez-les séparément Comptes AWS pour chaque environnement afin de garantir une isolation et des limites de sécurité appropriées.
  + Utilisez les rôles entre comptes et les principes du moindre privilège d'accès pour garantir un accès contrôlé entre les environnements.
+ **L'infrastructure en tant que code**
  + Passez régulièrement en revue et mettez à jour le code d'infrastructure pour l'aligner sur les meilleures pratiques et les exigences en constante évolution.
  + Établissez une stratégie de branchement et de fusion claire pour le référentiel de code source
+ **Tests et validation**
  + Mettez en œuvre des tests automatisés à différentes étapes du pipeline afin de détecter les problèmes dès le début du cycle de développement.
  + Utilisez la console Amazon Lex ou des frameworks de test automatisés pour valider les configurations et les fonctionnalités des robots avant de passer à des environnements supérieurs.
  + Envisagez de mettre en place des portes d'approbation manuelles pour les déploiements dans des environnements de production ou critiques.
+ **Surveillance et journalisation**
  + Configurez des mécanismes de surveillance et de journalisation pour les pipelines, les déploiements et les interactions entre robots.
  + Surveillez les événements du pipeline, les statuts de déploiement et les indicateurs de performance des bots pour identifier et résoudre les problèmes rapidement.
  + Utilisez les services AWS tels qu'Amazon CloudWatch et AWS X-Ray pour une journalisation et une surveillance centralisées. AWS CloudTrail
  + Passez régulièrement en revue et analysez les performances, l'efficience et l'efficacité du flux de travail automatisé.
+ **Sécurité et conformité**
  + Mettez en œuvre des pratiques de codage sécurisées et suivez les meilleures pratiques de AWS sécurité pour le développement et le déploiement de robots Amazon Lex.
  + Passez régulièrement en revue et mettez à jour les rôles, les politiques et les autorisations IAM afin de respecter le principe du moindre privilège.
  + Envisagez d'intégrer l'analyse de sécurité et les contrôles de conformité dans les pipelines.

## Épopées
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-epics"></a>

### Configurer iAC pour la gestion des bots Amazon Lex
<a name="set-up-iac-for-lex2-bot-management"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez l'environnement CDK local. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | AWS DevOps | 
| Créez un rôle multicompte dans l'`devops`environnement. | Le `devops` compte est responsable de l'hébergement et de la gestion des CI/CD pipelines. Pour permettre aux CI/CD pipelines d'interagir avec les `prod` environnements `dev` et, exécutez les commandes suivantes pour créer un rôle multi-comptes dans le `devops` compte.<pre>cdk bootstrap --profile=devops<br /><br />cdk deploy LexMgmtDevopsRoleStack -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 
| Créez un rôle multicompte dans l'`dev`environnement. | Créez un rôle IAM dans le `dev` compte avec les autorisations nécessaires pour permettre au `devops` compte d'assumer ce rôle. Le CI/CD pipeline utilise ce rôle pour effectuer des actions dans le `dev` compte, telles que le déploiement et la gestion des ressources du bot Amazon Lex.Pour créer le rôle IAM, exécutez les commandes suivantes :<pre>cdk bootstrap --profile=dev<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=dev</pre> | AWS DevOps | 
| Créez un rôle multicompte dans l'`prod`environnement. | Créez un rôle IAM dans le `prod` compte avec les autorisations nécessaires pour permettre au `devops` compte d'assumer ce rôle. Le CI/CD pipeline utilise ce rôle pour effectuer des actions dans le `prod` compte, telles que le déploiement et la gestion des ressources du bot Amazon Lex.<pre>cdk bootstrap --profile=prod<br /><br />cdk deploy LexMgmtCrossaccountRoleStack -c devops-account-id=1111111111111 --profile=prod</pre> | AWS DevOps | 
| Créez des pipelines dans l'`devops`environnement. | Pour gérer le flux de travail de développement des robots Amazon Lex, exécutez la commande suivante pour configurer des pipelines dans l'`devops`environnement. <pre>cdk deploy LexMgmtWorkflowStack -c devops-account-id=1111111111111 -c dev-account-id=2222222222222 -c prod-account-id=333333333333 --profile=devops</pre> | AWS DevOps | 

### Établir la base de référence pour le bot principal
<a name="establish-the-baseline-for-the-main-bot"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Définissez la version initiale du bot principal. | Pour définir la version initiale du bot principal, [déclenchez](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-triggers) le `BaselineBotPipeline` pipeline.Le pipeline déploie la définition de bot de base définie dans le CloudFormation modèle, exporte la définition principale du bot sous forme de fichiers .json et stocke le code du bot principal dans un système de contrôle de version. | AWS DevOps | 

### Mettre en œuvre le flux de travail de développement des fonctionnalités
<a name="implement-the-feature-development-workflow"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le bot de tickets pour développer et tester une fonctionnalité. | `TicketBot`est une nouvelle instance de bot importée à partir de la définition de bot principale existante dans la branche de fonctionnalités. Cette approche garantit que le nouveau bot dispose de toutes les fonctionnalités et configurations actuelles du bot principal.Pour définir la version initiale du bot de tickets, déclenchez le `CreateTicketBotPipeline` pipeline.Le pipeline crée une nouvelle branche de fonctionnalités dans le système de contrôle de version et crée une nouvelle instance de bot de tickets basée sur le bot principal. | Développeur Lex Bot | 
| Développez et testez la fonctionnalité Ticket Bot.  | Pour développer et tester cette fonctionnalité, connectez-vous à la console Amazon Lex AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/lex/](https://console.aws.amazon.com/lex/). Pour plus d'informations, consultez [Tester un bot à l'aide de la console](https://docs.aws.amazon.com/lexv2/latest/dg/test-bot.html) dans la documentation Amazon Lex.Avec l'`TicketBot`instance, vous pouvez désormais ajouter, modifier ou étendre les fonctionnalités du bot pour implémenter la nouvelle fonctionnalité. Par exemple, vous pouvez créer ou modifier des intentions, des énoncés, des créneaux et des flux de dialogue. Pour plus d'informations, consultez la section [Ajouter des intentions](https://docs.aws.amazon.com/lexv2/latest/dg/add-intents.html) dans la documentation Amazon Lex. | Développeur Lex Bot | 
| Exportez la définition du bot de tickets. | La définition du bot exportée est essentiellement une représentation de la configuration et des fonctionnalités du bot au format JSON.Pour exporter la définition du bot de tickets, déclenchez le `ExportTicketBotPipeline` pipeline.Le pipeline exporte la définition du bot de ticket sous forme de fichiers .json et stocke le code du bot de ticket dans une branche de fonctionnalité du système de contrôle de version. | Développeur Lex Bot | 
| Rebasez la branche de fonctionnalités à partir de la dernière branche principale. | Au cours du développement d'une nouvelle fonctionnalité, la branche principale peut avoir reçu d'autres modifications de la part de différents développeurs ou équipes. Pour intégrer ces modifications dans la branche des fonctionnalités, effectuez une `rebase` opération Git. Cette opération reproduit essentiellement les validations de la branche de fonctionnalités en plus des dernières validations de la branche principale, garantissant ainsi que la branche de fonctionnalités inclut toutes les dernières modifications | Développeur Lex Bot | 
| Importez et validez le bot de tickets rebasé. | Après avoir rebasé la branche de fonctionnalités, vous devez l'importer dans l'instance du bot de tickets. Cette importation met à jour le bot de tickets existant avec les dernières modifications apportées par la branche rebasée.Pour importer le bot de tickets rebasé, déclenchez le `ImportTicketBotPipeline` pipeline.Le pipeline importe les fichiers .json de définition du bot ticket situés dans la branche des fonctionnalités du système de contrôle de version dans l'`TicketBot`instance. | Développeur Lex Bot | 
| Validez la définition du bot rebasée. | Après avoir importé la définition du bot rebasée, il est essentiel de valider ses fonctionnalités. Vous devez vous assurer que la nouvelle fonctionnalité fonctionne comme prévu et qu'elle n'entre pas en conflit avec les fonctionnalités existantes. Cette validation implique généralement de tester le bot avec différents scénarios d'entrée, de vérifier les réponses et de vérifier que le bot se comporte comme prévu. Vous pouvez effectuer la validation de l'une des manières suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Développeur Lex Bot | 
| Fusionnez la branche de fonction dans la branche principale. | Après avoir développé et testé la nouvelle fonctionnalité dans l'`TicketBot`instance isolée, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.html) | Développeur Lex Bot, administrateur de référentiels | 
| Supprimez la branche de fonctionnalités et le bot de tickets.  | Une fois qu'une branche de fonctionnalités a été fusionnée avec succès dans la branche principale, supprimez la branche de fonctionnalités et le bot de tickets du référentiel de code source. Pour supprimer la branche de fonctionnalités et le bot de tickets, déclenchez le `DeleteTicketBotPipeline` pipeline.Le pipeline supprime les ressources temporaires du bot créées au cours du processus de développement (par exemple, le bot de tickets). Cette action permet de maintenir un dépôt propre et d'éviter toute confusion ou tout conflit avec les futures branches de fonctionnalités.  | Développeur Lex Bot | 

### Maintenir le bot principal
<a name="maintain-the-main-bot"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Importez la dernière définition du bot principal dans l'`dev`environnement. | Pour importer la dernière définition du bot principal de la branche principale dans l'`dev`environnement, déclenchez le `DeployBotDevPipeline` pipeline.Le pipeline crée également une balise git lors de l'approbation. | AWS DevOps | 
| Importez la dernière définition du bot principal dans l'`prod`environnement. | Pour importer dans l'`prod`environnement la dernière définition de bot de la branche principale, fournissez la référence de balise de la tâche précédente en tant que paramètre et déclenchez le `DeployBotProdPipeline` pipeline.Le pipeline importe la dernière définition de bot d'une balise spécifique dans l'`prod`environnement. | AWS DevOps | 

## Résolution des problèmes
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Lorsque vous déployez des robots Amazon Lex sur différents comptes Comptes AWS, les services d'outillage doivent disposer des autorisations nécessaires pour accéder aux ressources de ces comptes. | Pour accorder un accès entre comptes, utilisez les rôles et les politiques IAM. Créez des rôles IAM dans les comptes cibles et associez des politiques aux rôles qui accordent les autorisations requises. Ensuite, assumez ces rôles depuis le compte sur lequel le bot Amazon Lex est déployé.Pour plus d'informations, consultez les [sections Autorisations IAM requises pour importer](https://docs.aws.amazon.com/lexv2/latest/dg/import.html#import-permissions) et [Autorisations IAM requises pour exporter des robots dans Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/export.html#export-permissions) dans la documentation Amazon Lex. | 

## Ressources connexes
<a name="streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow-resources"></a>
+ [Importation de robots dans Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/import.html)
+ [Démarrer un pipeline dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-about-starting.html)
+ [Utilisation des robots Amazon Lex V2](https://docs.aws.amazon.com/lexv2/latest/dg/building-bots.html)

# Coordonnez la dépendance des ressources et l'exécution des tâches à l'aide de la structure AWS Fargate WaitCondition hook
<a name="use-the-aws-fargate-waitcondition-hook-construct"></a>

*Stan Fan, Amazon Web Services*

## Résumé
<a name="use-the-aws-fargate-waitcondition-hook-construct-summary"></a>

Ce modèle décrit le package WaitCondition hook (`waitcondition-hook-for-aws-fargate-task`) npm, qui est une solution native pour le cloud conçue pour orchestrer les tâches [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)dans les clusters Amazon Elastic Container Service (Amazon ECS). 

Le WaitCondition crochet est une AWS Cloud Development Kit (AWS CDK) construction spécialement conçue pour être intégrée à AWS CloudFormation. Le WaitCondition hook fournit les fonctionnalités clés suivantes :
+ Agit comme un mécanisme d'attente, interrompant l'exécution de la CloudFormation pile jusqu'à ce qu'une tâche Fargate spécifiée soit terminée, ce qui facilite les déploiements ordonnés et le provisionnement des ressources.
+ Supports TypeScript et Python, ce qui le rend idéal pour les AWS CDK projets.
+ Permet aux développeurs et aux architectes d'orchestrer les déploiements en coordonnant l'exécution des tâches et la gestion des ressources pour les applications conteneurisées sur. AWS
+ Permet d'exécuter des tâches Fargate avec un ou plusieurs conteneurs intégrés dans CloudFormation un cycle de vie, de gérer les échecs de tâches et de rétablir la pile après un échec de tâche. CloudFormation 
+ Offre la flexibilité nécessaire pour ajouter des dépendances entre les ressources et les résultats d'exécution des tâches Fargate, en activant des tâches personnalisées ou en invoquant d'autres points de terminaison. Par exemple, vous pouvez suspendre une CloudFormation pile et attendre une migration de base de données (effectuée par une tâche Fargate) et allouer d'autres ressources qui peuvent dépendre du succès de la migration de base de données.

## Conditions préalables et limitations
<a name="use-the-aws-fargate-waitcondition-hook-construct-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ AWS Cloud Development Kit (AWS CDK) Interface de ligne de commande (CLI) installée sur un poste de travail local. Pour plus d'informations, consultez la [référence de la AWS CDK CLI](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) dans la AWS CDK documentation.
+ [Gestionnaire de packages de nœuds (npm), installé sur un poste de travail local et configuré pour l'entrée AWS CDK . TypeScript](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-typescript.html) Pour plus d'informations, consultez la section [Téléchargement et installation de Node.js et de npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) dans la documentation de npm.
+ Yarn installé sur un poste de travail local. Pour plus d'informations, consultez la section [Installation](https://yarnpkg.com/getting-started/install) dans la documentation de Yarn.

**Limites**
+ Cette solution est déployée sur un seul Compte AWS.
+ Le code de retour attendu du conteneur est un gage `0` de réussite. Tout autre code de retour indique un échec et la CloudFormation pile sera annulée. 
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez [Points de terminaison de service et quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien correspondant au service.

## Architecture
<a name="use-the-aws-fargate-waitcondition-hook-construct-architecture"></a>

Le schéma suivant montre l'architecture de construction.

![\[Flux de travail AWS Step Functions de la construction waitcondition-hook-for-aws -fargate-task.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/598020df-908c-4486-9844-c05af759c18a.png)


Le diagramme montre le flux de travail de `waitcondition-hook-for-aws-fargate-task` :

1. `WaitCondition`et `WaitConditionHandler` sont prévus pour écouter la réponse des AWS Lambda fonctions.

1. En fonction du résultat de la tâche, le `CallbackFunction` ou le `ErrorHandlerFunction` est déclenché à la fin de la tâche Fargate.

1. La fonction Lambda envoie un signal SUCCEED ou FAILURE à. `WaitConditionHandler`

1. `WaitConditionHandler`continue à approvisionner les ressources si le résultat de l'exécution de la tâche Fargate aboutit, ou annule la pile en cas d'échec de la tâche.

Le schéma suivant montre un exemple de flux de travail pour effectuer une migration de base de données.

![\[Flux de travail de migration de base de données Amazon RDS à l'aide de WaitCondition Hook Construct.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e58680e3-f89f-422f-b0e1-e85605ae8bf9/images/3b83fc2a-80bb-4ba9-9637-782060493cf0.png)


L'exemple de flux de travail utilise `waitcondition-hook-for-aws-fargate-task` cette structure pour effectuer une migration de base de données, comme suit :

1. Une instance Amazon Relational Database Service (Amazon RDS) est mise en service.

1. La `waitcondition-hook-for-aws-fargate-task` construction exécute la tâche de migration de base de données et suspend la pile en tant qu'instance Amazon Elastic Compute Cloud (Amazon EC2).

1. Si la tâche de migration se termine correctement, elle envoie un signal de réussite à CloudFormation. Dans le cas contraire, il envoie un signal d'échec à la pile CloudFormation et l'annule.

## Outils
<a name="use-the-aws-fargate-waitcondition-hook-construct-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)est un framework de développement logiciel qui vous aide à définir l'infrastructure cloud dans le code et à la provisionner CloudFormation.
+ [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 à travers Comptes AWS et Régions AWS.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [Amazon Elastic Container Service (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) est un service de gestion de conteneurs évolutif et rapide, qui facilite l'exécution, l'arrêt et la gestion de conteneurs Docker sur un cluster.
+ [AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)vous permet d'exécuter des conteneurs sans avoir à gérer de serveurs ou d'instances Amazon EC2. Il est utilisé conjointement avec Amazon ECS.
+ [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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)est un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et autres Services AWS pour créer des applications critiques pour l'entreprise.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages de l'utilisation de l'infrastructure évolutive de AWS. 

**Autres outils**
+ [npm](https://docs.npmjs.com/about-npm) est un registre de logiciels qui s'exécute dans un environnement Node.js et est utilisé pour partager ou emprunter des packages et gérer le déploiement de packages privés.
+ [Yarn](https://yarnpkg.com/) est un gestionnaire de paquets open source que vous pouvez utiliser pour gérer les dépendances dans les JavaScript projets. Yarn peut vous aider à installer, mettre à jour, configurer et supprimer les dépendances des packages.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [waitcondition-hook-for-aws-fargate-task](https://github.com/aws-samples/waitcondition-hook-for-aws-fargate-task).

## Bonnes pratiques
<a name="use-the-aws-fargate-waitcondition-hook-construct-best-practices"></a>
+ Lorsque vous créez votre AWS CDK application, suivez les [meilleures pratiques pour le développement et le déploiement d'une infrastructure cloud AWS CDK dans la](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html) documentation de AWS CDK la version 2.
+ Pour AWS Fargate cette tâche, suivez les [meilleures pratiques relatives aux images de conteneurs Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/application.html) dans la documentation Amazon ECS.

## Épopées
<a name="use-the-aws-fargate-waitcondition-hook-construct-epics"></a>

### Configurez le AWS CDK
<a name="set-up-the-cdk"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez le AWS CDK. | Pour installer le AWS CDK sur votre machine locale ou dans un autre environnement, exécutez la commande suivante : <pre>npm install -g aws-cdk@latest</pre> | Architecte cloud, développeur d'applications | 
| Bootstrap le. AWS CDK | Le [bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) est le processus de préparation d'un [environnement](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) pour le déploiement. Pour démarrer votre AWS CDK boîte à outils pour la cible Compte AWS Région AWS, exécutez la commande suivante :<pre>cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1 </pre>Cette commande crée une CloudFormation pile nommée`CDKToolkit`.  | Architecte du cloud | 

### Exécutez le WaitCondition crochet pour créer AWS Fargate des tâches
<a name="run-the-waitcondition-hook-for-fargatelong-tasks-construct"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le projet CDK. | Créez un projet CDK dans le langage de votre choix. Ce modèle utilise TypeScript. Pour créer un projet CDK à l'aide de TypeScript, exécutez la commande suivante : `cdk init app —language typescript` | Architecte du cloud | 
| Installez le package . | Exécutez `npm install` sur le chemin racine de votre projet CDK. Une fois la bibliothèque CDK installée, exécutez la commande suivante pour l'installer `waitcondition-hook-for-aws-fargate-task` : `yarn add waitcondition-hook-for-aws-fargate-task` | Architecte du cloud | 
| Créez votre application CDK et les composants Amazon ECS. | Créez votre projet CDK. Une ressource de définition de tâche Amazon ECS est requise. Pour plus d'informations sur la création d'une définition de tâche, consultez [les définitions de tâches Amazon](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html) ECS dans la documentation Amazon ECS.L'exemple suivant utilise cette construction :<pre>import * as cdk from 'aws-cdk-lib';<br />import { Vpc } from 'aws-cdk-lib/aws-ec2';<br />import * as ecr from 'aws-cdk-lib/aws-ecr';<br />import * as ecs from 'aws-cdk-lib/aws-ecs';<br />import { Construct } from 'constructs';<br />import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';<br />import { Queue } from 'aws-cdk-lib/aws-sqs';<br /><br />export class FargateRunnerStack extends cdk.Stack {<br />    constructor(scope: Construct, id: string, props?: cdk.StackProps) {<br />        super(scope, id, props);<br />        // Define the VPC<br />        const vpc = new Vpc(this, 'MyVpc')<br />        // Define the Fargate Task<br />        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});<br />        // Import exiting ecr repo<br />        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');<br />        // Add a container to the task<br />        taskDefinition.addContainer('MyContainer', {<br />            image: ecs.ContainerImage.fromEcrRepository(repo),<br />        });<br />        // Create the Fargate runner<br />        const myFargateRunner = new FargateRunner(this, 'MyRunner', {<br />            fargateTaskDef: taskDefinition,<br />            timeout: `${60 * 5}`,<br />            vpc: vpc,<br />        });<br />        // Create the SQS queue<br />        const myQueue = new Queue(this, 'MyQueue', {});<br />        // Add dependency<br />        myQueue.node.addDependency(myFargateRunner);<br />    }<br />}</pre> | Architecte du cloud | 
| Synthétisez et lancez l'application CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)La `waitcondition-hook-for-aws-fargate-task` construction exécute la tâche Fargate.  | Architecte du cloud | 

### Nettoyage
<a name="clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| nettoyer les ressources. | Pour nettoyer les ressources mises en service à partir de l'étape précédente, exécutez la commande suivante :<pre>cdk destroy </pre> | Architecte du cloud | 

## Résolution des problèmes
<a name="use-the-aws-fargate-waitcondition-hook-construct-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Défaillance générale de la CloudFormation pile | Pour aider à résoudre les défaillances générales du CloudFormation stack, ajoutez l'`--no-rollback`indicateur comme indiqué dans l'exemple suivant : <pre>cdk deploy --no-rollback</pre>Cette commande interrompt la restauration de la CloudFormation pile, ce qui vous donne les ressources nécessaires pour résoudre les problèmes. Pour plus d'informations, consultez la section [Choisir le mode de gestion des défaillances lors du provisionnement des ressources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) dans la CloudFormation documentation. | 
| AWS Step Functions échec | Une machine à AWS Step Functions états peut ne pas s'exécuter pour différentes raisons. Une `—disable-rollback` fois configuré, procédez comme suit pour résoudre les problèmes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Pour plus d'informations, consultez les [sections Résolution des problèmes dans Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html) et [Affichage des détails d'exécution dans la console Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-view-execution-details.html#exec-details-intf-step-details) de la AWS Step Functions documentation. | 
| AWS Lambda échec de fonction | Cette construction fournit deux fonctions Lambda : `CallbackFunction` et. `ErrorhandlerFunction` Ils peuvent échouer pour diverses raisons, telles que des exceptions non gérées. Pour résoudre les problèmes, procédez comme suit : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-the-aws-fargate-waitcondition-hook-construct.html)Pour plus d'informations, consultez la section [Résolution des problèmes liés à Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-troubleshooting.html) dans la AWS Lambda documentation. | 

## Ressources connexes
<a name="use-the-aws-fargate-waitcondition-hook-construct-resources"></a>

**AWS documentation**
+ [AWS CDK Référence d'API Construct](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)
+ [Commencer à utiliser le AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Découvrez comment créer et utiliser les ressources Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started.html)
+ [Découvrez comment démarrer avec Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
+ [Qu'est-ce que c'est AWS CDK ?](https://docs.aws.amazon.com/cdk/v2/guide/home.html)

**Autres ressources**
+ [Waitcondition Hook pour la AWS Fargate tâche](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) (npm)
+ [waitcondition-hook-for-aws-fargate-task](https://pypi.org/project/waitcondition-hook-for-aws-fargate-task/) 1.0.6 (pypi.org)

# Utiliser des référentiels sources Git tiers dans AWS CodePipeline
<a name="use-third-party-git-source-repositories-in-aws-codepipeline"></a>

*Kirankumar Chandrashekar, Amazon Web Services*

## Résumé
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-summary"></a>

Ce modèle décrit comment utiliser AWS CodePipeline avec des référentiels sources Git tiers.

[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts-continuous-delivery-integration.html) est un service de livraison continue qui automatise les tâches de création, de test et de déploiement de vos logiciels. Le service prend actuellement en charge les référentiels Git gérés par GitHub [AWS CodeCommit](https://aws.amazon.com/codecommit) et Atlassian Bitbucket. Toutefois, certaines entreprises utilisent des référentiels Git tiers intégrés à leur service d'authentification unique (SSO) et à Microsoft Active Directory pour l'authentification. Vous pouvez utiliser ces référentiels Git tiers comme sources en CodePipeline créant des actions personnalisées et des webhooks.

Un webhook est une notification HTTP qui détecte des événements dans un autre outil, tel qu'un GitHub référentiel, et connecte ces événements externes à un pipeline. Lorsque vous créez un webhook dans CodePipeline, le service renvoie une URL que vous pouvez utiliser dans le webhook de votre dépôt Git. **Si vous envoyez du code à une branche spécifique du référentiel Git, le webhook Git initie le CodePipeline webhook via cette URL et définit le stage source du pipeline sur In Progress.** Lorsque le pipeline est dans cet état, un assistant interroge CodePipeline la tâche personnalisée, exécute la tâche et envoie un statut de réussite ou d'échec à CodePipeline. Dans ce cas, étant donné que le pipeline est au stade source, le job worker récupère le contenu du référentiel Git, le compresse et le télécharge dans le bucket Amazon Simple Storage Service (Amazon S3) où sont stockés les artefacts du pipeline, à l'aide de la clé d'objet fournie par le job interrogé. Vous pouvez également associer une transition pour l'action personnalisée à un événement sur Amazon CloudWatch et lancer le job worker en fonction de cet événement. Cette configuration vous permet d'utiliser comme sources des référentiels Git tiers que le service ne prend pas en charge de manière native. CodePipeline

## Conditions préalables et limitations
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un référentiel Git qui prend en charge les webhooks et peut se connecter à l'URL d'un CodePipeline webhook via Internet 
+ Interface de ligne de commande (AWS CLI) (AWS [CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) installée [et](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) configurée pour fonctionner avec le compte AWS

## Architecture
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-architecture"></a>

Le modèle comprend les étapes suivantes :

1. L'utilisateur valide le code dans un dépôt Git.

1. Le webhook Git est appelé.

1. Le CodePipeline webhook s'appelle.

1. Le pipeline est défini sur **En cours** et le stage source sur l'état **En cours**.

1. L'action de l'étape source initie une règle CloudWatch Events, indiquant qu'elle a été démarrée.

1. L' CloudWatch événement initie une fonction Lambda.

1. La fonction Lambda obtient les détails de la tâche d'action personnalisée.

1. La fonction Lambda lance CodeBuild AWS et lui transmet toutes les informations relatives au travail.

1. CodeBuild obtient la clé SSH publique ou les informations d'identification utilisateur pour l'accès HTTPS à Git à partir de Secrets Manager.

1. CodeBuild clone le dépôt Git pour une branche spécifique.

1. CodeBuild compresse l'archive et la télécharge dans le compartiment S3 qui sert de magasin d' CodePipeline artefacts.

![\[Flux de travail qui utilise des dépôts de sources Git tiers comme sources pour AWS CodePipeline.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/84284bec-b39d-466a-9fd9-994be2c953df/images/85555dab-7317-40f5-86a7-ccb8987c5bf3.png)


 

## Outils
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-tools"></a>
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) — AWS CodePipeline est un service de [livraison continue](https://aws.amazon.com/devops/continuous-delivery/) entièrement géré qui vous aide à automatiser vos pipelines de publication pour des mises à jour rapides et fiables des applications et de l'infrastructure. CodePipeline automatise les phases de création, de test et de déploiement de votre processus de publication pour chaque modification de code, en fonction du modèle de version que vous définissez. Cela vous permet de fournir des fonctionnalités et des mises à jour de manière rapide et fiable. Vous pouvez intégrer AWS CodePipeline à des services tiers tels que GitHub ou avec votre propre plugin personnalisé.
+ [AWS Lambda](https://aws.amazon.com/lambda/) — AWS Lambda vous permet d'exécuter du code sans provisionner ni gérer de serveurs. Avec Lambda, vous pouvez exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans qu'aucune administration ne soit nécessaire. Vous téléchargez votre code et Lambda s'occupe de tout ce qui est nécessaire pour exécuter et dimensionner votre code avec une haute disponibilité. Vous pouvez configurer votre code pour qu'il soit lancé automatiquement à partir d'autres services AWS ou l'appeler directement depuis n'importe quelle application Web ou mobile.
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/) — AWS CodeBuild est un service d'[intégration continue](https://aws.amazon.com/devops/continuous-integration/) entièrement géré qui compile le code source, exécute des tests et produit des packages logiciels prêts à être déployés. Grâce à CodeBuild cela, vous n'avez pas besoin de provisionner, de gérer et de dimensionner vos propres serveurs de construction. CodeBuild évolue en continu et traite plusieurs versions simultanément, afin que vos versions ne soient pas laissées en attente dans une file d'attente. Vous pouvez démarrer rapidement en utilisant des environnements de génération prépackagés, ou bien, vous pouvez créer vos propres environnements de génération personnalisés, que vous utiliserez avec vos outils de génération.
+ [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) — AWS Secrets Manager vous aide à protéger les secrets nécessaires pour accéder à vos applications, services et ressources informatiques. Le service vous permet de faire pivoter, de gérer et de récupérer les informations d'identification de base de données, les clés d'API et d'autres secrets tout au long de leur cycle de vie. Les utilisateurs et les applications récupèrent les secrets en appelant Secrets Manager APIs, sans avoir à coder en dur les informations sensibles en texte brut. Secrets Manager propose une rotation secrète avec intégration intégrée à Amazon Relational Database Service (Amazon RDS), Amazon Redshift et Amazon DocumentDB. Le service peut être étendu pour prendre en charge d'autres types de secrets, notamment les clés API et les OAuth jetons. En outre, Secrets Manager vous permet de contrôler l'accès aux secrets à l'aide d'autorisations précises et d'auditer la rotation des secrets de manière centralisée pour les ressources du cloud AWS, des services tiers et des environnements sur site.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) — Amazon CloudWatch est un service de surveillance et d'observation conçu pour les DevOps ingénieurs, les développeurs, les ingénieurs de fiabilité des sites (SREs) et les responsables informatiques. CloudWatch vous fournit des données et des informations exploitables pour surveiller vos applications, répondre aux changements de performances à l'échelle du système, optimiser l'utilisation des ressources et obtenir une vue unifiée de l'état de fonctionnement. CloudWatch collecte des données opérationnelles et de surveillance sous forme de journaux, de mesures et d'événements, afin de vous fournir une vue unifiée des ressources, des applications et des services AWS exécutés sur AWS et sur des serveurs sur site. Vous pouvez l'utiliser CloudWatch pour détecter les comportements anormaux dans vos environnements, définir des alarmes, visualiser les journaux et les indicateurs côte à côte, prendre des mesures automatisées, résoudre les problèmes et découvrir des informations permettant de garantir le bon fonctionnement de vos applications.
+ [Amazon S3](https://aws.amazon.com/s3/) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui vous permet de stocker et de protéger n'importe quel volume de données pour de nombreux cas d'utilisation, tels que les sites Web, les applications mobiles, la sauvegarde et la restauration, l'archivage, les applications d'entreprise, les appareils IoT et l'analyse des mégadonnées. Amazon S3 fournit easy-to-use des fonctionnalités de gestion qui vous aident à organiser vos données et à configurer des contrôles d'accès précis pour répondre à vos exigences commerciales, organisationnelles et de conformité spécifiques.

## Épopées
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-epics"></a>

### Créez une action personnalisée dans CodePipeline
<a name="create-a-custom-action-in-codepipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une action personnalisée à l'aide de l'AWS CLI ou d'AWS CloudFormation. | Cette étape implique la création d'une action source personnalisée qui peut être utilisée dans l'étape source d'un pipeline dans votre compte AWS dans une région donnée. Vous devez utiliser l'AWS CLI ou AWS CloudFormation (et non la console) pour créer l'action source personnalisée. Pour plus d'informations sur les commandes et les étapes décrites dans cette épopée et dans d'autres, consultez la section « Ressources connexes » à la fin de ce modèle. Dans l'AWS CLI, utilisez la create-custom-action-type commande. Utilisez --configuration-properties pour fournir tous les paramètres que le travailleur doit traiter lorsqu'il interroge CodePipeline une tâche. Assurez-vous de noter les valeurs fournies aux options --provider et --action-version, afin de pouvoir utiliser les mêmes valeurs lors de la création du pipeline avec cette étape source personnalisée. Vous pouvez également créer l'action source personnalisée dans AWS en CloudFormation utilisant le type de ressource AWS::CodePipeline::CustomActionType. | AWS général | 

### Configurer l’authentification
<a name="set-up-authentication"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une paire de clés SSH. | Créez une paire de clés Secure Shell (SSH). Pour obtenir des instructions, consultez la GitHub documentation. | Ingénieur systèmes/systèmes DevOps  | 
| Créez un secret dans AWS Secrets Manager. | Copiez le contenu de la clé privée depuis la paire de clés SSH et créez un secret dans AWS Secrets Manager. Ce secret est utilisé pour l'authentification lors de l'accès au dépôt Git. | AWS général | 
| Ajoutez la clé publique au dépôt Git. | Ajoutez la clé publique de la paire de clés SSH aux paramètres du compte du référentiel Git, pour l'authentification par le biais de la clé privée. | Ingénieur systèmes/systèmes DevOps  | 

### Création d'un pipeline et d'un webhook
<a name="create-a-pipeline-and-webhook"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un pipeline qui inclut l'action source personnalisée. | Créez un pipeline dans CodePipeline. Lorsque vous configurez le stage source, choisissez l'action source personnalisée que vous avez créée précédemment. Vous pouvez le faire dans la CodePipeline console AWS ou dans l'interface de ligne de commande AWS. CodePipeline vous invite à saisir les propriétés de configuration que vous avez définies pour l'action personnalisée. Ces informations sont requises pour que le travailleur puisse traiter le travail pour l'action personnalisée. Suivez l'assistant et créez l'étape suivante pour le pipeline. | AWS général | 
| Créez un CodePipeline webhook. | Créez un webhook pour le pipeline que vous avez créé avec l'action source personnalisée. Vous devez utiliser l'AWS CLI ou AWS CloudFormation (et non la console) pour créer le webhook. Dans l'AWS CLI, exécutez la commande put-webhook et fournissez les valeurs appropriées pour les options du webhook. Notez l'URL du webhook renvoyée par la commande. Si vous utilisez AWS CloudFormation pour créer le webhook, utilisez le type AWS::CodePipeline::Webhook de ressource. Assurez-vous de sortir l'URL du webhook à partir de la ressource créée et notez-la. | AWS général | 
| Créez une fonction et CodeBuild un projet Lambda. | Au cours de cette étape, vous utilisez Lambda CodeBuild pour créer un job worker qui interrogera les demandes de travail CodePipeline pour l'action personnalisée, exécutera le travail et renverra le résultat du statut à. CodePipeline Créez une fonction Lambda initiée par une règle Amazon CloudWatch Events lorsque l'étape d'action sur la source personnalisée du pipeline passe à « En cours ». Lorsque la fonction Lambda est lancée, elle doit obtenir les détails des tâches d'action personnalisées en interrogeant les tâches. Vous pouvez utiliser l' PollForJobs API pour renvoyer ces informations. Une fois les informations de travail interrogées obtenues, la fonction Lambda doit renvoyer un accusé de réception, puis traiter les informations avec les données qu'elle obtient à partir des propriétés de configuration pour l'action personnalisée. Lorsque le travailleur est prêt à communiquer avec le dépôt Git, vous pouvez lancer un CodeBuild projet, car il est pratique de gérer les tâches Git à l'aide du client SSH. | AWS général, développeur de code | 

### Créez un événement dans CloudWatch
<a name="create-an-event-in-cloudwatch"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une règle d' CloudWatch événements. | Créez une règle d' CloudWatch événements qui lance la fonction Lambda en tant que cible chaque fois que l'étape d'action personnalisée du pipeline passe à « En cours ». | AWS général | 

## Ressources connexes
<a name="use-third-party-git-source-repositories-in-aws-codepipeline-resources"></a>

**Création d'une action personnalisée dans CodePipeline**
+ [Créez et ajoutez une action personnalisée dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [AWS::CodePipeline::CustomActionType ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-customactiontype.html)

**Configuration de l'authentification**
+ [Création et gestion de secrets avec AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)

**Création d'un pipeline et d'un webhook**
+ [Créez un pipeline dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html)
+ [référence de commande put-webhook](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/put-webhook.html)
+ [AWS::CodePipeline::Webhook ressource](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html)
+ [PollForJobs Référence d’API](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_PollForJobs.html)
+ [Créez et ajoutez une action personnalisée dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-create-custom-action.html)
+ [Création d'un projet de génération dans AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html)

**Création d'un événement**
+ [Détectez et réagissez aux changements d'état du pipeline avec Amazon CloudWatch Events](https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html)

**Références supplémentaires**
+ [Travailler avec des pipelines dans CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines.html)
+ [Guide du développeur AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

# Créez un CI/CD pipeline pour valider les configurations Terraform à l'aide d'AWS CodePipeline
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline"></a>

*Aromal Raj Jayarajan et Vijesh Vijayakumaran Nair, Amazon Web Services*

## Résumé
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-summary"></a>

Ce modèle montre comment tester les configurations HashiCorp Terraform à l'aide d'un pipeline d'intégration continue et de livraison continue (CI/CD) déployé par AWS. CodePipeline

Terraform est une application d'interface en ligne de commande qui vous aide à utiliser du code pour provisionner et gérer l'infrastructure et les ressources du cloud. [La solution fournie dans ce modèle crée un CI/CD pipeline qui vous aide à valider l'intégrité de vos configurations Terraform en exécutant cinq CodePipeline étapes :](https://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#concepts-stages)

1. `"checkout"`extrait la configuration Terraform que vous testez à partir d'un référentiel AWS CodeCommit .

1. `"validate"`exécute des outils de validation de l'infrastructure en tant que code (IaC) [TFLint](https://github.com/terraform-linters/tflint), notamment [tfsec](https://github.com/aquasecurity/tfsec) et [checkov](https://www.checkov.io/). Le stage exécute également les commandes de validation Terraform IaC suivantes : `terraform validate` et. `terraform fmt`

1. `"plan"`indique quelles modifications seront appliquées à l'infrastructure si la configuration Terraform est appliquée.

1. `"apply"`utilise le plan généré pour fournir l'infrastructure requise dans un environnement de test.

1. `"destroy"`supprime l'infrastructure de test créée au cours de l'`"apply"`étape.

## Conditions préalables et limitations
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [Interface de ligne de commande AWS (AWS CLI)[, installée et](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), installé et configuré sur votre machine locale
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), installé et configuré sur votre machine locale

**Limites**
+ L'approche de ce modèle déploie AWS CodePipeline sur un seul compte AWS et dans une seule région AWS. Des modifications de configuration sont nécessaires pour les déploiements multicomptes et multirégions.
+ Le rôle AWS Identity and Access Management (IAM) fourni par ce modèle (**codepipeline\$1iam\$1role**) suit le principe du moindre privilège. Les autorisations de ce rôle IAM doivent être mises à jour en fonction des ressources spécifiques que votre pipeline doit créer. ****

**Versions du produit**
+ AWS CLI version 2.9.15 ou ultérieure
+ Terraform version 1.3.7 ou ultérieure

## Architecture
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-architecture"></a>

**Pile technologique cible**
+ AWS CodePipeline
+ AWS CodeBuild
+ AWS CodeCommit
+ AWS IAM
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Key Management Service (AWS KMS)
+ Terraform

**Architecture cible**

Le schéma suivant montre un exemple de flux de travail de CI/CD pipeline pour tester les configurations Terraform dans. CodePipeline

![\[Architecture permettant de tester les configurations Terraform à l'aide d'un pipeline AWS CI/CD .\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/4df7b1f8-8eef-4d85-a971-a7f158be9691/images/90b931c8-e745-4b52-92de-a367fb0f1f51.png)


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

1. Dans CodePipeline, un utilisateur AWS lance les actions proposées dans un plan Terraform en exécutant la `terraform apply` commande dans l'AWS CLI.

1. AWS CodePipeline assume un rôle de service IAM qui inclut les politiques requises pour accéder CodeCommit à AWS KMS et à Amazon S3. CodeBuild

1. CodePipeline exécute l'étape du `"checkout"` pipeline pour extraire la configuration Terraform d'un CodeCommit référentiel AWS à des fins de test.

1. CodePipeline exécute l'`"validate"`étape pour tester la configuration de Terraform en exécutant les outils de validation IaC et en exécutant les commandes de validation Terraform iAc dans un projet. CodeBuild 

1. CodePipeline exécute l'`"plan"`étape pour créer un plan dans le CodeBuild projet basé sur la configuration Terraform. L'utilisateur AWS peut consulter ce plan avant que les modifications ne soient appliquées à l'environnement de test.

1. Code Pipeline exécute l'`"apply"`étape de mise en œuvre du plan en utilisant le CodeBuild projet pour fournir l'infrastructure requise dans l'environnement de test.

1. CodePipeline exécute la `"destroy"` phase, qui permet CodeBuild de supprimer l'infrastructure de test créée pendant la `"apply"` phase.

1. Un compartiment Amazon S3 stocke les artefacts du pipeline, qui sont chiffrés et déchiffrés à l'aide d'une clé gérée par le [client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) AWS KMS.

## Outils
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-tools"></a>

**Outils**

*Services AWS*
+ [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [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.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [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*
+ [HashiCorp Terraform](https://www.terraform.io/docs) est une application d'interface en ligne de commande qui vous aide à utiliser du code pour provisionner et gérer l'infrastructure et les ressources du cloud.

**Code**

Le code de ce modèle est disponible dans le GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples)référentiel. Le référentiel contient les configurations Terraform requises pour créer l'architecture cible décrite dans ce modèle.

## Épopées
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-epics"></a>

### Fournir les composants de la solution
<a name="provision-the-solution-components"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le GitHub dépôt. | Clonez le GitHub [aws-codepipeline-terraform-cicdsamples](https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples)dépôt en exécutant la commande suivante dans une fenêtre de terminal :<pre>git clone https://github.com/aws-samples/aws-codepipeline-terraform-cicd-samples.git</pre>Pour plus d'informations, consultez la section [Clonage d'un dépôt](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) dans la GitHub documentation. | DevOps ingénieur | 
| Créez un fichier de définitions de variables Terraform.  | Créez un `terraform.tfvars` fichier en fonction des exigences de votre cas d'utilisation. Vous pouvez mettre à jour les variables dans le `examples/terraform.tfvars` fichier qui se trouve dans le dépôt cloné.Pour plus d'informations, consultez [Affecter des valeurs aux variables du module racine](https://developer.hashicorp.com/terraform/language/values/variables#assigning-values-to-root-module-variables) dans la documentation Terraform.Le `Readme.md` fichier du référentiel contient plus d'informations sur les variables requises. | DevOps ingénieur | 
| Configurez AWS en tant que fournisseur Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Pour plus d'informations, consultez le [fournisseur AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) dans la documentation Terraform. | DevOps ingénieur | 
| Mettez à jour la configuration du fournisseur Terraform pour créer le compartiment de réplication Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)La réplication active la copie automatique et asynchrone des objets dans les compartiments Amazon S3. | DevOps ingénieur | 
| Initialisez la configuration Terraform. | Pour initialiser votre répertoire de travail qui contient les fichiers de configuration Terraform, exécutez la commande suivante dans le dossier racine du référentiel cloné :<pre>terraform init</pre> | DevOps ingénieur | 
| Créez le plan Terraform. | Pour créer un plan Terraform, exécutez la commande suivante dans le dossier racine du référentiel cloné :<pre>terraform plan --var-file=terraform.tfvars -out=tfplan</pre>Terraform évalue les fichiers de configuration pour déterminer l'état cible des ressources déclarées. Il compare ensuite l'état cible à l'état actuel et crée un plan. | DevOps ingénieur | 
| Vérifiez le plan Terraform. | Passez en revue le plan Terraform et confirmez qu'il configure l'architecture requise dans votre compte AWS cible. | DevOps ingénieur | 
| Déployez la solution. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Terraform crée, met à jour ou détruit l'infrastructure pour atteindre l'état cible déclaré dans les fichiers de configuration. | DevOps ingénieur | 

### Validez les configurations Terraform en exécutant le pipeline
<a name="validate-terraform-configurations-by-running-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le référentiel de code source. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | DevOps ingénieur | 
| Validez les étapes du pipeline. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Pour plus d'informations, consultez [Afficher les détails et l'historique du pipeline (console)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-view-console.html) dans le *guide de CodePipeline l'utilisateur AWS*.Lorsqu'une modification est validée dans la branche principale du référentiel source, le pipeline de test est automatiquement activé. | DevOps ingénieur | 
| Vérifiez le résultat du rapport. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html)Le `<project_name>-validate` CodeBuild projet génère des rapports de vulnérabilité pour votre code au cours de l'`"validate"`étape. | DevOps ingénieur | 

### Nettoyage de vos ressources
<a name="clean-up-your-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Nettoyez le pipeline et les ressources associées. | Pour supprimer les ressources de test de votre compte AWS, exécutez la commande suivante dans le dossier racine du référentiel cloné :<pre>terraform destroy --var-file=terraform.tfvars</pre> | DevOps ingénieur | 

## Résolution des problèmes
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Vous recevez un **AccessDenied **message d'erreur au cours de l'`"apply"`étape. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline.html) | 

## Ressources connexes
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-resources"></a>
+ [Blocs de modules](https://developer.hashicorp.com/terraform/language/modules/syntax) (documentation Terraform)
+ [Comment utiliser pour CI/CD déployer et configurer les services de sécurité AWS avec Terraform](https://aws.amazon.com/blogs/security/how-use-ci-cd-deploy-configure-aws-security-services-terraform/) (article de blog AWS)
+ [Utilisation de rôles liés à un service (documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) IAM)
+ [create-pipeline](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codepipeline/create-pipeline.html) (documentation de la CLI AWS)
+ [Configurer le chiffrement côté serveur pour les artefacts stockés dans Amazon S3 pour (documentation CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/S3-artifact-encryption.html) AWS CodePipeline )
+ [Quotas pour AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/limits.html) ( CodeBuild documentation AWS)
+ [Protection des données dans AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/data-protection.html) ( CodePipeline documentation AWS)

## Informations supplémentaires
<a name="create-a-ci-cd-pipeline-to-validate-terraform-configurations-by-using-aws-codepipeline-additional"></a>

**Modules Terraform personnalisés**

Voici une liste des modules Terraform personnalisés utilisés dans ce modèle :
+ `codebuild_terraform`crée les CodeBuild projets qui constituent chaque étape du pipeline.
+ `codecommit_infrastructure_source_repo`capture et crée le CodeCommit référentiel source.
+ `codepipeline_iam_role`crée les rôles IAM requis pour le pipeline.
+ `codepipeline_kms`crée la clé AWS KMS requise pour le chiffrement et le déchiffrement des objets Amazon S3.
+ `codepipeline_terraform`crée le pipeline de test pour le CodeCommit référentiel source.
+ `s3_artifacts_bucket`crée un compartiment Amazon S3 pour gérer les artefacts du pipeline.

**Fichiers de spécifications de construction**

Voici une liste des fichiers de spécification de construction (buildspec) que ce modèle utilise pour exécuter chaque étape du pipeline :
+ `buildspec_validate.yml`dirige la `"validate"` scène.
+ `buildspec_plan.yml`dirige la `"plan"` scène.
+ `buildspec_apply.yml`dirige la `"apply"` scène.
+ `buildspec_destroy.yml`dirige la `"destroy"` scène.

*Variables du fichier de spécifications de construction*

Chaque fichier buildspec utilise les variables suivantes pour activer différents paramètres spécifiques à la version :


| 
| 
| Variable | Valeur par défaut | Description | 
| --- |--- |--- |
| `CODE_SRC_DIR` | "." | Définit le CodeCommit répertoire source | 
| `TF_VERSION` | « 1,3,7 » | Définit la version Terraform pour l'environnement de construction | 

Le `buildspec_validate.yml` fichier prend également en charge les variables suivantes pour activer différents paramètres spécifiques à la version :


| 
| 
| Variable | Valeur par défaut | Description | 
| --- |--- |--- |
| `SCRIPT_DIR` | «. /modèles/scripts » | Définit le répertoire des scripts | 
| `ENVIRONMENT` | « développeur » | Définit le nom de l'environnement | 
| `SKIPVALIDATIONFAILURE` | « Y » | Ignore la validation en cas d'échec | 
| `ENABLE_TFVALIDATE` | « Y » | Active la validation Terraform  | 
| `ENABLE_TFFORMAT` | « Y » | Active le format Terraform | 
| `ENABLE_TFCHECKOV` | « Y » | Active le scan de vérification | 
| `ENABLE_TFSEC` | « Y » | Active le scan TFSEC | 
| `TFSEC_VERSION` | « v1.28.1 » | Définit la version tfsec | 

# Plus de modèles
<a name="devops-more-patterns-pattern-list"></a>

**Topics**
+ [Accédez à des applications de conteneur en privé sur Amazon EKS à l'aide d'AWS PrivateLink et d'un Network Load Balancer](access-container-applications-privately-on-amazon-eks-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Associer un AWS CodeCommit référentiel dans un compte Compte AWS à Amazon SageMaker AI Studio Classic dans un autre compte](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatisez la création de comptes en utilisant l'accélérateur Landing Zone sur AWS](automate-account-creation-lza.md)
+ [Automatisez l'ajout ou la mise à jour d'entrées de registre Windows à l'aide d'AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatisez les sauvegardes pour les instances de base de données Amazon RDS for PostgreSQL à l'aide d'AWS Batch](automate-backups-for-amazon-rds-for-postgresql-db-instances-by-using-aws-batch.md)
+ [Automatisez le déploiement d'applications imbriquées à l'aide d'AWS SAM](automate-deployment-of-nested-applications-using-aws-sam.md)
+ [Automatisez le déploiement du gestionnaire de terminaison de nœuds dans Amazon EKS à l'aide d'un pipeline CI/CD](automate-deployment-of-node-termination-handler-in-amazon-eks-by-using-a-ci-cd-pipeline.md)
+ [Automatisez la configuration de RabbitMQ dans Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatisez la réplication des instances Amazon RDS sur Comptes AWS](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Créez et déployez automatiquement une application Java sur Amazon EKS à l'aide d'un CI/CD pipeline](automatically-build-and-deploy-a-java-application-to-amazon-eks-using-a-ci-cd-pipeline.md)
+ [Générez automatiquement un modèle PynamoDB et des fonctions CRUD pour Amazon DynamoDB à l'aide d'une application Python](automatically-generate-a-pynamodb-model-and-crud-functions-for-amazon-dynamodb-by-using-a-python-application.md)
+ [Validez et déployez automatiquement les politiques et les rôles IAM à l'aide CodePipeline d'IAM Access Analyzer et de macros AWS CloudFormation](automatically-validate-and-deploy-iam-policies-and-roles-in-an-aws-account-by-using-codepipeline-iam-access-analyzer-and-aws-cloudformation-macros.md)
+ [Sauvegardez les serveurs Sun SPARC dans l'émulateur Stromasys Charon-SSP sur AWS Cloud](back-up-sun-sparc-servers-in-the-stromasys-charon-ssp-emulator-on-the-aws-cloud.md)
+ [Créez un pipeline de données pour ingérer, transformer et analyser les données Google Analytics à l'aide du kit de AWS DataOps développement](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Créez un PAC de serveur Micro Focus Enterprise avec Amazon EC2 Auto Scaling et Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Créez un pipeline pour les images de conteneurs renforcées à l'aide d' EC2 Image Builder et de Terraform](build-a-pipeline-for-hardened-container-images-using-ec2-image-builder-and-terraform.md)
+ [Créez un MLOps flux de travail à l'aide d'Amazon SageMaker AI et d'Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Centralisation de la résolution DNS à l'aide AWS Managed Microsoft AD et sur site de Microsoft Active Directory](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Nettoyez les ressources de AWS Account Factory for Terraform (AFT) en toute sécurité après la perte du fichier d'état](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Configurez la journalisation pour les applications .NET dans Amazon CloudWatch Logs en utilisant NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Copiez les images des conteneurs Amazon ECR sur et Comptes AWS Régions AWS](copy-ecr-container-images-across-accounts-regions.md)
+ [Créez une image de conteneur Docker personnalisée SageMaker et utilisez-la pour la formation des modèles dans AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Créez un pipeline dans les régions AWS qui ne prennent pas en charge AWS CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Créez des alarmes pour des métriques personnalisées à l'aide de la détection des CloudWatch anomalies Amazon](create-alarms-for-custom-metrics-using-amazon-cloudwatch-anomaly-detection.md)
+ [Personnalisez les noms de rôles par défaut en utilisant des AWS CDK aspects et des trappes d'échappement](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Déployez un pipeline qui détecte simultanément les problèmes de sécurité dans plusieurs livrables de code](deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.md)
+ [Déployez et gérez un lac de données sans serveur sur le cloud AWS en utilisant l'infrastructure sous forme de code](deploy-and-manage-a-serverless-data-lake-on-the-aws-cloud-by-using-infrastructure-as-code.md)
+ [Déployez des applications conteneurisées lorsqu'elles AWS IoT Greengrass V2 s'exécutent en tant que conteneur Docker](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)
+ [Déployez des ressources et des packages Kubernetes à l'aide d'Amazon EKS et d'un référentiel de diagrammes Helm dans Amazon S3](deploy-kubernetes-resources-and-packages-using-amazon-eks-and-a-helm-chart-repository-in-amazon-s3.md)
+ [Déployez des applications à piles multiples à l'aide d'AWS CDK avec TypeScript](deploy-multiple-stack-applications-using-aws-cdk-with-typescript.md)
+ [Déployez la validation de la sécurité du codage en temps réel à l'aide d'un serveur MCP avec Kiro et d'autres assistants de codage](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Déployez des instances de cluster de basculement SQL Server sur Amazon EC2 et Amazon à l'aide FSx de Terraform](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Déployez les automatisations de sécurité pour la AWS WAF solution à l'aide de Terraform](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Développez des assistants avancés basés sur l'IA générative basés sur le chat en utilisant RAG et des instructions ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Activez Amazon de GuardDuty manière conditionnelle à l'aide de modèles AWS CloudFormation](enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.md)
+ [Configurez le dimensionnement automatique piloté par les événements dans Amazon EKS à l'aide d'Amazon EKS Pod Identity et KEDA](event-driven-auto-scaling-with-eks-pod-identity-and-keda.md)
+ [Générez des recommandations personnalisées et reclassées à l'aide d'Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Recevez des notifications Amazon SNS lorsque l'état clé d'une clé AWS KMS change](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Gérez les ensembles d'autorisations pour plusieurs comptes en utilisant Account Factory pour Terraform](govern-permission-sets-aft.md)
+ [Identifiez automatiquement les images de conteneur dupliquées lors de la migration vers un référentiel Amazon ECR](identify-duplicate-container-images-automatically-when-migrating-to-ecr-repository.md)
+ [Implémentez la gestion des versions d'API basée sur les chemins en utilisant des domaines personnalisés dans Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Améliorez les performances opérationnelles en activant Amazon DevOps Guru dans plusieurs régions AWS, sur plusieurs comptes et OUs avec le kit AWS CDK](improve-operational-performance-by-enabling-amazon-devops-guru-across-multiple-aws-regions-accounts-and-ous-with-the-aws-cdk.md)
+ [Installation de l'agent SSM sur les nœuds de travail Amazon EKS à l'aide de Kubernetes DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Intégrez le contrôleur universel Stonebranch à la modernisation du mainframe AWS](integrate-stonebranch-universal-controller-with-aws-mainframe-modernization.md)
+ [Modernisation du mainframe : DevOps activée AWS avec Rocket Software Enterprise Suite](mainframe-modernization-devops-on-aws-with-micro-focus.md)
+ [Gérez les ensembles AWS IAM Identity Center d'autorisations sous forme de code en utilisant AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Gérez les ensembles AWS d'autorisations de manière dynamique à l'aide de Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [Gérez les applications de conteneur sur site en configurant Amazon ECS Anywhere avec le kit AWS CDK](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Gérez AWS Organizations les politiques sous forme de code en utilisant AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Migrer des enregistrements DNS en masse vers une zone hébergée privée Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migrez les applications hébergées EC2 par IIS vers Amazon à l'aide de appcmd.exe](migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.md)
+ [Surveillez l'utilisation d'une Amazon Machine Image partagée sur plusieurs Comptes AWS](monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.md)
+ [Orchestrez un pipeline ETL avec validation, transformation et partitionnement à l'aide de AWS Step Functions](orchestrate-an-etl-pipeline-with-validation-transformation-and-partitioning-using-aws-step-functions.md)
+ [Automatisez blue/green les déploiements de bases de données mondiales Amazon Aurora en utilisant les principes IaC](p-automate-blue-green-deployments-aurora-global-databases-iac.md)
+ [Préservez l'espace IP routable dans les conceptions VPC multi-comptes pour les sous-réseaux autres que les charges de travail](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Provisionner un produit Terraform à l'aide AWS Service Catalog d'un référentiel de code](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Exécutez les tâches d'automatisation d'AWS Systems Manager de manière synchrone depuis AWS Step Functions](run-aws-systems-manager-automation-tasks-synchronously-from-aws-step-functions.md)
+ [Configurez un CI/CD pipeline pour les charges de travail hybrides sur Amazon ECS Anywhere à l'aide d'AWS CDK et GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Configurer un CI/CD pipeline pour la migration de base de données à l'aide de Terraform](set-up-ci-cd-pipeline-for-db-migration-with-terraform.md)
+ [Configurez une infrastructure multi-AZ pour un SQL Server Always On FCI à l'aide d'Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Configurez automatiquement des robots UiPath RPA sur Amazon à l'aide EC2 d'AWS CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Simplifiez l'authentification des applications avec le protocole TLS mutuel dans Amazon ECS en utilisant Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Intégration des locataires dans l'architecture SaaS pour le modèle de silo à l'aide de C\$1 et d'AWS CDK](tenant-onboarding-in-saas-architecture-for-the-silo-model-using-c-and-aws-cdk.md)
+ [Utilisez Terraform pour activer automatiquement Amazon GuardDuty pour une organisation](use-terraform-to-automatically-enable-amazon-guardduty-for-an-organization.md)
+ [Utilisez les agents Amazon Bedrock pour automatiser la création de contrôles d'accès dans Amazon EKS via des instructions textuelles](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Validez le code Account Factory pour Terraform (AFT) localement](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Visualisez les résultats AI/ML du modèle à l'aide de Flask et d'AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)

# Infrastructures
<a name="infrastructure-pattern-list"></a>

**Topics**
+ [Accédez à un hôte bastion à l'aide du gestionnaire de session et d'Amazon EC2 Instance Connect](access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.md)
+ [Centralisation de la résolution DNS à l'aide AWS Managed Microsoft AD et sur site de Microsoft Active Directory](centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.md)
+ [Centralisez la surveillance à l'aide d'Amazon CloudWatch Observability Access Manager](centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.md)
+ [Vérifiez les EC2 instances pour les balises obligatoires au lancement](check-ec2-instances-for-mandatory-tags-at-launch.md)
+ [Nettoyez les ressources de AWS Account Factory for Terraform (AFT) en toute sécurité après la perte du fichier d'état](clean-up-aft-resources-safely-after-state-file-loss.md)
+ [Créez un pipeline dans les régions AWS qui ne prennent pas en charge AWS CodePipeline](create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.md)
+ [Personnalisez les noms de rôles par défaut en utilisant des AWS CDK aspects et des trappes d'échappement](customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.md)
+ [Déployez un cluster Cassandra sur Amazon EC2 avec une statique privée IPs pour éviter le rééquilibrage](deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.md)
+ [Étendez votre accès VRFs à AWS en utilisant AWS Transit Gateway Connect](extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.md)
+ [Recevez des notifications Amazon SNS lorsque l'état clé d'une clé AWS KMS change](get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.md)
+ [Préservez l'espace IP routable dans les conceptions VPC multi-comptes pour les sous-réseaux autres que les charges de travail](preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets.md)
+ [Provisionner un produit Terraform à l'aide AWS Service Catalog d'un référentiel de code](provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.md)
+ [Comptes AWS Enregistrez-en plusieurs avec une seule adresse e-mail à l'aide d'Amazon SES](register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.md)
+ [Configuration de la résolution DNS pour les réseaux hybrides dans un environnement AWS à compte unique](set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment.md)
+ [Configurez automatiquement des robots UiPath RPA sur Amazon à l'aide EC2 d'AWS CloudFormation](set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.md)
+ [Configuration d'une PeopleSoft architecture à haute disponibilité sur AWS](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Configurer la reprise après sinistre pour Oracle JD Edwards EnterpriseOne avec AWS Elastic Disaster Recovery](set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.md)
+ [Configurer la détection des CloudFormation dérives dans une organisation multirégionale et multi-comptes](set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.md)
+ [Importation réussie d'un compartiment S3 en tant que CloudFormation stack AWS](successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.md)
+ [Synchronisez les données entre les systèmes de fichiers Amazon EFS dans différentes régions AWS à l'aide d'AWS DataSync](synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.md)
+ [AWS Infrastructure de test à l'aide LocalStack de tests Terraform](test-aws-infra-localstack-terraform.md)
+ [Mettez à niveau les clusters SAP Pacemaker de ENSA1 ENSA2](upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.md)
+ [Utilisez des zones de disponibilité cohérentes VPCs sur les différents comptes AWS](use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.md)
+ [Utiliser l'utilisateur IDs dans les politiques IAM pour le contrôle d'accès et l'automatisation](use-user-ids-iam-policies-access-control-automation.md)
+ [Validez le code Account Factory pour Terraform (AFT) localement](validate-account-factory-for-terraform-aft-code-locally.md)
+ [Plus de modèles](infrastructure-more-patterns-pattern-list.md)

# Accédez à un hôte bastion à l'aide du gestionnaire de session et d'Amazon EC2 Instance Connect
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect"></a>

*Piotr Chotkowski et Witold Kowalik, Amazon Web Services*

## Résumé
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-summary"></a>

Un *hôte bastion*, parfois appelé *boîte de saut*, est un serveur qui fournit un point d'accès unique depuis un réseau externe aux ressources situées sur un réseau privé. Un serveur exposé à un réseau public externe, tel qu'Internet, présente un risque de sécurité potentiel en cas d'accès non autorisé. Il est important de sécuriser et de contrôler l'accès à ces serveurs.

Ce modèle décrit comment vous pouvez utiliser [Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) et [Amazon EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) pour vous connecter en toute sécurité à un hôte bastion Amazon Elastic Compute Cloud (Amazon EC2) déployé dans votre Compte AWS. Le gestionnaire de session est une fonctionnalité de AWS Systems Manager. Les avantages de ce modèle incluent :
+ L'hôte bastion déployé ne possède aucun port entrant ouvert exposé à l'Internet public. Cela réduit la surface d'attaque potentielle.
+ Vous n'avez pas besoin de stocker et de gérer des clés Secure Shell (SSH) à long terme dans votre Compte AWS. Au lieu de cela, chaque utilisateur génère une nouvelle paire de clés SSH chaque fois qu'il se connecte à l'hôte Bastion. Gestion des identités et des accès AWS Les politiques (IAM) associées aux informations d' AWS identification de l'utilisateur contrôlent l'accès à l'hôte Bastion.

**Public visé**

Ce modèle est destiné aux lecteurs ayant une connaissance de base d'Amazon EC2, d'Amazon Virtual Private Cloud (Amazon VPC) et de Hashicorp Terraform.

## Conditions préalables et limitations
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ AWS Command Line Interface (AWS CLI) version 2, [installée](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) et [configurée](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ Plug-in de gestion de session pour le AWS CLI, [installé](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
+ [Terraform CLI, installée](https://developer.hashicorp.com/terraform/cli)
+ Stockage pour l'[état](https://developer.hashicorp.com/terraform/language/state) Terraform, tel qu'un bucket Amazon Simple Storage Service (Amazon S3) et une table Amazon DynamoDB servant de backend distant pour stocker l'état Terraform. Pour plus d'informations sur l'utilisation de backends distants pour l'état Terraform, consultez [Amazon S3 Backends](https://www.terraform.io/language/settings/backends/s3) (documentation Terraform). Pour un exemple de code qui configure la gestion de l'état à distance avec un backend Amazon S3, consultez [remote-state-s3-backend](https://registry.terraform.io/modules/nozaq/remote-state-s3-backend/aws/latest) (Terraform Registry). Notez les critères suivants :
  + Le compartiment Amazon S3 et la table DynamoDB doivent se trouver dans le même emplacement. Région AWS
  + Lors de la création de la table DynamoDB, la clé de partition doit `LockID` être (distinguez majuscules et minuscules) et le type de clé de partition doit l'être. `String` Tous les autres paramètres du tableau doivent être à leurs valeurs par défaut. Pour plus d'informations, reportez-vous aux sections [À propos des clés primaires](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey) et [Création d'une table](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/getting-started-step-1.html) dans la documentation DynamoDB.
+ Un client SSH, installé

**Limites**
+ Ce modèle est conçu comme une preuve de concept (PoC) ou comme base pour un développement ultérieur. Il ne doit pas être utilisé sous sa forme actuelle dans les environnements de production. Avant le déploiement, ajustez l'exemple de code dans le référentiel en fonction de vos besoins et de votre cas d'utilisation.
+ Ce modèle suppose que l'hôte bastion cible utilise Amazon Linux 2 comme système d'exploitation. Bien qu'il soit possible d'utiliser d'autres Amazon Machine Images (AMIs), ce modèle ne s'applique pas aux autres systèmes d'exploitation.
**Note**  
Le support d'Amazon Linux 2 touche à sa fin. Pour plus d'informations, consultez [Amazon Linux 2 FAQs](https://aws.amazon.com/amazon-linux-2/faqs/).
+ Dans ce modèle, l'hôte bastion est situé dans un sous-réseau privé sans passerelle NAT ni passerelle Internet. Cette conception isole l' EC2 instance Amazon de l'Internet public. Vous pouvez ajouter une configuration réseau spécifique qui lui permet de communiquer avec Internet. Pour plus d'informations, consultez [Connecter votre cloud privé virtuel (VPC) à d'autres réseaux](https://docs.aws.amazon.com/vpc/latest/userguide/extend-intro.html) dans la documentation Amazon VPC. De même, conformément au [principe du moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), l'hôte du bastion n'a accès à aucune autre ressource de votre site, Compte AWS sauf si vous lui accordez explicitement des autorisations. Pour plus d'informations, consultez la section [Politiques basées sur les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) dans la documentation IAM.

**Versions du produit**
+ Version 2 de l'interface de ligne de commande AWS
+ Terraform version 1.3.9

## Architecture
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-architecture"></a>

**Pile technologique cible**
+ Un VPC avec un seul sous-réseau privé
+ Les points de [terminaison VPC d'interface](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) suivants :
  + `amazonaws.<region>.ssm`— Le point de terminaison du AWS Systems Manager service.
  + `amazonaws.<region>.ec2messages`— Systems Manager utilise ce point de terminaison pour passer des appels depuis l'agent SSM vers le service Systems Manager.
  + `amazonaws.<region>.ssmmessages`— Le gestionnaire de session utilise ce point de terminaison pour se connecter à votre EC2 instance Amazon via un canal de données sécurisé.
+ Une EC2 instance `t3.nano` Amazon exécutant Amazon Linux 2
+ Rôle IAM et profil d'instance
+ Groupes de sécurité Amazon VPC et règles de groupe de sécurité pour les points de terminaison et l'instance Amazon EC2 

**Architecture cible**

![\[Schéma d'architecture de l'utilisation du gestionnaire de session pour accéder à un hôte bastion.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a02aed20-1852-4c91-902f-f553795006e2/images/819c503b-7eec-4a9c-862b-b87107d50dc1.png)


Le schéma montre le processus suivant :

1. L'utilisateur assume un rôle IAM autorisé à effectuer les opérations suivantes :
   + Authentifier, autoriser et se connecter à l'instance Amazon EC2 
   + Démarrer une session avec le gestionnaire de session

1. L'utilisateur lance une session SSH via le gestionnaire de session.

1. Le gestionnaire de session authentifie l'utilisateur, vérifie les autorisations dans les politiques IAM associées, vérifie les paramètres de configuration et envoie un message à l'agent SSM pour ouvrir une connexion bidirectionnelle.

1. L'utilisateur transmet la clé publique SSH à l'hôte Bastion via les métadonnées Amazon. EC2 Cela doit être fait avant chaque connexion. La clé publique SSH reste disponible pendant 60 secondes.

1. L'hôte Bastion communique avec les points de terminaison VPC de l'interface pour Systems Manager et Amazon. EC2

1. L'utilisateur accède à l'hôte Bastion via le gestionnaire de session en utilisant un canal de communication bidirectionnel crypté TLS 1.2.

**Automatisation et évolutivité**

Les options suivantes sont disponibles pour automatiser le déploiement ou faire évoluer cette architecture :
+ Vous pouvez déployer l'architecture via un pipeline d'intégration et de livraison continues (CI/CD).
+ Vous pouvez modifier le code pour changer le type d'instance de l'hôte Bastion.
+ Vous pouvez modifier le code pour déployer plusieurs hôtes bastions. Dans le `bastion-host/main.tf` fichier, dans le bloc de `aws_instance` ressources, ajoutez le `count` méta-argument. Pour plus d'informations, consultez la documentation [Terraform](https://developer.hashicorp.com/terraform/language/meta-arguments/count).

## Outils
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-tools"></a>

**Services AWS**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [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 Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)vous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle. Ce modèle utilise le [Gestionnaire de session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html), une fonctionnalité de Systems Manager.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.

**Autres outils**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud. Ce modèle utilise la [CLI Terraform](https://developer.hashicorp.com/terraform/cli).

**Référentiel de code**

Le code de ce modèle est disponible dans l'[hôte GitHub Access a bastion à l'aide du gestionnaire de session et du référentiel Amazon EC2 Instance Connect](https://github.com/aws-samples/secured-bastion-host-terraform).

## Bonnes pratiques
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-best-practices"></a>
+ Nous vous recommandons d'utiliser des outils d'analyse de code automatisés pour améliorer la sécurité et la qualité du code. Ce modèle a été scanné à l'aide de [Checkov](https://www.checkov.io/), un outil d'analyse de code statique pour IaC. Nous vous recommandons au minimum d'effectuer des contrôles de validation et de formatage de base à l'aide des commandes `terraform validate` et `terraform fmt -check -recursive` Terraform.
+ Il est recommandé d'ajouter des tests automatisés pour IaC. Pour plus d'informations sur les différentes approches pour tester le code Terraform, consultez [Testing HashiCorp Terraform (article de blog Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform)).
+ Lors du déploiement, Terraform utilise l' EC2 instance Amazon qui remplace chaque fois qu'une nouvelle version de l'[AMI Amazon Linux 2 est détectée](https://aws.amazon.com/marketplace/pp/prodview-zc4x2k7vt6rpu?sr=0-1&ref_=beagle&applicationId=AWSMPContessa). Cela déploie la nouvelle version du système d'exploitation, y compris les correctifs et les mises à niveau. Si le calendrier de déploiement est peu fréquent, cela peut présenter un risque de sécurité car l'instance ne dispose pas des derniers correctifs. Il est important de mettre à jour et d'appliquer fréquemment des correctifs de sécurité aux EC2 instances Amazon déployées. Pour plus d'informations, consultez la section [Gestion des mises à jour sur Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/update-management.html).
+ Ce modèle étant une preuve de concept, il utilise des politiques AWS gérées, telles que`AmazonSSMManagedInstanceCore`. AWS les politiques gérées couvrent les cas d'utilisation courants mais n'accordent pas d'autorisations de moindre privilège. Selon les besoins de votre cas d'utilisation, nous vous recommandons de créer des politiques personnalisées qui accordent des autorisations de moindre privilège pour les ressources déployées dans cette architecture. Pour plus d'informations, voir [Commencer avec les politiques AWS gérées et passer aux autorisations du moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-use-aws-defined-policies).
+ Utilisez un mot de passe pour protéger l'accès aux clés SSH et stockez les clés dans un emplacement sécurisé.
+ Configurez la journalisation et la surveillance pour l'hôte du bastion. La journalisation et la surveillance sont des éléments importants de la maintenance des systèmes, tant du point de vue opérationnel que de la sécurité. Il existe plusieurs manières de surveiller les connexions et l'activité dans votre hôte Bastion. Pour plus d'informations, consultez les rubriques suivantes dans la documentation de Systems Manager :
  + [Surveillance AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring.html)
  + [Connexion et surveillance AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/logging-and-monitoring.html)
  + [Activité des sessions d'audit](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-auditing.html)
  + [Journalisation de l’activité de session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html)

## Épopées
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics"></a>

### Déployez les ressources
<a name="deploy-the-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel de code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps ingénieur, développeur | 
| Initialisez le répertoire de travail Terraform. | Cette étape n'est nécessaire que pour le premier déploiement. Si vous redéployez le modèle, passez à l'étape suivante.Dans le répertoire racine du dépôt cloné, entrez la commande suivante, où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)<pre>terraform init \<br />    -backend-config="bucket=$S3_STATE_BUCKET" \<br />    -backend-config="key=$PATH_TO_STATE_FILE" \<br />    -backend-config="region=$AWS_REGION</pre>Vous pouvez également ouvrir le fichier **config.tf** et, dans la `terraform` section, fournir ces valeurs manuellement. | DevOps ingénieur, Développeur, Terraform | 
| Déployez les ressources. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps ingénieur, Développeur, Terraform | 

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


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez la connexion SSH. | Mettez à jour le fichier de configuration SSH pour autoriser les connexions SSH via le gestionnaire de session. Pour obtenir des instructions, consultez [Autoriser les connexions SSH pour le gestionnaire de session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable). Cela permet aux utilisateurs autorisés de saisir une commande proxy qui démarre une session du gestionnaire de session et transfère toutes les données via une connexion bidirectionnelle. | DevOps ingénieur | 
| Générez les clés SSH. | Entrez la commande suivante pour générer une paire de clés SSH privées et publiques locales. Vous utilisez cette paire de clés pour vous connecter à l'hôte Bastion.<pre>ssh-keygen -t rsa -f my_key</pre> | DevOps ingénieur, développeur | 

### Connectez-vous à l'hôte Bastion à l'aide du gestionnaire de session
<a name="connect-to-the-bastion-host-by-using-sesh"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Obtenez l'ID de l'instance. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS général | 
| Envoyez la clé publique SSH. | Dans cette section, vous allez télécharger la clé publique vers les [métadonnées d'instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) de l'hôte Bastion. Une fois la clé téléchargée, vous avez 60 secondes pour établir une connexion avec l'hôte du bastion. Au bout de 60 secondes, la clé publique est supprimée. Pour plus d'informations, consultez la section [Dépannage](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting) de ce modèle. Effectuez rapidement les étapes suivantes pour éviter que la clé ne soit supprimée avant de vous connecter à l'hôte Bastion.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | AWS général | 
| Connectez-vous à l'hôte Bastion. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html)Il existe d'autres options pour ouvrir une connexion SSH avec l'hôte Bastion. Pour plus d'informations, consultez la section Autres *approches pour établir une connexion SSH avec l'hôte Bastion* dans la section [Informations supplémentaires](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional) de ce modèle. | AWS général | 

### (Facultatif) Nettoyer
<a name="optional-clean-up"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources déployées. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | DevOps ingénieur, Développeur, Terraform | 

## Résolution des problèmes
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| `TargetNotConnected`erreur lors de la tentative de connexion à l'hôte bastion | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect.html) | 
| `Permission denied`erreur lors de la tentative de connexion à l'hôte bastion | Une fois la clé publique téléchargée sur l'hôte du bastion, vous n'avez que 60 secondes pour établir la connexion. Après 60 secondes, la clé est automatiquement supprimée et vous ne pouvez pas l'utiliser pour vous connecter à l'instance. Dans ce cas, vous pouvez répéter l'étape pour renvoyer la clé à l'instance. | 

## Ressources connexes
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-resources"></a>

**AWS documentation**
+ [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)(documentation de Systems Manager)
+ [Installez le plugin Session Manager pour AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) (documentation Systems Manager)
+ [Autoriser les connexions SSH pour Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html#ssh-connections-enable) (documentation Systems Manager)
+ [À propos de l'utilisation d' EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html) ( EC2 documentation Amazon)
+ [Connectez-vous à l'aide d' EC2 Instance Connect](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html) ( EC2 documentation Amazon)
+ [Gestion des identités et des accès pour Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-iam.html) ( EC2 documentation Amazon)
+ [Utilisation d'un rôle IAM pour accorder des autorisations aux applications exécutées sur des EC2 instances Amazon](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html) (documentation IAM)
+ [Bonnes pratiques de sécurité dans l'IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (documentation IAM)
+ [Contrôlez le trafic vers les ressources à l'aide de groupes de sécurité](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) (documentation Amazon VPC)

**Autres ressources**
+ [Page Web du développeur Terraform](https://developer.hashicorp.com/terraform)
+ [Commande : valider](https://developer.hashicorp.com/terraform/cli/commands/validate) (documentation Terraform)
+ [Commande : fmt (documentation](https://developer.hashicorp.com/terraform/cli/commands/fmt) Terraform)
+ [Tester HashiCorp Terraform](https://www.hashicorp.com/blog/testing-hashicorp-terraform) (HashiCorp article de blog)
+ [Page Web de Checkov](https://www.checkov.io/)

## Informations supplémentaires
<a name="access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-additional"></a>

**Autres approches pour établir une connexion SSH avec l'hôte Bastion**

*Réacheminement de port*

Vous pouvez utiliser `-D 8888` cette option pour ouvrir une connexion SSH avec une redirection de port dynamique. Pour plus d'informations, consultez les [instructions](https://explainshell.com/explain?cmd=ssh+-i+%24PRIVATE_KEY_FILE+-D+8888+ec2-user%40%24INSTANCE_ID) sur explainshell.com. Voici un exemple de commande permettant d'ouvrir une connexion SSH à l'aide de la redirection de port.

```
ssh -i $PRIVATE_KEY_FILE -D 8888 ec2-user@$INSTANCE_ID
```

Ce type de connexion ouvre un proxy SOCKS qui peut transférer le trafic depuis votre navigateur local via l'hôte Bastion. Si vous utilisez Linux ou macOS, pour voir toutes les options, entrez`man ssh`. Cela affiche le manuel de référence SSH.

*En utilisant le script fourni*

Au lieu d'exécuter manuellement les étapes décrites dans *Connect to the bastion host by using Session Manager* dans la section [Epics](#access-a-bastion-host-by-using-session-manager-and-amazon-ec2-instance-connect-epics), vous pouvez utiliser le script **connect.sh** inclus dans le référentiel de code. Ce script génère la paire de clés SSH, transmet la clé publique à l' EC2 instance Amazon et établit une connexion avec l'hôte Bastion. Lorsque vous exécutez le script, vous transmettez le tag et le nom de la clé en tant qu'arguments. Voici un exemple de commande permettant d'exécuter le script.

```
./connect.sh sandbox-dev-bastion-host my_key
```

# Centralisation de la résolution DNS à l'aide AWS Managed Microsoft AD et sur site de Microsoft Active Directory
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory"></a>

*Brian Westmoreland, Amazon Web Services*

## Résumé
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-summary"></a>

Ce modèle fournit des conseils pour centraliser la résolution DNS dans un environnement AWS multi-comptes en utilisant à la fois AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) et Amazon Route 53. Dans ce modèle, l'espace de noms AWS DNS est un sous-domaine de l'espace de noms DNS local. Ce modèle fournit également des conseils sur la façon de configurer les serveurs DNS locaux pour transférer les requêtes AWS lorsque la solution DNS locale utilise Microsoft Active Directory.  

## Conditions préalables et limitations
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-prereqs"></a>

**Conditions préalables**
+ Un environnement AWS multi-comptes configuré à l'aide AWS Organizations de.
+ Connectivité réseau établie entre Comptes AWS.
+ Connectivité réseau établie entre AWS et l'environnement sur site (en utilisant AWS Direct Connect ou tout type de connexion VPN).
+ AWS Command Line Interface (AWS CLI) configuré sur un poste de travail local.
+ AWS Resource Access Manager (AWS RAM) utilisé pour partager les règles de Route 53 entre les comptes. Par conséquent, le partage doit être activé dans l' AWS Organizations environnement, comme décrit dans la section [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics).

**Limites**
+ AWS Managed Microsoft AD L'édition standard est limitée à 5 partages.
+ AWS Managed Microsoft AD L'édition Enterprise est limitée à 125 actions.
+ La solution dans ce modèle se limite à Régions AWS ce support via le partage AWS RAM.

**Versions du produit**
+ Microsoft Active Directory s'exécute sous Windows Server 2008, 2012, 2012 R2 ou 2016.

## Architecture
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-architecture"></a>

**Architecture cible**

![\[Architecture pour une résolution DNS centralisée sur AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/91430e2a-f7f6-4dbe-9fe7-8abed1f764a7/images/9b5fc51d-590b-468f-80f7-1949f3b3b258.png)


Dans cette conception, AWS Managed Microsoft AD est installé dans les services partagés Compte AWS. Bien qu'il ne s'agisse pas d'une exigence, ce modèle suppose cette configuration. Si vous configurez AWS Managed Microsoft AD différemment Compte AWS, vous devrez peut-être modifier les étapes de la section [Epics](#centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics) en conséquence.

Cette conception utilise les résolveurs Route 53 pour prendre en charge la résolution de noms grâce aux règles Route 53. Si la solution DNS sur site utilise le DNS Microsoft, la création d'une règle de transfert conditionnelle pour l'espace de noms AWS (`aws.company.com`), qui est un sous-domaine de l'espace de noms DNS de l'entreprise (`company.com`), n'est pas simple. Si vous essayez de créer un redirecteur conditionnel traditionnel, une erreur se produira. Cela est dû au fait que Microsoft Active Directory est déjà considéré comme faisant autorité pour tous les sous-domaines de. `company.com` Pour contourner cette erreur, vous devez d'abord créer une délégation pour `aws.company.com` déléguer l'autorité de cet espace de noms. Vous pouvez ensuite créer le redirecteur conditionnel.

Le cloud privé virtuel (VPC) de chaque compte parlé peut avoir son propre espace de noms DNS unique basé sur l'espace de noms racine. AWS Dans cette conception, chaque compte Spoke ajoute une abréviation du nom du compte à l'espace de noms AWS de base. Une fois que les zones hébergées privées dans le compte parlé ont été créées, les zones sont associées au VPC local dans le compte parlé ainsi qu'au VPC dans le compte réseau central. AWS Cela permet au compte du AWS réseau central de répondre aux requêtes DNS relatives aux comptes parlés. Ainsi, Route 53 et Route AWS Managed Microsoft AD travaillent ensemble pour partager la responsabilité de la gestion de l'espace de AWS noms (`aws.company.com`).

**Automatisation et mise à l'échelle**

Cette conception utilise les points de terminaison Route 53 Resolver pour redimensionner les requêtes DNS entre AWS et votre environnement sur site. Chaque point de terminaison Route 53 Resolver comprend plusieurs interfaces réseau élastiques (réparties sur plusieurs zones de disponibilité), et chaque interface réseau peut traiter jusqu'à 10 000 requêtes par seconde. Route 53 Resolver prend en charge jusqu'à 6 adresses IP par point de terminaison. Au total, cette conception prend en charge jusqu'à 60 000 requêtes DNS par seconde réparties sur plusieurs zones de disponibilité pour une haute disponibilité.  

De plus, ce modèle tient automatiquement compte de la future croissance interne AWS. Il n'est pas nécessaire de modifier les règles de transfert DNS configurées sur site pour prendre en charge les nouvelles zones hébergées privées VPCs et leurs zones associées qui sont ajoutées à AWS. 

## Outils
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-tools"></a>

**Services AWS**
+ [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permet à vos charges de travail et à vos AWS ressources sensibles aux annuaires d'utiliser Microsoft Active Directory dans le. AWS Cloud
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)est un service de gestion de comptes qui vous aide à Comptes AWS en regrouper plusieurs au sein d'une organisation que vous créez et gérez de manière centralisée.
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) vous permet de partager vos ressources en toute sécurité afin Comptes AWS de réduire les frais opérationnels et de garantir visibilité et auditabilité.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est un service Web DNS hautement disponible et évolutif.

**Outils**
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande. Dans ce modèle, le AWS CLI est utilisé pour configurer les autorisations Route 53.

## Épopées
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-epics"></a>

### Création et partage d'un AWS Managed Microsoft AD répertoire
<a name="create-and-share-an-managed-ad-directory"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez AWS Managed Microsoft AD. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrateur AWS | 
| Partagez le répertoire. | Une fois le répertoire créé, partagez-le avec d'autres membres Comptes AWS de l' AWS organisation. Pour obtenir des instructions, consultez la section [Partager votre répertoire](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html) dans le *Guide d'AWS Directory Service administration*.  AWS Managed Microsoft AD L'édition standard est limitée à 5 partages. L'édition Enterprise est limitée à 125 actions. | Administrateur AWS | 

### Configurer Route 53
<a name="configure-r53"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des résolveurs Route 53. | Les résolveurs Route 53 facilitent la résolution des requêtes DNS entre AWS et le centre de données sur site.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Bien que l'utilisation du compte AWS réseau central VPC ne soit pas obligatoire, les étapes restantes supposent cette configuration. | Administrateur AWS | 
| Créez les règles de la Route 53. | Votre cas d'utilisation spécifique peut nécessiter un grand nombre de règles Route 53, mais vous devrez configurer les règles suivantes comme référence :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html)Pour plus d'informations, consultez [la section Gestion des règles de transfert](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) dans le *Guide du développeur de Route 53*. | Administrateur AWS | 
| Configurez un profil Route 53. | Un profil Route 53 est utilisé pour partager les règles avec les comptes Spoke.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrateur AWS | 

### Configuration du DNS Active Directory sur site
<a name="configure-on-premises-active-directory-dns"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la délégation. | Utilisez le composant logiciel enfichable Microsoft DNS (`dnsmgmt.msc`) pour créer une nouvelle délégation pour l'espace de `company.com` noms dans Active Directory. Le nom du domaine délégué doit être`aws`. Cela constitue le nom de domaine complet (FQDN) de la délégation`aws.company.com`. Utilisez les adresses IP des contrôleurs de AWS Managed Microsoft AD domaine pour les valeurs IP du serveur de noms, et `server.aws.company.com` utilisez-les pour le nom. (Cette délégation est uniquement destinée à la redondance, car un redirecteur conditionnel sera créé pour cet espace de noms qui aura priorité sur la délégation.) | Active Directory | 
| Créez le redirecteur conditionnel. | Utilisez le composant logiciel enfichable Microsoft DNS (`dnsmgmt.msc`) pour créer un nouveau redirecteur conditionnel pour. `aws.company.com`  Utilisez les adresses IP des résolveurs Route 53 AWS entrants dans le DNS central Compte AWS pour la cible du redirecteur conditionnel.   | Active Directory | 

### Créez des zones hébergées privées Route 53 pour Spoke Comptes AWS
<a name="create-r53-private-hosted-zones-for-spoke-aws-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les zones hébergées privées Route 53. | Créez une zone hébergée privée Route 53 dans chaque compte Spoke. Associez cette zone hébergée privée au VPC du compte Spoke. Pour connaître les étapes détaillées, consultez [la section Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) dans le *Guide du développeur de Route 53*. | Administrateur AWS | 
| Créez des autorisations. | Utilisez le AWS CLI pour créer une autorisation pour le compte AWS VPC du réseau central. Exécutez cette commande à partir du contexte de chaque rayon Compte AWS :<pre>aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrateur AWS | 
| Créez des associations. | Créez l'association de zone hébergée privée Route 53 pour le compte VPC du AWS réseau central à l'aide du. AWS CLI Exécutez cette commande depuis le contexte du compte AWS réseau central :<pre>aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> \<br />   --vpc VPCRegion=<region>,VPCId=<vpc-id></pre>où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory.html) | Administrateur AWS | 

## Ressources connexes
<a name="centralize-dns-resolution-by-using-aws-managed-microsoft-ad-and-on-premises-microsoft-active-directory-resources"></a>
+ [Simplifiez la gestion du DNS dans un environnement multi-comptes avec Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (AWS article de blog)
+ [Création de votre AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started_create_directory.html) (AWS Directory Service documentation)
+ [Partage d'un AWS Managed Microsoft AD répertoire](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step2_share_directory.html) (AWS Directory Service documentation)
+ [Qu'est-ce que c'est Amazon Route 53 Resolver ?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) (documentation Amazon Route 53)
+ [Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) (documentation Amazon Route 53)
+ [Que sont les profils Amazon Route 53 ?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/profiles.html) (documentation Amazon Route 53)

# Centralisez la surveillance à l'aide d'Amazon CloudWatch Observability Access Manager
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager"></a>

*Anand Krishna Varanasi, JAGDISH KOMAKULA, Ashish Kumar, Jimmy Morgan, Sarat Chandra Pothula, Vivek Thangamuthu et Balaji Vedagiri, Amazon Web Services*

## Résumé
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-summary"></a>

L'observabilité est essentielle à la surveillance, à la compréhension et au dépannage des applications. Les applications qui couvrent plusieurs comptes, comme les AWS Control Tower implémentations de zones de landing zone, génèrent un grand nombre de journaux et de données de suivi. Pour résoudre rapidement les problèmes ou comprendre les analyses des utilisateurs ou les analyses commerciales, vous avez besoin d'une plateforme d'observabilité commune à tous les comptes. L'Amazon CloudWatch Observability Access Manager vous permet d'accéder à plusieurs journaux de comptes et de les contrôler à partir d'un emplacement central.

Vous pouvez utiliser le gestionnaire d'accès à l'observabilité pour consulter et gérer les journaux de données d'observabilité générés par les comptes sources. Les comptes sources sont des comptes individuels Comptes AWS qui génèrent des données d'observabilité pour leurs ressources. Les données d'observabilité sont partagées entre les comptes sources et les comptes de surveillance. Les données d'observabilité partagées peuvent inclure des métriques dans Amazon CloudWatch, des logs dans Amazon CloudWatch Logs et des traces in AWS X-Ray. Pour plus d'informations, consultez la [documentation d'Observability Access Manager](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html).

Ce modèle est destiné aux utilisateurs dont les applications ou les infrastructures s'exécutent en plusieurs parties Comptes AWS et qui ont besoin d'un emplacement commun pour consulter les journaux. Il explique comment configurer Observability Access Manager à l'aide de Terraform, pour surveiller l'état et l'état de santé de ces applications ou infrastructures. Vous pouvez installer cette solution de plusieurs manières :
+ En tant que module Terraform autonome que vous configurez manuellement
+ En utilisant un pipeline d'intégration continue et de livraison continue (CI/CD)
+ En s'intégrant à d'autres solutions telles que [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html)

Les instructions de la section [Epics](#centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics) couvrent la mise en œuvre manuelle. Pour les étapes d'installation d'AFT, consultez le fichier README du référentiel GitHub [Observability Access Manager](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform).

## Conditions préalables et limitations
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-prereqs"></a>

**Conditions préalables**
+ [Terraform](https://www.terraform.io/) installé ou référencé dans votre système ou dans des pipelines automatisés. (Nous vous recommandons d'utiliser la [dernière version](https://releases.hashicorp.com/terraform/).)
+ Un compte que vous pouvez utiliser comme compte de surveillance centralisé. D'autres comptes créent des liens vers le compte de surveillance central afin de consulter les journaux.
+ (Facultatif) Un référentiel de code source tel qu' GitHubAtlassian Bitbucket ou un système similaire. AWS CodeCommit Un référentiel de code source n'est pas nécessaire si vous utilisez des CI/CD pipelines automatisés.
+ (Facultatif) Autorisations permettant de créer des pull requests (PRs) pour la révision du code et la collaboration en matière de code dans GitHub.

**Limites**

Observability Access Manager dispose des quotas de service suivants, qui ne peuvent pas être modifiés. Tenez compte de ces quotas avant de déployer cette fonctionnalité. Pour plus d'informations, consultez la section [Quotas de CloudWatch service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) dans la CloudWatch documentation.
+ **Liens vers des comptes sources** : vous pouvez associer chaque compte source à un maximum de cinq comptes de surveillance.
+ **Réservoirs** : vous pouvez créer plusieurs récepteurs pour un compte, mais un seul récepteur par compte Région AWS est autorisé.

En outre :
+ Les cuvettes et les liens doivent être créés de la même manière Région AWS ; ils ne peuvent pas être interrégionaux.

**Surveillance entre régions et entre comptes**

Pour la surveillance entre régions et entre comptes, vous pouvez choisir l'une des options suivantes :
+ Créez des [ CloudWatch tableaux de bord inter-comptes et interrégionaux pour les](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) alarmes et les métriques. Cette option ne prend pas en charge les journaux et les traces.
+ Implémentez la [journalisation centralisée](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) à l'aide d'Amazon OpenSearch Service.
+ Créez un récepteur par région à partir de tous les comptes locataires, envoyez les métriques vers un compte de surveillance centralisé (comme décrit dans ce modèle), puis utilisez des [flux de CloudWatch métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html) pour envoyer les données vers une destination externe commune ou vers des produits de surveillance tiers tels que Datadog, Dynatrace, Sumo Logic, Splunk ou New Relic.

## Architecture
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-architecture"></a>

**Composants**

CloudWatch Observability Access Manager se compose de deux composants principaux qui permettent l'observabilité entre comptes :
+ Un *récepteur* permet aux comptes source d'envoyer des données d'observabilité au compte de surveillance central. Un récepteur fournit essentiellement une passerelle à laquelle les comptes source peuvent se connecter. Il ne peut y avoir qu'une seule passerelle ou connexion réceptrice, et plusieurs comptes peuvent s'y connecter.
+ Chaque compte source possède un *lien vers* la jonction de la passerelle réceptrice, et les données d'observabilité sont envoyées via ce lien. Vous devez créer un récepteur avant de créer des liens à partir de chaque compte source.

**Architecture**

Le schéma suivant illustre Observability Access Manager et ses composants.

![\[Architecture pour une observabilité entre comptes avec des puits et des liens.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/00603763-4f99-456e-85e7-a80d803b087d/images/5188caf9-348b-4d91-b560-2b3d6ea81191.png)


## Outils
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-tools"></a>

**Services AWS**
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)est un service de gestion de comptes qui vous aide à Comptes AWS en regrouper plusieurs au sein d'une organisation que vous créez et gérez de manière centralisée.
+ [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.

**Outils**
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.
+ [AWS Control Tower Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) met en place un pipeline Terraform pour vous aider à provisionner et à personnaliser des comptes dans. AWS Control Tower Vous pouvez éventuellement utiliser AFT pour configurer Observability Access Manager à grande échelle sur plusieurs comptes.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [Observability Access Manager](https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform).

## Bonnes pratiques
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-best-practices"></a>
+ Dans AWS Control Tower les environnements, marquez le compte de journalisation comme compte de surveillance central (récepteur).
+ Si plusieurs organisations possèdent plusieurs comptes AWS Organizations, nous vous recommandons d'inclure les organisations plutôt que les comptes individuels dans la politique de configuration. Si vous avez un petit nombre de comptes ou si les comptes ne font pas partie d'une organisation dans la politique de configuration du récepteur, vous pouvez décider d'inclure des comptes individuels à la place.

## Épopées
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-epics"></a>

### Configuration du module d'évier
<a name="set-up-the-sink-module"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Clonez le référentiel GitHub Observability Access Manager :<pre>git clone https://github.com/aws-samples/cloudwatch-obervability-access-manager-terraform</pre> | AWS DevOps, administrateur du cloud, administrateur AWS | 
| Spécifiez les valeurs des propriétés du module récepteur. | Dans le `main.tf` fichier (dans le `deployments/aft-account-customizations/LOGGING/terraform/`**** dossier du référentiel), spécifiez les valeurs des propriétés suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Pour plus d'informations, consultez [AWS::Oam::Sink](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-sink.html)la CloudFormation documentation. | AWS DevOps, administrateur du cloud, administrateur AWS | 
| Installez le module d'évier. | Exportez les informations d'identification du compte Compte AWS que vous avez sélectionné comme compte de surveillance et installez le module récepteur Observability Access Manager :<pre>Terraform Init<br />Terrafom Plan<br />Terraform Apply</pre> | AWS DevOps, administrateur du cloud, administrateur AWS | 

### Configuration du module de liaison
<a name="set-up-the-link-module"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Spécifiez les valeurs des propriétés du module de liaison. | Dans le `main.tf ` fichier (dans le `deployments/aft-account-customizations/LOGGING/terraform/`**** dossier du référentiel), spécifiez les valeurs des propriétés suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Pour plus d'informations, consultez [AWS::Oam::Link](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-oam-link.html)la CloudFormation documentation. | AWS DevOps, administrateur du cloud, architecte du cloud | 
| Installez le module de liaison pour les comptes individuels. | Exportez les informations d'identification des comptes individuels et installez le module de lien Observability Access Manager :<pre>Terraform Plan<br />Terraform Apply</pre>Vous pouvez configurer le module de liaison individuellement pour chaque compte ou utiliser [AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) pour installer automatiquement ce module sur un grand nombre de comptes. | AWS DevOps, administrateur du cloud, architecte du cloud | 

### Approuver sink-to-link les connexions
<a name="approve-sink-to-link-connections"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez le message d'état. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Sur la droite, vous devriez voir le message d'état **Monitoring account enabled** avec une coche verte. Cela signifie que le compte de surveillance dispose d'un récepteur Observability Access Manager auquel les liens des autres comptes se connecteront. |  | 
| Approuvez les link-to-sink connexions. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Pour plus d'informations, consultez la section [Lier les comptes de surveillance aux comptes sources](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account-Setup.html) dans la CloudWatch documentation. | AWS DevOps, administrateur du cloud, architecte du cloud | 

### Vérifier les données d'observabilité entre comptes
<a name="verify-cross-account-observability-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Afficher les données entre comptes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html) | AWS DevOps, administrateur du cloud, architecte du cloud | 

### (Facultatif) Permettre aux comptes source de faire confiance au compte de surveillance
<a name="optional-enable-source-accounts-to-trust-monitoring-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Consultez les métriques, les tableaux de bord, les journaux, les widgets et les alarmes d'autres comptes. | En tant que fonctionnalité supplémentaire,**** vous pouvez partager les CloudWatch métriques, les tableaux de bord, les journaux, les widgets et les alarmes avec d'autres comptes. Chaque compte utilise un rôle IAM appelé **CloudWatch- CrossAccountSharingRole ** pour accéder à ces données.Les comptes sources entretenant une relation de confiance avec le compte de surveillance central peuvent assumer ce rôle et consulter les données du compte de surveillance.CloudWatch fournit un exemple de CloudFormation script pour créer le rôle. Choisissez **Gérer le rôle dans IAM** et exécutez ce script dans les comptes sur lesquels vous souhaitez consulter les données.<pre>{<br />    "Version": "2012-10-17",		 	 	 <br />    "Statement": [<br />        {<br />            "Effect": "Allow",<br />            "Principal": {<br />                "AWS": [<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root",<br />                    "arn:aws:iam::XXXXXXXXX:root"<br />                ]<br />            },<br />            "Action": "sts:AssumeRole"<br />        }<br />    ]<br />}</pre>Pour plus d'informations, consultez la section [Activation de la fonctionnalité multi-comptes CloudWatch dans](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region) la CloudWatch documentation. | AWS DevOps, administrateur du cloud, architecte du cloud | 

### (Facultatif) Afficher les comptes entre les régions à partir du compte de surveillance
<a name="optional-view-cross-account-cross-region-from-the-monitoring-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez un accès entre comptes et entre régions. | Dans le compte de surveillance central, vous pouvez éventuellement ajouter un sélecteur de compte pour passer facilement d'un compte à l'autre et consulter leurs données sans avoir à vous authentifier.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)Pour plus d'informations, consultez la [section CloudWatch Console entre comptes et régions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html) dans la CloudWatch documentation. | AWS DevOps, administrateur du cloud, architecte du cloud | 

## Ressources connexes
<a name="centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager-resources"></a>
+ [CloudWatch observabilité entre comptes (documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) Amazon CloudWatch )
+ [Référence d'API Amazon CloudWatch Observability Access Manager](https://docs.aws.amazon.com/OAM/latest/APIReference/Welcome.html) ( CloudWatch documentation Amazon)
+ [Ressource : aws\$1oam\$1sink](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/oam_sink) (documentation Terraform)
+ [Source de données : aws\$1oam\$1link](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/oam_link) (documentation Terraform)
+ [CloudWatchObservabilityAccessManager](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/oam.html)(documentation AWS Boto3)

# Vérifiez les EC2 instances pour les balises obligatoires au lancement
<a name="check-ec2-instances-for-mandatory-tags-at-launch"></a>

*Susanne Kangnoh et l'architecte Mathur, Amazon Web Services*

## Résumé
<a name="check-ec2-instances-for-mandatory-tags-at-launch-summary"></a>

Amazon Elastic Compute Cloud (Amazon EC2) fournit une capacité de calcul évolutive dans le cloud Amazon Web Services (AWS). Avec Amazon, vous EC2 n'avez plus besoin d'investir dans du matériel dès le départ, ce qui vous permet de développer et de déployer des applications plus rapidement.

Vous pouvez utiliser le balisage pour classer vos ressources AWS de différentes manières. EC2 le balisage d'instance est utile lorsque votre compte comporte de nombreuses ressources et que vous souhaitez identifier rapidement une ressource spécifique en fonction des balises. Vous pouvez attribuer des métadonnées personnalisées à vos EC2 instances à l'aide de balises. Une balise se compose d'une clé et d'une valeur définies par l'utilisateur. Nous vous recommandons de créer un ensemble cohérent de balises pour répondre aux exigences de votre organisation. 

Ce modèle fournit un CloudFormation modèle AWS pour vous aider à surveiller les EC2 instances pour détecter des balises spécifiques. Le modèle crée un événement Amazon CloudWatch Events qui surveille l'AWS CloudTrail **TagResource**ou les **UntagResource**événements, afin de détecter le balisage ou le retrait de balises d'une nouvelle EC2 instance. Si une balise prédéfinie est absente, elle appelle une fonction AWS Lambda, qui envoie un message de violation à l'adresse e-mail que vous fournissez, à l'aide d'Amazon Simple Notification Service (Amazon SNS). 

## Conditions préalables et limitations
<a name="check-ec2-instances-for-mandatory-tags-at-launch-prerequisites-and-limitations"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un bucket Amazon Simple Storage Service (Amazon S3) pour télécharger le code Lambda fourni.
+ Adresse e-mail à laquelle vous souhaitez recevoir des notifications de violation.

**Limites**
+ Cette solution prend en charge CloudTrail **TagResource**nos **UntagResource**événements. Il ne crée pas de notifications pour d'autres événements.
+ Cette solution vérifie uniquement les clés de balise. Il ne surveille pas les valeurs clés.

## Architecture
<a name="check-ec2-instances-for-mandatory-tags-at-launch-architecture"></a>

**Architecture** **du flux de travail**

![\[Workflow diagram showing Services AWS interaction for EC2 instance monitoring and notification.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9cd74141-a87f-419e-94b3-0b28fd04a018/images/b48fd21b-a86b-4ec7-b9f6-4f1a64999437.png)


 

**Automatisation et évolutivité**
+ Vous pouvez utiliser le CloudFormation modèle AWS à plusieurs reprises pour différents comptes et régions AWS. Vous ne devez exécuter le modèle qu'une seule fois dans chaque région ou compte.

## Outils
<a name="check-ec2-instances-for-mandatory-tags-at-launch-tools"></a>

**Services AWS**
+ [Amazon EC2](https://aws.amazon.com/ec2/) — Amazon Elastic Compute Cloud (Amazon EC2) est un service Web qui fournit une capacité de calcul sécurisée et redimensionnable dans le cloud. Il est conçu pour faciliter le cloud computing à l'échelle du Web pour les développeurs.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) CloudTrail est un service AWS qui vous aide en matière de gouvernance, de conformité, d'audit opérationnel et de gestion des risques de votre compte AWS. Les actions entreprises par un utilisateur, un rôle ou un service AWS sont enregistrées sous forme d'événements dans CloudTrail. 
+ [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html) — Amazon CloudWatch Events fournit un flux quasi en temps réel d'événements système décrivant les modifications apportées aux ressources AWS. CloudWatch Events prend connaissance des changements opérationnels au fur et à mesure qu'ils se produisent et prend les mesures correctives nécessaires, en envoyant des messages pour répondre à l'environnement, en activant des fonctions, en apportant des modifications et en capturant des informations d'état. 
+ [AWS Lambda — Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui prend en charge l'exécution de code sans qu'il soit nécessaire de configurer ou de gérer des serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. 
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets hautement évolutif qui peut être utilisé pour un large éventail de solutions de stockage, notamment les sites Web, les applications mobiles, les sauvegardes et les lacs de données.
+ [Amazon SNS —](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) Amazon Simple Notification Service (Amazon SNS) est un service Web qui permet aux applications, aux utilisateurs finaux et aux appareils d'envoyer et de recevoir instantanément des notifications depuis le cloud.

**Code**

Ce modèle inclut une pièce jointe contenant deux fichiers :
+ `index.zip`est un fichier compressé qui inclut le code Lambda pour ce modèle.
+ `ec2-require-tags.yaml`est un CloudFormation modèle qui déploie le code Lambda.

Consultez la section *Epics* pour plus d'informations sur l'utilisation de ces fichiers.

## Épopées
<a name="check-ec2-instances-for-mandatory-tags-at-launch-epics"></a>

### Déployer le code Lambda
<a name="deploy-the-lambda-code"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Téléchargez le code dans un compartiment S3. | Créez un nouveau compartiment S3 ou utilisez un compartiment S3 existant pour télécharger le `index.zip` fichier joint (code Lambda). Ce compartiment doit se trouver dans la même région AWS que les ressources (EC2 instances) que vous souhaitez surveiller. | Architecte du cloud | 
| Déployez le CloudFormation modèle. | Ouvrez la console Cloudformation dans la même région AWS que le compartiment S3 et déployez le `ec2-require-tags.yaml` fichier fourni dans la pièce jointe. Dans l'épopée suivante, fournissez des valeurs pour les paramètres du modèle.   | Architecte du cloud | 

### Complétez les paramètres dans le CloudFormation modèle
<a name="complete-the-parameters-in-the-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Indiquez le nom du compartiment S3. | Entrez le nom du compartiment S3 que vous avez créé ou sélectionné dans le premier épisode épique. Ce compartiment S3 contient le fichier .zip pour le code Lambda et doit se trouver dans la même région AWS que CloudFormation le modèle et EC2 les instances que vous souhaitez surveiller. | Architecte du cloud | 
| Fournissez la clé S3. | Indiquez l'emplacement du fichier .zip de code Lambda dans votre compartiment S3, sans barres obliques (par exemple, ou). `index.zip` `controls/index.zip` | Architecte du cloud | 
| Indiquez une adresse e-mail. | Indiquez une adresse e-mail active à laquelle vous souhaitez recevoir des notifications de violation. | Architecte du cloud | 
| Définissez un niveau de journalisation. | Spécifiez le niveau de journalisation et la verbosité. `Info`désigne des messages d'information détaillés sur la progression de l'application et ne doit être utilisé que pour le débogage. `Error`désigne les événements d'erreur susceptibles de permettre à l'application de continuer à fonctionner. `Warning`désigne les situations potentiellement dangereuses. | Architecte du cloud | 
| Entrez les clés de tag requises. | Entrez les clés de tag que vous souhaitez vérifier. Si vous souhaitez spécifier plusieurs clés, séparez-les par des virgules, sans espaces. (Par exemple, `ApplicationId,CreatedBy,Environment,Organization` recherche quatre clés.) L'événement CloudWatch Events recherche ces clés de balise et envoie une notification si elles ne sont pas trouvées. | Architecte du cloud | 

### Confirmer l'abonnement.
<a name="confirm-the-subscription"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Confirmez l'abonnement par e-mail. | Lorsque le CloudFormation modèle est déployé avec succès, il envoie un e-mail d'abonnement à l'adresse e-mail que vous avez fournie. Pour recevoir des notifications, vous devez confirmer cet abonnement par e-mail.   | Architecte du cloud | 

## Ressources connexes
<a name="check-ec2-instances-for-mandatory-tags-at-launch-related-resources"></a>
+ [Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html) (documentation Amazon S3)
+ [Téléchargement d'objets](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html) (documentation Amazon S3)
+ [Marquez vos EC2 ressources Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) ( EC2 documentation Amazon)
+ [Création d'une règle d' CloudWatch événements qui se déclenche lors d'un appel d'API AWS à l'aide d'AWS CloudTrail](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-CloudTrail-Rule.html) ( CloudWatch documentation Amazon)

## Pièces jointes
<a name="attachments-9cd74141-a87f-419e-94b3-0b28fd04a018"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/9cd74141-a87f-419e-94b3-0b28fd04a018/attachments/attachment.zip)

# Nettoyez les ressources de AWS Account Factory for Terraform (AFT) en toute sécurité après la perte du fichier d'état
<a name="clean-up-aft-resources-safely-after-state-file-loss"></a>

*Gokendra Malviya, Amazon Web Services*

## Résumé
<a name="clean-up-aft-resources-safely-after-state-file-loss-summary"></a>

Lorsque vous utilisez AWS Account Factory for Terraform (AFT) pour gérer votre AWS Control Tower environnement, AFT génère un fichier d'état Terraform pour suivre l'état et la configuration des ressources créées par Terraform. La perte du fichier d'état Terraform peut créer des défis importants pour la gestion et le nettoyage des ressources. Ce modèle fournit une approche systématique pour identifier et supprimer en toute sécurité les ressources liées à l'AFT tout en préservant l'intégrité de votre AWS Control Tower environnement.

Le processus est conçu pour garantir le retrait correct de tous les composants AFT, même sans la référence au fichier d'état d'origine. Ce processus fournit une voie claire pour rétablir et reconfigurer avec succès l'AFT dans votre environnement, afin de minimiser les perturbations de vos AWS Control Tower opérations.

Pour plus d'informations sur l'AFT, consultez la [AWS Control Tower documentation](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html).

## Conditions préalables et limitations
<a name="clean-up-aft-resources-safely-after-state-file-loss-prereqs"></a>

**Conditions préalables**
+ Compréhension approfondie de l'[architecture AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html).
+ Accès administrateur aux comptes suivants :
  + Compte de gestion AFT
  + AWS Control Tower Compte de gestion
  + Compte Log Archive
  + Compte d'audit
+ Vérification qu'aucune politique de contrôle des services (SCPs) ne contient de restrictions ou de limitations susceptibles de bloquer la suppression de ressources liées à l'AFT.

**Limites**
+ Ce processus permet de nettoyer efficacement les ressources, mais il ne peut pas récupérer les fichiers d'état perdus, et certaines ressources peuvent nécessiter une identification manuelle.
+ La durée du processus de nettoyage dépend de la complexité de votre environnement et peut prendre plusieurs heures.
+ Ce modèle a été testé avec la version 1.12.2 d'AFT et supprime les ressources suivantes. Si vous utilisez une autre version d'AFT, vous devrez peut-être supprimer des ressources supplémentaires.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html)

**Important**  
Les ressources supprimées par les étapes de ce modèle ne peuvent pas être récupérées. Avant de suivre ces étapes, vérifiez soigneusement les noms des ressources et assurez-vous qu'ils ont été créés par AFT.

## Architecture
<a name="clean-up-aft-resources-safely-after-state-file-loss-architecture"></a>

Le schéma suivant montre les composants AFT et le flux de travail de haut niveau. AFT met en place un pipeline Terraform qui vous aide à approvisionner et à personnaliser vos comptes. AWS Control Tower AFT suit un GitOps modèle pour automatiser les processus de provisionnement des comptes dans AWS Control Tower. Vous créez un fichier Terraform pour une demande de compte et vous le validez dans un référentiel, qui fournit les entrées qui déclenchent le flux de travail AFT pour le provisionnement du compte. Une fois le provisionnement du compte terminé, AFT peut exécuter automatiquement des étapes de personnalisation supplémentaires.

![\[Composants AFT et flux de travail de haut niveau.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/3e0cae87-20ef-4fcc-aacf-bb450844ac56.png)


Dans cette architecture :
+ AWS Control Tower Le **compte de gestion** Compte AWS est un compte dédié au AWS Control Tower service. Ceci est également généralement appelé *compte AWS payeur ou compte AWS Organizations * *de gestion*.
+ Le **compte AFT Management** Compte AWS est dédié aux opérations de gestion AFT. Ce compte est différent du compte de gestion de votre organisation.
+ Le **compte Vended** contient tous les composants et contrôles de base que vous avez sélectionnés. Compte AWS L' AWS Control Tower AFT vend un nouveau compte.

Pour plus d'informations sur cette architecture, voir [Présentation de l'AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft) dans l' AWS Control Tower atelier.

## Outils
<a name="clean-up-aft-resources-safely-after-state-file-loss-tools"></a>

**Services AWS**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)vous aide à configurer et à gérer un environnement AWS multi-comptes, conformément aux meilleures pratiques prescriptives.
+ [AWS Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) met en place un pipeline Terraform pour vous aider à approvisionner et à personnaliser les comptes et les ressources dans. AWS Control Tower
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)vous permet de gérer et de gouverner votre environnement de manière centralisée à mesure que vous développez et faites évoluer vos AWS ressources. Organizations vous permet de créer des comptes et d'allouer des ressources, de regrouper des comptes pour organiser vos flux de travail, d'appliquer des politiques de gouvernance et de simplifier la facturation en utilisant un mode de paiement unique pour tous vos comptes.
+ [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. Ce modèle nécessite des rôles et des autorisations IAM.

**Autres outils**
+ [Terraform](https://www.terraform.io/) est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources cloud et sur site.

## Bonnes pratiques
<a name="clean-up-aft-resources-safely-after-state-file-loss-best-practices"></a>
+ Pour AWS Control Tower, consultez la section [Meilleures pratiques pour AWS Control Tower les administrateurs](https://docs.aws.amazon.com/controltower/latest/userguide/best-practices.html) dans la AWS Control Tower documentation.
+ Pour IAM, consultez la section [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans la documentation IAM.

## Épopées
<a name="clean-up-aft-resources-safely-after-state-file-loss-epics"></a>

### Supprimer les ressources AFT dans le compte de gestion AFT
<a name="delete-aft-resources-in-the-aft-management-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les ressources identifiées par la balise AFT. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez les rôles IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez le coffre AWS Backup de sauvegarde. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez les CloudWatch ressources Amazon. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez AWS KMS des ressources. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 

### Supprimer les ressources AFT dans le compte Log Archive
<a name="delete-aft-resources-in-the-log-archive-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les compartiments S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez les rôles IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 

### Supprimer les ressources AFT dans le compte d'audit
<a name="delete-aft-resources-in-the-audit-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les rôles IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 

### Supprimer les ressources AFT dans le compte AWS Control Tower de gestion
<a name="delete-aft-resources-in-the-ctower-management-account"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les rôles IAM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 
| Supprimez EventBridge les règles. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | Administrateur AWS, AWS DevOps, DevOps ingénieur | 

## Résolution des problèmes
<a name="clean-up-aft-resources-safely-after-state-file-loss-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le détachement de la passerelle Internet a échoué. | Lorsque vous supprimez des ressources identifiées par la balise **AFT**, si vous rencontrez ce problème lorsque vous détachez ou supprimez la passerelle Internet, vous devez d'abord supprimer les points de terminaison VPC :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 
| Vous ne trouvez pas les CloudWatch requêtes spécifiées. | Si vous ne trouvez pas les CloudWatch requêtes créées par AFT, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/clean-up-aft-resources-safely-after-state-file-loss.html) | 

## Ressources connexes
<a name="clean-up-aft-resources-safely-after-state-file-loss-resources"></a>
+ À L'ARRIÈRE :
  + [GitHub Référentiel](https://github.com/aws-ia/terraform-aws-control_tower_account_factory)
  + [Atelier](https://catalog.workshops.aws/control-tower/en-US/customization/aft)
  + [Documentation](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html)
+ [AWS Control Tower documentation](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html)

## Informations supplémentaires
<a name="clean-up-aft-resources-safely-after-state-file-loss-additional"></a>

Pour afficher les requêtes AFT sur le tableau de bord de CloudWatch Logs Insights, choisissez l'icône de **requêtes enregistrées et d'exemples** dans le coin supérieur droit, comme illustré dans la capture d'écran suivante :

![\[Accès aux requêtes AFT sur le tableau de bord de CloudWatch Logs Insights.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1342c0a6-4b07-46df-a063-ceab2e2f83c8/images/255d4032-738b-4600-9084-9684d2e9a328.png)


# Créez un pipeline dans les régions AWS qui ne prennent pas en charge AWS CodePipeline
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline"></a>

*Anand Krishna Varanasi, Amazon Web Services*

## Résumé
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-summary"></a>

**Remarque** : n' AWS CodeCommit est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)

AWS CodePipeline est un service d'orchestration de livraison continue (CD) qui fait partie d'un ensemble d' DevOps outils d'Amazon Web Services (AWS). Il s'intègre à une grande variété de sources (telles que les systèmes de contrôle de version et les solutions de stockage), aux produits et services d'intégration continue (CI) d'AWS et de ses partenaires, ainsi qu'aux produits open source afin de fournir un service de end-to-end flux de travail pour des déploiements rapides d'applications et d'infrastructures.

Cependant, il CodePipeline n'est pas pris en charge dans toutes les régions AWS et il est utile de disposer d'un orchestrateur invisible qui connecte les CI/CD services AWS. Ce modèle décrit comment implémenter un pipeline de end-to-end flux de travail dans les régions AWS où il CodePipeline n'est pas encore pris en charge par l'utilisation de CI/CD services AWS tels qu'AWS CodeCommit CodeBuild, AWS et AWS CodeDeploy.

## Conditions préalables et limitations
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-prereqs"></a>

**Prérequis**
+ Un compte AWS actif
+ CLI AWS Cloud Development Kit (AWS CDK) version 2.28 ou ultérieure

## Architecture
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-architecture"></a>

**Pile technologique cible**

Le schéma suivant montre un pipeline créé dans une région qui ne le prend pas en charge CodePipeline, telle que la région Afrique (Le Cap). Un développeur envoie les fichiers de CodeDeploy configuration (également appelés *scripts d'accroche du cycle de vie de déploiement*) vers le référentiel Git hébergé par CodeCommit. (Voir le [GitHub référentiel](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) fourni avec ce modèle.) Une EventBridge règle Amazon est automatiquement initiée. CodeBuild

Les fichiers CodeDeploy de configuration sont extraits dans le CodeCommit cadre de l'étape source du pipeline et transférés vers CodeBuild. 

Dans la phase suivante, CodeBuild exécute les tâches suivantes : 

1. Télécharge le fichier TAR du code source de l'application. Vous pouvez configurer le nom de ce fichier à l'aide de Parameter Store, une fonctionnalité d'AWS Systems Manager.

1. Télécharge les fichiers CodeDeploy de configuration.

1. Crée une archive combinée du code source de l'application et des fichiers de CodeDeploy configuration spécifiques au type d'application.

1. Lance le CodeDeploy déploiement sur une instance Amazon Elastic Compute Cloud (Amazon EC2) à l'aide de l'archive combinée.

![\[Création d'un pipeline dans une région AWS non prise en charge\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e27750de-b597-424e-b5bf-4d58dc9b60cc/images/95fc815e-a762-4142-b0fd-2a716823e498.png)


## Outils
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-tools"></a>

**Services AWS**
+ [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.
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) automatise les déploiements vers les instances Amazon EC2 ou sur site, les fonctions AWS Lambda ou les services Amazon Elastic Container Service (Amazon ECS).
+ [AWS](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) vous CodePipeline aide à modéliser et à configurer rapidement les différentes étapes d'une version logicielle et à automatiser les étapes nécessaires à la publication continue des modifications logicielles.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [CodePipeline Unsupported Regions](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions).

## Épopées
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-epics"></a>

### Configurez votre poste de travail de développeur
<a name="set-up-your-developer-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez l'interface de ligne de commande AWS CDK. | Pour obtenir des instructions, consultez la [documentation AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites). | AWS DevOps | 
| Installez un client Git. | Pour créer des validations, vous pouvez utiliser un client Git installé sur votre ordinateur local, puis transférer vos validations vers le CodeCommit référentiel. Pour effectuer la configuration CodeCommit avec votre client Git, consultez la [CodeCommit documentation](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html). | AWS DevOps | 
| Installez NPM. | Installez le gestionnaire de packages **npm**. Pour plus d'informations, consultez la [documentation npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). | AWS DevOps | 

### Configuration du pipeline
<a name="set-up-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel de code. | Clonez le référentiel GitHub [CodePipeline Unsupported Regions](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) sur votre machine locale en exécutant la commande suivante.<pre>git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions</pre> | DevOps ingénieur | 
| Définissez les paramètres dans cdk.json. | Ouvrez le `cdk.json` fichier et saisissez les valeurs des paramètres suivants :<pre>"pipeline_account":"XXXXXXXXXXXX",<br />"pipeline_region":"us-west-2",<br />"repo_name": "app-dev-repo",<br />"ec2_tag_key": "test-vm",<br />"configName" : "cbdeployconfig",<br />"deploymentGroupName": "cbdeploygroup",<br />"applicationName" : "cbdeployapplication",<br />"projectName" : "CodeBuildProject"</pre>où :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline.html) | AWS DevOps | 
| Configurez la bibliothèque de constructions AWS CDK. | Dans le GitHub référentiel cloné, utilisez les commandes suivantes pour installer la bibliothèque de constructions AWS CDK, créer votre application et synthétiser afin de générer le CloudFormation modèle AWS pour l'application.<pre>npm i aws-cdk-lib<br />npm run build<br />cdk synth</pre> | AWS DevOps | 
| Déployez l'exemple d'application AWS CDK. | Déployez le code en exécutant la commande suivante dans une région non prise en charge (telle que`af-south-1`).<pre>cdk deploy</pre> | AWS DevOps | 

### Configurez le CodeCommit référentiel pour CodeDeploy
<a name="set-up-the-codecommit-repository-for-codedeploy"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configuration CI/CD pour l'application. | Clonez le CodeCommit référentiel que vous avez spécifié dans le `cdk.json` fichier (appelé `app-dev-repo` par défaut) pour configurer le CI/CD pipeline de l'application.<pre>git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo</pre>où le nom du référentiel et la région dépendent des valeurs que vous avez fournies dans le `cdk.json` fichier. | AWS DevOps | 

### Testez le pipeline
<a name="test-the-pipeline"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez le pipeline à l'aide des instructions de déploiement. | Le `CodeDeploy_Files` dossier du référentiel GitHub [CodePipeline Unsupported Regions](https://github.com/aws-samples/invisible-codepipeline-unsupported-regions) contient des exemples de fichiers qui indiquent le déploiement CodeDeploy de l'application. Le `appspec.yml` fichier est un fichier CodeDeploy de configuration qui contient des crochets permettant de contrôler le flux de déploiement des applications. Vous pouvez utiliser les fichiers d'exemple`index.html`, `start_server.sh``stop_server.sh`, et `install_dependencies.sh` pour mettre à jour un site Web hébergé sur Apache. Ce sont des exemples : vous pouvez utiliser le code du GitHub référentiel pour déployer n'importe quel type d'application. Lorsque les fichiers sont transférés vers le CodeCommit référentiel, le pipeline invisible est lancé automatiquement. Pour obtenir les résultats du déploiement, vérifiez les résultats des différentes phases dans les CodeDeploy consoles CodeBuild et. | AWS DevOps | 

## Ressources connexes
<a name="create-a-pipeline-in-aws-regions-that-don-t-support-aws-codepipeline-resources"></a>
+ [Mise en route](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites) (documentation AWS CDK)
+ [Présentation du Cloud Development Kit (CDK)](https://catalog.us-east-1.prod.workshops.aws/workshops/5962a836-b214-4fbf-9462-fedba7edcc9b/en-US) (AWS Workshop Studio)
+ [Atelier AWS CDK](https://cdkworkshop.com/)

# Personnalisez les noms de rôles par défaut en utilisant des AWS CDK aspects et des trappes d'échappement
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches"></a>

*SANDEEP SINGH et James Jacob, Amazon Web Services*

## Résumé
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-summary"></a>

Ce modèle montre comment personnaliser les noms par défaut des rôles créés par AWS Cloud Development Kit (AWS CDK) des constructions. La personnalisation des noms de rôles est souvent nécessaire si votre organisation est soumise à des contraintes spécifiques basées sur des conventions de dénomination. Par exemple, votre organisation peut définir des [limites d'autorisations Gestion des identités et des accès AWS (IAM) ou des](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) [politiques de contrôle des services (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) qui nécessitent un préfixe spécifique dans les noms de rôles. Dans de tels cas, les noms de rôle par défaut générés par AWS CDK les constructions peuvent ne pas respecter ces conventions et devront peut-être être modifiés. Ce modèle répond à ces exigences en utilisant des [trappes d'évacuation et des](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html) [aspects](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html) dans le AWS CDK. Vous utilisez des trappes d'échappement pour définir des noms de rôles personnalisés, et des aspects pour appliquer un nom personnalisé à tous les rôles, afin de garantir le respect des politiques et des contraintes de votre organisation.

## Conditions préalables et limitations
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ [Prérequis spécifiés dans la documentation AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites)

**Limites**
+ Les aspects filtrent les ressources en fonction des types de ressources, de sorte que tous les rôles partagent le même préfixe. Si vous avez besoin de préfixes de rôle différents pour différents rôles, un filtrage supplémentaire basé sur d'autres propriétés est nécessaire. Par exemple, pour attribuer différents préfixes aux rôles associés à des AWS Lambda fonctions, vous pouvez filtrer en fonction d'attributs ou de balises de rôle spécifiques, et appliquer un préfixe pour les rôles liés à Lambda et un autre préfixe pour les autres rôles.
+ Les noms de rôle IAM ont une longueur maximale de 64 caractères. Les noms de rôles modifiés doivent donc être rognés pour respecter cette restriction.
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

## Architecture
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-architecture"></a>

**Pile technologique cible**
+ AWS CDK
+ AWS CloudFormation

**Architecture cible**

![\[Architecture permettant d'utiliser des trappes d'échappement et des aspects pour personnaliser les noms de rôles attribués par AWS CDK.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c149d8d2-1da6-4680-ab0b-e5051b69688c/images/15e56ca5-f150-4522-b374-8ee2dcc655a9.png)

+ Une AWS CDK application se compose d'une ou de plusieurs CloudFormation piles, qui sont synthétisées et déployées pour gérer les AWS ressources.
+ Pour modifier une propriété d'une ressource AWS CDK gérée qui n'est pas exposée par une construction de couche 2 (L2), vous utilisez une trappe d'échappement pour remplacer les CloudFormation propriétés sous-jacentes (dans ce cas, le nom du rôle) et un aspect pour appliquer le rôle à toutes les ressources de l' AWS CDK application pendant le processus de synthèse de la pile. AWS CDK 

## Outils
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)est un framework de développement logiciel qui vous aide à définir et à provisionner AWS Cloud l'infrastructure dans le code.
+ [AWS CDK L'interface de ligne de commande (AWS CDK CLI)](https://docs.aws.amazon.com/cdk/latest/guide/cli.html) (également appelée boîte à AWS CDK outils) est un kit de développement cloud en ligne de commande qui vous permet d'interagir avec votre AWS CDK application. La `cdk` commande CLI est le principal outil d'interaction avec votre AWS CDK application. Il exécute votre application, interroge le modèle d'application que vous avez défini, produit et déploie les CloudFormation modèles générés par le. AWS CDK
+ [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.

**Référentiel de code**

Le code source et les modèles de ce modèle sont disponibles dans le référentiel GitHub [CDK Aspects Override](https://github.com/aws-samples/cdk-aspects-override).

## Bonnes pratiques
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-best-practices"></a>

Consultez les [meilleures pratiques d'utilisation de l' AWS CDK in pour TypeScript créer des projets IaC](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html) sur le site Web **AWS **Prescriptive Guidance.

## Épopées
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-epics"></a>

### Installation de la AWS CDK CLI
<a name="install-the-cdk-cli"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez la AWS CDK CLI. | Pour installer la AWS CDK CLI globalement, exécutez la commande suivante :<pre>npm install -g aws-cdk</pre> | AWS DevOps | 
| Vérifiez la version. | Exécutez la commande  :<pre>cdk --version</pre>Vérifiez que vous utilisez la version 2 de la AWS CDK CLI. | AWS DevOps | 
| Démarrez l' AWS CDK environnement. | Avant de déployer les CloudFormation modèles, préparez le compte et le compte Région AWS que vous souhaitez utiliser. Exécutez la commande  :<pre>cdk bootstrap <account>/<Region></pre>Pour plus d'informations, consultez la section [AWS CDK bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) dans la AWS documentation. | AWS DevOps | 

### Déployez l' AWS CDK application pour démontrer l'utilisation des aspects
<a name="deploy-the-cdk-app-to-demonstrate-the-use-of-aspects"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le projet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html) | AWS DevOps | 
| Déployez des piles avec des noms de rôle par défaut attribués par le AWS CDK. | Déployez deux CloudFormation piles (`ExampleStack1`et`ExampleStack2`) contenant les fonctions Lambda et leurs rôles associés :<pre>npm run deploy:ExampleAppWithoutAspects</pre>Le code ne transmet pas explicitement les propriétés des rôles. Les noms des rôles seront donc construits par le AWS CDK.Pour un exemple de sortie, consultez la section [Informations supplémentaires](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 
| Déployez des piles comportant des aspects. | Au cours de cette étape, vous appliquez un aspect qui applique une convention de nom de rôle en ajoutant un préfixe à tous les rôles IAM déployés dans le projet. AWS CDK L'aspect est défini dans le `lib/aspects.ts` fichier. L'aspect utilise une trappe d'échappement pour remplacer le nom du rôle en ajoutant un préfixe. L'aspect est appliqué aux piles du `bin/app-with-aspects.ts` fichier. Le préfixe du nom de rôle utilisé dans cet exemple est`dev-unicorn`.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches.html)Pour un exemple de sortie, consultez la section [Informations supplémentaires](#customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional). | AWS DevOps | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez vos AWS CloudFormation piles. | Une fois que vous avez fini d'utiliser ce modèle, exécutez la commande suivante pour nettoyer les ressources afin d'éviter des coûts supplémentaires :<pre>cdk destroy --all -f && cdk --app npx ts-node bin/app-with-aspects.ts' destroy --all -f </pre> | AWS DevOps | 

## Résolution des problèmes
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Vous rencontrez des problèmes lors de l'utilisation du AWS CDK. | Consultez la section [Résolution AWS CDK des problèmes courants](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html) dans la AWS CDK documentation. | 

## Ressources connexes
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-resources"></a>
+ [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)
+ [AWS CDK documentation](https://docs.aws.amazon.com/cdk/)
+ [AWS CDK sur GitHub](https://github.com/aws/aws-cdk)
+ [Trappes d'évacuation](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html)
+ [Aspects et AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/aspects.html)

## Informations supplémentaires
<a name="customize-default-role-names-by-using-aws-cdk-aspects-and-escape-hatches-additional"></a>

**Noms de rôles créés par CloudFormation Without Aspects**

```
Outputs:
ExampleStack1WithoutAspects.Function1RoleName = example-stack1-without-as-Function1LambdaFunctionSe-y7FYTY6FXJXA
ExampleStack1WithoutAspects.Function2RoleName = example-stack1-without-as-Function2LambdaFunctionSe-dDZV4rkWqWnI
...

Outputs:
ExampleStack2WithoutAspects.Function3RoleName = example-stack2-without-as-Function3LambdaFunctionSe-ygMv49iTyMq0
```

**Noms de rôles créés par CloudFormation with aspects**

```
Outputs:
ExampleStack1WithAspects.Function1RoleName = dev-unicorn-Function1LambdaFunctionServiceRole783660DC
ExampleStack1WithAspects.Function2RoleName = dev-unicorn-Function2LambdaFunctionServiceRole2C391181
...

Outputs:
ExampleStack2WithAspects.Function3RoleName = dev-unicorn-Function3LambdaFunctionServiceRole4CAA721C
```

# Déployez un cluster Cassandra sur Amazon EC2 avec une statique privée IPs pour éviter le rééquilibrage
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing"></a>

*Dipin Jain, Amazon Web Services*

## Résumé
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-summary"></a>

L'adresse IP privée d'une instance Amazon Elastic Compute Cloud (Amazon EC2) est conservée tout au long de son cycle de vie. Cependant, l'adresse IP privée peut changer lors d'une panne système planifiée ou imprévue, par exemple lors d'une mise à niveau d'Amazon Machine Image (AMI). Dans certains scénarios, la conservation d'une adresse IP statique privée peut améliorer les performances et le temps de restauration des charges de travail. Par exemple, l'utilisation d'une adresse IP statique pour un nœud initial d'Apache Cassandra empêche le cluster de subir une surcharge de rééquilibrage. 

Ce modèle décrit comment associer une interface Elastic Network secondaire aux EC2 instances afin de maintenir l'adresse IP statique pendant le réhébergement. Le modèle se concentre sur les clusters Cassandra, mais vous pouvez utiliser cette implémentation pour toute architecture bénéficiant d'une statique IPs privée.

## Conditions préalables et limitations
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-prereqs"></a>

**Conditions préalables**
+ Un compte Amazon Web Service (AWS) actif

**Versions du produit**
+ DataStax version 5.11.1
+ Système d'exploitation : Ubuntu 16.04.6 LTS

## Architecture
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-architecture"></a>

**Architecture source**

La source peut être un cluster Cassandra sur une machine virtuelle (VM) sur site ou sur des EC2 instances du cloud AWS. Le schéma suivant illustre le second scénario. Cet exemple inclut quatre nœuds de cluster : trois nœuds de départ et un nœud de gestion. Dans l'architecture source, une seule interface réseau est attachée à chaque nœud.

![\[Quatre nœuds de EC2 cluster Amazon auxquels est attachée une seule interface réseau.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/5d80cfc9-4b72-4c72-aefd-b77cc0fb58e3.png)


**Architecture cible**

Le cluster de destination est hébergé sur EC2 des instances dotées d'une interface Elastic Network secondaire attachée à chaque nœud, comme illustré dans le schéma suivant.

![\[Quatre nœuds de EC2 cluster Amazon auxquels est attachée une interface Elastic Network secondaire.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/47ca4dbc-0922-4e65-b66c-4db5122fc4ac/images/d1e22017-f041-426b-9204-31ac158a407d.png)


**Automatisation et évolutivité**

Vous pouvez également automatiser l'attachement d'une deuxième interface Elastic network à un groupe EC2 Auto Scaling, comme décrit dans une [vidéo du centre de connaissances AWS](https://www.youtube.com/watch?v=RmwGYXchb4E).

## Épopées
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-epics"></a>

### Configurer un cluster Cassandra sur Amazon EC2
<a name="configure-a-cassandra-cluster-on-amazon-ec2"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez EC2 des nœuds pour héberger un cluster Cassandra. | Sur la [ EC2 console Amazon](https://console.aws.amazon.com/ec2/), lancez quatre EC2 instances pour vos nœuds Ubuntu dans votre compte AWS. Trois nœuds (de départ) sont utilisés pour le cluster Cassandra, et le quatrième nœud fait office de nœud de gestion de cluster sur lequel vous installerez DataStax Enterprise (DSE) OpsCenter. Pour obtenir des instructions, consultez la [ EC2 documentation Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance). | Ingénieur cloud | 
| Confirmez les communications entre les nœuds. | Assurez-vous que les quatre nœuds peuvent communiquer entre eux via les ports de gestion de base de données et de cluster. | Ingénieur réseau | 
| Installez DSE OpsCenter sur le nœud de gestion. | Installez DSE OpsCenter 6.1 à partir du paquet Debian sur le nœud de gestion. Pour obtenir des instructions, consultez la [DataStax documentation](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html). | DBA | 
| Créez une interface réseau secondaire. | Cassandra génère un identifiant unique universel (UUID) pour chaque nœud en fonction de l'adresse IP de l' EC2 instance associée à ce nœud. Cet UUID est utilisé pour distribuer des nœuds virtuels (vnodes) sur le ring. Lorsque Cassandra est déployée sur EC2 des instances, les adresses IP sont attribuées automatiquement aux instances au fur et à mesure de leur création.  En cas de panne planifiée ou imprévue, l'adresse IP de la nouvelle EC2 instance change, la distribution des données change et l'ensemble de l'anneau doit être rééquilibré. Cela n'est pas souhaitable. Pour conserver l'adresse IP attribuée, utilisez une [interface Elastic network secondaire](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#scenarios-enis) dotée d'une adresse IP fixe.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Pour plus d'informations sur la création d'une interface réseau, consultez la [ EC2 documentation Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#create_eni). | Ingénieur cloud | 
| Connectez l'interface réseau secondaire aux nœuds du cluster. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing.html)Pour plus d'informations sur la connexion d'une interface réseau, consultez la [ EC2 documentation Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#attach_eni). | Ingénieur cloud | 
| Ajoutez des itinéraires dans Amazon EC2 pour remédier au routage asymétrique.  | Lorsque vous connectez la deuxième interface réseau, le réseau effectuera très probablement un routage asymétrique. Pour éviter cela, vous pouvez ajouter des itinéraires pour les nouvelles interfaces réseau.Pour une explication détaillée du routage asymétrique et pour y remédier, consultez la [vidéo du centre de connaissances AWS](https://www.youtube.com/watch?v=RmwGYXchb4E) intitulée [Overcoming Asymmetric Routing on Multi-Home Servers](http://www.linuxjournal.com/article/7291) (article de Patrick dans le *Linux Journal* McManus, 5 avril 2004). | Ingénieur réseau | 
| Mettez à jour les entrées DNS pour qu'elles pointent vers l'adresse IP de l'interface réseau secondaire. | Pointez le nom de domaine complet (FQDN) du nœud vers l'adresse IP de l'interface réseau secondaire. | Ingénieur réseau | 
| Installez et configurez le cluster Cassandra à l'aide de OpsCenter DSE. | Lorsque les nœuds du cluster sont prêts avec les interfaces réseau secondaires, vous pouvez installer et configurer le cluster Cassandra. | DBA | 

### Restaurer le cluster en cas de défaillance d'un nœud
<a name="recover-cluster-from-node-failure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une AMI pour le nœud de départ du cluster. | Effectuez une sauvegarde des nœuds afin de pouvoir les restaurer avec des fichiers binaires de base de données en cas de défaillance du nœud. Pour obtenir des instructions, consultez la section [Créer une AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html) dans la EC2 documentation Amazon. | Administrateur des sauvegardes | 
| Restaurez après une défaillance du nœud. | Remplacez le nœud défaillant par une nouvelle EC2 instance lancée depuis l'AMI et attachez l'interface réseau secondaire du nœud défaillant. | Administrateur des sauvegardes | 
| Vérifiez que le cluster Cassandra est sain. | Lorsque le nœud de remplacement est actif, vérifiez l'état du cluster dans DSE OpsCenter. | DBA | 

## Ressources connexes
<a name="deploy-a-cassandra-cluster-on-amazon-ec2-with-private-static-ips-to-avoid-rebalancing-resources"></a>
+ [Installation de DSE OpsCenter 6.1 à partir du paquet Debian](https://docs.datastax.com/en/opscenter/6.1/opsc/install/opscInstallDeb_t.html) (DataStax documentation)
+ [Comment faire fonctionner une interface réseau secondaire dans une EC2 instance Ubuntu](https://www.youtube.com/watch?v=RmwGYXchb4E) (vidéo du centre de connaissances AWS)
+ [Bonnes pratiques pour exécuter Apache Cassandra sur Amazon EC2](https://aws.amazon.com/blogs/big-data/best-practices-for-running-apache-cassandra-on-amazon-ec2/) (article de blog AWS)

# Étendez votre accès VRFs à AWS en utilisant AWS Transit Gateway Connect
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect"></a>

*Adam Till, Yashar Araghi, Vikas Dewangan et Mohideen, Amazon Web Services HajaMohideen*

## Résumé
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-summary"></a>

Le routage et le transfert virtuels (VRF) sont une fonctionnalité des réseaux traditionnels. Il utilise des domaines de routage logiques isolés, sous forme de tables de routage, pour séparer le trafic réseau au sein d'une même infrastructure physique. Vous pouvez configurer AWS Transit Gateway pour prendre en charge l'isolation VRF lorsque vous connectez votre réseau sur site à AWS. Ce modèle utilise un exemple d'architecture pour se connecter sur site VRFs à différentes tables de routage de passerelles de transit.

Ce modèle utilise des interfaces virtuelles de transit (VIFs) dans AWS Direct Connect et des pièces jointes Connect de la passerelle de transit pour étendre le VRFs. Un [VIF de transit](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html) est utilisé pour accéder à une ou plusieurs passerelles de transit Amazon VPC associées aux passerelles Direct Connect. Une [pièce jointe Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) connecte une passerelle de transit à un dispositif virtuel tiers exécuté dans un VPC. Une pièce jointe Connect de passerelle de transit prend en charge le protocole de tunnel GRE (Generic Routing Encapsulation) pour des performances élevées, et le protocole BGP (Border Gateway Protocol) pour le routage dynamique.

L'approche décrite dans ce modèle présente les avantages suivants :
+ Grâce à Transit Gateway Connect, vous pouvez annoncer jusqu'à 1 000 itinéraires à l'homologue Transit Gateway Connect et recevoir jusqu'à 5 000 itinéraires de ce dernier. L'utilisation de la fonctionnalité Direct Connect transit VIF sans Transit Gateway Connect est limitée à 20 préfixes par passerelle de transit.
+ Vous pouvez maintenir l'isolation du trafic et utiliser Transit Gateway Connect pour fournir des services hébergés sur AWS, quels que soient les schémas d'adresses IP utilisés par vos clients.
+ Le trafic VRF n'a pas besoin de traverser une interface virtuelle publique. Cela facilite le respect des exigences de conformité et de sécurité dans de nombreuses entreprises.
+ Chaque tunnel GRE prend en charge jusqu'à 5 Gbit/s, et vous pouvez avoir jusqu'à quatre tunnels GRE par pièce jointe Connect de passerelle de transit. Cela est plus rapide que de nombreux autres types de connexion, tels que les connexions Site-to-Site VPN AWS qui prennent en charge jusqu'à 1,25 Gbit/s.

## Conditions préalables et limitations
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-prereqs"></a>

**Conditions préalables**
+ Les comptes AWS requis ont été créés (voir l'architecture pour plus de détails)
+ Autorisations permettant d'assumer un rôle AWS Identity and Access Management (IAM) dans chaque compte.
+ Les rôles IAM de chaque compte doivent être autorisés à fournir des ressources AWS Transit Gateway et AWS Direct Connect. Pour plus d'informations, consultez [Authentification et contrôle d'accès pour vos passerelles de transport](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-authentication-access-control.html) et [gestion des identités et des accès pour Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/security-iam.html).
+ Les connexions Direct Connect ont été créées avec succès. Pour plus d'informations, voir [Création d'une connexion à l'aide de l'assistant de connexion](https://docs.aws.amazon.com/directconnect/latest/UserGuide/dedicated_connection.html#create-connection).

**Limites**
+ Il existe des limites pour les pièces jointes des passerelles de VPCs transit aux comptes de production, d'assurance qualité et de développement. Pour plus d'informations, consultez la section [Pièces jointes d'une passerelle de transit à un VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html).
+ Il existe des restrictions concernant la création et l'utilisation des passerelles Direct Connect. Pour plus d'informations, consultez la section [Quotas AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/limits.html).

## Architecture
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-architecture"></a>

**Architecture cible**

L'exemple d'architecture suivant fournit une solution réutilisable pour déployer le transport en commun VIFs avec les pièces jointes Connect de la passerelle de transit. Cette architecture assure la résilience en utilisant plusieurs emplacements Direct Connect. Pour plus d'informations, consultez la section [Résilience maximale](https://docs.aws.amazon.com/directconnect/latest/UserGuide/maximum_resiliency.html) dans la documentation de Direct Connect. La production, l'assurance qualité et le développement du VRFs réseau sur site sont étendus à AWS et isolés à l'aide de tables de routage dédiées.

![\[Schéma d'architecture de l'utilisation des ressources AWS Direct Connect et AWS Transit Gateway pour étendre VRFs\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/10be0625-8574-40eb-bc00-bb0a07d0dc26.png)


Dans l'environnement AWS, deux comptes sont dédiés à l'extension VRFs : un compte *Direct Connect et un compte* de *hub réseau*. Le compte Direct Connect contient la connexion et le transit VIFs pour chaque routeur. Vous créez le transit VIFs à partir du compte Direct Connect, mais vous le déployez sur le compte du hub réseau afin de pouvoir l'associer à la passerelle Direct Connect dans le compte du hub réseau. Le compte du hub réseau contient la passerelle Direct Connect et la passerelle de transit. Les ressources AWS sont connectées comme suit :

1.  VIFs Connectez les routeurs des sites Direct Connect à AWS Direct Connect dans le compte Direct Connect.

1. Un VIF de transit connecte Direct Connect à la passerelle Direct Connect dans le compte du hub réseau.

1. Une [association de passerelle de transit](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html) connecte la passerelle Direct Connect à la passerelle de transit dans le compte du hub réseau.

1. Les [pièces jointes Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html) connectent la passerelle de transit VPCs aux comptes de production, d'assurance qualité et de développement.

*Architecture Transit VIF*

Le schéma suivant montre les détails de configuration du transit VIFs. Cet exemple d'architecture utilise un VLAN pour la source du tunnel, mais vous pouvez également utiliser un loopback.

![\[Détails de configuration pour les connexions VIF de transit entre les routeurs et AWS Direct Connect\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e88d2546-61ef-4531-972b-089cdf44ed67.png)


Vous trouverez ci-dessous les détails de configuration, tels que les numéros de système autonomes (ASNs), pour le transit VIFs.


| 
| 
| Ressource | Élément | Détail | 
| --- |--- |--- |
| routeur-01 | ASN | 65534 | 
| routeur-02 | ASN | 65534 | 
| routeur-03 | ASN | 65534 | 
| routeur-04 | ASN | 65534 | 
| Passerelle Direct Connect | ASN | 64601 | 
| Passerelle de transit | ASN | 64600 | 
| Bloc d'adresse CIDR | 10,10,254,0/24 | 

*Architecture Connect de Transit Gateway*

Le diagramme et les tableaux suivants décrivent comment configurer un seul VRF via une pièce jointe Connect de passerelle de transit. En outre VRFs, attribuez des adresses IP GRE uniques à un tunnel IDs, à une passerelle de transit et à un BGP dans des blocs CIDR. L'adresse IP GRE de l'homologue correspond à l'adresse IP de l'homologue du routeur indiquée dans le VIF de transit.

![\[Détails de configuration des tunnels GRE entre les routeurs et la passerelle de transit\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/db17e177-6c94-4d81-ab39-0923ecab2f1b/images/e58278e1-f3b4-442d-95d9-1dafab4aa5ac.png)


Le tableau suivant contient les détails de configuration du routeur.


| 
| 
| Routeur | Tunnel | Adresse IP | Source | Destination | 
| --- |--- |--- |--- |--- |
| routeur-01 | Tunnel 1 | 169,254,101,17 | VLAN 60169,254,100,1 | 10,10,254,1 | 
| routeur-02 | Tunnel 11 | 169,254,101,81 | VLAN 61169,254,100,5 | 10,10.254,11 | 
| routeur-03 | Tunnel 21 | 169,254,101,145 | VLAN 62169,254,100,9 | 10,10.254,21 | 
| routeur-04 | Tunnel 31 | 169,254,101,209 | VLAN 63169,254,100,13 | 10,10.254,31 | 

Le tableau suivant contient les détails de configuration de la passerelle de transit.


| 
| 
| Tunnel | Adresse IP GRE de la passerelle de transit | Adresse IP GRE homologue | BGP à l'intérieur de blocs CIDR | 
| --- |--- |--- |--- |
| Tunnel 1 | 10,10,254,1 | VLAN 60169,254,100,1 | 169,254,106,16/29 | 
| Tunnel 11 | 10,10.254,11 | VLAN 61169,254,100,5 | 169,254,101,80/29 | 
| Tunnel 21 | 10,10.254,21 | VLAN 62169,254,100,9 | 169,254,101,144/29 | 
| Tunnel 31 | 10,10.254,31 | VLAN 63169,254,100,13 | 169,254,101,208/29 | 

**Déploiement**

La section [Epics](#extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics) décrit comment déployer un exemple de configuration pour un**** seul VRF sur plusieurs routeurs clients. Une fois les étapes 1 à 5 terminées, vous pouvez créer de nouvelles pièces jointes Connect pour la passerelle de transit en suivant les étapes 6 à 7 pour chaque nouveau VRF que vous étendez à AWS :

1. Créez la passerelle de transit.

1. Créez une table de routage Transit Gateway pour chaque VRF.

1. Créez les interfaces virtuelles de transport en commun.

1. Créez la passerelle Direct Connect.

1. Créez l'interface virtuelle de la passerelle Direct Connect et les associations de passerelle avec les préfixes autorisés.

1. Créez la pièce jointe Connect pour la passerelle de transit.

1. Créez les homologues de Transit Gateway Connect.

1. Associez la pièce jointe Connect de la passerelle de transit à la table de routage.

1. Annoncez les itinéraires aux routeurs.

## Outils
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-tools"></a>

**Services AWS**
+ [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) relie votre réseau interne à un emplacement Direct Connect via un câble Ethernet à fibre optique standard. Grâce à cette connexion, vous pouvez créer des interfaces virtuelles directement vers les services AWS publics tout en contournant les fournisseurs de services Internet sur votre chemin réseau.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) est un hub central qui connecte des clouds privés virtuels (VPCs) et des réseaux sur site.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS.

## Épopées
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-epics"></a>

### Planifier l'architecture
<a name="plan-the-architecture"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des diagrammes d'architecture personnalisés. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 

### Création des ressources Transit Gateway
<a name="create-the-transit-gateway-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez la passerelle de transit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Administrateur réseau, architecte cloud | 
| Créez la table de routage de la passerelle de transit. | Suivez les instructions de la section [Créer une table de routage pour une passerelle de transit](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html#create-tgw-route-table). Notez ce qui suit pour ce modèle :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 

### Création des interfaces virtuelles de transport
<a name="create-the-transit-virtual-interfaces"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez les interfaces virtuelles de transport en commun. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 

### Création des ressources Direct Connect
<a name="create-the-direct-connect-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une passerelle Direct Connect. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 
| Connectez la passerelle Direct Connect au transport en commun VIFs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 
| Créez les associations de passerelle Direct Connect avec les préfixes autorisés. | Dans le compte du hub réseau, suivez les instructions de la section [Pour associer une passerelle de transit](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html#associate-tgw-with-direct-connect-gateway). Notez ce qui suit pour ce modèle :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html)La création de cette association crée automatiquement une pièce jointe Transit Gateway dotée d'un type de ressource Direct Connect Gateway. Il n'est pas nécessaire que cette pièce jointe soit associée à une table de routage de passerelle de transit. | Architecte cloud, administrateur réseau | 
| Créez la pièce jointe Connect pour la passerelle de transit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Architecte cloud, administrateur réseau | 
| Créez les homologues de Transit Gateway Connect. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) |  | 

### Annoncer les itinéraires aux routeurs
<a name="advertise-routes-to-the-routers"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Faites de la publicité pour les itinéraires. | Associez la nouvelle pièce jointe Connect de la passerelle de transit à la table de routage que vous avez créée précédemment pour ce VRF. Par exemple, associez la pièce jointe Connect de la passerelle de transit de production à la table de `Production-VRF` routage.Créez un itinéraire statique pour le préfixe annoncé aux routeurs.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extend-vrfs-to-aws-by-using-aws-transit-gateway-connect.html) | Administrateur réseau, architecte cloud | 

## Ressources connexes
<a name="extend-vrfs-to-aws-by-using-aws-transit-gateway-connect-resources"></a>

**Documentation AWS**
+ Documentation sur Direct Connect
  + [Utilisation des passerelles Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)
  + [Associations de passerelles de transit](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-transit-gateways.html)
  + [Interfaces virtuelles AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html)
+ Documentation sur Transit Gateway
  + [Travailler avec les passerelles de transport](https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html)
  + [Pièces jointes d'une passerelle de transit à une passerelle Direct Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-dcg-attachments.html)
  + [Pièces jointes Transit Gateway Connect et homologues de Transit Gateway Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html)
  + [Création d'une pièce jointe Connect pour une passerelle de transit](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-connect.html#create-tgw-connect-attachment)

**Articles de blog AWS**
+ [Segmentation des réseaux hybrides avec AWS Transit Gateway connect](https://aws.amazon.com/blogs/networking-and-content-delivery/segmenting-hybrid-networks-with-aws-transit-gateway-connect/)
+ [Utilisation d'AWS Transit Gateway connect pour étendre VRFs et augmenter la publicité sur les préfixes IP](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-transit-gateway-connect-to-extend-vrfs-and-increase-ip-prefix-advertisement/)

## Pièces jointes
<a name="attachments-db17e177-6c94-4d81-ab39-0923ecab2f1b"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/db17e177-6c94-4d81-ab39-0923ecab2f1b/attachments/attachment.zip)

# Recevez des notifications Amazon SNS lorsque l'état clé d'une clé AWS KMS change
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes"></a>

*Shubham Harsora, Aromal Raj Jayarajan et Navdeep Pareek, Amazon Web Services*

## Résumé
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-summary"></a>

Les données et métadonnées associées à une clé AWS Key Management Service (AWS KMS) sont perdues lorsque cette clé est supprimée. La suppression est irréversible et vous ne pouvez pas récupérer les données perdues (y compris les données cryptées). Vous pouvez éviter les pertes de données en configurant un système de notification pour vous avertir des modifications de statut des [principaux états](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type) de vos clés AWS KMS.

Ce modèle vous montre comment surveiller les modifications de statut des clés AWS KMS en utilisant Amazon EventBridge et Amazon Simple Notification Service (Amazon SNS) pour émettre des notifications automatisées chaque fois que l'état clé d'une clé AWS KMS change de ou. `Disabled` `PendingDeletion` Par exemple, si un utilisateur essaie de désactiver ou de supprimer une clé AWS KMS, vous recevrez une notification par e-mail contenant des informations sur la tentative de changement de statut. Vous pouvez également utiliser ce modèle pour planifier la suppression des clés AWS KMS.

## Conditions préalables et limitations
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif avec un utilisateur AWS Identity and Access Management (IAM)
+ Une [clé AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/getting-started.html)

## Architecture
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-architecture"></a>

**Pile technologique**
+ Amazon EventBridge
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Notiﬁcation Service (Amazon SNS)

**Architecture cible**

Le schéma suivant montre une architecture permettant de créer un processus de surveillance et de notification automatisé pour détecter toute modification de l'état d'une clé AWS KMS.

![\[Architecture permettant de créer un processus de surveillance et de notification automatisé\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/2534df87-a6fd-4360-9b5d-4a8b1f533de3/images/0cb6a6b0-405b-4d26-ad04-2067176aa086.png)


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

1. Un utilisateur désactive ou planifie la suppression d'une clé AWS KMS.

1. Une EventBridge règle évalue le programme `Disabled` ou l'`PendingDeletion`événement.

1. La EventBridge règle invoque la rubrique Amazon SNS.

1. Amazon SNS envoie un message de notification par e-mail aux utilisateurs.

**Note**  
Vous pouvez personnaliser le message électronique en fonction des besoins de votre organisation. Nous vous recommandons d'inclure des informations sur les entités dans lesquelles la clé AWS KMS est utilisée. Cela peut aider les utilisateurs à comprendre l'impact de la suppression de la clé AWS KMS. Vous pouvez également planifier une notification par e-mail de rappel envoyée un ou deux jours avant la suppression de la clé AWS KMS.

**Automatisation et mise à l'échelle**

La CloudFormation pile AWS déploie toutes les ressources et tous les services nécessaires au bon fonctionnement de ce modèle. Vous pouvez implémenter le modèle indépendamment dans un seul compte, ou en utilisant [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) pour plusieurs comptes indépendants ou [unités organisationnelles](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) dans AWS Organizations.

## Outils
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à configurer les ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie sur les comptes AWS et les régions AWS. Le CloudFormation modèle de ce modèle décrit toutes les ressources AWS que vous souhaitez, et CloudFormation fournit et configure ces ressources pour vous.
+ [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. EventBridge fournit un flux de données en temps réel à partir de vos propres applications et services AWS, et achemine ces données vers des cibles telles qu'AWS Lambda. EventBridge simplifie le processus de création d'architectures pilotées par les événements.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.
+ [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.

**Code**

Le code de ce modèle est disponible dans le référentiel de [désactivation et de suppression planifiée des clés GitHub Monitor AWS KMS](https://github.com/aws-samples/aws-kms-deletion-notification).

## Épopées
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-epics"></a>

### Déployer le CloudFormation modèle
<a name="deploy-the-cloudformation-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Clonez le référentiel de [désactivation et de suppression planifiée des clés GitHub Monitor AWS KMS](https://github.com/aws-samples/aws-kms-deletion-notification) sur votre machine locale en exécutant la commande suivante :`git clone https://github.com/aws-samples/aws-kms-deletion-notification` | Administrateur AWS, architecte du cloud | 
| Mettez à jour les paramètres du modèle. | Dans un éditeur de code, ouvrez le `Alerting-KMS-Events.yaml` CloudFormation modèle que vous avez cloné à partir du référentiel, puis mettez à jour les paramètres suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrateur AWS, architecte du cloud | 
| Déployez le CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrateur AWS, architecte du cloud | 

### Confirmer l'abonnement.
<a name="confirm-the-subscription"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Confirmez l'e-mail d'abonnement. | Une fois le CloudFormation modèle déployé avec succès, Amazon SNS envoie un message de confirmation d'abonnement à l'adresse e-mail que vous avez fournie dans CloudFormation le modèle.Pour recevoir des notifications, vous devez confirmer cet abonnement par e-mail. Pour plus d'informations, consultez [Confirmer l'abonnement](https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.confirm.html) dans le manuel Amazon SNS Developer Guide. | Administrateur AWS, architecte du cloud | 

### Testez la notification d'abonnement
<a name="test-the-subscription-notification"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Désactivez les clés AWS KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrateur AWS | 
| Validez l'abonnement. | Confirmez que vous avez reçu l'e-mail de notification Amazon SNS. | Administrateur AWS | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez la CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes.html) | Administrateur AWS | 

## Ressources connexes
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-resources"></a>
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/) (documentation AWS)
+ [Création d'une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) ( CloudFormation documentation AWS)
+ [Création d'architectures pilotées par les événements sur AWS](https://catalog.us-east-1.prod.workshops.aws/workshops/63320e83-6abc-493d-83d8-f822584fb3cb/en-US) (documentation AWS Workshop Studio)
+ [Bonnes pratiques relatives aux services de gestion des clés AWS](https://d1.awsstatic.com/whitepapers/aws-kms-best-practices.pdf) (livre blanc AWS)
+ [Bonnes pratiques de sécurité pour AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html) (Guide du développeur AWS KMS)

## Informations supplémentaires
<a name="get-amazon-sns-notifications-when-the-key-state-of-an-aws-kms-key-changes-additional"></a>

Amazon SNS fournit un chiffrement en transit par défaut. Pour respecter les meilleures pratiques en matière de sécurité, vous pouvez également activer le chiffrement côté serveur pour Amazon SNS à l'aide d'une clé gérée par le client AWS KMS.

# Préservez l'espace IP routable dans les conceptions VPC multi-comptes pour les sous-réseaux autres que les charges de travail
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets"></a>

*Adam Spicer, Amazon Web Services*

## Résumé
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-summary"></a>

Amazon Web Services (AWS) a publié les meilleures pratiques qui recommandent d'utiliser des sous-réseaux dédiés dans un cloud privé virtuel (VPC) pour les pièces jointes des passerelles de [transit et les points de terminaison Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html) [Load Balancer (pour prendre en charge](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html) [AWS Network Firewall](https://docs.aws.amazon.com/network-firewall/latest/developerguide/firewall-high-level-steps.html) ou des appareils tiers). Ces sous-réseaux sont utilisés pour contenir des interfaces réseau élastiques pour ces services. Si vous utilisez à la fois AWS Transit Gateway et un Gateway Load Balancer, deux sous-réseaux sont créés dans chaque zone de disponibilité pour le VPC. En raison de leur conception, ces sous-réseaux supplémentaires [ne peuvent pas être plus petits qu'un masque /28](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-sizing) et peuvent consommer un espace IP routable précieux qui pourrait autrement être utilisé pour des charges de travail routables. VPCs Ce modèle montre comment vous pouvez utiliser une plage de routage interdomaine sans classe (CIDR) secondaire et non routable pour ces sous-réseaux dédiés afin de préserver l'espace IP routable.

## Conditions préalables et limitations
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-prereqs"></a>

**Prérequis**
+ [Stratégie multi-VPC pour un espace](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/welcome.html) IP routable
+ [Une plage CIDR non routable pour les services que vous utilisez ([pièces jointes à des passerelles de transit et points de terminaison Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html)[Load Balancer ou Network Firewall](https://aws.amazon.com/blogs/apn/centralized-traffic-inspection-with-gateway-load-balancer-on-aws/))](https://aws.amazon.com/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/)

## Architecture
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-architecture"></a>

**Architecture cible**

Ce modèle inclut deux architectures de référence : une architecture comporte des sous-réseaux pour les pièces jointes de passerelle de transit (TGW) et un point de terminaison Gateway Load Balancer GWLBe (), et la seconde architecture possède des sous-réseaux pour les pièces jointes TGW uniquement.

**Architecture 1 ‒ VPC rattaché au TGW avec routage d'entrée vers une appliance**

Le schéma suivant représente une architecture de référence pour un VPC qui couvre deux zones de disponibilité. Lors de l'entrée, le VPC utilise [un modèle de routage d'entrée](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/) pour diriger le trafic destiné au sous-réseau public vers [bump-in-the-wire une](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-aws-gateway-load-balancer-supported-architecture-patterns/) appliance à des fins d'inspection du pare-feu. Une pièce jointe TGW prend en charge la sortie des sous-réseaux privés vers un VPC distinct.

Ce modèle utilise une plage d'adresses CIDR non routable pour le sous-réseau d'attachement TGW et le sous-réseau. GWLBe Dans la table de routage TGW, ce CIDR non routable est configuré avec une route en trou noir (statique) en utilisant un ensemble de routes plus spécifiques. Si les itinéraires devaient être propagés vers la table de routage TGW, ces itinéraires en trou noir plus spécifiques s'appliqueraient.

Dans cet exemple, le CIDR routable /23 est divisé et entièrement alloué aux sous-réseaux routables.

![\[VPC rattaché au TGW avec routage d'entrée vers une appliance.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/adad1c83-cdc2-4c5e-aa35-f47fc31af384.png)


**Architecture 2 — VPC rattaché au TGW**

Le schéma suivant représente une autre architecture de référence pour un VPC qui couvre deux zones de disponibilité. Une pièce jointe TGW prend en charge le trafic sortant (sortie) des sous-réseaux privés vers un VPC distinct. Il utilise une plage d'adresses CIDR non routable uniquement pour le sous-réseau des pièces jointes TGW. Dans la table de routage TGW, ce CIDR non routable est configuré avec un itinéraire en trou noir en utilisant un ensemble de routes plus spécifiques. Si les itinéraires devaient être propagés vers la table de routage TGW, ces itinéraires en trou noir plus spécifiques s'appliqueraient.

Dans cet exemple, le CIDR routable /23 est divisé et entièrement alloué aux sous-réseaux routables. 

![\[Le VPC s'étend sur 2 zones de disponibilité avec un attachement TGW pour la sortie des sous-réseaux privés vers un VPC séparé.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/0171d91d-ab1e-41ca-a425-1e6e610080e1/images/31a2a241-5be6-425e-93e9-5ff7ffeca3a9.png)


## Outils
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-tools"></a>

**Services et ressources AWS**
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS. Dans ce modèle, les VPC secondaires CIDRs sont utilisés pour préserver l'espace IP routable dans la charge de travail. CIDRs
+ Le [routage d'entrée de la passerelle Internet](https://aws.amazon.com/blogs/aws/new-vpc-ingress-routing-simplifying-integration-of-third-party-appliances/) (associations de périphérie) peut être utilisé avec les points de terminaison Gateway Load Balancer pour les sous-réseaux dédiés non routables.
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html) est un hub central qui connecte VPCs les réseaux sur site. Dans ce modèle, VPCs sont rattachés de manière centralisée à une passerelle de transit, et les pièces jointes de la passerelle de transit se trouvent dans un sous-réseau dédié non routable.
+ Les [équilibreurs de charge de passerelle](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/introduction.html) vous permettent de déployer, de mettre à l'échelle et de gérer des appareils virtuels, telles que des pare-feu, des systèmes de détection et de prévention des intrusions et des systèmes d'inspection approfondie des paquets. La passerelle sert de point d'entrée et de sortie unique pour l'ensemble du trafic. Dans ce modèle, les points de terminaison d'un Gateway Load Balancer peuvent être utilisés dans un sous-réseau dédié non routable.
+ [AWS Network Firewall est un pare-feu réseau](https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html) dynamique et géré, ainsi qu'un service de détection et de prévention des intrusions VPCs destiné au cloud AWS. Dans ce modèle, les points de terminaison d'un pare-feu peuvent être utilisés dans un sous-réseau dédié non routable.

**Référentiel de code**

Un runbook et des CloudFormation modèles AWS pour ce modèle sont disponibles dans le référentiel de modèles [CIDR secondaires GitHub non routables](https://github.com/aws-samples/non-routable-secondary-vpc-cidr-patterns/). Vous pouvez utiliser les fichiers d'exemple pour configurer un laboratoire de travail dans votre environnement.

## Bonnes pratiques
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-best-practices"></a>

**AWS Transit Gateway**
+ Utilisez un sous-réseau distinct pour chaque attachement de VPC de passerelle de transit.
+ Allouez un sous-réseau /28 à partir de la plage d'adresses CIDR non routable secondaire pour les sous-réseaux d'attachement de la passerelle de transit.
+ Dans la table de routage de chaque passerelle de transit, ajoutez un itinéraire statique plus spécifique pour la plage d'adresses CIDR non routable sous forme de trou noir.

**Gateway Load Balancer et routage d'entrée**
+ Utilisez le routage d'entrée pour diriger le trafic depuis Internet vers les points de terminaison Gateway Load Balancer.
+ Utilisez un sous-réseau distinct pour chaque point de terminaison Gateway Load Balancer.
+ Allouez un sous-réseau /28 à partir de la plage d'adresses CIDR non routable secondaire pour les sous-réseaux de point de terminaison Gateway Load Balancer.

## Épopées
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-epics"></a>

### Créez VPCs
<a name="create-vpcs"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déterminez la plage d'adresses CIDR non routable. | Déterminez une plage d'adresses CIDR non routable qui sera utilisée pour le sous-réseau d'attachement de la passerelle de transit et (éventuellement) pour tout sous-réseau de point de terminaison Gateway Load Balancer ou Network Firewall. Cette plage de CIDR sera utilisée comme CIDR secondaire pour le VPC. Il **ne doit pas être routable** depuis la plage d'adresses CIDR principale du VPC ou depuis le réseau plus vaste. | Architecte du cloud | 
| Déterminez les plages d'adresses CIDR routables pour. VPCs | Déterminez un ensemble de plages CIDR routables qui seront utilisées pour votre. VPCs Cette plage de CIDR sera utilisée comme CIDR principal pour votre. VPCs | Architecte du cloud | 
| Créez VPCs. | Créez le vôtre VPCs et attachez-le à la passerelle de transit. Chaque VPC doit avoir une plage d'adresses CIDR principale routable et une plage d'adresses CIDR secondaire non routable, en fonction des plages que vous avez déterminées au cours des deux étapes précédentes. | Architecte du cloud | 

### Configurer les itinéraires en trou noir de Transit Gateway
<a name="configure-transit-gateway-blackhole-routes"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez des trous non routables plus spécifiques CIDRs tels que des trous noirs. | Chaque table de routage de passerelle de transit doit comporter un ensemble de routes en trou noir créées pour les routes non CIDRs routables. Ils sont configurés pour garantir que tout trafic provenant du VPC CIDR secondaire reste non routable et ne pénètre pas dans le réseau plus vaste. Ces routes doivent être plus spécifiques que le CIDR non routable défini comme CIDR secondaire sur le VPC. Par exemple, si le CIDR secondaire non routable est 100.64.0.0/26, les routes en trou noir dans la table de routage de la passerelle de transit doivent être 100.64.0.0/27 et 100.64.0.32/27. | Architecte du cloud | 

## Ressources connexes
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-resources"></a>
+ [Bonnes pratiques pour le déploiement de Gateway Load Balancer](https://aws.amazon.com/blogs/networking-and-content-delivery/best-practices-for-deploying-gateway-load-balancer/)
+ [Architectures d'inspection distribuées avec Gateway Load Balancer](https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/distributed-inspection-architectures-gwlb-ra.pdf?did=wp_card&trk=wp_card)
+ [Journée d'immersion dans la mise en réseau](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc) ‒ Laboratoire de pare-feu [Internet vers VPC](https://catalog.workshops.aws/networking/en-US/gwlb/lab2-internettovpc)
+ [Bonnes pratiques pour la conception de passerelles de transit](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html)

## Informations supplémentaires
<a name="preserve-routable-ip-space-in-multi-account-vpc-designs-for-non-workload-subnets-additional"></a>

La plage d'adresses CIDR secondaire non routable peut également être utile lorsque vous travaillez avec des déploiements de conteneurs à plus grande échelle qui nécessitent un grand nombre d'adresses IP. Vous pouvez utiliser ce modèle avec une passerelle NAT privée pour utiliser un sous-réseau non routable pour héberger vos déploiements de conteneurs. Pour plus d'informations, consultez le billet de blog [Comment résoudre l'épuisement des adresses IP privées avec une solution NAT privée](https://aws.amazon.com/blogs/networking-and-content-delivery/how-to-solve-private-ip-exhaustion-with-private-nat-solution/).

# Provisionner un produit Terraform à l'aide AWS Service Catalog d'un référentiel de code
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository"></a>

*Dr. Rahul Sharad Gaikwad et Tamilselvan P, Amazon Web Services*

## Résumé
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-summary"></a>

AWS Service Catalog prend en charge le provisionnement en libre-service avec gouvernance de vos configurations [HashiCorp Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started). Si vous utilisez Terraform, vous pouvez utiliser Service Catalog comme outil unique pour organiser, gérer et distribuer vos configurations Terraform à grande échelle. AWS Vous pouvez accéder aux principales fonctionnalités de Service Catalog, notamment le catalogage de modèles d'infrastructure en tant que code (iAc) standardisés et préapprouvés, le contrôle d'accès, le provisionnement des ressources cloud avec un accès minimal, le versionnement, le partage avec des milliers de Comptes AWS personnes et le balisage. Les utilisateurs finaux, tels que les ingénieurs, les administrateurs de bases de données et les scientifiques des données, consultent la liste des produits et des versions auxquels ils ont accès, et ils peuvent les déployer en une seule action.

Ce modèle vous aide à déployer AWS des ressources à l'aide du code Terraform. Le code Terraform du GitHub référentiel est accessible via Service Catalog. En utilisant cette approche, vous intégrez les produits à vos flux de travail Terraform existants. Les administrateurs peuvent créer des portefeuilles Service Catalog et y ajouter AWS Launch Wizard des produits à l'aide de Terraform.

Les avantages de cette solution sont les suivants :
+ Grâce à la fonctionnalité de restauration de Service Catalog, en cas de problème lors du déploiement, vous pouvez rétablir une version précédente du produit.
+ Vous pouvez facilement identifier les différences entre les versions du produit. Cela vous permet de résoudre les problèmes lors du déploiement.
+ Vous pouvez configurer une connexion au référentiel dans Service Catalog, par exemple vers GitHub ou GitLab. Vous pouvez apporter des modifications au produit directement via le référentiel.

Pour plus d'informations sur les avantages généraux de AWS Service Catalog, voir [Qu'est-ce que Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) ?

## Conditions préalables et limitations
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Un GitHub ou un autre référentiel contenant les fichiers de configuration Terraform au format ZIP. BitBucket
+ AWS Serverless Application Model Interface de ligne de commande (AWS SAM CLI), [installée](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html).
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Allez-y, [installé](https://go.dev/doc/install).
+ Python version 3.9, [installé](https://www.python.org/downloads/release/python-3913/). AWS SAM La CLI nécessite cette version de Python.
+ Autorisations pour écrire et exécuter AWS Lambda des fonctions et autorisations pour accéder aux produits et aux portefeuilles Service Catalog et les gérer.

## Architecture
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-architecture"></a>

![\[Schéma d'architecture du provisionnement d'un produit Terraform dans Service Catalog à partir d'un dépôt de code\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/7d0d76e8-9485-4b3f-915f-481b6a7cdcd9/images/e83fa44a-4ca6-4438-a0d1-99f09a3541bb.png)


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

1. Lorsqu'une configuration Terraform est prête, un développeur crée un fichier .zip contenant tout le code Terraform. Le développeur télécharge le fichier .zip dans le référentiel de code connecté à Service Catalog.

1. Un administrateur associe le produit Terraform à un portefeuille dans Service Catalog. L'administrateur crée également une contrainte de lancement qui permet aux utilisateurs finaux de fournir le produit.

1. Dans Service Catalog, les utilisateurs finaux lancent AWS des ressources à l'aide de la configuration Terraform. Ils peuvent choisir la version du produit à déployer.

## Outils
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-tools"></a>

**Services AWS**
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)vous permet de gérer de manière centralisée les catalogues de services informatiques approuvés. AWS Les utilisateurs finaux peuvent déployer rapidement uniquement les services informatiques approuvés dont ils ont besoin, en respectant les contraintes définies par votre organisation.

**Autres services**
+ [Go](https://go.dev/doc/install) est un langage de programmation open source pris en charge par Google.
+ [Python](https://www.python.org/) est un langage de programmation informatique polyvalent.

**Référentiel de code**

Si vous avez besoin d'exemples de configurations Terraform que vous pouvez déployer via Service Catalog, vous pouvez utiliser les configurations du référentiel [Amazon GitHub Macie Organization Setup](https://github.com/aws-samples/aws-macie-customization-terraform-samples) Using Terraform. L'utilisation des exemples de code de ce référentiel n'est pas obligatoire.

## Bonnes pratiques
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-best-practices"></a>
+ Au lieu de fournir les valeurs des variables dans le fichier de configuration Terraform (`terraform.tfvars`), configurez les valeurs des variables lors du lancement du produit via Service Catalog.
+ N'accordez l'accès au portefeuille qu'à des utilisateurs ou administrateurs spécifiques.
+ Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) et [Bonnes pratiques en matière de sécurité](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) dans la documentation Gestion des identités et des accès AWS (IAM).

## Épopées
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-epics"></a>

### Configurez votre poste de travail local
<a name="set-up-your-local-workstation"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| (Facultatif) Installez Docker. | Si vous souhaitez exécuter les AWS Lambda fonctions dans votre environnement de développement, installez Docker. Pour connaître la marche à suivre, consultez la rubrique [Installer Docker Engine](https://docs.docker.com/engine/install/) de la documentation Docker. | DevOps ingénieur | 
| Installez le AWS Service Catalog moteur pour Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps ingénieur, administrateur AWS | 

### Connect le GitHub référentiel
<a name="connect-the-github-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une connexion au GitHub référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 

### Créer un produit Terraform dans Service Catalog
<a name="create-a-terraform-product-in-service-catalog"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le produit Service Catalog. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Créez un portefeuille. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Ajoutez le produit Terraform au portefeuille. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Créez la stratégie d'accès. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Créez une politique de confiance personnalisée. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Ajoutez une contrainte de lancement au produit Service Catalog. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Accordez l'accès au produit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 
| Lancez le produit. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps ingénieur | 

### Vérification du déploiement
<a name="verify-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez le déploiement. | Il existe deux machines AWS Step Functions d'état pour le flux de travail de provisionnement du Service Catalog :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html)Vous consultez les journaux de la machine `ManageProvisionedProductStateMachine` d'état pour confirmer que le produit a été approvisionné.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps ingénieur | 

### Nettoyer les infrastructures
<a name="clean-up-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les produits approvisionnés. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | DevOps ingénieur | 
| Supprimez le AWS Service Catalog moteur de Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository.html) | Administrateur AWS | 

## Ressources connexes
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-resources"></a>

**AWS documentation**
+ [Commencer à utiliser un produit Terraform](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-Terraform.html)

**Documentation Terraform**
+ [Installation de Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configuration du backend Terraform](https://developer.hashicorp.com/terraform/language/backend)
+ [Documentation du fournisseur Terraform AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)

## Informations supplémentaires
<a name="provision-a-terraform-product-in-aws-service-catalog-by-using-a-code-repository-additional"></a>

**Politique d'accès**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/servicecatalog:provisioning": "true"
                }
            }
        },
        {
            "Action": [
                "s3:CreateBucket*",
                "s3:DeleteBucket*",
                "s3:Get*",
                "s3:List*",
                "s3:PutBucketTagging"
            ],
            "Resource": "arn:aws:s3:::*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "resource-groups:CreateGroup",
                "resource-groups:ListGroupResources",
                "resource-groups:DeleteGroup",
                "resource-groups:Tag"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "tag:GetResources",
                "tag:GetTagKeys",
                "tag:GetTagValues",
                "tag:TagResources",
                "tag:UntagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

**Politique d’approbation**

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GivePermissionsToServiceCatalog",
            "Effect": "Allow",
            "Principal": {
                "Service": "servicecatalog.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account_id:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringLike": {
                    "aws:PrincipalArn": [
                        "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*",
                        "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*"
                    ]
                }
            }
        }
    ]
}
```

# Comptes AWS Enregistrez-en plusieurs avec une seule adresse e-mail à l'aide d'Amazon SES
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses"></a>

*Joe Wozniak et Shubhangi Vishwakarma, Amazon Web Services*

## Résumé
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-summary"></a>

Ce modèle décrit comment vous pouvez dissocier les adresses e-mail réelles de l'adresse e-mail associée à un. Compte AWS Comptes AWS exigent qu'une adresse e-mail unique soit fournie au moment de la création du compte. Dans certaines organisations, l'équipe de gestion Comptes AWS doit assumer la charge de gérer de nombreuses adresses e-mail uniques avec son équipe de messagerie. Cela peut s'avérer difficile pour les grandes entreprises qui en gèrent de nombreuses Comptes AWS. De plus, si votre système de messagerie n'autorise pas l'*adressage plus* ou le *sous-adressage* tels que définis dans [Sieve Email Filtering : Subaddress Extension (RFC 5233)](https://datatracker.ietf.org/doc/html/rfc5233), en ajoutant un signe plus (\$1) et un identifiant à la fin de la partie locale de l'adresse e-mail, par exemple `admin+123456789123@example.com` —ce modèle peut aider à surmonter cette limitation.

Ce modèle fournit une solution de vente d'adresses e-mail unique qui permet aux Compte AWS propriétaires d'associer une adresse e-mail à plusieurs Comptes AWS. Les adresses e-mail réelles des Compte AWS propriétaires sont ensuite associées à ces adresses e-mail générées dans un tableau. La solution gère tous les e-mails entrants pour les comptes de messagerie uniques, recherche le propriétaire de chaque compte, puis transmet tous les messages reçus au propriétaire.  

## Conditions préalables et limitations
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-prereqs"></a>

**Conditions préalables**
+ Accès administratif à un Compte AWS.
+ Accès à un environnement de développement. 
+ (Facultatif) La connaissance des AWS Cloud Development Kit (AWS CDK) flux de travail et du langage de programmation Python vous aidera à résoudre les problèmes ou à apporter des modifications.

**Limites**
+ Longueur totale de l'adresse e-mail vendue de 64 caractères. Pour plus de détails, consultez [CreateAccount](https://docs.aws.amazon.com/organizations/latest/APIReference/API_CreateAccount.html)la *référence de AWS Organizations l'API*.

**Versions du produit**
+ Node.js version 22.x ou ultérieure
+ Python 3.13 ou version ultérieure
+ **Paquets Python **pip** et virtualenv**
+ AWS CDK CLI version 2.1019.2 ou ultérieure
+ Docker 20.10.x ou version ultérieure

## Architecture
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-architecture"></a>

**Pile technologique cible**
+ CloudFormation empiler
+ AWS Lambda fonctions
+ Règle et ensemble de règles Amazon Simple Email Service (Amazon SES)
+ Gestion des identités et des accès AWS Rôles et politiques (IAM)
+ Politique relative aux compartiments et aux compartiments Amazon Simple Storage Service (Amazon S3)
+ AWS Key Management Service (AWS KMS) politique clé et clé
+ Rubrique et politique relatives à Amazon Simple Notification Service (Amazon SNS)
+ Table Amazon DynamoDB 

**Architecture cible**

![\[Architecture cible pour l'enregistrement de plusieurs comptes AWS avec une seule adresse e-mail\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/1be85b92-69e5-43b2-aeed-27b9509e145e/images/c7ae9d7a-d4e0-412e-97cb-0f3073e012e7.png)


Ce diagramme montre deux flux :
+ **Flux de distribution d'adresses e-mail :** dans le diagramme, le flux de distribution d'adresses e-mail (section inférieure) commence généralement par une solution de vente de comptes ou une automatisation externe, ou est invoqué manuellement. Dans la demande, une fonction Lambda est appelée avec une charge utile contenant les métadonnées nécessaires. La fonction utilise ces informations pour générer un nom de compte et une adresse e-mail uniques, les stocke dans une base de données DynamoDB et renvoie les valeurs à l'appelant. Ces valeurs peuvent ensuite être utilisées pour créer un nouveau Compte AWS (généralement en utilisant AWS Organizations).
+ **Flux de transfert d'e-mails :** Ce flux est illustré dans la partie supérieure du schéma précédent. Lorsqu'un Compte AWS est créé à l'aide de l'e-mail du compte généré à partir du flux de vente d'adresses e-mail, il AWS envoie divers e-mails, tels que la confirmation de l'enregistrement du compte et des notifications périodiques, à cette adresse e-mail. En suivant les étapes de ce modèle, vous Compte AWS configurez Amazon SES pour recevoir des e-mails pour l'ensemble du domaine. Cette solution configure les règles de transfert qui permettent à Lambda de traiter tous les e-mails entrants, de vérifier si `TO` l'adresse figure dans le tableau DynamoDB et de transférer le message à l'adresse e-mail du propriétaire du compte. L'utilisation de ce processus permet aux propriétaires de comptes d'associer plusieurs comptes à une seule adresse e-mail.

**Automatisation et mise à l'échelle**

Ce modèle utilise le AWS CDK pour automatiser entièrement le déploiement. La solution utilise des services AWS gérés qui seront (ou peuvent être configurés pour) évoluer automatiquement en fonction de vos besoins. Les fonctions Lambda peuvent nécessiter une configuration supplémentaire pour répondre à vos besoins de dimensionnement. Pour plus d'informations, consultez la section [Comprendre le dimensionnement des fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) dans la documentation Lambda.

## Outils
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-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 Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [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 Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) vous aide à créer et à contrôler des clés cryptographiques pour protéger vos données.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) vous permet d'envoyer et de recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.
+ [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.

**Outils nécessaires au déploiement**
+ Environnement de développement avec accès AWS CLI et IAM à votre Compte AWS. Pour plus de détails, consultez les liens dans la section [Ressources connexes](#register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources).  
+ Sur votre système de développement, installez les éléments suivants :
  + Outil de ligne de commande Git, disponible sur le [site Web de téléchargement de Git](https://git-scm.com/downloads).
  +  AWS CLI pour configurer les informations d'accès pour AWS CDK. Pour plus d’informations, consultez la [documentation AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).
  + Python version 3.13 ou ultérieure, disponible sur le [site de téléchargement de Python](https://www.python.org/downloads/).
  + UV pour la gestion des paquets Python. Pour les instructions d'installation, consultez le [guide d'installation UV](https://docs.astral.sh/uv/getting-started/installation/).
  + Node.js version 22.x ou ultérieure. Pour les instructions d'installation, consultez la [documentation Node.js](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs).
  + AWS CDK CLI version 2.1019.2 ou ultérieure. Pour les instructions d'installation, consultez la [AWS CDK documentation](https://docs.aws.amazon.com/cdk/v2/guide/getting-started.html#getting-started-install).
  + Docker version 20.10.x ou ultérieure. Pour les instructions d'installation, consultez la [documentation Docker](https://docs.docker.com/engine/install/).

**Code**

Le code de ce modèle est disponible dans le référentiel GitHub [Compte AWS d'e-mails d'usine](https://github.com/aws-samples/aws-account-factory-email).

## Épopées
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-epics"></a>

### Allouer un environnement de déploiement cible
<a name="allocate-a-target-deployment-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez ou créez un Compte AWS. | Identifiez une solution existante ou nouvelle Compte AWS à laquelle vous disposez d'un accès administratif complet, afin de déployer la solution de messagerie. | Administrateur AWS, administrateur du cloud | 
| Configurez un environnement de déploiement. | Configurez un environnement de déploiement facile à utiliser et configurez les dépendances en suivant ces étapes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | AWS DevOps, développeur d'applications | 

### Configurer un domaine vérifié
<a name="set-up-a-verified-domain"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Identifiez et attribuez un domaine. | La fonctionnalité de transfert d'e-mails nécessite un domaine dédié. Identifiez et attribuez un domaine ou un sous-domaine que vous pouvez vérifier auprès d'Amazon SES. Ce domaine doit être disponible pour recevoir les e-mails entrants dans l' Compte AWS endroit où la solution de transfert d'e-mails est déployée.Exigences relatives au domaine :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Administrateur cloud, administrateur réseau, administrateur DNS | 
| Vérifiez le domaine. | Vérifiez que le domaine identifié peut être utilisé pour accepter les e-mails entrants.Suivez les instructions de la section [Vérification de votre domaine pour la réception d'e-mails par Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-verification.html) dans la documentation Amazon SES. Cela nécessitera une coordination avec la personne ou l'équipe responsable des enregistrements DNS du domaine. | Développeur d'applications, AWS DevOps | 
| Configurez des enregistrements MX. | Configurez votre domaine avec des enregistrements MX qui pointent vers les points de terminaison Amazon SES de votre Compte AWS région. Pour plus d'informations, consultez la section [Publication d'un enregistrement MX pour la réception d'e-mails par Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-mx-record.html) dans la documentation Amazon SES. | Administrateur cloud, administrateur réseau, administrateur DNS | 

### Déployez la solution de distribution et de transfert d'e-mails
<a name="deploy-the-email-vending-and-forwarding-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez les valeurs par défaut dans`cdk.json`. | Modifiez certaines des valeurs par défaut dans le `cdk.json` fichier (à la racine du référentiel) afin que la solution fonctionne correctement après son déploiement.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Développeur d'applications, AWS DevOps | 
| Déployez la solution de distribution et de transfert d'e-mails. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Développeur d'applications, AWS DevOps | 
| Vérifiez que la solution a été déployée. | Vérifiez que la solution a été déployée avec succès avant de commencer les tests :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Développeur d'applications, AWS DevOps | 

### Vérifiez que la vente et le transfert d'e-mails fonctionnent comme prévu
<a name="verify-that-email-vending-and-forwarding-operate-as-expected"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez que l'API fonctionne. | Au cours de cette étape, vous soumettez des données de test à l'API de la solution et vous confirmez que la solution produit le résultat attendu et que les opérations de backend ont été effectuées comme prévu.Exécutez manuellement la fonction Lambda **Vend Email** en utilisant une entrée de test. (Pour un exemple, consultez le fichier [sample\$1vend\$1request.json](https://github.com/aws-samples/aws-account-factory-email/blob/main/src/events/sample_vend_request.json).) Pour`OwnerAddress`, utilisez une adresse e-mail valide. L'API doit renvoyer un nom de compte et un e-mail contenant les valeurs attendues. | Développeur d'applications, AWS DevOps | 
| Vérifiez que l'e-mail est transféré. | Au cours de cette étape, vous envoyez un e-mail de test via le système et vous vérifiez qu'il est transféré au destinataire attendu.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | Développeur d'applications, AWS DevOps | 

## Résolution des problèmes
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Le système ne transmet pas les e-mails comme prévu. | Vérifiez que votre configuration est correcte :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html)Après avoir vérifié la configuration de votre domaine, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Lorsque vous essayez de déployer la AWS CDK pile, vous recevez une erreur similaire à :« Erreur de format du modèle : types de ressources non reconnus »  | Dans la plupart des cas, ce message d'erreur signifie que la région que vous ciblez ne dispose pas de tous les services AWS disponibles. Si vous utilisez une EC2 instance Amazon pour déployer la solution, vous ciblez peut-être une région différente de celle dans laquelle l'instance est exécutée.Par défaut, il est AWS CDK déployé dans la région et le compte que vous avez configurés dans le AWS CLI.Solutions possibles :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses.html) | 
| Lorsque vous déployez la solution, vous recevez le message d'erreur suivant :« Échec du déploiement : erreur AwsMailFwdStack : paramètre SSM bootstrap/hnb659fds/version /cdk- introuvable. L'environnement a-t-il été amorcé ? Veuillez exécuter 'cdk bootstrap' » | Si vous n'avez jamais déployé de AWS CDK ressources dans la région Compte AWS et que vous ciblez, vous devez d'abord exécuter la `cdk bootstrap` commande comme l'indique l'erreur. Si cette erreur persiste après avoir exécuté la commande d'amorçage, vous essayez peut-être de déployer la solution dans une région différente de celle dans laquelle s'exécute votre environnement de développement.Pour résoudre ce problème, définissez la variable d'`AWS_DEFAULT_REGION`environnement ou définissez une région avec le AWS CLI avant de déployer la solution. Vous pouvez également modifier le `app.py` fichier situé à la racine du référentiel pour inclure un identifiant de compte et une région codés en dur en suivant les instructions de la [AWS CDK documentation relative aux environnements.](https://docs.aws.amazon.com/cdk/v2/guide/environments.html) | 

## Ressources connexes
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-resources"></a>
+ Pour obtenir de l'aide sur l'installation du AWS CLI, voir [Installation ou mise à jour vers la dernière version du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ Pour obtenir de l'aide sur la configuration du AWS CLI avec les informations d'identification d'accès IAM, consultez [Configuration des paramètres pour le AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
+ Pour obtenir de l'aide concernant le AWS CDK, consultez [Getting started with the AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html#getting_started_install). 

## Informations supplémentaires
<a name="register-multiple-aws-accounts-with-a-single-email-address-by-using-amazon-ses-additional"></a>

**Coûts**

Lorsque vous déployez cette solution, le Compte AWS titulaire peut encourir des coûts liés à l'utilisation des services suivants.  Il est important que vous compreniez comment ces services sont facturés afin de connaître les éventuels frais. Pour plus d'informations sur les tarifs, consultez les pages suivantes :
+ [Tarification d'Amazon SES](https://aws.amazon.com/ses/pricing/)
+ [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/)
+ [AWS KMS tarification](https://aws.amazon.com/kms/pricing/)
+ [AWS Lambda tarification](https://aws.amazon.com/lambda/pricing/)
+ [Tarification Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/)

# Configuration de la résolution DNS pour les réseaux hybrides dans un environnement AWS à compte unique
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment"></a>

*Abdullahi Olaoye, Amazon Web Services*

## Résumé
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-summary"></a>

Ce modèle décrit comment configurer une architecture de système de noms de domaine (DNS) entièrement hybride qui permet la résolution end-to-end DNS des ressources sur site, des ressources AWS et des requêtes DNS Internet, sans surcharge administrative. Le modèle décrit comment configurer les règles de transfert Amazon Route 53 Resolver qui déterminent où une requête DNS provenant d'AWS doit être envoyée, en fonction du nom de domaine. Les requêtes DNS pour les ressources locales sont transmises aux résolveurs DNS locaux. Les requêtes DNS pour les ressources AWS et les requêtes DNS Internet sont résolues par Route 53 Resolver.

Ce modèle couvre la résolution DNS hybride dans un environnement AWS à compte unique. Pour plus d'informations sur la configuration des requêtes DNS sortantes dans un environnement AWS multi-comptes, consultez le modèle [Configurer la résolution DNS pour les réseaux hybrides dans un environnement AWS multi-comptes](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.html).

## Conditions préalables et limitations
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-prereqs"></a>

**Conditions préalables**
+ Un compte AWS
+ Un cloud privé virtuel (VPC) dans votre compte AWS
+ Une connexion réseau entre l'environnement sur site et votre VPC, via le réseau privé virtuel AWS (AWS VPN) ou AWS Direct Connect
+ Adresses IP de vos résolveurs DNS locaux (accessibles depuis votre VPC)
+ Nom de domaine/sous-domaine à transférer vers des résolveurs locaux (par exemple, onprem.mydc.com)
+ Nom de domaine/sous-domaine pour la zone hébergée privée AWS (par exemple, myvpc.cloud.com)

## Architecture
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-architecture"></a>

**Pile technologique cible**
+ Zone hébergée privée Amazon Route 53
+ Amazon Route 53 Resolver
+ Amazon VPC
+ VPN AWS ou Direct Connect

**Architecture cible**

![\[Flux de travail de résolution DNS hybride dans un environnement AWS à compte unique à l'aide du résolveur Route 53.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/120dedc8-cc6c-4aa7-be11-c70a7ee80642/images/7b75f534-1adc-4a39-86d6-5c4596ff7b6a.png)


 

## Outils
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-tools"></a>
+ [Amazon Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) facilite le cloud hybride pour les entreprises clientes en permettant une résolution fluide des requêtes DNS sur l'ensemble de votre cloud hybride. Vous pouvez créer des points de terminaison DNS et des règles de transfert conditionnelles pour résoudre les espaces de noms DNS entre votre centre de données local et votre. VPCs
+ La [zone hébergée privée Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) est un conteneur qui contient des informations sur la manière dont vous souhaitez que Route 53 réponde aux requêtes DNS pour un domaine et ses sous-domaines au sein d'un ou de plusieurs VPCs que vous créez avec le service Amazon VPC.

## Épopées
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-epics"></a>

### Configuration d'une zone hébergée privée
<a name="configure-a-private-hosted-zone"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une zone hébergée privée Route 53 pour un nom de domaine réservé AWS tel que myvpc.cloud.com. | Cette zone contient les enregistrements DNS pour les ressources AWS qui doivent être résolues à partir de l'environnement sur site. Pour obtenir des instructions, consultez [la section Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) dans la documentation de Route 53. | Administrateur réseau, administrateur système | 
| Associez la zone hébergée privée à votre VPC. | Pour permettre aux ressources de votre VPC de résoudre les enregistrements DNS dans cette zone hébergée privée, vous devez associer votre VPC à la zone hébergée. Pour obtenir des instructions, consultez [la section Création d'une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) dans la documentation de Route 53. | Administrateur réseau, administrateur système | 

### Configuration des points de terminaison Route 53 Resolver
<a name="set-up-route-53-resolver-endpoints"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un point de terminaison entrant. | Route 53 Resolver utilise le point de terminaison entrant pour recevoir les requêtes DNS des résolveurs DNS locaux. Pour obtenir des instructions, consultez la section [Transférer des requêtes DNS entrantes vers votre VPCs](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) adresse dans la documentation de Route 53. Notez l'adresse IP du point de terminaison entrant. | Administrateur réseau, administrateur système | 
| Créez un point de terminaison sortant. | Route 53 Resolver utilise le point de terminaison sortant pour envoyer des requêtes DNS aux résolveurs DNS locaux. Pour obtenir des instructions, consultez la section [Transfert de requêtes DNS sortantes vers votre réseau](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-outbound-queries.html) dans la documentation de Route 53. Notez l'ID du point de terminaison de sortie. | Administrateur réseau, administrateur système | 

### Configurez une règle de transfert et associez-la à votre VPC
<a name="set-up-a-forwarding-rule-and-associate-it-with-your-vpc"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une règle de transfert pour le domaine local. | Cette règle indiquera à Route 53 Resolver de transférer toutes les requêtes DNS pour les domaines locaux (tels que onprem.mydc.com) aux résolveurs DNS locaux. Pour créer cette règle, vous aurez besoin des adresses IP des résolveurs DNS locaux et de l'ID du point de terminaison sortant pour le résolveur Route 53. Pour obtenir des instructions, consultez [la section Gestion des règles de transfert](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) dans la documentation de Route 53. | Administrateur réseau, administrateur système | 
| Associez la règle de transfert à votre VPC. | Pour que la règle de transfert prenne effet, vous devez l'associer à votre VPC. Route 53 Resolver prend ensuite la règle en compte lors de la résolution d'un domaine. Pour obtenir des instructions, consultez [la section Gestion des règles de transfert](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-rules-managing.html) dans la documentation de Route 53. | Administrateur réseau, administrateur système | 

### Configuration de résolveurs DNS locaux
<a name="configure-on-premises-dns-resolvers"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le transfert conditionnel dans les résolveurs DNS sur site.  | Pour que les requêtes DNS soient envoyées à la zone hébergée privée Route 53 depuis l'environnement local, vous devez configurer le transfert conditionnel dans les résolveurs DNS locaux. Cela indique aux résolveurs DNS de transférer toutes les requêtes DNS pour le domaine AWS (par exemple, pour myvpc.cloud.com) à l'adresse IP du point de terminaison entrant pour le résolveur Route 53. | Administrateur réseau, administrateur système | 

### Tester la résolution end-to-end DNS
<a name="test-end-to-end-dns-resolution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Testez la résolution DNS depuis AWS vers l'environnement sur site. | À partir d'un serveur du VPC, effectuez une requête DNS pour un domaine local (tel que server1.onprem.mydc.com). | Administrateur réseau, administrateur système | 
| Testez la résolution DNS depuis l'environnement sur site vers AWS. | À partir d'un serveur sur site, effectuez une résolution DNS pour un domaine AWS (tel que server1.myvpc.cloud.com). | Administrateur réseau, administrateur système | 

## Ressources connexes
<a name="set-up-dns-resolution-for-hybrid-networks-in-a-single-account-aws-environment-resources"></a>
+ [Gestion DNS centralisée du cloud hybride avec Amazon Route 53 et AWS Transit Gateway](https://aws.amazon.com/blogs/networking-and-content-delivery/centralized-dns-management-of-hybrid-cloud-with-amazon-route-53-and-aws-transit-gateway/) (blog AWS Networking & Content Delivery)
+ [Simplifiez la gestion du DNS dans un environnement multi-comptes avec Route 53 Resolver](https://aws.amazon.com/blogs/security/simplify-dns-management-in-a-multiaccount-environment-with-route-53-resolver/) (blog de sécurité AWS)
+ [Utilisation de zones hébergées privées](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) (documentation Route 53)
+ [Mise en route avec Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-getting-started.html) (documentation Route 53)

# Configurez automatiquement des robots UiPath RPA sur Amazon à l'aide EC2 d'AWS CloudFormation
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation"></a>

*Dr. Rahul Sharad Gaikwad et Tamilselvan P, Amazon Web Services*

## Résumé
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-summary"></a>

Ce modèle explique comment déployer des robots d'automatisation robotique des processus (RPA) sur des instances Amazon Elastic Compute Cloud (Amazon EC2). Il utilise un pipeline [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) pour créer une Amazon Machine Image (AMI) personnalisée. Une AMI est une image de machine virtuelle (VM) préconfigurée qui contient le système d'exploitation (OS) et le logiciel préinstallé pour déployer EC2 les instances. Ce modèle utilise des CloudFormation modèles AWS pour installer l'[édition UiPath Studio Community](https://www.uipath.com/product/studio) sur l'AMI personnalisée. UiPath est un outil RPA qui vous aide à configurer des robots pour automatiser vos tâches.

Dans le cadre de cette solution, les instances EC2 Windows sont lancées à l'aide de l'AMI de base, et l'application UiPath Studio est installée sur les instances. Le modèle utilise l'outil Microsoft System Preparation (Sysprep) pour dupliquer l'installation personnalisée de Windows. Ensuite, il supprime les informations sur l'hôte et crée une AMI finale à partir de l'instance. Vous pouvez ensuite lancer les instances à la demande en utilisant l'AMI finale avec vos propres conventions de dénomination et votre propre configuration de surveillance.


| 
| 
| Remarque : Ce modèle ne fournit aucune information sur l'utilisation des robots RPA. Pour plus d'informations, consultez la [UiPath documentation](https://docs.uipath.com/). Vous pouvez également utiliser ce modèle pour configurer d'autres applications de robots RPA en personnalisant les étapes d'installation en fonction de vos besoins. | 
| --- |

Ce modèle fournit les automatisations et les avantages suivants :
+ Déploiement et partage d'applications : vous pouvez créer Amazon EC2 AMIs pour le déploiement d'applications et les partager entre plusieurs comptes via un pipeline EC2 Image Builder, qui utilise des CloudFormation modèles AWS comme scripts d'infrastructure en tant que code (IaC).
+  EC2 Provisionnement et mise à l'échelle d'Amazon : les modèles CloudFormation iAC fournissent des séquences de noms d'ordinateurs personnalisées et automatisent les jointures Active Directory.
+ Observabilité et surveillance : le modèle configure les CloudWatch tableaux de bord Amazon pour vous aider à surveiller les EC2 indicateurs Amazon (tels que l'utilisation du processeur et du disque).
+ Avantages de la RPA pour votre entreprise : la RPA améliore la précision car les robots peuvent exécuter les tâches assignées automatiquement et de manière cohérente. La RPA augmente également la vitesse et la productivité car elle supprime les opérations sans valeur ajoutée et gère les activités répétitives.

## Conditions préalables et limitations
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-prereqs"></a>

**Prérequis**
+ Un [compte AWS](https://aws.amazon.com/free/) actif
+ [Autorisations AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) pour le déploiement de modèles CloudFormation 
+ [Politiques IAM](https://docs.aws.amazon.com/imagebuilder/latest/userguide/cross-account-dist.html) pour configurer la distribution d'AMI entre comptes avec Image Builder EC2 

## Architecture
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-architecture"></a>

![\[Architecture cible pour configurer les robots RPA sur Amazon EC2\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/5555a62d-91d4-4e81-9961-ff89faedd6ad/images/1893d2d3-8912-4473-adf1-6633b5badcd9.png)


1. L'administrateur fournit l'AMI Windows de base dans le `ec2-image-builder.yaml` fichier et déploie la pile dans la CloudFormation console.

1. La CloudFormation pile déploie le pipeline EC2 Image Builder, qui inclut les ressources suivantes :
   + `Ec2ImageInfraConfiguration`
   + `Ec2ImageComponent`
   + `Ec2ImageRecipe`
   + `Ec2AMI`

1. Le pipeline EC2 Image Builder lance une EC2 instance Windows temporaire à l'aide de l'AMI de base et installe les composants requis (dans ce cas, UiPath Studio).

1.  EC2 Image Builder supprime toutes les informations sur l'hôte et crée une AMI à partir de Windows Server.

1. Vous mettez à jour le `ec2-provisioning yaml` fichier avec l'AMI personnalisée et lancez un certain nombre d' EC2 instances en fonction de vos besoins.

1. Vous déployez la macro Count à l'aide d'un CloudFormation modèle. Cette macro fournit une propriété **Count** pour les CloudFormation ressources afin que vous puissiez facilement spécifier plusieurs ressources du même type.

1. Vous mettez à jour le nom de la macro dans le CloudFormation `ec2-provisioning.yaml` fichier et vous déployez la pile.

1. L'administrateur met à jour le `ec2-provisioning.yaml` fichier en fonction des besoins et lance la pile.

1. Le modèle déploie EC2 des instances avec l'application UiPath Studio.

## Outils
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-tools"></a>

**Services AWS**
+ [AWS](https://aws.amazon.com/cloudformation/) vous CloudFormation aide à modéliser et à gérer les ressources de l'infrastructure de manière automatisée et sécurisée.
+ [Amazon](https://aws.amazon.com/cloudwatch/) vous CloudWatch aide à observer et à surveiller les ressources et les applications sur AWS, sur site et sur d'autres clouds.
+ [Amazon Elastic Compute Cloud (Amazon EC2](https://aws.amazon.com/ec2/)) fournit une capacité de calcul sécurisée et redimensionnable dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [EC2 Image Builder](https://aws.amazon.com/image-builder/) simplifie la création, le test et le déploiement de machines virtuelles et d'images de conteneurs à utiliser sur AWS ou sur site.
+ [Amazon](https://aws.amazon.com/eventbridge/) vous EventBridge aide à créer des applications pilotées par des événements à grande échelle sur AWS, sur des systèmes existants ou sur des applications SaaS (Software as a Service).
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous permet de contrôler en toute sécurité l'accès aux ressources AWS. Avec IAM, vous pouvez gérer de manière centralisée les autorisations qui contrôlent les ressources AWS auxquelles les utilisateurs peuvent accéder. Vous pouvez utiliser IAM pour contrôler les personnes qui s’authentifient (sont connectées) et sont autorisées (disposent d’autorisations) à utiliser des ressources.
+ [AWS Lambda](https://aws.amazon.com/lambda/) est un service de calcul sans serveur piloté par les événements qui vous permet d'exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans provisionner ni gérer de serveurs. Vous pouvez appeler des fonctions Lambda à partir de plus de 200 services AWS et applications SaaS, et ne payer que pour ce que vous utilisez.
+ [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) 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.
+ [AWS Systems Manager Agent (SSM Agent)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) aide Systems Manager à mettre à jour, gérer et configurer des EC2 instances, des appareils périphériques, des serveurs sur site et des machines virtuelles ()VMs.

**Référentiels de code**

Le code de ce modèle est disponible dans la [configuration du bot GitHub UiPath RPA à l'aide CloudFormation](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation) du référentiel. Le modèle utilise également une macro disponible dans le [référentiel AWS CloudFormation Macros](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count).

## Bonnes pratiques
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-best-practices"></a>
+ AWS publie un nouveau [Windows AMIs](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-ami-version-history.html) chaque mois. Ils contiennent les derniers correctifs, pilotes et agents de lancement du système d'exploitation. Nous vous recommandons d'utiliser l'AMI la plus récente lorsque vous lancez de nouvelles instances ou lorsque vous créez vos propres images personnalisées.
+ Appliquez tous les correctifs de sécurité Windows ou Linux disponibles lors de la création d'images.

## Épopées
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-epics"></a>

### Déployer un pipeline d'images pour l'image de base
<a name="deploy-an-image-pipeline-for-the-base-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez un pipeline EC2 Image Builder. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Afficher les paramètres EC2 d'Image Builder. | Les paramètres EC2 d'Image Builder incluent la configuration de l'infrastructure, les paramètres de distribution et les paramètres d'analyse de sécurité. Pour consulter les paramètres, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Il est recommandé d'apporter des mises à jour à EC2 Image Builder uniquement via le CloudFormation modèle. | AWS DevOps | 
| Affichez le pipeline d'images. | Pour afficher le pipeline d'images déployé, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Afficher les journaux d'Image Builder. | EC2 Les journaux Image Builder sont agrégés en groupes de CloudWatch journaux. Pour consulter les journaux, procédez comme suit CloudWatch :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)EC2 Les journaux Image Builder sont également stockés dans un compartiment S3. Pour consulter les journaux contenus dans le compartiment :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Téléchargez le UiPath fichier dans un compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Déployez et testez la macro Count
<a name="deploy-and-test-the-count-macro"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez la macro Count. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Si vous souhaitez utiliser la console, suivez les instructions de l'épopée précédente ou de la [CloudFormation documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).  | DevOps ingénieur | 
| Testez la macro Count. | Pour tester les fonctionnalités de la macro, essayez de lancer l'exemple de modèle fourni avec la macro. <pre>aws cloudformation deploy \<br />    --stack-name Count-test \<br />    --template-file test.yaml \<br />    --capabilities CAPABILITY_IAM</pre> | DevOps ingénieur | 

### Déployez la CloudFormation pile pour approvisionner les instances avec l'image personnalisée
<a name="deploy-the-cloudformation-stack-to-provision-instances-with-the-custom-image"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le modèle de EC2 provisionnement Amazon. | Pour déployer EC2 Image Pipeline à l'aide de CloudFormation :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Consultez les EC2 paramètres Amazon. | Les EC2 paramètres Amazon incluent la sécurité, la mise en réseau, le stockage, les vérifications d'état, la surveillance et les configurations des balises. Pour consulter ces configurations, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Consultez le CloudWatch tableau de bord. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)Une fois que vous avez approvisionné la pile, il faut du temps pour remplir le tableau de bord avec des métriques.Le tableau de bord fournit les indicateurs suivants : `CPUUtilization` `DiskUtilization``MemoryUtilization`,,`NetworkIn`,`NetworkOut`,`StatusCheckFailed`. | AWS DevOps | 
| Consultez les métriques personnalisées relatives à l'utilisation de la mémoire et du disque.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Afficher les alarmes relatives à l'utilisation de la mémoire et du disque.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 
| Vérifiez la règle du cycle de vie des instantanés. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html) | AWS DevOps | 

### Supprimer l'environnement (facultatif)
<a name="delete-the-environment-optional"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les piles. | Lorsque votre PoC ou votre projet pilote sera terminé, nous vous recommandons de supprimer les piles que vous avez créées pour vous assurer que ces ressources ne vous seront pas facturées.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation.html)L'opération de suppression de la pile ne peut pas être arrêtée une fois qu'elle a commencé. La pile passe à l’état `DELETE_IN_PROGRESS`.Si la suppression échoue, la pile sera dans `DELETE_FAILED` cet état. Pour trouver des solutions, consultez la section [Supprimer les échecs de pile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-delete-stack-fails) dans la documentation de CloudFormation résolution des problèmes d'AWS.Pour plus d'informations sur la protection contre la suppression accidentelle de piles, consultez [la section Protection d'une pile contre la suppression](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html) dans la CloudFormation documentation AWS. | AWS DevOps | 

## Résolution des problèmes
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Lorsque vous déployez le modèle de EC2 provisioning Amazon, le message d'erreur suivant s'affiche : *Réponse mal formée reçue de la part de transform 123xxxx* : :Count. | Il s'agit d'un problème connu. (Consultez la solution personnalisée et le PR dans le [référentiel de CloudFormation macros AWS](https://github.com/aws-cloudformation/aws-cloudformation-macros/pull/20).)[Pour résoudre ce problème, ouvrez la console AWS Lambda et mettez-la à jour `index.py` avec le contenu du GitHub référentiel.](https://raw.githubusercontent.com/aws-cloudformation/aws-cloudformation-macros/f1629c96477dcd87278814d4063c37877602c0c8/Count/src/index.py)  | 

## Ressources connexes
<a name="set-up-uipath-rpa-bots-automatically-on-amazon-ec2-by-using-aws-cloudformation-resources"></a>

**GitHub référentiels**
+ [UiPath Configuration du bot RPA à l'aide de CloudFormation](https://github.com/aws-samples/uipath-rpa-setup-ec2-windows-ami-cloudformation)
+ [ CloudFormation Macro de comptage](https://github.com/aws-cloudformation/aws-cloudformation-macros/tree/master/Count)

**Références AWS**
+ [Création d'une pile sur la CloudFormation console AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation documentation)
+ [Résolution des problèmes CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation documentation)
+ [Surveillez les métriques de mémoire et de disque pour EC2 les instances Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html) ( EC2 documentation Amazon)
+ [Comment puis-je utiliser l' CloudWatch agent pour consulter les mesures de Performance Monitor sur un serveur Windows ?](https://repost.aws/knowledge-center/cloudwatch-performance-monitor-windows) (AWS Re:Publier un article)

**Références supplémentaires**
+ [UiPath documentation](https://docs.uipath.com/)
+ [Configuration du nom d'hôte dans une SysPreped AMI](https://blog.brianbeach.com/2014/07/setting-hostname-in-syspreped-ami.html) (article de blog de Brian Beach)
+ [Comment faire en sorte que Cloudformation retraite un modèle à l'aide d'une macro lorsque les paramètres changent ?](https://stackoverflow.com/questions/59828989/how-do-i-make-cloudformation-reprocess-a-template-using-a-macro-when-parameters) (Stack Overflow)

# Configuration d'une PeopleSoft architecture à haute disponibilité sur AWS
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws"></a>

*Ramanathan Muralidhar, Amazon Web Services*

## Résumé
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-summary"></a>

Lorsque vous migrez vos PeopleSoft charges de travail vers AWS, la résilience est un objectif important. Cela garantit que votre PeopleSoft application est toujours hautement disponible et capable de se remettre rapidement en cas de panne.

Ce modèle fournit une architecture pour vos PeopleSoft applications sur AWS afin de garantir une haute disponibilité (HA) au niveau du réseau, de l'application et de la base de données. Il utilise une base de données [Amazon Relational Database Service (Amazon RDS](https://aws.amazon.com/rds/)) pour Oracle ou Amazon RDS for SQL Server pour le niveau de base de données. Cette architecture inclut également des services AWS tels qu'[Amazon Route 53](https://aws.amazon.com/route53/), les instances Linux [Amazon Elastic Compute Cloud (Amazon EC2](https://aws.amazon.com/ec2/))[, Amazon Elastic Block Storage (Amazon EBS), Amazon](https://aws.amazon.com/ebs/) Elastic [File System (Amazon EFS](https://aws.amazon.com/efs/)) et un [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer). Elle est évolutive.

[Oracle PeopleSoft](https://www.oracle.com/applications/peoplesoft/) fournit une suite d'outils et d'applications pour la gestion des effectifs et d'autres opérations commerciales.

## Conditions préalables et limitations
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un PeopleSoft environnement doté des licences nécessaires pour le configurer sur AWS
+ Un cloud privé virtuel (VPC) configuré dans votre compte AWS avec les ressources suivantes :
  + Au moins deux zones de disponibilité
  + Un sous-réseau public et trois sous-réseaux privés dans chaque zone de disponibilité
  + Une passerelle NAT et une passerelle Internet
  + Tables de routage pour chaque sous-réseau afin d'acheminer le trafic
  + Listes de contrôle d'accès réseau (réseau ACLs) et groupes de sécurité définis pour garantir la sécurité de l' PeopleSoft application conformément aux normes de votre entreprise

**Limites**
+ Ce modèle fournit une solution de haute disponibilité (HA). Il ne prend pas en charge les scénarios de reprise après sinistre (DR). Dans les rares cas où l'ensemble de la région AWS pour l'implémentation HA tombe en panne, l'application deviendra indisponible.

**Versions du produit**
+ PeopleSoft applications exécutant PeopleTools 8.52 et versions ultérieures

## Architecture
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-architecture"></a>

**Architecture cible**

Les interruptions ou pannes de votre application de PeopleSoft production ont un impact sur la disponibilité de l'application et perturbent considérablement votre activité.

Nous vous recommandons de concevoir votre application PeopleSoft de production de manière à ce qu'elle soit toujours hautement disponible. Vous pouvez y parvenir en éliminant les points de défaillance uniques, en ajoutant des points de croisement ou de basculement fiables et en détectant les défaillances. Le schéma suivant illustre une architecture HA pour PeopleSoft AWS.

![\[Architecture à haute disponibilité PeopleSoft pour AWS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/0db96376-dadb-4545-b130-ebbe64acd4e9/images/5d585a8e-320a-495d-a049-97171633e90f.png)


Ce déploiement d'architecture utilise Amazon RDS for Oracle comme base PeopleSoft de données et des instances EC2 exécutées sous Red Hat Enterprise Linux (RHEL). Vous pouvez également utiliser Amazon RDS for SQL Server comme base de données Peoplesoft.

Cette architecture contient les composants suivants : 
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est utilisé comme serveur de noms de domaine (DNS) pour acheminer les demandes depuis Internet vers l' PeopleSoft application.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) vous aide à vous protéger contre les exploits Web courants et les robots susceptibles d'affecter la disponibilité, de compromettre la sécurité ou de consommer des ressources excessives. [AWS Shield Advanced](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) (non illustré) fournit une protection beaucoup plus étendue.
+ Un [Application Load Balancer équilibre la charge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) du trafic HTTP et HTTPS grâce à un routage avancé des requêtes ciblant les serveurs Web.
+ Les serveurs Web, les serveurs d'applications, les serveurs de planificateur de processus et les serveurs Elasticsearch qui prennent en charge l' PeopleSoft application s'exécutent dans plusieurs zones de disponibilité et utilisent Amazon EC2 Auto [Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html).
+ La base de données utilisée par l' PeopleSoft application s'exécute sur [Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) dans une configuration multi-AZ.
+ Le partage de fichiers utilisé par l' PeopleSoft application est configuré sur [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) et est utilisé pour accéder aux fichiers entre les instances.
+ Les [Amazon Machine Images (AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)) sont utilisées par Amazon EC2 Auto Scaling pour garantir PeopleSoft que les composants sont clonés rapidement en cas de besoin.
+ Les [passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) connectent les instances d'un sous-réseau privé à des services extérieurs à votre VPC et garantissent que les services externes ne peuvent pas établir de connexion avec ces instances.
+ La [passerelle Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) est un composant VPC à échelle horizontale, redondant et hautement disponible qui permet la communication entre votre VPC et Internet.
+ Les hôtes bastions du sous-réseau public permettent d'accéder aux serveurs du sous-réseau privé à partir d'un réseau externe, tel qu'Internet ou un réseau local. Les hôtes Bastion fournissent un accès contrôlé et sécurisé aux serveurs des sous-réseaux privés.

**Détails de l'architecture**

La PeopleSoft base de données est hébergée dans une base de données Amazon RDS for Oracle (ou Amazon RDS for SQL Server) dans une configuration multi-AZ. La [fonctionnalité Amazon RDS Multi-AZ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html) reproduit les mises à jour de base de données sur deux zones de disponibilité afin d'accroître la durabilité et la disponibilité. Amazon RDS bascule automatiquement vers la base de données de secours pour les opérations de maintenance planifiées et les interruptions imprévues.

Le PeopleSoft Web et le niveau intermédiaire sont installés sur les instances EC2. Ces instances sont réparties sur plusieurs zones de disponibilité et liées par un [groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html). Cela garantit que ces composants sont toujours hautement disponibles. Un nombre minimum d'instances requises est maintenu afin de garantir que l'application est toujours disponible et qu'elle peut évoluer en cas de besoin.

Nous vous recommandons d'utiliser un type d'instance EC2 de génération actuelle pour les instances OEM EC2. Les types d'instances de la génération actuelle, tels que [les instances basées sur le système AWS Nitro](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances), prennent en charge les machines virtuelles matérielles (HVMs). Les HVM AMIs sont nécessaires pour tirer parti d'[une mise en réseau améliorée](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html), et ils offrent également une sécurité accrue. Les instances EC2 qui font partie de chaque groupe Auto Scaling utilisent leur propre AMI lors du remplacement ou du dimensionnement des instances. Nous vous recommandons de sélectionner les types d'instances EC2 en fonction de la charge que vous souhaitez que votre PeopleSoft application gère et des valeurs minimales recommandées par Oracle pour votre PeopleSoft application et votre PeopleTools version. Pour plus d'informations sur les exigences matérielles et logicielles, consultez le [site Web de support d'Oracle](https://support.oracle.com).

Le PeopleSoft Web et le niveau intermédiaire partagent un montage Amazon EFS pour partager les rapports, les fichiers de données et (si nécessaire) le `PS_HOME` répertoire. Amazon EFS est configuré avec des cibles de montage dans chaque zone de disponibilité pour des raisons de performances et de coûts.

Un Application Load Balancer est configuré pour prendre en charge le trafic qui accède à l' PeopleSoft application et pour équilibrer la charge du trafic entre les serveurs Web des différentes zones de disponibilité. Un Application Load Balancer est un périphérique réseau qui fournit une haute disponibilité dans au moins deux zones de disponibilité. Les serveurs Web distribuent le trafic aux différents serveurs d'applications en utilisant une configuration d'équilibrage de charge. L'équilibrage de charge entre le serveur Web et le serveur d'applications garantit une répartition uniforme de la charge entre les instances et permet d'éviter les blocages et les interruptions de service dus à des instances surchargées.

Amazon Route 53 est utilisé comme service DNS pour acheminer le trafic vers l'Application Load Balancer depuis Internet. Route 53 est un service Web DNS hautement disponible et évolutif.

**Détails du HA**
+ Bases de données : la fonctionnalité multi-AZ d'Amazon RDS gère deux bases de données dans plusieurs zones de disponibilité avec réplication synchrone. Cela crée un environnement hautement disponible avec basculement automatique. Amazon RDS détecte les événements de basculement et lance un basculement automatique lorsque ces événements se produisent. Vous pouvez également lancer un basculement manuel via l'API Amazon RDS. Pour une explication détaillée, consultez le billet de blog [Amazon RDS Under The Hood : Multi-AZ](https://aws.amazon.com/blogs/database/amazon-rds-under-the-hood-multi-az/). Le basculement est fluide et l'application se reconnecte automatiquement à la base de données lorsque cela se produit. Cependant, toute tâche du planificateur de processus pendant le basculement génère des erreurs et doit être soumise à nouveau.
+ PeopleSoft serveurs d'applications : les serveurs d'applications sont répartis sur plusieurs zones de disponibilité et un groupe Auto Scaling est défini pour eux. En cas de défaillance d'une instance, le groupe Auto Scaling la remplace immédiatement par une instance saine clonée à partir de l'AMI du modèle de serveur d'applications. Plus précisément, le *jolt pooling* est activé. Ainsi, lorsqu'une instance de serveur d'applications tombe en panne, les sessions basculent automatiquement vers un autre serveur d'applications, et le groupe Auto Scaling lance automatiquement une autre instance, ouvre le serveur d'applications et l'enregistre dans le montage Amazon EFS. Le serveur d'applications nouvellement créé est automatiquement ajouté aux serveurs Web à l'aide du `PSSTRSETUP.SH` script sur les serveurs Web. Cela garantit que le serveur d'applications est toujours hautement disponible et qu'il se rétablit rapidement en cas de panne.
+ Planificateurs de processus : les serveurs des planificateurs de processus sont répartis sur plusieurs zones de disponibilité et un groupe Auto Scaling leur est défini. En cas de défaillance d'une instance, le groupe Auto Scaling la remplace immédiatement par une instance saine clonée à partir de l'AMI du modèle de serveur de planificateur de processus. Plus précisément, lorsqu'une instance du planificateur de processus tombe en panne, le groupe Auto Scaling lance automatiquement une autre instance et ouvre le planificateur de processus. Toutes les tâches en cours d'exécution au moment de l'échec de l'instance doivent être soumises à nouveau. Cela garantit que le planificateur de processus est toujours hautement disponible et qu'il se rétablit rapidement en cas de panne.
+ Serveurs Elasticsearch : un groupe Auto Scaling est défini pour les serveurs Elasticsearch. En cas de défaillance d'une instance, le groupe Auto Scaling la remplace immédiatement par une instance saine clonée à partir de l'AMI du modèle de serveur Elasticsearch. Plus précisément, lorsqu'une instance Elasticsearch tombe en panne, l'Application Load Balancer qui répond aux demandes détecte la défaillance et arrête de lui envoyer du trafic. Le groupe Auto Scaling lance automatiquement une autre instance et fait apparaître l'instance Elasticsearch. Lorsque l'instance Elasticsearch est sauvegardée, l'Application Load Balancer détecte qu'elle est saine et recommence à lui envoyer des requêtes. Cela garantit que le serveur Elasticsearch est toujours hautement disponible et qu'il se rétablit rapidement en cas de panne.
+ Serveurs Web : un groupe Auto Scaling est défini pour les serveurs Web. En cas de défaillance d'une instance, le groupe Auto Scaling la remplace immédiatement par une instance saine clonée à partir de l'AMI du modèle de serveur Web. Plus précisément, lorsqu'une instance de serveur Web tombe en panne, l'Application Load Balancer qui répond aux demandes détecte la défaillance et arrête de lui envoyer du trafic. Le groupe Auto Scaling lance automatiquement une autre instance et fait apparaître l'instance du serveur Web. Lorsque l'instance du serveur Web est sauvegardée, l'Application Load Balancer détecte qu'elle est saine et recommence à lui envoyer des requêtes. Cela garantit que le serveur Web est toujours hautement disponible et qu'il se rétablit rapidement en cas de panne.

## Outils
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-tools"></a>

**Services AWS**
+ [Les équilibreurs de charge des applications](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) distribuent le trafic applicatif entrant sur plusieurs cibles, telles que les instances EC2, dans plusieurs zones de disponibilité.
+ [Amazon Elastic Block Store (Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)) fournit des volumes de stockage au niveau des blocs à utiliser avec les instances Amazon Elastic Compute Cloud (Amazon EC2).
+ [Amazon Elastic Compute Cloud (Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) vous aide à créer et à configurer des systèmes de fichiers partagés dans le cloud AWS.
+ [Amazon Relational Database Service (Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)) vous aide à configurer, exploiter et dimensionner une base de données relationnelle dans le cloud AWS.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est un service Web DNS hautement disponible et évolutif.

## Bonnes pratiques
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-best-practices"></a>

**Bonnes pratiques opérationnelles**
+ Lorsque vous utilisez PeopleSoft AWS, utilisez Route 53 pour acheminer le trafic depuis Internet et localement. Utilisez l'[option failover](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-configuring.html) pour rediriger le trafic vers le site de reprise après sinistre (DR) si l'instance de base de données principale n'est pas disponible.
+ Utilisez toujours un Application Load Balancer devant l' PeopleSoft environnement. Cela garantit l'équilibrage de charge du trafic vers les serveurs Web de manière sécurisée.
+ Dans les paramètres du groupe cible Application Load Balancer, assurez-vous que l'[adhérence est activée](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html) à l'aide d'un cookie généré par l'équilibreur de charge.
**Note**  
Il se peut que vous deviez utiliser un cookie basé sur une application si vous utilisez l'authentification unique (SSO) externe. Cela garantit la cohérence des connexions entre les serveurs Web et les serveurs d'applications.
+ Pour une application PeopleSoft de production, le délai d'inactivité de l'Application Load Balancer doit correspondre à celui défini dans le profil Web que vous utilisez. Cela empêche les sessions utilisateur d'expirer au niveau de la couche d'équilibrage de charge.
+ Pour une application PeopleSoft de production, définissez le taux de [recyclage du serveur d'applications sur](https://docs.oracle.com/cd/F28299_01/pt857pbr3/eng/pt/tsvt/concept_PSAPPSRVOptions-c07f06.html?pli=ul_d96e90_tsvt) une valeur qui minimise les fuites de mémoire.
+ Si vous utilisez une base de données Amazon RDS pour votre application de PeopleSoft production, comme décrit dans ce modèle, exécutez-la au [format Multi-AZ pour une haute disponibilité](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html).
+ Si votre base de données s'exécute sur une instance EC2 pour votre application de PeopleSoft production, assurez-vous qu'une [base de données de secours s'exécute sur une autre zone de disponibilité](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-oracle-database/ec2-oracle.html#ec2-oracle-ha) pour garantir une haute disponibilité.
+ Pour la reprise après sinistre, assurez-vous que votre base de données Amazon RDS ou instance EC2 dispose d'une instance de secours configurée dans une région AWS distincte de celle de la base de données de production. Cela garantit qu'en cas de sinistre dans la région, vous pouvez transférer l'application vers une autre région.
+ Pour la [reprise après sinistre, utilisez Amazon Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) pour configurer les composants au niveau de l'application dans une région distincte de celle des composants de production. Cela garantit qu'en cas de sinistre dans la région, vous pouvez transférer l'application vers une autre région.
+ Utilisez Amazon EFS (pour les I/O exigences modérées) ou [Amazon FSx](https://aws.amazon.com/fsx/) (pour les I/O exigences élevées) pour stocker vos PeopleSoft rapports, pièces jointes et fichiers de données. Cela garantit que le contenu est stocké dans un emplacement central et qu'il est accessible depuis n'importe quel endroit de l'infrastructure.
+ Utilisez [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) (de base et détaillé) pour surveiller les ressources du cloud AWS utilisées par votre PeopleSoft application en temps quasi réel. Cela garantit que vous êtes immédiatement alerté des problèmes et que vous pouvez les résoudre rapidement avant qu'ils n'affectent la disponibilité de l'environnement.
+ Si vous utilisez une base de données Amazon RDS comme base de données, utilisez [Enhanced Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html). PeopleSoft Cette fonctionnalité donne accès à plus de 50 métriques, notamment le processeur, la mémoire et le système de fichiersI/O, and disk I/O.
+ Utilisez [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) pour surveiller les appels d'API sur les ressources AWS utilisées par votre PeopleSoft application. Cela vous permet d'effectuer une analyse de sécurité, un suivi des modifications des ressources et un audit de conformité.

**Bonnes pratiques de sécurité**
+ [Pour protéger votre PeopleSoft application contre les exploits courants tels que l'injection SQL ou le cross-site scripting (XSS), utilisez AWS WAF.](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) Envisagez d'utiliser [AWS Shield Advanced](https://docs.aws.amazon.com/waf/latest/developerguide/shield-chapter.html) pour des services de détection et d'atténuation personnalisés.
+ Ajoutez une règle à l'Application Load Balancer pour rediriger automatiquement le trafic du protocole HTTP vers le protocole HTTPS afin de sécuriser votre PeopleSoft application.
+ Configurez un groupe de sécurité distinct pour l'Application Load Balancer. Ce groupe de sécurité doit autoriser uniquement le trafic HTTPS/HTTP entrant et aucun trafic sortant. Cela garantit que seul le trafic prévu est autorisé et contribue à sécuriser votre application.
+ Utilisez des sous-réseaux privés pour les serveurs d'applications, les serveurs Web et les bases de données, et utilisez des [passerelles NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) pour le trafic Internet sortant. Cela garantit que les serveurs qui prennent en charge l'application ne sont pas accessibles au public, tout en fournissant un accès public uniquement aux serveurs qui en ont besoin.
+ Utilisez différents VPCs pour exécuter vos environnements PeopleSoft de production et de non-production. Utilisez [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/), le [peering VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html), le [réseau ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) et les [groupes de sécurité](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) pour contrôler le flux de trafic entre les [VPC](https://aws.amazon.com/vpc/) et, si nécessaire, votre centre de données sur site.
+ Respectez le principe du moindre privilège. N'accordez l'accès aux ressources AWS utilisées par l' PeopleSoft application qu'aux utilisateurs qui en ont absolument besoin. Accordez uniquement les privilèges minimaux requis pour effectuer une tâche. Pour plus d'informations, consultez le [pilier de sécurité](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_least_privileges.html) d'AWS Well-Architected Framework.
+ Dans la mesure du possible, utilisez [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) pour accéder aux instances EC2 utilisées par l' PeopleSoft application.

**Bonnes pratiques en matière de fiabilité**
+ Lorsque vous utilisez un Application Load Balancer, enregistrez une cible unique pour chaque zone de disponibilité activée. Cela rend l'équilibreur de charge le plus efficace possible.
+ Nous vous recommandons d'utiliser trois URL distinctes URLs pour chaque environnement de PeopleSoft production : une URL pour accéder à l'application, une pour servir le courtier d'intégration et une pour consulter les rapports. Dans la mesure du possible, chaque URL doit disposer de ses propres serveurs Web et serveurs d'applications dédiés. Cette conception contribue à renforcer la sécurité de votre PeopleSoft application, car chaque URL possède une fonctionnalité distincte et un accès contrôlé. Cela minimise également l'ampleur de l'impact en cas de défaillance des services sous-jacents.
+ Nous vous recommandons de configurer [des contrôles de santé sur les groupes cibles de l'équilibreur de charge](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) pour votre PeopleSoft application. Les contrôles de santé doivent être effectués sur les serveurs Web plutôt que sur les instances EC2 exécutant ces serveurs. Cela garantit que si le serveur Web tombe en panne ou si l'instance EC2 qui héberge le serveur Web tombe en panne, l'Application Load Balancer reflète ces informations avec précision.
+ Pour une application PeopleSoft de production, nous vous recommandons de répartir les serveurs Web sur au moins trois zones de disponibilité. Cela garantit que l' PeopleSoft application est toujours hautement disponible même si l'une des zones de disponibilité tombe en panne.
+ Pour une application PeopleSoft de production, activez jolt pooling (`joltPooling=true`). Cela garantit que votre application bascule vers un autre serveur d'applications si un serveur est en panne pour des raisons de correction ou en raison d'une défaillance d'une machine virtuelle.
+ Pour une application PeopleSoft de production, définissez cette `DynamicConfigReload ` valeur sur 1. Ce paramètre est pris en charge dans les PeopleTools versions 8.52 et ultérieures. Il ajoute de nouveaux serveurs d'applications au serveur Web de manière dynamique, sans redémarrer les serveurs.
+ Pour minimiser les temps d'arrêt lorsque vous appliquez des PeopleTools correctifs, utilisez la méthode de blue/green déploiement pour les configurations de lancement de votre groupe Auto Scaling pour le Web et les serveurs d'applications. Pour plus d'informations, consultez le livre blanc [Présentation des options de déploiement sur AWS](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html).
+ Utilisez [AWS Backup pour sauvegarder](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) votre PeopleSoft application sur AWS. AWS Backup est un service rentable, entièrement géré et basé sur des politiques qui simplifie la protection des données à grande échelle.

**Bonnes pratiques en matière de performances**
+ Mettez fin au protocole SSL au niveau de l'Application Load Balancer pour optimiser les performances de l' PeopleSoft environnement, sauf si votre entreprise a besoin d'un trafic chiffré dans l'ensemble de l'environnement.
+ Créez des [points de terminaison VPC d'interface pour les](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) services AWS tels qu'[Amazon Simple Notification Service (Amazon SNS) [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)afin](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) que le trafic soit toujours interne. Cette solution est rentable et contribue à la sécurité de votre application.

**Bonnes pratiques en matière d'optimisation des coûts**
+ Marquez toutes les ressources utilisées par votre PeopleSoft environnement et activez les [balises de répartition des coûts](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html). Ces balises vous aident à visualiser et à gérer les coûts de vos ressources.
+ Pour une application PeopleSoft de production, configurez des groupes Auto Scaling pour les serveurs Web et les serveurs d'applications. Cela permet de maintenir un nombre minimal de serveurs Web et d'applications pour prendre en charge votre application. Vous pouvez utiliser les [politiques de groupe Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html) pour augmenter ou diminuer les serveurs selon les besoins.
+ Utilisez les [alarmes de facturation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html) pour recevoir des alertes lorsque les coûts dépassent le seuil budgétaire que vous spécifiez.

**Bonnes pratiques en matière de durabilité**
+ Utilisez l'[infrastructure en tant que code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (IaC) pour gérer vos PeopleSoft environnements. Cela vous permet de créer des environnements cohérents et de garder le contrôle des modifications.

## Épopées
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-epics"></a>

### Migrez votre PeopleSoft base de données vers Amazon RDS
<a name="migrate-your-peoplesoft-database-to-amazon-rds"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe de sous-réseaux de base de données. | Sur la [console Amazon RDS](https://console.aws.amazon.com/rds/), dans le volet de navigation, choisissez **Subnet groups**, puis créez un groupe de sous-réseaux de base de données Amazon RDS avec des sous-réseaux dans plusieurs zones de disponibilité. Cela est nécessaire pour que la base de données Amazon RDS s'exécute dans une configuration multi-AZ. | Administrateur du cloud | 
| Créez la base de données Amazon RDS. | Créez une base de données Amazon RDS dans une zone de disponibilité de la région AWS que vous avez sélectionnée pour l'environnement PeopleSoft HA. Lorsque vous créez la base de données Amazon RDS, assurez-vous de sélectionner l'option Multi-AZ (**Créer une instance de secours**) et le groupe de sous-réseaux de base de données que vous avez créé à l'étape précédente. Pour plus d'informations, consultez la [documentation Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html). | Administrateur cloud, administrateur de base de données Oracle | 
| Migrez votre PeopleSoft base de données vers Amazon RDS. | Migrez votre PeopleSoft base de données existante vers la base de données Amazon RDS à l'aide d'AWS Database Migration Service (AWS DMS). Pour plus d'informations, consultez la [documentation AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) et le billet de blog AWS intitulé [Migration de bases de données Oracle avec un temps d'arrêt quasi nul à l'aide d'AWS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/) DMS. | Administrateur cloud, PeopleSoft DBA | 

### Configuration de votre système de fichiers Amazon EFS
<a name="set-up-your-amazon-efs-file-system"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un système de fichiers. | Sur la [console Amazon EFS](https://console.aws.amazon.com/efs/), créez un système de fichiers et montez des cibles pour chaque zone de disponibilité. Pour obtenir des instructions, consultez la [documentation Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html#creating-using-fs-part1-console). Lorsque le système de fichiers a été créé, notez son nom DNS. Vous utiliserez ces informations lors du montage du système de fichiers. | Administrateur du cloud | 

### Configurez votre PeopleSoft application et votre système de fichiers
<a name="set-up-your-peoplesoft-application-and-file-system"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancer une instance EC2. | Lancez une instance EC2 pour votre PeopleSoft application. Pour obtenir des instructions, consultez la [documentation Amazon EC2.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html#liw-quickly-launch-instance)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Installez PeopleSoft sur l'instance. | Installez votre PeopleSoft application et PeopleTools sur l'instance EC2 que vous avez créée. Pour obtenir des instructions, consultez la [documentation Oracle](https://docs.oracle.com). | Administrateur du cloud, PeopleSoft administrateur | 
| Créez le serveur d'applications. | Créez le serveur d'applications pour le modèle d'AMI et assurez-vous qu'il se connecte correctement à la base de données Amazon RDS. | Administrateur du cloud, PeopleSoft administrateur | 
| Montage d’un système de fichiers Amazon EFS | Connectez-vous à l'instance EC2 en tant qu'utilisateur root et exécutez les commandes suivantes pour monter le système de fichiers Amazon EFS dans un dossier appelé `PSFTMNT` sur le serveur.<pre>sudo su –<br />mkdir /psftmnt<br />cat /etc/fstab</pre>Ajoutez la ligne suivante au `/etc/fstab` fichier. Utilisez le nom DNS que vous avez indiqué lors de la création du système de fichiers.<pre>fs-09e064308f1145388.efs.us-east-1.amazonaws.com:/ /psftmnt nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0<br />mount -a</pre> | Administrateur du cloud, PeopleSoft administrateur | 
| Vérifiez les autorisations. | Assurez-vous que le `PSFTMNT` dossier dispose des autorisations appropriées afin que l' PeopleSoft utilisateur puisse y accéder correctement. | Administrateur du cloud, PeopleSoft administrateur | 
| Créez des instances supplémentaires. | Répétez les étapes précédentes de cette épopée pour créer des instances de modèles pour le planificateur de processus, le serveur Web et le serveur Elasticsearch. Nommez ces instances `PRCS_TEMPLATE``WEB_TEMPLATE`, et`SRCH_TEMPLATE`. Pour le serveur Web, définissez `joltPooling=true`**** et`DynamicConfigReload=1`. | Administrateur du cloud, PeopleSoft administrateur | 

### Création de scripts pour configurer les serveurs
<a name="create-scripts-to-set-up-servers"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un script pour installer le serveur d'applications. | Dans l'`APP_TEMPLATE`instance Amazon EC2, en tant qu' PeopleSoft utilisateur, créez le script suivant. Nommez-le `appstart.sh` et placez-le dans le `PS_HOME` répertoire. Vous allez utiliser ce script pour ouvrir le serveur d'applications et enregistrer le nom du serveur sur le support Amazon EFS.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/.profile.<br />psadmin -c configure -d HCMDEMO<br />psadmin -c parallelboot -d HCMDEMO<br />touch /psftmnt/`echo $HOSTNAME`</pre> | PeopleSoft administrateur | 
| Créez un script pour installer le serveur du planificateur de processus. | Dans l'`PRCS_TEMPLATE`instance Amazon EC2, en tant qu' PeopleSoft utilisateur, créez le script suivant. Nommez-le `prcsstart.sh` et placez-le dans le `PS_HOME` répertoire. Vous allez utiliser ce script pour ouvrir le serveur du planificateur de processus.<pre>#!/bin/ksh<br />. /usr/homes/hcmdemo/. profile<br />/* The following line ensures that the process scheduler always has a unique name during replacement or scaling activity. */ <br />sed -i "s/.*PrcsServerName.*/`hostname -I | awk -F. '{print "PrcsServerName=PSUNX"$3$4}'`/" $HOME/appserv/prcs/*/psprcs.cfg<br />psadmin -p configure -d HCMDEMO<br />psadmin -p start -d HCMDEMO</pre> | PeopleSoft administrateur | 
| Créez un script pour installer le serveur Elasticsearch. | Dans l'`SRCH_TEMPLATE`instance Amazon EC2, en tant qu'utilisateur d'Elasticsearch, créez le script suivant. Nommez-le `srchstart.sh` et placez-le dans le `HOME` répertoire.<pre>#!/bin/ksh<br />/* The following line ensures that the correct IP is indicated in the elasticsearch.yaml file. */<br />sed -i "s/.*network.host.*/`hostname  -I | awk '{print "host:"$0}'`/" $ES_HOME_DIR/config/elasticsearch.yaml<br />nohup $ES_HOME_DIR/bin/elasticsearch &</pre> | PeopleSoft administrateur | 
| Créez un script pour installer le serveur Web. | Dans l'`WEB_TEMPLATE`instance Amazon EC2, en tant qu'utilisateur du serveur Web, créez les scripts suivants dans le `HOME` répertoire.`renip.sh`: Ce script garantit que le serveur Web possède l'adresse IP correcte lorsqu'il est cloné à partir de l'AMI.<pre>#!/bin/ksh<br />hn=`hostname`<br />/* On the following line, change the IP with the hostname with the hostname of the web template. */<br />for text_file in `find  *  -type f -exec grep -l '<hostname-of-the-web-template>' {} \;`<br />do<br />sed -e 's/<hostname-of-the-web-template>/'$hn'/g' $text_file > temp<br />mv -f temp $text_file<br />done</pre>`psstrsetup.sh`: ce script garantit que le serveur Web utilise le bon serveur IPs d'applications actuellement en cours d'exécution. Il essaie de se connecter à chaque serveur d'applications sur le port jolt et l'ajoute au fichier de configuration.<pre>#!/bin/ksh<br />c2=""<br />for ctr in `ls -1 /psftmnt/*.internal`<br />do<br />c1=`echo $ctr | awk -F "/" '{print $3}'`<br />/* In the following lines, 9000 is the jolt port. Change it if necessary. */<br />if nc -z $c1 9000 2> /dev/null; then<br />if [[ $c2 = "" ]]; then<br />c2="psserver="`echo $c1`":9000"<br />else<br />c2=`echo $c2`","`echo $c1`":9000"<br />fi<br />fi<br />done</pre>`webstart.sh`: Ce script exécute les deux scripts précédents et démarre les serveurs Web.<pre>#!/bin/ksh<br />/* Change the path in the following if necessary. */<br />cd  /usr/homes/hcmdemo <br />./renip.sh<br />./psstrsetup.sh<br />webserv/peoplesoft/bin/startPIA.sh</pre> | PeopleSoft administrateur | 
| Ajoutez une entrée crontab. | **Dans l'`WEB_TEMPLATE`instance Amazon EC2, en tant qu'utilisateur du serveur Web, ajoutez la ligne suivante à crontab.** Modifiez l'heure et le chemin pour refléter les valeurs dont vous avez besoin. Cette entrée garantit que votre serveur Web dispose toujours des entrées de serveur d'applications correctes dans le `configuration.properties` fichier.<pre>* * * * * /usr/homes/hcmdemo/psstrsetup.sh</pre> | PeopleSoft administrateur | 

### Modèles de groupe Create AMIs et Auto Scaling
<a name="create-amis-and-auto-scaling-group-templates"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une AMI pour le modèle de serveur d'applications. | Sur la console Amazon EC2, créez une image AMI de l'instance Amazon `APP_TEMPLATE` EC2. Nommez l'AMI`PSAPPSRV-SCG-VER1`. Pour obtenir des instructions, consultez la [documentation Amazon EC2.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Créez AMIs pour les autres serveurs. | Répétez l'étape précédente AMIs pour créer pour le planificateur de processus, le serveur Elasticsearch et le serveur Web. | Administrateur du cloud, PeopleSoft administrateur | 
| Créez un modèle de lancement pour le groupe Auto Scaling du serveur d'applications. | Créez un modèle de lancement pour le groupe Auto Scaling du serveur d'applications. Nommez le modèle `PSAPPSRV_TEMPLATE.` Dans le modèle, choisissez l'AMI que vous avez créée pour l'`APP_TEMPLATE`instance. Pour obtenir des instructions, consultez la [documentation Amazon EC2.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-from-instance)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Créez un modèle de lancement pour le groupe Auto Scaling du serveur de planificateur de processus. | Répétez l'étape précédente pour créer un modèle de lancement pour le groupe Auto Scaling du serveur de planificateur de processus. Nommez le modèle`PSPRCS_TEMPLATE`. Dans le modèle, choisissez l'AMI que vous avez créée pour le planificateur de processus.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Créez un modèle de lancement pour le groupe Auto Scaling du serveur Elasticsearch. | Répétez les étapes précédentes pour créer un modèle de lancement pour le groupe Auto Scaling du serveur Elasticsearch. Nommez le modèle`SRCH_TEMPLATE`. Dans le modèle, choisissez l'AMI que vous avez créée pour le serveur de recherche.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Créez un modèle de lancement pour le groupe Auto Scaling du serveur Web. | Répétez les étapes précédentes pour créer un modèle de lancement pour le groupe Auto Scaling du serveur Web. Nommez le modèle`WEB_TEMPLATE`. Dans le modèle, choisissez l'AMI que vous avez créée pour le serveur Web.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 

### Création de groupes Auto Scaling
<a name="create-auto-scaling-groups"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe Auto Scaling pour le serveur d'applications. | Sur la console Amazon EC2, créez un groupe Auto Scaling appelé `PSAPPSRV_ASG` pour le serveur d'applications en utilisant le `PSAPPSRV_TEMPLATE` modèle. Pour obtenir des instructions, consultez la [documentation Amazon EC2.](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud, PeopleSoft administrateur | 
| Créez des groupes Auto Scaling pour les autres serveurs. | Répétez l'étape précédente pour créer des groupes Auto Scaling pour le planificateur de processus, le serveur Elasticsearch et le serveur Web. | Administrateur du cloud, PeopleSoft administrateur | 

### Création et configuration de groupes cibles
<a name="create-and-configure-target-groups"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe cible pour le serveur Web. | Sur la console Amazon EC2, créez un groupe cible pour le serveur Web. Pour obtenir des instructions, consultez la [documentation d'Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html). Définissez le port sur le port sur lequel le serveur Web écoute. | Administrateur du cloud | 
| Configurez les contrôles de santé. | Vérifiez que les valeurs des bilans de santé correspondent aux exigences de votre entreprise. Pour plus d’informations, consultez la [documentation relative à Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html). | Administrateur du cloud | 
| Créez un groupe cible pour le serveur Elasticsearch. | Répétez les étapes précédentes pour créer un groupe cible appelé `PSFTSRCH` pour le serveur Elasticsearch et définissez le port Elasticsearch approprié. | Administrateur du cloud | 
| Ajoutez des groupes cibles aux groupes Auto Scaling. | Ouvrez le groupe Auto Scaling du serveur Web appelé `PSPIA_ASG` que vous avez créé précédemment. Dans l'onglet **Load balancing**, choisissez **Edit**, puis ajoutez le groupe `PSFTWEB` cible au groupe Auto Scaling.Répétez cette étape pour que le groupe Elasticsearch Auto Scaling ajoute le groupe `PSSRCH_ASG` cible `PSFTSRCH` que vous avez créé précédemment. | Administrateur du cloud | 
| Définissez le caractère collant de la session. | Dans le groupe cible`PSFTWEB`, choisissez l'onglet **Attributs**, choisissez **Modifier** et définissez le caractère permanent de la session. Pour le type d'adhérence, choisissez le **cookie généré par l'équilibreur de charge** et définissez la durée sur 1. Pour plus d’informations, consultez la [documentation relative à Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html).Répétez cette étape pour le groupe cible`PSFTSRCH`. | Administrateur du cloud | 

### Création et configuration d'équilibreurs de charge d'applications
<a name="create-and-configure-application-load-balancers"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un équilibreur de charge pour les serveurs Web. | Créez un Application Load Balancer nommé `PSFTLB` pour équilibrer la charge du trafic vers les serveurs Web. Pour obtenir des instructions, consultez la [documentation d'Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html#configure-load-balancer).[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud | 
| Créez un équilibreur de charge pour les serveurs Elasticsearch. | Créez un Application Load Balancer nommé `PSFTSCH` pour équilibrer la charge du trafic vers les serveurs Elasticsearch.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-a-highly-available-peoplesoft-architecture-on-aws.html) | Administrateur du cloud | 
| Configurez la Route 53. | Sur la [console Amazon Route 53](https://console.aws.amazon.com/route53/), créez un enregistrement dans la zone hébergée qui servira l' PeopleSoft application. Pour obtenir des instructions, consultez la [documentation Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html). Cela garantit que tout le trafic passe par l'équilibreur `PSFTLB` de charge. | Administrateur du cloud | 

## Ressources connexes
<a name="set-up-a-highly-available-peoplesoft-architecture-on-aws-resources"></a>
+ [ PeopleSoft Site Web d'Oracle](https://www.oracle.com/applications/peoplesoft/)
+ [Documentation AWS](https://docs.aws.amazon.com/)

# Configurer la reprise après sinistre pour Oracle JD Edwards EnterpriseOne avec AWS Elastic Disaster Recovery
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery"></a>

*Thanigaivel Thirumalai, Amazon Web Services*

## Résumé
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-summary"></a>

Les catastrophes provoquées par des catastrophes naturelles, des défaillances d'applications ou une interruption des services nuisent aux revenus et entraînent des interruptions de service pour les applications d'entreprise. Afin de réduire les répercussions de tels événements, la planification de la reprise après sinistre (DR) est essentielle pour les entreprises qui adoptent les systèmes de planification des ressources EnterpriseOne d'entreprise (ERP) de JD Edwards et d'autres logiciels critiques et critiques. 

Ce modèle explique comment les entreprises peuvent utiliser AWS Elastic Disaster Recovery comme option de reprise après sinistre pour leurs EnterpriseOne applications JD Edwards. Il décrit également les étapes à suivre pour utiliser le basculement et le retour en arrière d'Elastic Disaster Recovery afin d'élaborer une stratégie de reprise après sinistre interrégionale pour les bases de données hébergées sur une instance Amazon Elastic Compute Cloud (Amazon EC2) dans le cloud AWS.

**Note**  
Ce modèle nécessite que les régions principale et secondaire pour la mise en œuvre de la reprise après sinistre interrégionale soient hébergées sur AWS.

[Oracle JD Edwards EnterpriseOne](https://www.oracle.com/applications/jd-edwards-enterpriseone/) est une solution logicielle ERP intégrée pour les moyennes et grandes entreprises dans un large éventail de secteurs.

AWS Elastic Disaster Recovery minimise les temps d'arrêt et les pertes de données grâce à une restauration rapide et fiable des applications sur site et dans le cloud en utilisant un stockage abordable, un calcul et point-in-time une restauration minimaux.

AWS fournit [quatre modèles d'architecture de base pour la reprise après sinistre](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Ce document se concentre sur l'installation, la configuration et l'optimisation à l'aide de la [stratégie d'éclairage pilote](https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html). Cette stratégie vous permet de créer un environnement de reprise après sinistre à moindre coût dans lequel vous configurez initialement un serveur de réplication pour répliquer les données de la base de données source, et vous approvisionnez le serveur de base de données proprement dit uniquement lorsque vous lancez une analyse de reprise après sinistre. Cette stratégie élimine les dépenses liées à la maintenance d'un serveur de base de données dans la région DR. Au lieu de cela, vous payez pour une instance EC2 plus petite qui sert de serveur de réplication.

## Conditions préalables et limitations
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Une EnterpriseOne application JD Edwards exécutée sur Oracle Database ou Microsoft SQL Server avec une base de données prise en charge en cours d'exécution sur une instance EC2 gérée. Cette application doit inclure tous les composants de EnterpriseOne base de JD Edwards (serveur d'entreprise, serveur HTML et serveur de base de données) installés dans une région AWS.
+ Rôle AWS Identity and Access Management (IAM) pour configurer le service Elastic Disaster Recovery.
+ Le réseau utilisé pour exécuter Elastic Disaster Recovery est configuré conformément aux [paramètres de connectivité](https://docs.aws.amazon.com/drs/latest/userguide/Network-Requirements.html) requis.

**Limites**
+ Vous pouvez utiliser ce modèle pour répliquer tous les niveaux, sauf si la base de données est hébergée sur Amazon Relational Database Service (Amazon RDS), auquel cas nous vous recommandons d'utiliser [la fonctionnalité de copie interrégionale](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html) d'Amazon RDS.
+ Elastic Disaster Recovery n'est pas compatible avec CloudEndure Disaster Recovery, mais vous pouvez effectuer une mise à niveau depuis CloudEndure Disaster Recovery. Pour plus d'informations, consultez la [FAQ](https://docs.aws.amazon.com/drs/latest/userguide/cedr-to-drs.html) de la documentation d'Elastic Disaster Recovery.
+ Amazon Elastic Block Store (Amazon EBS) limite la fréquence à laquelle vous pouvez prendre des instantanés. Vous pouvez répliquer un maximum de 300 serveurs dans un seul compte AWS à l'aide d'Elastic Disaster Recovery. Pour répliquer davantage de serveurs, vous pouvez utiliser plusieurs comptes AWS ou plusieurs régions AWS cibles. (Vous devrez configurer Elastic Disaster Recovery séparément pour chaque compte et région.) Pour plus d'informations, consultez les [meilleures pratiques](https://docs.aws.amazon.com/drs/latest/userguide/best_practices_drs.html) dans la documentation d'Elastic Disaster Recovery.
+ Les charges de travail sources (l' EnterpriseOne application et la base de données JD Edwards) doivent être hébergées sur des instances EC2. Ce modèle ne prend pas en charge les charges de travail sur site ou dans d'autres environnements cloud.
+ Ce modèle se concentre sur les EnterpriseOne composants de JD Edwards. Un plan complet de reprise après sinistre et de continuité des activités (BCP) doit inclure d'autres services essentiels, notamment :
  + Mise en réseau (cloud privé virtuel, sous-réseaux et groupes de sécurité)
  + Active Directory
  + Amazon WorkSpaces
  + Elastic Load Balancing
  + Un service de base de données géré tel qu'Amazon Relational Database Service (Amazon RDS)

Pour plus d'informations sur les prérequis, les configurations et les limites, consultez la [documentation d'Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html).

**Versions du produit**
+ Oracle JD Edwards EnterpriseOne (versions prises en charge par Oracle et SQL Server selon les exigences techniques minimales d'Oracle)

## Architecture
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-architecture"></a>

**Pile technologique cible**
+ Une seule région et un seul cloud privé virtuel (VPC) pour la production et la non-production, et une deuxième région pour la reprise après sinistre
+ Zones de disponibilité uniques pour garantir une faible latence entre les serveurs
+ Application Load Balancer qui distribue le trafic réseau afin d'améliorer l'évolutivité et la disponibilité de vos applications sur plusieurs zones de disponibilité
+ Amazon Route 53 fournira la configuration du système de noms de domaine (DNS)
+ Amazon WorkSpaces va offrir aux utilisateurs une expérience de bureau dans le cloud
+ Amazon Simple Storage Service (Amazon S3) pour le stockage de sauvegardes, de fichiers et d'objets
+ Amazon CloudWatch pour la journalisation, la surveillance et les alarmes des applications
+ Amazon Elastic Disaster Recovery pour la reprise après sinistre

**Architecture cible**

Le schéma suivant montre l'architecture de reprise après sinistre interrégionale de JD Edwards à l' EnterpriseOne aide d'Elastic Disaster Recovery.

![\[Architecture pour la reprise après sinistre EnterpriseOne interrégionale de JD Edwards sur AWS\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9b0de5f0-f211-4086-a044-321d081604f9/images/978b7219-e54e-4e31-b3ff-4885784e2971.png)


**Procédure**

Voici un aperçu de haut niveau du processus. Pour plus de détails, consultez la section *Epics*.
+ La réplication d'Elastic Disaster Recovery commence par une synchronisation initiale. Lors de la synchronisation initiale, l'agent de réplication AWS réplique toutes les données des disques sources vers la ressource appropriée dans le sous-réseau de la zone de transit.
+ La réplication continue indéfiniment une fois la synchronisation initiale terminée.
+ Vous passez en revue les paramètres de lancement, qui incluent des configurations spécifiques au service et un modèle de lancement Amazon EC2, une fois l'agent installé et la réplication démarrée. Lorsque le serveur source est indiqué comme étant prêt pour la restauration, vous pouvez démarrer des instances.
+ Lorsqu'Elastic Disaster Recovery émet une série d'appels d'API pour démarrer l'opération de lancement, l'instance de restauration est immédiatement lancée sur AWS conformément à vos paramètres de lancement. Le service lance automatiquement un serveur de conversion au démarrage.
+ La nouvelle instance est lancée sur AWS une fois la conversion terminée et est prête à être utilisée. L'état du serveur source au moment du lancement est représenté par les volumes associés à l'instance lancée. Le processus de conversion implique des modifications des pilotes, du réseau et de la licence du système d'exploitation afin de garantir le démarrage natif de l'instance sur AWS.
+ Après le lancement, les volumes nouvellement créés ne sont plus synchronisés avec les serveurs sources. L'agent de réplication AWS continue de répliquer régulièrement les modifications apportées à vos serveurs sources vers les volumes de la zone de transit, mais les instances lancées ne reflètent pas ces modifications.
+ Lorsque vous démarrez une nouvelle instance de forage ou de restauration, les données sont toujours reflétées dans l'état le plus récent qui a été répliqué depuis le serveur source vers le sous-réseau de la zone de transit.
+ Lorsque le serveur source est marqué comme étant prêt pour la restauration, vous pouvez démarrer des instances.

**Note**  
Le processus fonctionne dans les deux sens : pour le basculement d'une région AWS principale vers une région DR, et pour revenir au site principal, une fois celui-ci restauré. Vous pouvez vous préparer au retour en arrière en inversant le sens de la réplication des données de la machine cible vers la machine source de manière entièrement orchestrée.

Les avantages de ce processus décrit dans ce modèle incluent :
+ Flexibilité : les serveurs de réplication sont évolutifs et évolutifs en fonction du jeu de données et du temps de réplication, afin que vous puissiez effectuer des tests de reprise après sinistre sans perturber les charges de travail source ou la réplication.
+ Fiabilité : la réplication est robuste, sans interruption de service et continue.
+ Automatisation : cette solution fournit un processus unifié et automatisé pour les tests, la restauration et le retour en panne.
+ Optimisation des coûts : vous pouvez uniquement répliquer les volumes nécessaires et les payer, et payer les ressources de calcul sur le site de reprise après sinistre uniquement lorsque ces ressources sont activées. Vous pouvez utiliser une instance de réplication optimisée en termes de coûts (nous vous recommandons d'utiliser un type d'instance optimisé pour le calcul) pour plusieurs sources ou une source unique avec un volume EBS important.

**Automatisation et évolutivité**

Lorsque vous effectuez une reprise après sinistre à grande échelle, les EnterpriseOne serveurs JD Edwards dépendent des autres serveurs de l'environnement. Par exemple :
+ Les serveurs EnterpriseOne d'applications JD Edwards qui se connectent à une base de données EnterpriseOne prise en charge par JD Edwards au démarrage dépendent de cette base de données.
+  EnterpriseOne Les serveurs JD Edwards qui nécessitent une authentification et doivent se connecter à un contrôleur de domaine au démarrage pour démarrer les services dépendent du contrôleur de domaine.

C'est pourquoi nous vous recommandons d'automatiser les tâches de basculement. Par exemple, vous pouvez utiliser AWS Lambda ou AWS Step Functions pour automatiser les scripts de EnterpriseOne démarrage de JD Edwards et les modifications apportées à l'équilibreur de charge afin d'automatiser le end-to-end processus de basculement. Pour plus d'informations, consultez le billet de blog [Création d'un plan de reprise après sinistre évolutif avec AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/).

## Outils
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-tools"></a>

**Services AWS**
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) fournit des volumes de stockage de niveau bloc à utiliser avec les instances EC2.
+ [Amazon Elastic Compute Cloud (Amazon EC2](https://aws.amazon.com/products/compute/)) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) minimise les temps d'arrêt et les pertes de données grâce à une restauration rapide et fiable des applications sur site et dans le cloud à l'aide d'un stockage abordable, d'un calcul et point-in-time d'une restauration minimaux.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/) vous donne le contrôle total de votre environnement réseau virtuel, y compris le placement des ressources, la connectivité et la sécurité.

## Bonnes pratiques
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-best-practices"></a>

**Bonnes pratiques générales**
+ Préparez un plan écrit indiquant ce qu'il faut faire en cas de véritable rétablissement.
+ Après avoir correctement configuré Elastic Disaster Recovery, créez un CloudFormation modèle AWS capable de créer la configuration à la demande, en cas de besoin. Déterminez l'ordre dans lequel les serveurs et les applications doivent être lancés, et enregistrez-le dans le plan de restauration.
+ Effectuez un exercice régulier (les tarifs Amazon EC2 standard s'appliquent).
+ Surveillez l'état de la réplication en cours à l'aide de la console Elastic Disaster Recovery ou par programmation.
+ Protégez les point-in-time instantanés et confirmez avant de mettre fin aux instances.
+ Créez un rôle IAM pour l'installation d'AWS Replication Agent.
+ Activez la protection contre la résiliation pour les instances de restauration dans un scénario de reprise après sinistre réel.
+ N'utilisez pas l'action **Déconnecter d'AWS** dans la console Elastic Disaster Recovery pour les serveurs pour lesquels vous avez lancé des instances de restauration, même dans le cas d'un événement de restauration réel. L'exécution d'une déconnexion met fin à toutes les ressources de réplication associées à ces serveurs sources, y compris vos points de restauration point-in-time (PIT).
+ Modifiez la politique PIT pour modifier le nombre de jours de conservation des instantanés.
+ Modifiez le modèle de lancement dans les paramètres de lancement d'Elastic Disaster Recovery afin de définir le sous-réseau, le groupe de sécurité et le type d'instance appropriés pour votre serveur cible.
+ Automatisez le processus de end-to-end basculement en utilisant Lambda ou Step Functions pour automatiser les scripts de démarrage de JD EnterpriseOne Edwards et les modifications de l'équilibreur de charge.

** EnterpriseOne Optimisation et considérations de JD Edwards**
+ Accédez à **PrintQueue**la base de données.
+ Accédez à **MediaObjects**la base de données.
+ Excluez les journaux et le dossier temporaire des serveurs de traitement par lots et des serveurs logiques.
+ Excluez le dossier temporaire d'Oracle WebLogic.
+ Créez des scripts pour le démarrage après le basculement.
+ Excluez le tempdb pour SQL Server.
+ Excluez le fichier temporaire pour Oracle.

## Épopées
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-epics"></a>

### Exécution des tâches initiales et de la configuration
<a name="perform-initial-tasks-and-configuration"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le réseau de réplication.  | Implémentez votre EnterpriseOne système JD Edwards dans la région AWS principale et identifiez la région AWS pour DR. Suivez les étapes décrites dans la section [Exigences relatives au réseau de réplication](https://docs.aws.amazon.com/drs/latest/userguide/preparing-environments.html) de la documentation Elastic Disaster Recovery pour planifier et configurer votre réseau de réplication et de reprise après sinistre. | Administrateur AWS | 
| Déterminez le RPO et le RTO. | Identifiez l'objectif de temps de restauration (RTO) et l'objectif de point de restauration (RPO) pour vos serveurs d'applications et votre base de données. | Architecte cloud, architecte DR | 
| Activez la réplication pour Amazon EFS. | Le cas échéant, activez la réplication depuis la région principale AWS vers la région DR pour les systèmes de fichiers partagés tels qu'Amazon Elastic File System (Amazon EFS) à l'aide d'AWS DataSync, de **rsync** ou d'un autre outil approprié. | Administrateur du cloud | 
| Gérez le DNS en cas de DR. | Identifiez le processus de mise à jour du système de noms de domaine (DNS) lors de l'exercice DR ou de la DR proprement dite | Administrateur du cloud | 
| Créez un rôle IAM pour la configuration. | Suivez les instructions de la section [Initialisation et autorisations d'Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/getting-started-initializing.html) de la documentation d'Elastic Disaster Recovery pour créer un rôle IAM afin d'initialiser et de gérer le service AWS. | Administrateur du cloud | 
| Configurez le peering VPC. | Assurez-vous que la source et la cible VPCs sont homologues et accessibles l'une à l'autre. Pour les instructions de configuration, consultez la [documentation Amazon VPC.](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) | Administrateur AWS | 

### Configuration des paramètres de réplication d'Elastic Disaster Recovery
<a name="configure-elastic-disaster-recovery-replication-settings"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Initialisez Elastic Disaster Recovery. | Ouvrez la [console Elastic Disaster Recovery](https://console.aws.amazon.com/drs/home), choisissez la région AWS cible (dans laquelle vous allez répliquer les données et lancer des instances de restauration), puis choisissez **Définir les paramètres de réplication par défaut**. | Administrateur AWS | 
| Configurez des serveurs de réplication. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrateur AWS | 
| Configurez les volumes et les groupes de sécurité. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrateur AWS | 
| Configurez des paramètres supplémentaires. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) | Administrateur AWS | 

### Installation de l'agent de réplication AWS
<a name="install-the-aws-replication-agent"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un rôle IAM. | Créez un rôle IAM contenant la `AWSElasticDisasterRecoveryAgentInstallationPolicy` politique. Dans la section **Sélectionner le type d'accès AWS**, activez l'accès programmatique. Notez l'ID de la clé d'accès et la clé d'accès secrète. Vous aurez besoin de ces informations lors de l'installation de l'agent de réplication AWS. | Administrateur AWS | 
| Vérifiez les exigences. | Vérifiez et remplissez les [conditions requises](https://docs.aws.amazon.com/drs/latest/userguide/installation-requiremets.html) dans la documentation d'Elastic Disaster Recovery pour installer l'agent de réplication AWS. | Administrateur AWS | 
| Installez l'agent de réplication AWS. | Suivez les [instructions d'installation](https://docs.aws.amazon.com/drs/latest/userguide/agent-installation-instructions.html) de votre système d'exploitation et installez l'agent de réplication AWS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Répétez ces étapes pour le serveur restant. | Administrateur AWS | 
| Surveillez la réplication. | Retournez dans le volet des **serveurs Elastic Disaster Recovery Source** pour surveiller l'état de la réplication. La synchronisation initiale peut prendre un certain temps en fonction de la taille du transfert de données.Lorsque le serveur source est entièrement synchronisé, l'état du serveur passe à **Prêt**. Cela signifie qu'un serveur de réplication a été créé dans la zone intermédiaire et que les volumes EBS ont été répliqués du serveur source vers la zone intermédiaire. | Administrateur AWS | 

### Configuration des paramètres de lancement
<a name="configure-launch-settings"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez les paramètres de lancement. | Pour mettre à jour les paramètres de lancement des instances de forage et de restauration, sur la [console Elastic Disaster Recovery](https://console.aws.amazon.com/drs/home), sélectionnez le serveur source, puis choisissez **Actions**, **Modifier les paramètres de lancement**. Vous pouvez également choisir vos machines sources de réplication sur la page **Serveurs source**, puis choisir l'onglet **Paramètres de lancement**. Cet onglet comporte deux sections : **Paramètres de lancement généraux** et **modèle de lancement EC2**. | Administrateur AWS | 
| Configurez les paramètres généraux de lancement. | Révisez les paramètres de lancement généraux en fonction de vos besoins.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Pour plus d'informations, consultez la section [Paramètres de lancement généraux](https://docs.aws.amazon.com/drs/latest/userguide/launch-general-settings.html) dans la documentation d'Elastic Disaster Recovery. | Administrateur AWS | 
| Configurez le modèle de lancement Amazon EC2. | Elastic Disaster Recovery utilise des modèles de lancement Amazon EC2 pour lancer des instances de forage et de restauration pour chaque serveur source. Le modèle de lancement est créé automatiquement pour chaque serveur source que vous ajoutez à Elastic Disaster Recovery après avoir installé l'agent de réplication AWS.Vous devez définir le modèle de lancement Amazon EC2 comme modèle de lancement par défaut si vous souhaitez l'utiliser avec Elastic Disaster Recovery.Pour plus d'informations, consultez le [modèle de lancement EC2](https://docs.aws.amazon.com/drs/latest/userguide/ec2-launch.html) dans la documentation d'Elastic Disaster Recovery. | Administrateur AWS | 

### Lancer le forage DR et le basculement
<a name="initiate-dr-drill-and-failover"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancer un exercice | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Pour plus d'informations, consultez la section [Préparation au basculement](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing.html) dans la documentation d'Elastic Disaster Recovery. | Administrateur AWS | 
| Validez l'exercice. | À l'étape précédente, vous avez lancé de nouvelles instances cibles dans la région DR. Les instances cibles sont des répliques des serveurs sources basées sur le snapshot pris lorsque vous avez lancé le lancement.Dans cette procédure, vous vous connectez à vos machines cibles Amazon EC2 pour vérifier qu'elles fonctionnent comme prévu.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html) |  | 
| Lancez un basculement. | Un basculement est la redirection du trafic d'un système principal vers un système secondaire. Elastic Disaster Recovery vous aide à effectuer un basculement en lançant des instances de restauration sur AWS. Lorsque les instances de restauration ont été lancées, vous redirigez le trafic de vos systèmes principaux vers ces instances.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Pour plus d'informations, consultez la section [Réalisation d'un basculement](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing-failover.html) dans la documentation d'Elastic Disaster Recovery. | Administrateur AWS | 
| Lancez un retour en arrière. | Le processus de lancement d'un retour de secours est similaire au processus de lancement d'un basculement.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Pour plus d'informations, consultez la section [Réalisation d'un retour arrière](https://docs.aws.amazon.com/drs/latest/userguide/failback-performing-main.html) dans la documentation d'Elastic Disaster Recovery. | Administrateur AWS | 
| Démarrez les EnterpriseOne composants JD Edwards. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery.html)Vous devrez intégrer les modifications dans Route 53 et Application Load Balancer pour que le EnterpriseOne lien JD Edwards fonctionne.Vous pouvez automatiser ces étapes à l'aide de Lambda, Step Functions et Systems Manager (Run Command).Elastic Disaster Recovery effectue une réplication au niveau des blocs des volumes EBS de l'instance EC2 source qui hébergent le système d'exploitation et les systèmes de fichiers. Les systèmes de fichiers partagés créés à l'aide d'Amazon EFS ne font pas partie de cette réplication. Vous pouvez répliquer des systèmes de fichiers partagés dans la région DR à l'aide d'AWS DataSync, comme indiqué dans le premier épisode, puis monter ces systèmes de fichiers répliqués dans le système DR. | J.D. Edwards EnterpriseOne CNC | 

## Résolution des problèmes
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| L'état de réplication des données du serveur source est **bloqué** et la réplication est retardée. Si vous vérifiez les détails, l'état de réplication des données indique que **l'agent n'a pas été détecté**. | Vérifiez que le serveur source bloqué est en cours d'exécution.En cas de panne du serveur source, le serveur de réplication est automatiquement arrêté.Pour plus d'informations sur les problèmes de retard, consultez la section [Problèmes de retard de réplication](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) dans la documentation d'Elastic Disaster Recovery. | 
| L'installation de l'agent de réplication AWS dans l'instance source EC2 échoue dans RHEL 8.2 après avoir scanné les disques. `aws_replication_agent_installer.log`révèle que les en-têtes du noyau sont manquants. | Avant d'installer l'agent de réplication AWS sur RHEL 8, CentOS 8 ou Oracle Linux 8, exécutez :<pre>sudo yum install elfutils-libelf-devel</pre>Pour plus d'informations, consultez les [exigences d'installation de Linux](https://docs.aws.amazon.com/mgn/latest/ug/installation-requirements.html#linux-requirements) dans la documentation d'Elastic Disaster Recovery. | 
| Sur la console Elastic Disaster Recovery, le serveur source indique que le serveur source **est prêt** avec un décalage et que l'état de réplication des données **est bloqué**.En fonction de la durée d'indisponibilité de l'agent de réplication AWS, l'état peut indiquer un retard important, mais le problème reste le même. | Utilisez une commande du système d'exploitation pour confirmer que l'agent de réplication AWS est en cours d'exécution dans l'instance EC2 source ou pour confirmer que l'instance est en cours d'exécution.Une fois les problèmes corrigés, Elastic Disaster Recovery reprendra l'analyse. Attendez que toutes les données soient synchronisées et que l'état de réplication soit **sain** avant de commencer un exercice de reprise après sinistre. | 
| Réplication initiale avec un décalage élevé. Sur la console Elastic Disaster Recovery, vous pouvez constater que l'état de synchronisation initial est extrêmement lent pour un serveur source. | Vérifiez les problèmes de retard de réplication documentés dans la section [Problèmes de retard de réplication](https://docs.aws.amazon.com/drs/latest/userguide/Other-Troubleshooting-Topics.html#Replication-Lag-Issues) de la documentation d'Elastic Disaster Recovery.Le serveur de réplication peut être incapable de gérer la charge en raison d'opérations de calcul intrinsèques. Dans ce cas, essayez de mettre à niveau le type d'instance après avoir consulté l'[équipe du Support technique AWS](https://support.console.aws.amazon.com/support/). | 

## Ressources connexes
<a name="set-up-disaster-recovery-for-oracle-jd-edwards-enterpriseone-with-aws-elastic-disaster-recovery-resources"></a>
+ [Guide de l'utilisateur d'AWS Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html)
+ [Création d'un plan de reprise après sinistre évolutif avec AWS Elastic Disaster Recovery](https://aws.amazon.com/blogs/storage/creating-a-scalable-disaster-recovery-plan-with-aws-elastic-disaster-recovery/) (article de blog AWS)
+ [AWS Elastic Disaster Recovery : introduction technique](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/11123/aws-elastic-disaster-recovery-a-technical-introduction) (cours AWS Skill Builder ; connexion requise)
+ [Guide de démarrage rapide d'AWS Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/quick-start-guide-gs.html)

# Configurer la détection des CloudFormation dérives dans une organisation multirégionale et multi-comptes
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization"></a>

*Ram Kandaswamy, Amazon Web Services*

## Résumé
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-summary"></a>

Les utilisateurs d'Amazon Web Services (AWS) recherchent souvent un moyen efficace de détecter les incohérences dans la configuration des ressources, notamment la dérive des AWS CloudFormation piles, et de les corriger dès que possible. C'est particulièrement le cas lorsqu'il AWS Control Tower est utilisé.

Ce modèle fournit une solution prescriptive qui résout efficacement le problème en utilisant des modifications de configuration des ressources consolidées et en agissant sur ces modifications pour générer des résultats. La solution est conçue pour les scénarios dans lesquels plusieurs CloudFormation piles sont créées dans plusieurs comptes, ou une combinaison des deux. Région AWS Les objectifs de la solution sont les suivants :
+ Simplifier le processus de détection de la dérive
+ Configurer les notifications et les alertes
+ Configurer des rapports consolidés

## Conditions préalables et limitations
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-prereqs"></a>

**Conditions préalables**
+ AWS Config activé dans toutes les régions et tous les comptes qui doivent être surveillés

**Limites**
+ Le rapport généré prend uniquement en charge les valeurs séparées par des virgules (CSV) et les formats de sortie JSON.

## Architecture
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-architecture"></a>

Le schéma suivant montre la AWS Organizations configuration avec plusieurs comptes. AWS Config les règles communiquent entre les comptes.  

![\[Processus en cinq étapes pour surveiller les piles dans deux comptes AWS Organizations.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/735d0987-b953-47f8-a9bc-b02a88957ee5/images/340cee9a-5a4e-49ea-bd73-d37dcea5e098.png)


 Le flux de travail comprend les étapes suivantes :

1. La AWS Config règle détecte la dérive.

1. Les résultats de détection de dérive trouvés dans d'autres comptes sont envoyés au compte de gestion.

1. La CloudWatch règle Amazon appelle une AWS Lambda fonction.

1. La fonction Lambda interroge la AWS Config règle pour obtenir des résultats agrégés.

1. La fonction Lambda informe Amazon Simple Notification Service (Amazon SNS), qui envoie une notification par e-mail concernant la dérive.

**Automatisation et mise à l'échelle**

La solution présentée ici peut être adaptée à la fois à des régions et à des comptes supplémentaires.

## Outils
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-tools"></a>

**Services AWS**
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)fournit une vue détaillée de la configuration des AWS ressources de votre Compte AWS. Elle indique comment les ressources sont liées entre elles et comment elles ont été configurées dans le passé, pour que vous puissiez observer comment les configurations et les relations changent au fil du temps.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [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.

## Épopées
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-epics"></a>

### Détection automatique de la dérive pour CloudFormation
<a name="automate-drift-detection-for-cfn"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'agrégateur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Architecte du cloud | 
| Créez une règle AWS gérée. | Ajoutez la règle `cloudformation-stack-drift-detection-check` AWS**** gérée. La règle a besoin d'une valeur de paramètre :`cloudformationArn`. Entrez le rôle IAM Amazon Resource Name (ARN) autorisé à détecter la dérive de pile. Le rôle doit avoir une politique de confiance qui lui AWS Config permette d'assumer le rôle. | Architecte du cloud | 
| Créez la section de requête avancée de l'agrégateur. | Pour récupérer des piles dérivées à partir de plusieurs sources, créez la requête suivante :<pre>SELECT resourceId, configuration.driftInformation.stackDriftStatus WHERE resourceType = 'AWS::CloudFormation::Stack'  AND configuration.driftInformation.stackDriftStatus IN ('DRIFTED')</pre> | Architecte cloud, développeur | 
| Automatisez l'exécution de la requête et publiez. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization.html) | Architecte cloud, développeur | 
| Créez une CloudWatch règle. | Créez une CloudWatch règle basée sur un calendrier pour appeler la fonction Lambda, qui est chargée des alertes. | Architecte du cloud | 

## Ressources connexes
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-resources"></a>

**Ressources**
+ [Qu'est-ce que c'est AWS Config ?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+ [Agrégation de données multicomptes et multirégions](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html)
+ [Détection des modifications de configuration non gérées apportées aux piles et aux ressources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html)
+ [IAM : Transmettre un rôle IAM à une personne spécifique Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam-passrole-service.html)
+ [Qu'est-ce qu'Amazon SNS ?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)

## Informations supplémentaires
<a name="set-up-aws-cloudformation-drift-detection-in-a-multi-region-multi-account-organization-additional"></a>

**Considérations**

Nous recommandons d'utiliser la solution présentée dans ce modèle plutôt que d'utiliser des solutions personnalisées qui impliquent des appels d'API à des intervalles spécifiques pour initier la détection de dérive sur chaque CloudFormation pile ou ensemble de piles. Les solutions personnalisées qui utilisent des appels d'API à des intervalles spécifiques peuvent entraîner un grand nombre d'appels d'API et affecter les performances. En raison du nombre d'appels d'API, une régulation peut se produire. Un autre problème potentiel est le retard de détection si les modifications des ressources sont identifiées uniquement sur la base du calendrier.

Comme les ensembles de piles sont constitués de piles, vous pouvez utiliser cette solution. Les détails de l'instance Stack sont également disponibles dans le cadre de la solution.

## Pièces jointes
<a name="attachments-735d0987-b953-47f8-a9bc-b02a88957ee5"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/735d0987-b953-47f8-a9bc-b02a88957ee5/attachments/attachment.zip)

# Importation réussie d'un compartiment S3 en tant que CloudFormation stack AWS
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack"></a>

*Ram Kandaswamy, Amazon Web Services*

## Résumé
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-summary"></a>

Si vous utilisez des ressources Amazon Web Services (AWS), telles que les compartiments Amazon Simple Storage Service (Amazon S3), et que vous souhaitez utiliser une approche d'infrastructure en tant que code (IaC), vous pouvez importer vos ressources dans CloudFormation AWS et les gérer sous forme de pile.

Ce modèle fournit les étapes à suivre pour importer avec succès un compartiment S3 en tant que CloudFormation pile AWS. En utilisant l'approche de ce modèle, vous pouvez éviter d'éventuelles erreurs susceptibles de se produire si vous importez votre compartiment S3 en une seule action.

## Conditions préalables et limitations
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif.
+ Un compartiment S3 existant et une politique de compartiment S3. Pour plus d'informations à ce sujet, consultez la section [Quelle politique de compartiment S3 dois-je utiliser pour me conformer à la règle AWS Config s3- bucket-ssl-requests-only](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/) dans le centre de connaissances AWS.
+ Une clé AWS Key Management Service (AWS KMS) existante et son alias. Pour plus d'informations à ce sujet, consultez la section [Utilisation d'alias](https://docs.aws.amazon.com/kms/latest/developerguide/programming-aliases.html) dans la documentation AWS KMS.
+ Exemple de CloudFormation modèle `CloudFormation-template-S3-bucket` AWS (ci-joint), téléchargé sur votre ordinateur local.

## Architecture
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-architecture"></a>

![\[Flux de travail permettant d'utiliser un CloudFormation modèle pour créer une CloudFormation pile afin d'importer un compartiment S3.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/aea7f6fe-8e67-46c4-8b90-1ab06b879111/images/ee143374-a0a4-42d9-b7ca-16593a597a84.png)


 

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

1. L'utilisateur crée un modèle AWS CloudFormation au format JSON ou YAML.

1. Le modèle crée une CloudFormation pile AWS pour importer le compartiment S3.

1. La CloudFormation pile AWS gère le compartiment S3 que vous avez spécifié dans le modèle.

**Pile technologique**
+ AWS CloudFormation
+ AWS Identity and Access Management (IAM)
+ AWS KMS
+ Amazon S3

 

**Outils**
+ [AWS CloudFormation — AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à créer et à provisionner des déploiements d'infrastructure AWS de manière prévisible et répétée.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — IAM est un service Web permettant de contrôler en toute sécurité l'accès aux services AWS.
+ [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) — AWS Key Management Service (AWS KMS) est un service de chiffrement et de gestion des clés adapté au cloud.
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet.

## Épopées
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-epics"></a>

### Importez un compartiment S3 avec chiffrement AWS KMS key basé en tant que CloudFormation stack AWS
<a name="import-an-s3-bucket-with-kms-key-long--based-encryption-as-an-aws-cloudformation-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un modèle pour importer le compartiment S3 et la clé KMS. | Sur votre ordinateur local, créez un modèle pour importer votre compartiment S3 et votre clé KMS à l'aide de l'exemple de modèle suivant :<pre>AWSTemplateFormatVersion: 2010-09-09<br /><br />Parameters:<br /><br />  bucketName:<br /><br />    Type: String<br /><br />Resources:<br /><br />  S3Bucket:<br /><br />    Type: 'AWS::S3::Bucket'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      BucketName: !Ref bucketName<br /><br />      BucketEncryption:<br /><br />        ServerSideEncryptionConfiguration:<br /><br />          - ServerSideEncryptionByDefault:<br /><br />              SSEAlgorithm: 'aws:kms'<br /><br />              KMSMasterKeyID: !GetAtt <br /><br />                - KMSS3Encryption<br /><br />                - Arn<br /><br />  KMSS3Encryption:<br /><br />    Type: 'AWS::KMS::Key'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties:<br /><br />      Enabled: true<br /><br />      KeyPolicy: !Sub |-<br /><br />        {<br /><br />            "Id": "key-consolepolicy-3",<br /><br />            "Version": "2012-10-17",		 	 	 <br /><br />            "Statement": [<br /><br />                {<br /><br />                    "Sid": "Enable IAM User Permissions",<br /><br />                    "Effect": "Allow",<br /><br />                    "Principal": {<br /><br />                        "AWS": ["arn:aws:iam::${AWS::AccountId}:root"]<br /><br />                    },<br /><br />                    "Action": "kms:*",<br /><br />                    "Resource": "*"<br /><br />                }<br /><br />                }<br /><br />            ]<br /><br />        }<br /><br />      EnableKeyRotation: true</pre> | AWS DevOps | 
| Créez la pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html) | AWS DevOps | 
| Créez l'alias de clé KMS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>KMSS3EncryptionAlias:<br /><br />    Type: 'AWS::KMS::Alias'<br /><br />    DeletionPolicy: Retain<br /><br />    Properties: <br /><br />    AliasName: alias/S3BucketKey<br /><br />    TargetKeyId: !Ref KMSS3Encryption</pre>Pour plus d'informations à ce sujet, consultez les [mises à jour du CloudFormation stack AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html) dans la CloudFormation documentation AWS.  | AWS DevOps | 
| Mettez à jour la pile pour inclure la politique du compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>S3BucketPolicy:<br /><br />  Type: 'AWS::S3::BucketPolicy'<br /><br />  Properties:<br /><br />    Bucket: !Ref S3Bucket<br /><br />    PolicyDocument: !Sub |-<br /><br />      {<br /><br />                  "Version": "2008-10-17",		 	 	 <br /><br />                  "Id": "restricthttp",<br /><br />                  "Statement": [<br /><br />                      {<br /><br />                          "Sid": "denyhttp",<br /><br />                          "Effect": "Deny",<br /><br />                          "Principal": {<br /><br />                              "AWS": "*"<br /><br />                          },<br /><br />                          "Action": "s3:*",<br /><br />                          "Resource": ["arn:aws:s3:::${S3Bucket}","arn:aws:s3:::${S3Bucket}/*"],<br /><br />                          "Condition": {<br /><br />                              "Bool": {<br /><br />                                  "aws:SecureTransport": "false"<br /><br />                              }<br /><br />                          }<br /><br />                      }<br /><br />                  ]<br /><br />              }</pre>Cette politique de compartiment S3 comporte une déclaration de refus qui restreint les appels d'API non sécurisés.  | AWS DevOps | 
| Mettez à jour la politique clé. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)Pour plus d'informations, consultez [la section Politiques clés AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) de la documentation AWS KMS. | Administrateur AWS | 
| Ajoutez des balises au niveau des ressources. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack.html)<pre>Tags:<br /><br />  - Key: createdBy<br /><br />    Value: Cloudformation</pre> | AWS DevOps | 

## Ressources connexes
<a name="successfully-import-an-s3-bucket-as-an-aws-cloudformation-stack-resources"></a>
+ [Intégrer les ressources existantes à la CloudFormation gestion d'AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)
+ [AWS re:Invent 2017 : présentation approfondie d'AWS CloudFormation (vidéo](https://www.youtube.com/watch?v=01hy48R9Kr8))

## Pièces jointes
<a name="attachments-aea7f6fe-8e67-46c4-8b90-1ab06b879111"></a>

[Pour accéder au contenu supplémentaire associé à ce document, décompressez le fichier suivant : attachment.zip](samples/p-attach/aea7f6fe-8e67-46c4-8b90-1ab06b879111/attachments/attachment.zip)

# Synchronisez les données entre les systèmes de fichiers Amazon EFS dans différentes régions AWS à l'aide d'AWS DataSync
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync"></a>

*Sarat Chandra Pothula et Aditya Ambati, Amazon Web Services*

## Résumé
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-summary"></a>

Cette solution fournit un cadre robuste pour une synchronisation des données efficace et sécurisée entre les instances Amazon Elastic File System (Amazon EFS) dans les différentes régions AWS. Cette approche est évolutive et permet une réplication contrôlée des données entre régions. Cette solution peut améliorer vos stratégies de reprise après sinistre et de redondance des données.

En utilisant l'AWS Cloud Development Kit (AWS CDK), ce modèle utilise une approche d'infrastructure en tant que code (IaC) pour déployer les ressources de la solution. L'application AWS CDK déploie les ressources essentielles d'AWS, DataSync Amazon EFS, Amazon Virtual Private Cloud (Amazon VPC) et Amazon Elastic Compute Cloud (Amazon). EC2 Cet iAC fournit un processus de déploiement reproductible et contrôlé par version qui est entièrement conforme aux meilleures pratiques d'AWS.

## Conditions préalables et limitations
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ [https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install)
+ [NodeJS version 20.8.0 ou ultérieure, installée](https://nodejs.org/en/download)

**Limites**
+ La solution hérite des limites d' DataSync Amazon EFS, telles que les taux de transfert de données, les limites de taille et la disponibilité régionale. Pour plus d'informations, consultez les rubriques [ DataSync Quotas AWS et Quotas](https://docs.aws.amazon.com/datasync/latest/userguide/datasync-limits.html) [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/limits.html).
+ Cette solution prend uniquement en charge Amazon EFS. DataSync prend en charge [d'autres services AWS](https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html), tels qu'Amazon Simple Storage Service (Amazon S3) et FSx Amazon for Lustre. Toutefois, cette solution nécessite des modifications pour synchroniser les données avec ces autres services.

## Architecture
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-architecture"></a>

![\[Schéma d'architecture pour la réplication de données vers un système de fichiers EFS dans une autre région\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e28ba6c2-ab8b-4812-932e-f038106d5496/images/18b35ae9-a22e-43e7-b7a3-30e40321c44e.png)


Cette solution déploie les piles AWS CDK suivantes :
+ **Pile Amazon VPC** : cette pile configure les ressources du cloud privé virtuel (VPC), notamment des sous-réseaux, une passerelle Internet et une passerelle NAT dans les régions AWS principale et secondaire.
+ **Pile Amazon EFS** : cette pile déploie les systèmes de fichiers Amazon EFS dans les régions principale et secondaire et les connecte à leurs régions respectives VPCs.
+ **Amazon EC2 Stack** — Cette pile lance EC2 des instances dans les régions principale et secondaire. Ces instances sont configurées pour monter le système de fichiers Amazon EFS, ce qui leur permet d'accéder au stockage partagé.
+ **DataSync pile de localisation** — Cette pile utilise une construction personnalisée appelée `DataSyncLocationConstruct` pour créer des ressources de DataSync localisation dans les régions principale et secondaire. Ces ressources définissent les points de terminaison pour la synchronisation des données.
+ **DataSync pile de tâches** — Cette pile utilise une construction personnalisée appelée `DataSyncTaskConstruct` pour créer une DataSync tâche dans la région principale. Cette tâche est configurée pour synchroniser les données entre les régions principale et secondaire en utilisant les emplacements DataSync source et de destination.

## Outils
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-tools"></a>

**Services AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/what-is-datasync.html) est un service de transfert et de découverte de données en ligne qui vous aide à déplacer des fichiers ou des données d'objets vers, depuis et entre les services de stockage AWS.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) vous aide à créer et à configurer des systèmes de fichiers partagés dans le cloud AWS.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) vous aide à lancer des ressources AWS dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous exploiteriez dans votre propre centre de données, avec les avantages liés à l'utilisation de l'infrastructure évolutive d'AWS.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel des [ DataSync projets inter-régions GitHub Amazon EFS](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main).

## Bonnes pratiques
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-best-practices"></a>

Suivez les bonnes pratiques décrites dans [Bonnes pratiques d'utilisation du kit AWS CDK pour TypeScript créer des projets IaC](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/introduction.html).

## Épopées
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-epics"></a>

### Déployez l'application AWS CDK
<a name="deploy-the-aws-cdk-app"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Clonez le référentiel du projet. | Entrez la commande suivante pour cloner le référentiel du [ DataSync projet inter-régions Amazon EFS](https://github.com/aws-samples/aws-efs-crossregion-datasync/tree/main).<pre>git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git</pre> | AWS DevOps | 
| Installez les dépendances npm. | Entrez la commande suivante.<pre>npm ci</pre> | AWS DevOps | 
| Choisissez les régions principale et secondaire. | Dans le référentiel cloné, accédez au `src/infa` répertoire. Dans le `Launcher.ts` fichier, mettez à jour les `SECONDARY_AWS_REGION` valeurs `PRIMARY_AWS_REGION` et. Utilisez les [codes de région](https://docs.aws.amazon.com/general/latest/gr/datasync.html#datasync-region) correspondants.<pre>const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' };<br />const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };</pre> | AWS DevOps | 
| Démarrez l'environnement. | Entrez la commande suivante pour démarrer le compte AWS et la région AWS que vous souhaitez utiliser.<pre>cdk bootstrap <aws_account>/<aws_region></pre>Pour plus d'informations, consultez [Bootstrapping](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) dans la documentation AWS CDK. | AWS DevOps | 
| Répertoriez les piles AWS CDK. | Entrez la commande suivante pour afficher la liste des piles AWS CDK dans l'application.<pre>cdk ls</pre> | AWS DevOps | 
| Synthétisez les piles AWS CDK. | Entrez la commande suivante pour produire un CloudFormation modèle AWS pour chaque pile définie dans l'application AWS CDK.<pre>cdk synth</pre> | AWS DevOps | 
| Déployez l'application AWS CDK. | Entrez la commande suivante pour déployer toutes les piles sur votre compte AWS, sans nécessiter d'approbation manuelle pour les modifications.<pre>cdk deploy --all --require-approval never</pre> | AWS DevOps | 

### Valider le déploiement
<a name="validate-the-deployment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Connectez-vous à l' EC2 instance dans la région principale. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Créez un fichier temporaire. | Entrez la commande suivante pour créer un fichier temporaire dans le chemin de montage Amazon EFS.<pre>sudo dd if=/dev/zero \<br />of=tmptst.dat \<br />bs=1G \<br />seek=5 \<br />count=0<br /><br />ls -lrt tmptst.dat</pre> | AWS DevOps | 
| Lancez la DataSync tâche. | Entrez la commande suivante pour répliquer le fichier temporaire de la région principale vers la région secondaire, où `<ARN-task>` est le nom de ressource Amazon (ARN) de votre DataSync tâche.<pre>aws datasync start-task-execution \<br />    --task-arn <ARN-task></pre>La commande renvoie l'ARN de l'exécution de la tâche au format suivant.`arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>` | AWS DevOps | 
| Vérifiez l'état du transfert de données. | Entrez la commande suivante pour décrire la tâche DataSync d'exécution, où `<ARN-task-execution>` est l'ARN de l'exécution de la tâche.<pre>aws datasync describe-task-execution \<br />    --task-execution-arn <ARN-task-execution></pre>La DataSync tâche est terminée lorsque `PrepareStatus``TransferStatus`, et `VerifyStatus` tous ont la valeur`SUCCESS`. | AWS DevOps | 
| Connectez-vous à l' EC2 instance dans la région secondaire. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync.html) | AWS DevOps | 
| Validez la réplication. | Entrez la commande suivante pour vérifier que le fichier temporaire existe dans le système de fichiers Amazon EFS.<pre>ls -lrt<br />tmptst.dat</pre> | AWS DevOps | 

## Ressources connexes
<a name="synchronize-data-between-amazon-efs-file-systems-in-different-aws-regions-by-using-aws-datasync-resources"></a>

**Documentation AWS**
+ [Référence d'API AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/python/modules.html)
+ [Configuration des DataSync transferts AWS avec Amazon EFS](https://docs.aws.amazon.com/datasync/latest/userguide/create-efs-location.html)
+ [Résolution des problèmes liés aux DataSync transferts AWS](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-locations-tasks.html)

**Autres ressources AWS**
+ [AWS DataSync FAQs](https://aws.amazon.com/datasync/faqs/)

# AWS Infrastructure de test à l'aide LocalStack de tests Terraform
<a name="test-aws-infra-localstack-terraform"></a>

*Ivan Girardi et Ioannis Kalyvas, Amazon Web Services*

## Résumé
<a name="test-aws-infra-localstack-terraform-summary"></a>

Ce modèle vous permet de tester localement l'infrastructure sous forme de code (IaC) pour AWS Terraform sans avoir à provisionner l'infrastructure dans votre AWS environnement. Il intègre le [framework Terraform Tests](https://developer.hashicorp.com/terraform/language/tests) à. [LocalStack](https://github.com/localstack/localstack) Le conteneur LocalStack Docker fournit un environnement de développement local qui émule divers. Services AWS Cela vous permet de tester et d'itérer les déploiements d'infrastructure sans encourir de coûts. AWS Cloud

Cette solution offre les avantages suivants :
+ **Optimisation des coûts — L'**exécution de tests permet d' LocalStack éliminer le besoin d'utilisation Services AWS. Cela vous évite d'encourir les coûts associés à la création, à l'exploitation et à la modification de ces AWS ressources.
+ **Rapidité et efficacité** — Les tests locaux sont également généralement plus rapides que le déploiement AWS des ressources. Cette boucle de rétroaction rapide accélère le développement et le débogage. Comme il LocalStack s'exécute localement, vous pouvez développer et tester vos fichiers de configuration Terraform sans connexion Internet. Vous pouvez déboguer les fichiers de configuration Terraform localement et recevoir des commentaires immédiats, ce qui rationalise le processus de développement.
+ **Cohérence et reproductibilité** : LocalStack fournit un environnement de test cohérent. Cette cohérence permet de garantir que les tests donnent les mêmes résultats, quels que soient les AWS changements externes ou les problèmes de réseau.
+ **Isolation** : les tests vous LocalStack évitent d'affecter accidentellement les AWS ressources réelles ou les environnements de production. Cette isolation permet d'expérimenter et de tester différentes configurations en toute sécurité.
+ **Automatisation** [— L'intégration à un pipeline d'intégration continue et de livraison continue (CI/CD) vous permet de tester automatiquement les fichiers de configuration Terraform.](https://developer.hashicorp.com/terraform/language/files) Le pipeline teste minutieusement l'iAc avant le déploiement.
+ **Flexibilité** — Vous pouvez simuler différentes Régions AWS configurations et configurations de service pour mieux correspondre à vos environnements de production. Comptes AWS

## Conditions préalables et limitations
<a name="test-aws-infra-localstack-terraform-prereqs"></a>

**Conditions préalables**
+ [Installer Docker](https://docs.docker.com/get-started/get-docker/)
+ [Activez l'accès](https://docs.docker.com/reference/cli/dockerd/#daemon-socket-option) au socket Docker par défaut (`/var/run/docker.sock`). Pour plus d’informations, consultez la [documentation LocalStack ](https://docs.localstack.cloud/user-guide/aws/lambda/#migrating-to-lambda-v2).
+ [Installez](https://docs.docker.com/compose/install/) Docker Compose
+ [Installez](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) Terraform version 1.6.0 ou ultérieure
+ [Installez](https://developer.hashicorp.com/terraform/cli) Terraform CLI
+ [Configurer](https://hashicorp.github.io/terraform-provider-aws/) le fournisseur Terraform AWS 
+ (Facultatif) [Installez](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configurez](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) le AWS Command Line Interface (AWS CLI). Pour un exemple d'utilisation du AWS CLI with LocalStack, consultez l'[AWS infrastructure de GitHub test utilisant LocalStack et le référentiel de tests Terraform](https://github.com/aws-samples/localstack-terraform-test).

**Limites**
+ Ce modèle fournit des exemples explicites pour tester les ressources Amazon Simple Storage Service (Amazon S3) AWS Lambda, AWS Step Functions, et Amazon DynamoDB. Toutefois, vous pouvez étendre cette solution pour inclure des AWS ressources supplémentaires.
+ Ce modèle fournit des instructions pour exécuter des tests Terraform localement, mais vous pouvez intégrer des tests dans n'importe quel CI/CD pipeline.
+ Ce modèle fournit des instructions pour utiliser l'image de LocalStack la communauté. Si vous utilisez l'image LocalStack Pro, consultez la [documentation LocalStack Pro](https://hub.docker.com/r/localstack/localstack-pro).
+ LocalStack fournit des services d'émulation pour différents. AWS APIs Pour une liste complète, voir [Couverture des fonctionnalités du AWS service](https://docs.localstack.cloud/user-guide/aws/feature-coverage/). Certaines fonctionnalités avancées peuvent nécessiter un abonnement LocalStack Pro.

## Architecture
<a name="test-aws-infra-localstack-terraform-architecture"></a>

Le schéma suivant montre l'architecture de cette solution. Les principaux composants sont un référentiel de code source, un CI/CD pipeline et un conteneur LocalStack Docker. Le conteneur LocalStack Docker héberge les éléments suivants Services AWS localement :
+ Un compartiment Amazon S3 pour stocker des fichiers
+ Amazon CloudWatch pour la surveillance et la journalisation
+ Une AWS Lambda fonction pour exécuter du code sans serveur
+ Une machine à AWS Step Functions états pour orchestrer des flux de travail en plusieurs étapes
+ Une table Amazon DynamoDB pour stocker des données NoSQL

![\[Un CI/CD pipeline crée et teste le conteneur LocalStack Docker et les ressources AWS.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/34bfbdbf-14e7-42a0-9022-c85a9c30cdcd/images/dc61fac9-b92c-4841-9132-ff8bb865eed9.png)


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

1. Vous ajoutez et validez un fichier de configuration Terraform dans le référentiel de code source.

1. Le CI/CD pipeline détecte les modifications et lance un processus de génération pour l'analyse statique du code Terraform. Le pipeline construit et exécute le conteneur LocalStack Docker. Ensuite, le pipeline lance le processus de test.

1. Le pipeline télécharge un objet dans un compartiment Amazon S3 hébergé dans le conteneur LocalStack Docker.

1. Le téléchargement de l'objet appelle une AWS Lambda fonction.

1. La fonction Lambda enregistre la notification d'événement Amazon S3 dans un CloudWatch journal.

1. La fonction Lambda démarre une machine à AWS Step Functions états.

1. La machine d'état écrit le nom de l'objet Amazon S3 dans une table DynamoDB.

1. Le processus de test du CI/CD pipeline vérifie que le nom de l'objet chargé correspond à l'entrée de la table DynamoDB. Il vérifie également que le compartiment S3 est déployé avec le nom spécifié et que la AWS Lambda fonction a été déployée avec succès.

## Outils
<a name="test-aws-infra-localstack-terraform-tools"></a>

**Services AWS**
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [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.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)est un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et autres Services AWS pour créer des applications critiques pour l'entreprise.

**Autres outils**
+ [Docker](https://www.docker.com/) est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.
+ [Docker Compose](https://docs.docker.com/compose/) est un outil permettant de définir et d'exécuter des applications multi-conteneurs.
+ [LocalStack](https://localstack.cloud)est un émulateur de service cloud qui s'exécute dans un conteneur unique. En utilisant LocalStack, vous pouvez exécuter des charges de travail sur votre machine locale qui l'utilise Services AWS, sans vous connecter au AWS Cloud.
+ [Terraform](https://www.terraform.io/) est un outil IaC HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud.
+ [Terraform Tests](https://developer.hashicorp.com/terraform/language/tests) vous aide à valider les mises à jour de configuration des modules Terraform par le biais de tests analogues à des tests d'intégration ou unitaires.

**Référentiel de code**

Le code de ce modèle est disponible dans l'[AWS infrastructure de GitHub test à l'aide du LocalStack référentiel Terraform Tests](https://github.com/aws-samples/localstack-terraform-test).

## Bonnes pratiques
<a name="test-aws-infra-localstack-terraform-best-practices"></a>
+ Cette solution teste AWS l'infrastructure spécifiée dans les fichiers de configuration Terraform et ne déploie pas ces ressources dans le. AWS Cloud Si vous souhaitez déployer les ressources, suivez le [principe du moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) (documentation IAM) et [configurez correctement le backend Terraform (documentation Terraform](https://developer.hashicorp.com/terraform/language/backend)).
+ Lors de l'intégration LocalStack dans un CI/CD pipeline, nous vous recommandons de ne pas exécuter le conteneur LocalStack Docker en mode privilège. Pour plus d'informations, consultez [Privilèges d'exécution et fonctionnalités Linux](https://docs.docker.com/engine/containers/run/#runtime-privilege-and-linux-capabilities) (documentation Docker) et [Sécurité pour les coureurs autogérés](https://docs.gitlab.com/runner/security/) (GitLab documentation).

## Épopées
<a name="test-aws-infra-localstack-terraform-epics"></a>

### Déploiement de la solution
<a name="deploy-the-solution"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Dans un shell bash, entrez la commande suivante. Cela clone l'[AWS infrastructure de test à l'aide d'un référentiel LocalStack de tests Terraform](https://github.com/aws-samples/localstack-terraform-test) à partir de : GitHub<pre>git clone https://github.com/aws-samples/localstack-terraform-test.git</pre> | DevOps ingénieur | 
| Faites fonctionner le LocalStack conteneur. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps ingénieur | 
| Initialisez Terraform. | Entrez la commande suivante pour initialiser Terraform :<pre>terraform init</pre> | DevOps ingénieur | 
| Exécutez des tests Terraform. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | DevOps ingénieur | 
| nettoyer les ressources. | Entrez la commande suivante pour détruire le LocalStack conteneur :<pre>docker-compose down</pre> | DevOps ingénieur | 

## Résolution des problèmes
<a name="test-aws-infra-localstack-terraform-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| `Error: reading DynamoDB Table Item (Files\|README.md): empty`résultat lors de l'exécution de la `terraform test` commande. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/test-aws-infra-localstack-terraform.html) | 

## Ressources connexes
<a name="test-aws-infra-localstack-terraform-resources"></a>
+ [Commencer à utiliser Terraform : conseils pour AWS CDK et AWS CloudFormation experts](https://docs.aws.amazon.com/prescriptive-guidance/latest/getting-started-terraform/introduction.html) (conseils AWS prescriptifs)
+ [Meilleures pratiques d'utilisation du AWS fournisseur Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/terraform-aws-provider-best-practices/introduction.html) (directives AWS prescriptives)
+ [Terraform CI/CD et poursuite des tests AWS avec le nouveau cadre de test Terraform](https://aws.amazon.com/blogs/devops/terraform-ci-cd-and-testing-on-aws-with-the-new-terraform-test-framework/) (article de blog)AWS 
+ [Accélérer la livraison de logiciels à l'aide de LocalStack Cloud Emulator depuis AWS Marketplace](https://aws.amazon.com/blogs/awsmarketplace/accelerating-software-delivery-localstack-cloud-emulator-aws-marketplace/) (article de AWS blog)

## Informations supplémentaires
<a name="test-aws-infra-localstack-terraform-additional"></a>

**Intégration avec les GitHub actions**

Vous pouvez intégrer LocalStack et terraformer des tests dans un CI/CD pipeline à l'aide GitHub d'actions. Pour plus d'informations, consultez la [documentation sur GitHub les actions](https://docs.github.com/en/actions). Voici un exemple de fichier de configuration d' GitHub actions :

```
name: LocalStack Terraform Test

on:
  push:
    branches:
      - '**'

  workflow_dispatch: {}

jobs:
  localstack-terraform-test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4

    - name: Build and Start LocalStack Container
      run: |
        docker compose up -d

    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3
      with:
        terraform_version: latest

    - name: Run Terraform Init and Validation
      run: |
        terraform init
        terraform validate
        terraform fmt --recursive --check
        terraform plan
        terraform show

    - name: Run Terraform Test
      run: |
        terraform test

    - name: Stop and Delete LocalStack Container
      if: always()
      run: docker compose down
```

# Mettez à niveau les clusters SAP Pacemaker de ENSA1 ENSA2
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2"></a>

*Gergely Cserdi et Balazs Sandor Skublics, Amazon Web Services*

## Résumé
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-summary"></a>

Ce modèle explique les étapes et les considérations relatives à la mise à niveau d'un cluster SAP Pacemaker basé sur un serveur d'attente autonome () ENSA1 vers. ENSA2 Les informations contenues dans ce modèle s'appliquent à la fois aux systèmes d'exploitation SUSE Linux Enterprise Server (SLES) et Red Hat Enterprise Linux (RHEL).

Les clusters Pacemaker sur SAP NetWeaver 7.52 ou S/4HANA 1709 et versions antérieures s'exécutent sur une ENSA1 architecture et sont configurés spécifiquement pour. ENSA1 Si vous exécutez vos charges de travail SAP sur Amazon Web Services (AWS) et que vous souhaitez passer à Amazon ENSA2, vous constaterez peut-être que la documentation SAP, SUSE et RHEL ne fournit pas d'informations complètes. Ce modèle décrit les étapes techniques requises pour reconfigurer les paramètres SAP et les clusters Pacemaker à partir ENSA1 de. ENSA2 Il fournit des exemples de systèmes SUSE, mais le concept est le même pour les clusters RHEL.

**Note**  
ENSA1 et ENSA2 sont des concepts qui concernent uniquement les applications SAP. Les informations de ce modèle ne s'appliquent donc pas à SAP HANA ou à d'autres types de clusters.

**Note**  
Techniquement, il ENSA2 peut être utilisé avec ou sans Enqueue Replicator 2. Cependant, la haute disponibilité (HA) et l'automatisation du basculement (via une solution de cluster) nécessitent Enqueue Replicator 2. Ce modèle utilise le terme *ENSA2 clusters pour désigner les clusters* dotés de Standalone Enqueue Server 2 et Enqueue Replicator 2.

## Conditions préalables et limitations
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-prereqs"></a>

**Prérequis**
+ Un cluster fonctionnel ENSA1 qui utilise Pacemaker et Corosync sur SLES ou RHEL.
+ Au moins deux instances Amazon Elastic Compute Cloud (Amazon EC2) sur lesquelles les instances (ABAP) SAP Central Services (ASCS/SCS) et Enqueue Replication Server (ERS) sont exécutées.
+ Connaissance de la gestion des applications et des clusters SAP.
+ Accès à l'environnement Linux en tant qu'utilisateur root.

**Limites**
+ ENSA1les clusters basés sur une architecture à deux nœuds ne supportent qu'une architecture à deux nœuds.
+ ENSA2les clusters basés sur SAP ne peuvent pas être déployés sur les NetWeaver versions de SAP antérieures à la version 7.52.
+ EC2 les instances des clusters doivent se trouver dans des zones de disponibilité AWS différentes.

**Versions du produit**
+ SAP NetWeaver version 7.52 ou ultérieure
+ À partir de S/4HANA 2020, seuls les clusters sont pris en charge ENSA2 
+ Kernel 7.53 ou version ultérieure, qui prend en charge ENSA2 et Enqueue Replicator 2
+ SLES pour applications SAP version 12 ou ultérieure
+ RHEL pour SAP avec haute disponibilité (HA) version 7.9 ou ultérieure

## Architecture
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-architecture"></a>

**Pile technologique source**
+ SAP NetWeaver 7.52 avec SAP Kernel 7.53 ou version ultérieure
+ Système d'exploitation SLES ou RHEL

**Pile technologique cible**
+ SAP NetWeaver 7.52 avec SAP Kernel 7.53 ou version ultérieure, y compris S/4HANA 2020 avec plate-forme ABAP
+ Système d'exploitation SLES ou RHEL

**Architecture cible**

Le schéma suivant montre une configuration HA ASCS/SCS et des instances ERS basées sur un ENSA2 cluster.

![\[Architecture HA pour ASCS/SCS les instances ERS d'un ENSA2 cluster\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/c32560de-901f-4796-a6b3-c08c109b22c8/images/19501713-0ddf-4242-9ea3-90478200a19e.png)


**Comparaison de ENSA2 clusters ENSA1 et de clusters**

SAP a été introduit ENSA2 en tant que successeur de ENSA1. Un cluster ENSA1 basé prend en charge une architecture à deux nœuds dans laquelle l' ASCS/SCS instance bascule vers ERS en cas d'erreur. Cette limitation provient de la manière dont l' ASCS/SCS instance récupère les informations de la table de verrouillage depuis la mémoire partagée du nœud ERS après un basculement. ENSA2les clusters basés sur Enqueue Replicator 2 éliminent cette limitation, car l' ASCS/SCS instance peut collecter les informations de verrouillage de l'instance ERS via le réseau. ENSA2les clusters basés sur le nœud peuvent comporter plus de deux nœuds, car il n'est plus nécessaire que l' ASCS/SCS instance bascule vers le nœud ERS. (Toutefois, dans un environnement de ENSA2 cluster à deux nœuds, l' ASCS/SCS instance bascule toujours vers le nœud ERS car il n'y a aucun autre nœud du cluster vers lequel basculer.) ENSA2 est pris en charge à partir de SAP Kernel 7.50 avec certaines limitations. Pour une configuration HA qui prend en charge Enqueue Replicator 2, la configuration minimale requise est de NetWeaver 7,52 (voir la [note SAP OSS 2630416](https://launchpad.support.sap.com/#/notes/2630416)). S/4HANA 1809 est livré avec une ENSA2 architecture recommandée par défaut, tandis que S/4HANA ne prend en charge qu'à partir de la version 2020. ENSA2 

**Automatisation et mise à l'échelle**

Le cluster HA de l'architecture cible permet à ASCS de basculer automatiquement vers d'autres nœuds.

**Scénarios de migration vers des clusters ENSA2 basés**

Il existe deux scénarios principaux pour la mise à niveau vers ENSA2 des clusters basés : 
+ Scénario 1 : vous choisissez de passer à une version ENSA2 sans mise à niveau SAP ou conversion S/4HANA associée, en supposant que votre version SAP et votre version du noyau soient compatibles. ENSA2
+ Scénario 2 : vous passez à ENSA2 SUM dans le cadre d'une mise à niveau ou d'une conversion (par exemple, vers S/4HANA 1809 ou version ultérieure).

La section [Epics](#upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics) décrit les étapes de ces deux scénarios. Le premier scénario vous oblige à configurer manuellement les paramètres liés à SAP avant de modifier la configuration du cluster pour ENSA2. Dans le second scénario, les fichiers binaires et les paramètres liés à SAP sont déployés par SUM, et il ne vous reste plus qu'à mettre à jour la configuration du cluster pour HA. Nous vous recommandons tout de même de valider les paramètres SAP après avoir utilisé SUM. Dans la plupart des cas, la conversion S/4HANA est la principale raison d'une mise à niveau du cluster.

## Outils
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-tools"></a>
+ Pour les gestionnaires de packages de systèmes d'exploitation, nous recommandons les outils Zypper (pour SLES) ou YUM (pour RHEL).
+ Pour la gestion des clusters, nous recommandons les shells **crm** (pour SLES) ou **pcs** (pour RHEL).
+ Outils de gestion des instances SAP tels que SAPControl.
+ Outil SUM (facultatif) pour la mise à niveau de conversion de S/4HANA.

## Bonnes pratiques
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-best-practices"></a>
+ Pour connaître les meilleures pratiques relatives à l'utilisation des charges de travail SAP sur AWS, consultez le [SAP Lens for the](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html) AWS Well-Architected Framework.
+ Tenez compte du nombre de nœuds de cluster (pair ou impair) dans votre architecture à ENSA2 nœuds multiples.
+ Configurez le ENSA2 cluster pour SLES 15 conformément à la norme de certification SAP S/4-HA-CLU 1.0.
+ Enregistrez ou sauvegardez toujours l'état de votre cluster et de votre application existants avant de procéder à la mise à niveau vers ENSA2.

## Épopées
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-epics"></a>

### Configurer les paramètres SAP manuellement pour ENSA2 (scénario 1 uniquement)
<a name="configure-sap-parameters-manually-for-ensa2-scenario-1-only"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les paramètres dans le profil par défaut. | Si vous souhaitez effectuer une mise à niveau ENSA2 tout en conservant la même version SAP ou si votre version cible est la valeur par défaut ENSA1, définissez les paramètres du profil par défaut (fichier DEFAULT.PFL) sur les valeurs suivantes.<pre>enq/enable=TRUE<br />enq/serverhost=sapascsvirt<br />enq/serverinst=10        (instance number of ASCS/SCS instance)<br />enque/process_location=REMOTESA<br />enq/replicatorhost=sapersvirt<br />enq/replicatorinst=11    (instance number of ERS instance)<br />  </pre>où `sapascsvirt` est le nom d'hôte virtuel pour les instances ASCS, et `sapersvirt` est le nom d'hôte virtuel pour les instances ERS. Vous pouvez les modifier pour les adapter à votre environnement cible.Pour utiliser cette option de mise à niveau, votre version SAP et votre version du noyau doivent prendre en charge ENSA2 Enqueue Replicator 2. | SAP | 
| Configurez le profil de l' ASCS/SCS instance. | Si vous souhaitez effectuer une mise à ENSA2 niveau vers la même version de SAP ou si votre version cible est par défaut ENSA1, définissez les paramètres suivants dans le profil d' ASCS/SCS instance. La section du profil où ENSA1 est défini ressemble à ce qui suit.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_EN = en.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_EN) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enserver$(FT_EXE) $(_EN) <br />Start_Program_01 = local $(_EN) pf=$(_PF)<br />  </pre>Pour reconfigurer cette section pour ENSA2 :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Cette section de profil ressemblera à ce qui suit après vos modifications.<pre>#--------------------------------------------------------------<br />Start SAP enqueue server<br />#-------------------------------------------------------------- <br />_ENQ = enq.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_04 = local rm -f $(_ENQ) <br />Execute_05 = local ln -s -f $(DIR_EXECUTABLE)/enq_server$(FT_EXE) $(_ENQ) <br />Start_Program_01 = local $(_ENQ) pf=$(_PF) <br />... <br />enq/server/replication/enable = TRUE <br />Autostart = 0</pre>`_ENQ`l'option de redémarrage ne doit pas être activée. S'`RestartProgram_01`il est défini pour`_ENQ`, remplacez-le par`StartProgram_01`. Cela empêche SAP de redémarrer le service ou d'interférer avec les ressources gérées par le cluster. | SAP | 
| Configurez le profil ERS. | Si vous souhaitez effectuer une mise à ENSA2 niveau vers la même version de SAP ou si votre version cible est par défaut ENSA1, définissez les paramètres suivants dans le profil d'instance ERS.Trouvez la section dans laquelle le réplicateur de files d'attente est défini. Ce sera similaire à ce qui suit.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ER = er.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_03 = local rm -f $(_ER) <br />Execute_04 = local ln -s -f $(DIR_EXECUTABLE)/enrepserver$(FT_EXE) $(_ER) <br />Start_Program_00 = local $(_ER) pf=$(_PF) NR=$(SCSID)<br />  </pre>Pour reconfigurer cette section pour Enqueue Replicator 2 :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2.html)Cette section de profil devrait ressembler à ce qui suit après vos modifications.<pre>#------------------------------------------------------<br />Start enqueue replication server<br />#------------------------------------------------------ <br />_ENQR = enqr.sap$(SAPSYSTEMNAME)$(INSTANCE_NAME) <br />Execute_01 = local rm -f $(_ENQR) <br />Execute_02 = local ln -s -f $(DIR_EXECUTABLE)/enq_replicator$(FT_EXE) $(_ENQR) <br />Start_Program_00 = local $(_ENQR) pf=$(_PF) NR=$(SCSID) <br />… <br />Autostart = 0</pre>`_ENQR`l'option de redémarrage ne doit pas être activée. S'`RestartProgram_01`il est défini pour`_ENQR`, remplacez-le par`StartProgram_01`. Cela empêche SAP de redémarrer le service ou d'interférer avec les services gérés par cluster. | SAP | 
| Redémarrez SAP Start Services. | Après avoir modifié les profils décrits précédemment dans cet article épique, redémarrez SAP Start Services pour les deux ASCS/SCS et ERS.`sapcontrol -nr 10 -function RestartService SCT``sapcontrol -nr 11 -function RestartService SCT`où `SCT` fait référence à l'ID du système SAP, en supposant que 10 et 11 sont respectivement les numéros d'instance ASCS/SCS et les numéros d'instance ERS. | SAP | 

### Reconfigurer le cluster pour ENSA2 (obligatoire pour les deux scénarios)
<a name="reconfigure-the-cluster-for-ensa2-required-for-both-scenarios"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Vérifiez les numéros de version dans les agents de ressources SAP. | Lorsque vous utilisez SUM pour mettre à niveau SAP vers S/4HANA 1809 ou une version ultérieure, SUM gère les modifications de paramètres dans les profils SAP. Seul le cluster nécessite un réglage manuel. Toutefois, nous vous recommandons de vérifier les paramètres avant d'apporter des modifications au cluster.Les exemples présentés dans cette épopée supposent que vous utilisez le système d'exploitation SUSE. **Si vous utilisez RHEL, vous devrez utiliser des outils tels que YUM et le shell **PCs** au lieu de Zypper et CRM.**Vérifiez les deux nœuds de l'architecture pour vérifier que le `resource-agents` package correspond à la version minimale recommandée par SAP. Pour SLES, consultez la note SAP OSS 2641019. Pour RHEL, consultez la note SAP OSS 2641322. (SAP Notes nécessite un [compte utilisateur SAP ONE Support Launchpad](https://support.sap.com/en/my-support/knowledge-base.html).)<pre>sapers:sctadm 23> zypper search -s -i resource-agents<br />Loading repository data...<br />Reading installed packages...<br />S | Name | Type | Version | Arch | Repository<br />--+-----------------+---------+------------------------------------+--------+-----------------------------<br />i | resource-agents | package | 4.8.0+git30.d0077df0-150300.8.28.1 | x86_64 | SLE-Product-HA15-SP3-Updates</pre>Mettez à jour la `resource-agents` version si nécessaire. | Administrateur système AWS | 
| Sauvegardez la configuration du cluster. | Sauvegardez la configuration du cluster CRM comme suit.`crm configure show > /tmp/cluster_config_backup.txt` | Administrateur système AWS | 
| Définissez le mode de maintenance. | Réglez le cluster en mode maintenance.`crm configure property maintenance-mode="true"` | Administrateur système AWS | 
| Vérifiez la configuration du cluster. | Vérifiez la configuration actuelle du cluster.`crm configure show`Voici un extrait de la sortie complète :<pre>node 1: sapascs<br />node 2: sapers<br />...<br />primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \ <br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10<br />primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000<br />...<br />colocation col_sap_SCT_no_both -5000: grp_SCT_ERS11 grp_SCT_ASCS10<br />location loc_sap_SCT_failover_to_ers rsc_sap_SCT_ASCS10 \<br />rule 2000: runs_ers_SCT eq 1<br />order ord_sap_SCT_first_start_ascs Optional: rsc_sap_SCT_ASCS10:start rsc_sap_SCT_ERS11:stop symmetrical=false<br />...</pre>où `sapascsvirt` fait référence au nom d'hôte virtuel pour les instances ASCS, `sapersvirt` fait référence au nom d'hôte virtuel pour les instances ERS et `SCT` fait référence à l'ID du système SAP. | Administrateur système AWS | 
| Supprimez la contrainte de colocation en cas de basculement. | Dans l'exemple précédent, la contrainte de localisation `loc_sap_SCT_failover_to_ers` indique que la ENSA1 fonctionnalité d'ASCS doit toujours suivre l'instance ERS en cas de basculement. Avec ENSA2, ASCS devrait pouvoir basculer librement vers tous les nœuds participants. Vous pouvez donc supprimer cette contrainte.`crm configure delete loc_sap_SCT_failover_to_ers` | Administrateur système AWS | 
| Ajustez les primitives. | Vous devrez également apporter des modifications mineures aux SAPInstance primitives ASCS et ERS.Voici un exemple de SAPInstance primitive ASCS configurée pour ENSA1.<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=5000 failure-timeout=60 migration-threshold=1 priority=10</pre>Pour effectuer une mise à niveau vers ENSA2, modifiez cette configuration comme suit.<pre>primitive rsc_sap_SCT_ASCS10 SAPInstance \<br />operations $id=rsc_sap_SCT_ASCS10-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ASCS10_sapascsvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ASCS10_sapascsvirt" \<br />   AUTOMATIC_RECOVER=false \<br />meta resource-stickiness=3000 </pre>Il s'agit d'un exemple de SAPInstance primitive ERS configurée pour ENSA1.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true \<br />meta priority=1000</pre>Pour effectuer une mise à niveau vers ENSA2, modifiez cette configuration comme suit.<pre>primitive rsc_sap_SCT_ERS11 SAPInstance \<br />operations $id=rsc_sap_SCT_ERS11-operations \<br />op monitor interval=120 timeout=60 on-fail=restart \<br />params InstanceName=SCT_ERS11_sapersvirt START_PROFILE="/sapmnt/SCT/profile/SCT_ERS11_sapersvirt" \<br />   AUTOMATIC_RECOVER=false IS_ERS=true</pre>Vous pouvez modifier les primitives de différentes manières. Par exemple, vous pouvez les réviser dans un éditeur tel que vi, comme dans l'exemple suivant.`crm configure edit rsc_sap_SCT_ERS11` | Administrateur système AWS | 
| Désactivez le mode maintenance. | Désactivez le mode maintenance sur le cluster.`crm configure property maintenance-mode="false"`Lorsque le cluster sort du mode maintenance, il tente de mettre en ligne les instances ASCS et ERS avec les nouveaux ENSA2 paramètres. | Administrateur système AWS | 

### (Facultatif) Ajoutez des nœuds de cluster
<a name="optional-add-cluster-nodes"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Passez en revue les meilleures pratiques. | Avant d'ajouter d'autres nœuds, assurez-vous de comprendre les meilleures pratiques, par exemple s'il faut utiliser un nombre pair ou impair de nœuds. | Administrateur système AWS | 
| Ajoutez des nœuds. | L'ajout de nœuds supplémentaires implique une série de tâches, telles que la mise à jour du système d'exploitation, l'installation de progiciels correspondant aux nœuds existants et la mise à disposition de montages. Vous pouvez utiliser l'option **Prepare Additional Host** dans SAP Software Provisioning Manager (SWPM) pour créer une base de référence spécifique à SAP pour l'hôte. Pour plus d'informations, consultez les guides SAP répertoriés dans la section suivante. | Administrateur système AWS | 

## Ressources connexes
<a name="upgrade-sap-pacemaker-clusters-from-ensa1-to-ensa2-resources"></a>

**Références SAP et SUSE**

Pour accéder à SAP Notes, vous devez disposer d'un compte utilisateur SAP ONE Support Launchpad. Pour de plus amples informations, veuillez consulter le [site web du support SAP](https://support.sap.com/en/my-support/knowledge-base.html).
+ [SAP Note 2501860 ‒ Documentation du serveur d' NetWeaver applications SAP pour ABAP 7.52](https://launchpad.support.sap.com/#/notes/2501860)
+ [SAP Note 2641019 ‒ Installation ENSA2 et mise à jour de ENSA1 vers ENSA2 dans l'environnement SUSE HA](https://launchpad.support.sap.com/#/notes/2641019)
+ [Note SAP 2641322 ‒ Installation ENSA2 et mise à jour de ENSA1 vers ENSA2 lors de l'utilisation des solutions Red Hat HA pour SAP](https://launchpad.support.sap.com/#/notes/2641322)
+ [SAP Note 2711036 ‒ Utilisation du serveur d'attente autonome 2 dans un environnement HA](https://launchpad.support.sap.com/#/notes/2711036)
+ [Serveur de file d'attente autonome 2](https://help.sap.com/docs/ABAP_PLATFORM/cff8531bc1d9416d91bb6781e628d4e0/902412f09e134f5bb875adb6db585c92.html) (documentation SAP)
+ [SAP S/4 HANA ‒ Cluster haute disponibilité Enqueue Replication 2 - Guide de configuration](https://documentation.suse.com/sbp/all/html/SAP_S4HA10_SetupGuide-SLE12/index.html) (documentation SUSE)

**Références AWS**
+ [SAP HANA sur AWS : guide de configuration de haute disponibilité pour SLES et RHEL](https://docs.aws.amazon.com/sap/latest/sap-hana/sap-hana-on-aws-ha-configuration.html)
+ [SAP Lens - Cadre AWS Well-Architected](https://docs.aws.amazon.com/wellarchitected/latest/sap-lens/sap-lens.html)

# Utilisez des zones de disponibilité cohérentes VPCs sur les différents comptes AWS
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts"></a>

*Adam Spicer, Amazon Web Services*

## Résumé
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-summary"></a>

Sur le cloud Amazon Web Services (AWS), le nom d'une zone de disponibilité peut varier selon vos comptes AWS et un [ID de zone de disponibilité (AZ ID)](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) qui identifie son emplacement. Si vous utilisez AWS CloudFormation pour créer des clouds privés virtuels (VPCs), vous devez spécifier le nom ou l'ID de la zone de disponibilité lors de la création des sous-réseaux. Si vous créez VPCs plusieurs comptes, le nom de la zone de disponibilité est aléatoire, ce qui signifie que les sous-réseaux utilisent des zones de disponibilité différentes dans chaque compte. 

Pour utiliser la même zone de disponibilité sur tous vos comptes, vous devez associer le nom de la zone de disponibilité de chaque compte au même AZ ID. Par exemple, le schéma suivant montre que l'ID `use1-az6` AZ est nommé `us-east-1a` dans le compte AWS A et `us-east-1c` dans le compte AWS Z.

![\[L'ID AZ use1-az6 est nommé us-east-1a dans le compte AWS A et us-east-1c dans le compte AWS Z.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/23c8a37b-2408-4534-a1e0-bccfa4d7fbe3.png)


 

Ce modèle permet de garantir la cohérence zonale en fournissant une solution évolutive entre comptes permettant d'utiliser les mêmes zones de disponibilité dans vos sous-réseaux. La cohérence zonale garantit que le trafic réseau entre comptes évite les chemins réseau entre zones de disponibilité, ce qui permet de réduire les coûts de transfert de données et de réduire la latence réseau entre vos charges de travail.

Ce modèle constitue une approche alternative à la CloudFormation [AvailabilityZoneId propriété](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzoneid) AWS.

## Conditions préalables et limitations
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-prereqs"></a>

**Conditions préalables**
+ Au moins deux comptes AWS actifs dans la même région AWS.
+ Évaluez le nombre de zones de disponibilité nécessaires pour répondre à vos besoins en matière de VPC dans la région.
+ Identifiez et enregistrez l'ID AZ pour chaque zone de disponibilité que vous devez prendre en charge. Pour plus d'informations à ce sujet, consultez [la section Zone IDs de disponibilité de vos ressources AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) dans la documentation d'AWS Resource Access Manager.  
+ Une liste ordonnée, séparée par des virgules, de votre AZ. IDs Par exemple, la première zone de disponibilité de votre liste est mappée comme`az1`, la deuxième zone de disponibilité est mappée comme`az2`, et cette structure de mappage continue jusqu'à ce que votre liste séparée par des virgules soit entièrement mappée. Il n'y a pas de nombre maximum d'AZ IDs qui peuvent être mappés. 
+ Le `az-mapping.yaml` fichier du référentiel de [mappage des zones de disponibilité GitHub multicomptes](https://github.com/aws-samples/multi-account-az-mapping/), copié sur votre machine locale

## Architecture
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-architecture"></a>

Le schéma suivant montre l'architecture déployée dans un compte et qui crée les valeurs de l'AWS Systems Manager Parameter Store. Ces valeurs du Parameter Store sont consommées lorsque vous créez un VPC dans le compte.

![\[Flux de travail pour créer les valeurs du magasin de paramètres de Systems Manager pour chaque ID AZ et nom de magasin AZ.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/f1168464-55f8-4efc-9b28-6a0cda668b9e.png)


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

1. La solution de ce modèle est déployée sur tous les comptes qui nécessitent une cohérence zonale pour un VPC. 

1. La solution crée des valeurs de magasin de paramètres pour chaque ID AZ et stocke le nouveau nom de zone de disponibilité. 

1. Le CloudFormation modèle AWS utilise le nom de la zone de disponibilité stocké dans chaque valeur du magasin de paramètres, ce qui garantit la cohérence zonale.

Le schéma suivant montre le flux de travail pour créer un VPC avec la solution de ce modèle.

 

![\[Workflow soumet un CloudFormation modèle pour créer un VPC avec l'AZ correct. IDs\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/cd859430-ac25-479f-b56a-21da24cddf21.png)


 

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

1. Soumettez un modèle pour créer un VPC à AWS. CloudFormation

1. AWS CloudFormation résout les valeurs du magasin de paramètres pour chaque zone de disponibilité et renvoie le nom de la zone de disponibilité pour chaque ID AZ.

1. Un VPC est créé avec la bonne AZ IDs requise pour la cohérence zonale.

Après avoir déployé la solution de ce modèle, vous pouvez créer des sous-réseaux qui font référence aux valeurs du Parameter Store. Si vous utilisez AWS CloudFormation, vous pouvez référencer les valeurs des paramètres de mappage de la zone de disponibilité à partir de l'exemple de code au format YAML suivant :

```
Resources:
    PrivateSubnet1AZ1: 
        Type: AWS::EC2::Subnet 
        Properties: 
            VpcId: !Ref VPC
            CidrBlock: !Ref PrivateSubnetAZ1CIDR
            AvailabilityZone: 
                !Join 
                    - ''
                    - - '{{resolve:ssm:/az-mapping/az1:1}}'
```

Cet exemple de code est contenu dans le `vpc-example.yaml ` fichier du référentiel de [mappage des zones de disponibilité GitHub multicomptes](https://github.com/aws-samples/multi-account-az-mapping/). Il explique comment créer un VPC et des sous-réseaux qui s'alignent sur les valeurs du Parameter Store pour garantir la cohérence zonale.

**Pile technologique**
+ AWS CloudFormation
+ AWS Lambda
+ AWS Systems Manager Parameter Store

**Automatisation et mise à l'échelle**

Vous pouvez déployer ce modèle sur tous vos comptes AWS à l'aide d'AWS CloudFormation StackSets ou de la solution Customizations for AWS Control Tower. Pour plus d'informations, consultez [Working with AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dans la documentation AWS Cloudformation et [Customizations for AWS Control Tower dans la](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/) bibliothèque de solutions AWS. 

Après avoir déployé le CloudFormation modèle AWS, vous pouvez le mettre à jour pour utiliser les valeurs du Parameter Store et le déployer VPCs dans des pipelines ou selon vos besoins. 

## Outils
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-tools"></a>

**Services AWS**
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) vous CloudFormation aide à modéliser et à configurer vos ressources AWS, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie. Vous pouvez utiliser un modèle pour décrire vos ressources et leurs dépendances, puis les lancer et les configurer ensemble sous forme de pile, au lieu de gérer les ressources individuellement. Vous pouvez gérer et approvisionner des piles sur plusieurs comptes AWS et régions AWS.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. Vous payez uniquement le temps de calcul que vous utilisez. Vous n'exposez aucuns frais quand votre code n'est pas exécuté.
+ [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) est une fonctionnalité d'AWS Systems Manager. Il fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

**Code**

Le code de ce modèle est fourni dans le référentiel de [mappage des zones de disponibilité GitHub multicomptes](https://github.com/aws-samples/multi-account-az-mapping/).

## Épopées
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-epics"></a>

### Déployez le fichier az-mapping.yaml
<a name="deploy-the-az-mapping-yaml-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déterminez les zones de disponibilité requises pour la région. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html) | Architecte du cloud | 
| Déployez le fichier az-mapping.yaml. | Utilisez le `az-mapping.yaml` fichier pour créer une CloudFormation pile AWS dans tous les comptes AWS requis. Dans le `AZIds` paramètre, utilisez la liste séparée par des virgules que vous avez créée précédemment. Nous vous recommandons d'utiliser [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) ou la [solution Customizations for AWS Control Tower](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/). | Architecte du cloud | 

### Déployez le VPCs dans vos comptes
<a name="deploy-the-vpcs-in-your-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Personnalisez les CloudFormation modèles AWS. | Lorsque vous créez les sous-réseaux à l'aide d'AWS CloudFormation, personnalisez les modèles pour utiliser les valeurs du magasin de paramètres que vous avez créées précédemment.Pour un exemple de modèle, consultez le `vpc-example.yaml` fichier dans le référentiel de [mappage des zones de disponibilité GitHub multicomptes](https://github.com/aws-samples/multi-account-az-mapping/). | Architecte du cloud | 
| Déployez le VPCs. | Déployez les CloudFormation modèles AWS personnalisés dans vos comptes. Chaque VPC de la région possède alors une cohérence zonale dans les zones de disponibilité utilisées pour les sous-réseaux. | Architecte du cloud | 

## Ressources connexes
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-resources"></a>
+ [Zone de disponibilité IDs pour vos ressources AWS](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html) (documentation AWS Resource Access Manager)
+ [AWS::EC2::Subnet](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html)( CloudFormation documentation AWS)

# Utiliser l'utilisateur IDs dans les politiques IAM pour le contrôle d'accès et l'automatisation
<a name="use-user-ids-iam-policies-access-control-automation"></a>

*Srinivas Ananda Babu et Ram Kandaswamy, Amazon Web Services*

## Résumé
<a name="use-user-ids-iam-policies-access-control-automation-summary"></a>

Ce modèle explique les pièges potentiels liés à l'utilisation de politiques basées sur le nom d'utilisateur dans Gestion des identités et des accès AWS (IAM), les avantages de l'utilisation de l'utilisateur IDs et la manière d'intégrer cette approche à l'automatisation. AWS CloudFormation 

Dans le AWS Cloud, le service IAM vous aide à gérer les identités des utilisateurs et le contrôle d'accès avec précision. Cependant, le recours aux noms d'utilisateur lors de la création de politiques IAM peut entraîner des risques de sécurité imprévus et des problèmes de contrôle d'accès. Par exemple, imaginez ce scénario : un nouvel employé, John Doe, rejoint votre équipe et vous créez un compte utilisateur IAM avec le nom d'utilisateur`j.doe`, qui lui accorde des autorisations par le biais de politiques IAM faisant référence à des noms d'utilisateur. Lorsque John quitte l'entreprise, le compte est supprimé. Le problème commence lorsqu'une nouvelle employée, Jane Doe, rejoint votre équipe et que le `j.doe` nom d'utilisateur est recréé. Les politiques existantes accordent désormais à Jane Doe les mêmes autorisations qu'à John Doe. Cela crée un véritable cauchemar en matière de sécurité et de conformité.

La mise à jour manuelle de chaque politique pour refléter les informations des nouveaux utilisateurs est un processus long et sujet aux erreurs, en particulier à mesure que votre organisation se développe. La solution consiste à utiliser un identifiant utilisateur unique et immuable. Lorsque vous créez un compte utilisateur IAM, AWS attribuez à l'utilisateur IAM un ID utilisateur unique (ou ID principal). Vous pouvez utiliser ces utilisateurs IDs dans vos politiques IAM pour garantir un contrôle d'accès cohérent et fiable qui n'est pas affecté par les modifications ou la réutilisation du nom d'utilisateur.

Par exemple, une politique IAM qui utilise un ID utilisateur peut ressembler à ceci :

```
{ 
    "Version": "2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": "s3:ListBucket", 
            "Resource": "arn:aws:s3:::example-bucket", 
            "Principal": { "AWS": "arn:aws:iam::123456789012:user/abcdef01234567890" } 
        } 
      ] 
}
```

Les avantages de l'utilisation de l'utilisateur IDs dans les politiques IAM sont les suivants :
+ **Unicité.** IDs Les utilisateurs étant uniques Comptes AWS, ils fournissent une application d'autorisation correcte et cohérente.
+ **Immuabilité.** L'utilisateur IDs ne pouvant pas être modifié, ils fournissent un identifiant stable pour référencer les utilisateurs dans les politiques.
+ **Audit et conformité.** Services AWS Incluez souvent l'utilisateur IDs dans les journaux et les pistes d'audit, ce qui permet de retracer facilement les actions jusqu'à des utilisateurs spécifiques.
+ **Automatisation et intégration.** L'utilisation de scripts user IDs in AWS APIs ou d'automatisation garantit que les processus ne sont pas affectés par les changements de nom d'utilisateur. SDKs
+ **Pérennité.** L'utilisation de l'utilisateur IDs dans les politiques dès le départ peut éviter d'éventuels problèmes de contrôle d'accès ou des mises à jour importantes des politiques.

**Automation**

Lorsque vous utilisez des outils d'infrastructure en tant que code (IaC) tels que AWS CloudFormation les pièges des politiques IAM basées sur le nom d'utilisateur peuvent toujours poser problème. La ressource utilisateur IAM renvoie le nom d'utilisateur lorsque vous appelez la fonction `Ref` intrinsèque. À mesure que l'infrastructure de votre entreprise évolue, le cycle de création et de suppression de ressources, y compris les comptes utilisateur IAM, peut entraîner des problèmes de contrôle d'accès involontaires si vous réutilisez les noms d'utilisateur.

Pour résoudre ce problème, nous vous recommandons d'intégrer l'utilisateur IDs dans vos CloudFormation modèles. Cependant, il peut être difficile IDs d'obtenir un utilisateur à cette fin. C'est là que les ressources personnalisées peuvent être utiles. Vous pouvez utiliser des ressources CloudFormation personnalisées pour étendre les fonctionnalités du service en intégrant des services externes AWS APIs ou en les intégrant. En créant une ressource personnalisée qui récupère l'ID utilisateur d'un utilisateur IAM donné, vous pouvez le rendre disponible dans vos CloudFormation modèles. Cette approche rationalise le processus de référencement des utilisateurs IDs et garantit que vos flux de travail d'automatisation restent robustes et pérennes.

## Conditions préalables et limitations
<a name="use-user-ids-iam-policies-access-control-automation-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Rôle IAM permettant à un administrateur du cloud d'exécuter le modèle CloudFormation 

**Limites**
+ Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Pour des points de terminaison spécifiques, consultez la page [Points de terminaison et quotas du service](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), puis choisissez le lien vers le service.

## Architecture
<a name="use-user-ids-iam-policies-access-control-automation-architecture"></a>

**Architecture cible**

Le schéma suivant montre comment CloudFormation utilise une ressource personnalisée sauvegardée par AWS Lambda pour récupérer l'ID utilisateur IAM.

![\[Obtenir l'ID utilisateur IAM à l'aide d'une ressource CloudFormation personnalisée.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/71698647-274e-4911-92f0-549e444b53f6/images/7e507df4-f597-499e-bd5b-6d7a55e64146.png)


**Automatisation et évolutivité**

Vous pouvez utiliser le CloudFormation modèle plusieurs fois pour différents Régions AWS comptes. Vous ne devez l'exécuter qu'une seule fois dans chaque région ou compte.

## Outils
<a name="use-user-ids-iam-policies-access-control-automation-tools"></a>

**Services AWS**
+ [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) — Gestion des identités et des accès AWS (IAM) est un service Web qui vous permet de contrôler en toute sécurité l'accès aux AWS ressources. Vous pouvez utiliser IAM pour contrôler les personnes qui s’authentifient (sont connectées) et sont autorisées (disposent d’autorisations) à utiliser des ressources.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)— vous AWS CloudFormation aide à modéliser et à configurer vos AWS ressources afin que vous puissiez passer moins de temps à gérer ces ressources et plus de temps à vous concentrer sur les applications qui s'exécutent sur AWS. Vous créez un modèle qui décrit les AWS ressources que vous souhaitez, et vous vous CloudFormation occupez de leur provisionnement et de leur configuration.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)— AWS Lambda est un service de calcul qui prend en charge l'exécution de code sans provisionner ni gérer de serveurs. Lambda exécute le code uniquement lorsque cela est nécessaire et se met à l’échelle automatiquement, qu’il s’agisse de quelques requêtes par jour ou de milliers de requêtes par seconde. 

## Bonnes pratiques
<a name="use-user-ids-iam-policies-access-control-automation-best-practices"></a>

Si vous partez de zéro ou si vous planifiez un nouveau déploiement, nous vous recommandons vivement de recourir à la gestion centralisée [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)des utilisateurs. IAM Identity Center s'intègre à vos fournisseurs d'identité existants (tels qu'Active Directory ou Okta) pour fédérer les identités des utilisateurs AWS, ce qui élimine le besoin de créer et de gérer directement des utilisateurs IAM. Cette approche garantit non seulement un contrôle d'accès cohérent, mais simplifie également la gestion du cycle de vie des utilisateurs et contribue à améliorer la sécurité et la conformité dans votre AWS environnement.

## Épopées
<a name="use-user-ids-iam-policies-access-control-automation-epics"></a>

### Valider les autorisations
<a name="validate-permissions"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Validez votre rôle Compte AWS et celui d'IAM. | Vérifiez que vous disposez d'un rôle IAM autorisé à déployer des CloudFormation modèles dans votre Compte AWS.Si vous prévoyez d'utiliser la console AWS CLI au lieu de la CloudFormation console pour déployer le modèle lors de la dernière étape de cette procédure, vous devez également configurer des informations d'identification temporaires pour exécuter des AWS CLI commandes. Pour obtenir des instructions, consultez la [documentation IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli). | Architecte du cloud | 

### Créez un CloudFormation modèle
<a name="build-a-cfnshort-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html) | AWS DevOps, architecte du cloud | 
| Ajoutez un paramètre d'entrée pour le nom d'utilisateur. | Ajoutez le code suivant à la `Parameters` section du CloudFormation modèle :<pre>Parameters:<br />  NewIamUserName:<br />    Type: String<br />    Description: Unique username for the new IAM user<br /></pre>Ce paramètre invite l'utilisateur à saisir son nom d'utilisateur. | AWS DevOps, architecte du cloud | 
| Ajoutez une ressource personnalisée pour créer un utilisateur IAM. | Ajoutez le code suivant à la `Resources` section du CloudFormation modèle :<pre>Resources:<br />  rNewIamUser:<br />    Type: 'AWS::IAM::User'<br />    Properties:<br />      UserName: !Ref NewIamUserName<br /></pre>Ce code ajoute une CloudFormation ressource qui crée un utilisateur IAM avec le nom fourni par le `NewIamUserName` paramètre. | AWS DevOps, architecte du cloud | 
| Ajoutez un rôle d'exécution pour la fonction Lambda. | Au cours de cette étape, vous créez un rôle IAM qui accorde à une AWS Lambda fonction l'autorisation d'obtenir l'`UserId`IAM. Spécifiez les autorisations minimales requises suivantes pour que Lambda s'exécute :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/use-user-ids-iam-policies-access-control-automation.html)Pour obtenir des instructions sur la création d'un rôle d'exécution, consultez la documentation [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html). Vous ferez référence à ce rôle à l'étape suivante, lorsque vous créerez la fonction Lambda. | Administrateur AWS, architecte cloud | 
| Ajoutez une fonction Lambda pour obtenir l'IAM unique. `UserId` | Dans cette étape, vous définissez une fonction Lambda avec un environnement d'exécution Python pour obtenir l'IAM unique. `UserId` Pour ce faire, ajoutez le code suivant dans la `Resources` section du CloudFormation modèle. `<<ROLENAME>>`Remplacez-le par le nom du rôle d'exécution que vous avez créé lors de la dernière étape.<pre>  GetUserLambdaFunction:<br />    Type: 'AWS::Lambda::Function'<br />    Properties:<br />      Handler: index.handler<br />      Role: <<ROLENAME>><br />      Timeout: 30<br />      Runtime: python3.11<br />      Code:<br />        ZipFile: |<br />          import cfnresponse, boto3<br />          def handler(event, context):<br />            try:<br />              print(event)<br />              user = boto3.client('iam').get_user(UserName=event['ResourceProperties']['NewIamUserName'])['User']<br />              cfnresponse.send(event, context, cfnresponse.SUCCESS, {'NewIamUserId': user['UserId'], 'NewIamUserPath': user['Path'], 'NewIamUserArn': user['Arn']})<br />            except Exception as e:<br />              cfnresponse.send(event, context, cfnresponse.FAILED, {'NewIamUser': str(e)})<br /></pre> | AWS DevOps, architecte du cloud | 
| Ajoutez une ressource personnalisée. | Ajoutez le code suivant à la `Resources` section du CloudFormation modèle :<pre>  rCustomGetUniqueUserId:<br />    Type: 'Custom::rCustomGetUniqueUserIdWithLambda'<br />    Properties:<br />      ServiceToken: !GetAtt GetUserLambdaFunction.Arn<br />      NewIamUserName: !Ref NewIamUserName<br /></pre>Cette ressource personnalisée appelle la fonction Lambda pour obtenir l'IAM. `UserID` | AWS DevOps, architecte du cloud | 
| Définissez les CloudFormation sorties. | Ajoutez le code suivant à la `Outputs` section du CloudFormation modèle :<pre>Outputs:<br />  NewIamUserId:<br />    Value: !GetAtt rCustomGetUniqueUserId.NewIamUserId<br /></pre>Cela affiche l'IAM du nouvel `UserID` utilisateur IAM. | AWS DevOps, architecte du cloud | 
| Enregistrez le modèle. | Enregistrez les modifications apportées au CloudFormation modèle. | AWS DevOps, architecte du cloud | 

### Déployer le CloudFormation modèle
<a name="deploy-the-cfnshort-template"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le CloudFormation modèle. | Pour déployer le `get_unique_user_id.yaml` modèle à l'aide de la CloudFormation console, suivez les instructions de la [CloudFormation documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html).Vous pouvez également exécuter la AWS CLI commande suivante pour déployer le modèle :<pre>aws cloudformation create-stack \<br />--stack-name DemoNewUser \<br />--template-body file://get_unique_user_id.yaml \<br />--parameters ParameterKey=NewIamUserName,ParameterValue=demouser \<br />--capabilities CAPABILITY_NAMED_IAM</pre> | AWS DevOps, architecte du cloud | 

## Ressources connexes
<a name="use-user-ids-iam-policies-access-control-automation-resources"></a>
+ [Création d'une pile depuis la CloudFormation console](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) (CloudFormation documentation)
+ [Ressources personnalisées soutenues par Lambda](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources-lambda.html) (documentation) CloudFormation 
+ [Identifiants uniques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) (documentation IAM)
+ [Utiliser des informations d'identification temporaires avec AWS les ressources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) (documentation IAM)

# Validez le code Account Factory pour Terraform (AFT) localement
<a name="validate-account-factory-for-terraform-aft-code-locally"></a>

*Alexandru Pop et Michal Gorniak, Amazon Web Services*

## Résumé
<a name="validate-account-factory-for-terraform-aft-code-locally-summary"></a>

Ce modèle montre comment tester localement le code HashiCorp Terraform géré par AWS Control Tower Account Factory for Terraform (AFT). Terraform est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud. AFT met en place un pipeline Terraform qui vous aide à approvisionner et à personnaliser plusieurs Comptes AWS entrées. AWS Control Tower

Lors du développement du code, il peut être utile de tester votre infrastructure Terraform en tant que code (IaC) localement, en dehors du pipeline AFT. Ce modèle montre comment effectuer les opérations suivantes :
+ Récupérez une copie locale du code Terraform stocké dans les AWS CodeCommit référentiels de votre compte de gestion AFT.
+ Simulez le pipeline AFT localement en utilisant le code récupéré.

Cette procédure peut également être utilisée pour exécuter des commandes Terraform qui ne font pas partie du pipeline AFT normal. Par exemple, vous pouvez utiliser cette méthode pour exécuter des commandes telles que `terraform validate``terraform plan`,`terraform destroy`, et`terraform import`.

## Conditions préalables et limitations
<a name="validate-account-factory-for-terraform-aft-code-locally-prereqs"></a>

**Conditions préalables**
+ Un environnement AWS multi-comptes actif qui utilise [AWS Control Tower](https://aws.amazon.com/controltower)
+ Un [environnement AFT](https://docs.aws.amazon.com/controltower/latest/userguide/taf-account-provisioning.html) entièrement déployé
+ AWS Command Line Interface (AWS CLI), [installé](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) et [configuré](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [AWS CLI assistant d'identification pour AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html), installé et configuré
+ Python 3.x
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git), installé et configuré sur votre machine locale
+ `git-remote-commit`utilitaire, [installé et configuré](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install)
+ [Terraform](https://learn.hashicorp.com/collections/terraform/aws-get-started?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS), installé et configuré (la version du package Terraform local doit correspondre à la version utilisée dans le déploiement AFT)

**Limites**
+ Ce modèle ne couvre pas les étapes de déploiement requises pour AWS Control Tower AFT ou tout autre module Terraform spécifique.
+ La sortie générée localement au cours de cette procédure n'est pas enregistrée dans les journaux d'exécution du pipeline AFT.

## Architecture
<a name="validate-account-factory-for-terraform-aft-code-locally-architecture"></a>

**Pile technologique cible**
+ Infrastructure AFT déployée dans le cadre d'un AWS Control Tower déploiement
+ Terraform
+ Git
+ AWS CLI version 2

**Automatisation et mise à l'échelle**

Ce modèle montre comment invoquer localement le code Terraform pour les personnalisations de comptes globaux AFT dans un seul compte géré par AFT. Compte AWS Une fois votre code Terraform validé, vous pouvez l'appliquer aux comptes restants de votre environnement multi-comptes. Pour plus d'informations, voir [Réinvoquer les personnalisations](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations) dans la AWS Control Tower documentation.

Vous pouvez également utiliser un processus similaire pour exécuter des personnalisations de compte AFT dans un terminal local. Pour invoquer localement le code Terraform à partir des personnalisations de compte AFT, clonez le **aft-account-customizations**référentiel plutôt que le **aft-global-account-customizations**référentiel depuis votre compte de CodeCommit gestion AFT.

## Outils
<a name="validate-account-factory-for-terraform-aft-code-locally-tools"></a>

**Services AWS**
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)vous aide à configurer et à gérer un environnement AWS multi-comptes, conformément aux meilleures pratiques prescriptives.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.

**Autres services**
+ [HashiCorp Terraform](https://www.terraform.io/docs) est un outil d'infrastructure en tant que code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud.
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué et open source.

**Code**

Voici un exemple de script bash qui peut être utilisé pour exécuter localement du code Terraform géré par AFT. Pour utiliser le script, suivez les instructions de la section [Epics](#validate-account-factory-for-terraform-aft-code-locally-epics) de ce modèle.

```
#! /bin/bash
# Version: 1.1 2022-06-24 Unsetting AWS_PROFILE since, when set, it interferes with script operation
#          1.0 2022-02-02 Initial Version
#
# Purpose: For use with AFT: This script runs the local copy of TF code as if it were running within AFT pipeline.
#        * Facilitates testing of what the AFT pipline will do 
#           * Provides the ability to run terraform with custom arguments (like 'plan' or 'move') which are currently not supported within the pipeline.
#
# © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.
# This AWS Content is provided subject to the terms of the AWS Customer Agreement
# available at http://aws.amazon.com/agreement or other written agreement between
# Customer and either Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.
#
# Note: Arguments to this script are passed directly to 'terraform' without parsing nor validation by this script.
#
# Prerequisites:
#    1. local copy of ct GIT repositories
#    2. local backend.tf and aft-providers.tf filled with data for the target account on which terraform is to be run
#       Hint: The contents of above files can be obtain from the logs of a previous execution of the AFT pipeline for the target account.
#    3. 'terraform' binary is available in local PATH
#    4. Recommended: .gitignore file containing 'backend.tf', 'aft_providers.tf' so the local copy of these files are not pushed back to git

readonly credentials=$(aws sts assume-role \
    --role-arn arn:aws:iam::$(aws sts get-caller-identity --query "Account" --output text ):role/AWSAFTAdmin \
    --role-session-name AWSAFT-Session \
    --query Credentials )

unset AWS_PROFILE
export AWS_ACCESS_KEY_ID=$(echo $credentials | jq -r '.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $credentials | jq -r '.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $credentials | jq -r '.SessionToken')
terraform "$@"
```

## Épopées
<a name="validate-account-factory-for-terraform-aft-code-locally-epics"></a>

### Enregistrez l'exemple de code dans un fichier local
<a name="save-the-example-code-as-a-local-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Enregistrez l'exemple de code dans un fichier local. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrateur AWS | 
| Rendez l'exemple de code exécutable. | Ouvrez une fenêtre de terminal et authentifiez-vous dans votre compte de gestion AWS AFT en effectuant l'une des opérations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)Votre organisation peut également disposer d'un outil personnalisé pour fournir des informations d'authentification à votre AWS environnement. | Administrateur AWS | 
| Vérifiez correctement l'accès au compte de gestion AFT Région AWS. | Assurez-vous d'utiliser la même session de terminal que celle avec laquelle vous vous êtes authentifié sur votre compte de gestion AFT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrateur AWS | 
| Créez un nouveau répertoire local pour stocker le code du référentiel AFT. | Au cours de la même session de terminal, exécutez les commandes suivantes :<pre>mkdir my_aft <br />cd my_aft</pre> | Administrateur AWS | 
| Clonez le code du référentiel AFT distant. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrateur AWS | 

### Créez les fichiers de configuration Terraform requis pour que le pipeline AFT s'exécute localement
<a name="create-the-terraform-configuration-files-required-for-the-aft-pipeline-to-run-locally"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ouvrez un pipeline AFT déjà exécuté et copiez les fichiers de configuration Terraform dans un dossier local. | Les fichiers `aft-providers.tf` de configuration `backend.tf` et créés dans cette épopée sont nécessaires au fonctionnement local du pipeline AFT. Ces fichiers sont créés automatiquement dans le pipeline AFT basé sur le cloud, mais doivent être créés manuellement pour que le pipeline s'exécute localement. L'exécution locale du pipeline AFT nécessite un ensemble de fichiers représentant l'exécution du pipeline en un seul Compte AWS.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)**Exemple d'instruction backend.tf générée automatiquement**<pre>## Autogenerated backend.tf ##<br />## Updated on: 2022-05-31 16:27:45 ##<br />terraform {<br />  required_version = ">= 0.15.0"<br />  backend "s3" {<br />    region         = "us-east-2"<br />    bucket         = "aft-backend-############-primary-region"<br />    key            = "############-aft-global-customizations/terraform.tfstate"<br />    dynamodb_table = "aft-backend-############"<br />    encrypt        = "true"<br />    kms_key_id     = "########-####-####-####-############"<br />    role_arn       = "arn:aws:iam::#############:role/AWSAFTExecution"<br />  }<br />}</pre>****Les `aft-providers.tf` fichiers `backend.tf` et sont liés à un déploiement et à un dossier AFT spécifiques Compte AWS. Ces fichiers sont également différents selon qu'ils se trouvent ou non dans le **aft-account-customizations**référentiel **aft-global-customizations**and au sein du même déploiement AFT. Assurez-vous de générer les deux fichiers à partir de la même liste d'environnements d'exécution. | Administrateur AWS | 

### Exécutez le pipeline AFT localement en utilisant l'exemple de script bash
<a name="run-the-aft-pipeline-locally-by-using-the-example-bash-script"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Implémentez les modifications de configuration Terraform que vous souhaitez valider. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrateur AWS | 
| Exécutez le `ct_terraform.sh` script et examinez le résultat. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)** **[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html) | Administrateur AWS | 

### Transférez vos modifications de code local vers le référentiel AFT
<a name="push-your-local-code-changes-back-to-the-aft-repository"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez des références aux `aft-providers.tf` fichiers `backend.tf` et à un `.gitignore` fichier. | Ajoutez les `aft-providers.tf` fichiers `backend.tf`**** et que vous avez créés à un `.gitignore` fichier en exécutant les commandes suivantes :<pre>echo backend.tf >> .gitignore<br />echo aft-providers.tf >>.gitignore</pre>Le déplacement des fichiers vers le `.gitignore`**** fichier garantit qu'ils ne sont pas validés et renvoyés vers le référentiel AFT distant. | Administrateur AWS | 
| Validez et transférez vos modifications de code dans le référentiel AFT distant. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/validate-account-factory-for-terraform-aft-code-locally.html)Les modifications de code que vous introduisez en suivant cette procédure jusqu'à présent ne sont appliquées qu'à une Compte AWS seule. | Administrateur AWS | 

### Déployez les modifications sur plusieurs comptes
<a name="roll-out-the-changes-to-multiple-accounts"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Appliquez les modifications à tous vos comptes gérés par AFT. | Pour appliquer les modifications à plusieurs Comptes AWS options gérées par AFT, suivez les instructions de la section [Réinvoquer les personnalisations](https://docs.aws.amazon.com/controltower/latest/userguide/aft-account-customization-options.html#aft-re-invoke-customizations) dans la AWS Control Tower documentation. | Administrateur AWS | 

# Plus de modèles
<a name="infrastructure-more-patterns-pattern-list"></a>

**Topics**
+ [Ajoutez HA à Oracle PeopleSoft sur Amazon RDS Custom à l'aide d'une réplique en lecture](add-ha-to-oracle-peoplesoft-on-amazon-rds-custom-by-using-a-read-replica.md)
+ [Auditez automatiquement les groupes de AWS sécurité qui autorisent l'accès depuis des adresses IP publiques](audit-security-groups-access-public-ip.md)
+ [Automatisez la création de comptes en utilisant l'accélérateur Landing Zone sur AWS](automate-account-creation-lza.md)
+ [Automatisez l'ajout ou la mise à jour d'entrées de registre Windows à l'aide d'AWS Systems Manager](automate-adding-or-updating-windows-registry-entries-using-aws-systems-manager.md)
+ [Automatisez l'évaluation des ressources AWS](automate-aws-resource-assessment.md)
+ [Automatisez le déploiement du portefeuille et des produits AWS Service Catalog à l'aide d'AWS CDK](automate-aws-service-catalog-portfolio-and-product-deployment-by-using-aws-cdk.md)
+ [Automatisez le basculement et le retour en arrière entre régions à l'aide de DR Orchestrator Framework](automate-cross-region-failover-and-failback-by-using-dr-orchestrator-framework.md)
+ [Automatisez la suppression des AWS CloudFormation piles et des ressources associées](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Automatisez l'ingestion et la visualisation des métriques personnalisées Amazon MWAA sur Amazon Managed Grafana à l'aide de Terraform](automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.md)
+ [Automatisez la configuration de RabbitMQ dans Amazon MQ](automate-rabbitmq-configuration-in-amazon-mq.md)
+ [Automatisez le déploiement de lacs de AWS Supply Chain données dans une configuration multi-référentiels à l'aide d' GitHub Actions, Artifactory et Terraform](automate-the-deployment-of-aws-supply-chain-data-lakes.md)
+ [Automatisez la réplication des instances Amazon RDS sur Comptes AWS](automate-the-replication-of-amazon-rds-instances-across-aws-accounts.md)
+ [Associez automatiquement une politique gérée par AWS pour Systems Manager aux profils d' EC2 instance à l'aide de Cloud Custodian et d'AWS CDK](automatically-attach-an-aws-managed-policy-for-systems-manager-to-ec2-instance-profiles-using-cloud-custodian-and-aws-cdk.md)
+ [Créez automatiquement des CI/CD pipelines et des clusters Amazon ECS pour les microservices à l'aide d'AWS CDK](automatically-build-ci-cd-pipelines-and-amazon-ecs-clusters-for-microservices-using-aws-cdk.md)
+ [Détectez automatiquement les modifications et lancez différents CodePipeline pipelines pour un monorepo dans CodeCommit](automatically-detect-changes-and-initiate-different-codepipeline-pipelines-for-a-monorepo-in-codecommit.md)
+ [Créez un pipeline de données pour ingérer, transformer et analyser les données Google Analytics à l'aide du kit de AWS DataOps développement](build-a-data-pipeline-to-ingest-transform-and-analyze-google-analytics-data-using-the-aws-dataops-development-kit.md)
+ [Créez un PAC de serveur Micro Focus Enterprise avec Amazon EC2 Auto Scaling et Systems Manager](build-a-micro-focus-enterprise-server-pac-with-amazon-ec2-auto-scaling-and-systems-manager.md)
+ [Créez et envoyez des images Docker vers Amazon ECR à l'aide d' GitHub Actions et de Terraform](build-and-push-docker-images-to-amazon-ecr-using-github-actions-and-terraform.md)
+ [Créez une zone AWS d'atterrissage qui inclut MongoDB Atlas](build-aws-landing-zone-that-includes-mongodb-atlas.md)
+ [Centralisez la gestion des clés d'accès IAM dans AWS Organizations à l'aide de Terraform](centralize-iam-access-key-management-in-aws-organizations-by-using-terraform.md)
+ [Centralisez la distribution des packages logiciels dans AWS Organizations à l'aide de Terraform](centralize-software-package-distribution-in-aws-organizations-by-using-terraform.md)
+ [Configurez la journalisation des appels de modèles dans Amazon Bedrock en utilisant AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Configurer le routage en lecture seule dans un groupe de disponibilité Always On dans SQL Server sur AWS](configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.md)
+ [Créez un portail pour les micro-frontends en utilisant AWS Amplify Angular et Module Federation](create-amplify-micro-frontend-portal.md)
+ [Créez un cadre d'orchestration des ressources piloté par API à l'aide GitHub d'Actions et de Terragrunt](create-an-api-driven-resource-orchestration-framework-using-github-actions-and-terragrunt.md)
+ [Création d'une EventBridge connexion Amazon entre comptes au sein d'une organisation](create-cross-account-amazon-eventbridge-connection-organization.md)
+ [Créez automatiquement des pipelines CI dynamiques pour les projets Java et Python](create-dynamic-ci-pipelines-for-java-and-python-projects-automatically.md)
+ [Déployez une API Amazon API Gateway sur un site Web interne à l'aide de points de terminaison privés et d'un Application Load Balancer](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Déployez et gérez AWS Control Tower les contrôles en utilisant AWS CDK et CloudFormation](deploy-and-manage-aws-control-tower-controls-by-using-aws-cdk-and-aws-cloudformation.md)
+ [Déployez et gérez les AWS Control Tower contrôles à l'aide de Terraform](deploy-and-manage-aws-control-tower-controls-by-using-terraform.md)
+ [Déployez des CloudWatch canaris Synthetics à l'aide de Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Déployez un cluster CockroachDB dans Amazon EKS à l'aide de Terraform](deploy-cockroachdb-on-eks-using-terraform.md)
+ [Déployez un système de fichiers Lustre pour un traitement des données performant à l'aide de Terraform et DRA](deploy-lustre-file-system-for-high-performance-data-processing-with-terraform-dra.md)
+ [Déployez un cas d'utilisation de RAG AWS en utilisant Terraform et Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Déployez des ressources dans une AWS Wavelength zone à l'aide de Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Déployez des instances de cluster de basculement SQL Server sur Amazon EC2 et Amazon à l'aide FSx de Terraform](deploy-sql-server-failover-cluster-instances-on-amazon-ec2-and-amazon-fsx.md)
+ [Déployez les automatisations de sécurité pour la AWS WAF solution à l'aide de Terraform](deploy-the-security-automations-for-aws-waf-solution-by-using-terraform.md)
+ [Détectez les instances de base de données Amazon RDS et Aurora dont les certificats CA expirent](detect-rds-instances-expiring-certificates.md)
+ [Documentez la conception de votre zone de landing zone AWS](document-your-aws-landing-zone-design.md)
+ [Exportez les rapports AWS Backup de l'ensemble d'une organisation dans AWS Organizations sous forme de fichier CSV](export-aws-backup-reports-from-across-an-organization-in-aws-organizations-as-a-csv-file.md)
+ [Générez des recommandations personnalisées et reclassées à l'aide d'Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Gérez les ensembles d'autorisations pour plusieurs comptes en utilisant Account Factory pour Terraform](govern-permission-sets-aft.md)
+ [Identifiez et alertez lorsque les ressources Amazon Data Firehose ne sont pas chiffrées à l'aide d'une clé AWS KMS](identify-and-alert-when-amazon-data-firehose-resources-are-not-encrypted-with-an-aws-kms-key.md)
+ [Implémentez Account Factory for Terraform (AFT) en utilisant un pipeline bootstrap](implement-account-factory-for-terraform-aft-by-using-a-bootstrap-pipeline.md)
+ [Implémentez la gestion des versions d'API basée sur les chemins en utilisant des domaines personnalisés dans Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Installation de l'agent SSM sur les nœuds de travail Amazon EKS à l'aide de Kubernetes DaemonSet](install-ssm-agent-on-amazon-eks-worker-nodes-by-using-kubernetes-daemonset.md)
+ [Installez l'agent SSM et l' CloudWatch agent sur les nœuds de travail Amazon EKS à l'aide de preBootstrapCommands](install-the-ssm-agent-and-cloudwatch-agent-on-amazon-eks-worker-nodes-using-prebootstrapcommands.md)
+ [Gérez les ensembles AWS IAM Identity Center d'autorisations sous forme de code en utilisant AWS CodePipeline](manage-aws-iam-identity-center-permission-sets-as-code-by-using-aws-codepipeline.md)
+ [Gérez les ensembles AWS d'autorisations de manière dynamique à l'aide de Terraform](manage-aws-permission-sets-dynamically-by-using-terraform.md)
+ [Gérez les produits AWS Service Catalog dans plusieurs comptes AWS et régions AWS](manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions.md)
+ [Gérez les applications de conteneur sur site en configurant Amazon ECS Anywhere avec le kit AWS CDK](manage-on-premises-container-applications-by-setting-up-amazon-ecs-anywhere-with-the-aws-cdk.md)
+ [Gérez AWS Organizations les politiques sous forme de code en utilisant AWS CodePipeline Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Migrer des enregistrements DNS en masse vers une zone hébergée privée Amazon Route 53](migrate-dns-records-in-bulk-to-an-amazon-route-53-private-hosted-zone.md)
+ [Migrer Oracle PeopleSoft vers Amazon RDS Custom](migrate-oracle-peoplesoft-to-amazon-rds-custom.md)
+ [Migrez les systèmes RHEL BYOL vers des instances incluses dans une licence AWS à l'aide d'AWS MGN](migrate-rhel-byol-systems-to-aws-license-included-instances-by-using-aws-mgn.md)
+ [Configurez un espace de données minimum viable pour partager les données entre les organisations](minimum-viable-data-space-share-data-organizations.md)
+ [Surveillez les ElastiCache clusters Amazon pour le chiffrement au repos](monitor-amazon-elasticache-clusters-for-at-rest-encryption.md)
+ [Surveillez l'activité des applications à l'aide de CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Surveillez les clusters SAP RHEL Pacemaker à l'aide des services AWS](monitor-sap-rhel-pacemaker-clusters-by-using-aws-services.md)
+ [Créez une architecture IPAM hiérarchique multirégionale à l'aide de AWS Terraform](multi-region-ipam-architecture.md)
+ [Optimisez les déploiements multicomptes sans serveur en utilisant les flux de travail et AWS CDK Actions GitHub](optimize-multi-account-serverless-deployments.md)
+ [Provisionner AWS Service Catalog des produits basés sur AWS CloudFormation des modèles à l'aide d' GitHub actions](provision-aws-service-catalog-products-using-github-actions.md)
+ [Fournissez des rôles IAM avec le moindre privilège en déployant une solution de distribution automatique de rôles](provision-least-privilege-iam-roles-by-deploying-a-role-vending-machine-solution.md)
+ [Supprimez les EC2 entrées Amazon Comptes AWS de l'autre côté AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation](remove-amazon-ec2-entries-across-aws-accounts-from-aws-managed-microsoft-ad.md)
+ [Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation](remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.md)
+ [Transferts de fichiers sécurisés à l'aide de Transfer Family, Amazon Cognito et GuardDuty](secure-file-transfers.md)
+ [Envoyer une notification lors de la création d'un utilisateur IAM](send-a-notification-when-an-iam-user-is-created.md)
+ [Configuration d'un routeur cellulaire sans serveur pour une architecture cellulaire](serverless-cell-router-architecture.md)
+ [Configurez un CI/CD pipeline pour les charges de travail hybrides sur Amazon ECS Anywhere à l'aide d'AWS CDK et GitLab](set-up-a-ci-cd-pipeline-for-hybrid-workloads-on-amazon-ecs-anywhere-by-using-aws-cdk-and-gitlab.md)
+ [Configuration d'une HA/DR architecture pour Oracle E-Business Suite sur Amazon RDS Custom avec une base de données de secours active](set-up-an-ha-dr-architecture-for-oracle-e-business-suite-on-amazon-rds-custom-with-an-active-standby-database.md)
+ [Configuration de la résolution DNS pour les réseaux hybrides dans un environnement multi-comptes AWS](set-up-dns-resolution-for-hybrid-networks-in-a-multi-account-aws-environment.md)
+ [Configurez une infrastructure multi-AZ pour un SQL Server Always On FCI à l'aide d'Amazon FSx](set-up-multi-az-infrastructure-for-a-sql-server-always-on-fci-by-using-amazon-fsx.md)
+ [Configuration de la fonctionnalité Oracle UTL\$1FILE sur Aurora compatible avec PostgreSQL](set-up-oracle-utl_file-functionality-on-aurora-postgresql-compatible.md)
+ [Simplifiez l'authentification des applications avec le protocole TLS mutuel dans Amazon ECS en utilisant Application Load Balancer](simplify-application-authentication-with-mutual-tls-in-amazon-ecs.md)
+ [Simplifiez la gestion des certificats privés en utilisant AWS Private CA et AWS RAM](simplify-private-certificate-management-by-using-aws-private-ca-and-aws-ram.md)
+ [Rationalisez les flux de travail d'apprentissage automatique, du développement local aux expériences évolutives en utilisant l' SageMaker IA et Hydra](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Marquez automatiquement les pièces jointes à Transit Gateway à l'aide d'AWS Organizations](tag-transit-gateway-attachments-automatically-using-aws-organizations.md)
+ [Rôles de transition pour une PeopleSoft application Oracle sur Amazon RDS Custom for Oracle](transition-roles-for-an-oracle-peoplesoft-application-on-amazon-rds-custom-for-oracle.md)
+ [Utilisez Amazon Q Developer comme assistant de codage pour augmenter votre productivité](use-q-developer-as-coding-assistant-to-increase-productivity.md)

# Applications Web et mobiles
<a name="websitesandwebapps-pattern-list"></a>

**Topics**
+ [Authentifiez les utilisateurs existants de l'application React à l'aide d'Amazon Cognito et de l'interface utilisateur AWS Amplify](authenticate-react-app-users-cognito-amplify-ui.md)
+ [Créez une application React à l'aide d'AWS Amplify et ajoutez l'authentification avec Amazon Cognito](create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.md)
+ [Créez un portail pour les micro-frontends en utilisant AWS Amplify Angular et Module Federation](create-amplify-micro-frontend-portal.md)
+ [Déployez une application monopage basée sur React sur Amazon S3 et CloudFront](deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.md)
+ [Déployez une API Amazon API Gateway sur un site Web interne à l'aide de points de terminaison privés et d'un Application Load Balancer](deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.md)
+ [Intégrez des composants visuels Amazon Quick Sight dans des applications Web à l'aide d'Amazon Cognito et de l'automatisation iAc](embed-quick-sight-visual-components-into-web-apps-cognito-iac.md)
+ [Découvrez le développement complet d'applications Web natives pour le cloud avec Green Boost](explore-full-stack-cloud-native-web-application-development-with-green-boost.md)
+ [Exécutez des tests unitaires pour une application Node.js à GitHub l'aide d'AWS CodeBuild](run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.md)
+ [Structurer un projet Python dans une architecture hexagonale à l'aide d'AWS Lambda](structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.md)
+ [Plus de modèles](websitesandwebapps-more-patterns-pattern-list.md)

# Authentifiez les utilisateurs existants de l'application React à l'aide d'Amazon Cognito et de l'interface utilisateur AWS Amplify
<a name="authenticate-react-app-users-cognito-amplify-ui"></a>

*Daniel Kozhemyako, Amazon Web Services*

## Résumé
<a name="authenticate-react-app-users-cognito-amplify-ui-summary"></a>

Ce modèle montre comment ajouter des fonctionnalités d'authentification à une application React frontale existante à l'aide d'une bibliothèque d' AWS Amplify interface utilisateur et d'un groupe d'utilisateurs Amazon Cognito.

Le modèle utilise Amazon Cognito pour fournir l'authentification, l'autorisation et la gestion des utilisateurs pour l'application. Il utilise également un composant d'[Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction), une bibliothèque open source qui étend les fonctionnalités de développement AWS Amplify d'interfaces utilisateur (UI). Le composant [Authenticator UI](https://ui.docs.amplify.aws/react/connected-components/authenticator/advanced) gère les sessions de connexion et exécute le flux de travail connecté au cloud qui authentifie les utilisateurs via Amazon Cognito.

Après avoir implémenté ce modèle, les utilisateurs peuvent se connecter à l'aide de l'une des informations d'identification suivantes :
+ Nom d'utilisateur et mot de passe
+ Fournisseurs d'identité sociale, tels qu'Apple, Facebook, Google et Amazon
+ Fournisseurs d'identité d'entreprise compatibles avec SAML 2.0 ou OpenID Connect (OIDC)

**Note**  
Pour créer un composant d'interface utilisateur d'authentification personnalisé, vous pouvez exécuter le composant d'interface utilisateur d'authentification en mode headless.

## Conditions préalables et limitations
<a name="authenticate-react-app-users-cognito-amplify-ui-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ Une application Web React 18.2.0 ou version ultérieure
+ [Node.js et npm 6.14.4 ou version ultérieure, installés](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

**Limites**
+ Ce modèle s'applique uniquement aux applications Web React.
+ Ce modèle utilise un composant Amplify UI prédéfini. La solution ne couvre pas les étapes requises pour implémenter un composant d'interface utilisateur personnalisé.

**Versions du produit**
+ Amplify UI 6.1.3 ou version ultérieure (Gen 1)
+ Amplify 6.0.16 ou version ultérieure (Gen 1)

## Architecture
<a name="authenticate-react-app-users-cognito-amplify-ui-architecture"></a>

**Architecture cible**

Le schéma suivant montre une architecture qui utilise Amazon Cognito pour authentifier les utilisateurs d'une application Web React.

![\[Amazon Cognito authentifie les utilisateurs d'une application Web React.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/b2cea053-6931-4404-8aa8-c623ce2024ac/images/b7f69f20-a39d-4a78-8605-7dab73c59052.png)


## Outils
<a name="authenticate-react-app-users-cognito-amplify-ui-tools"></a>

**Services AWS**
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) fournit des fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs pour les applications Web et mobiles.

**Autres outils**
+ [Amplify UI](https://ui.docs.amplify.aws/react/getting-started/introduction) est une bibliothèque d'interface utilisateur open source qui fournit des composants personnalisables que vous pouvez connecter au cloud.
+ [Node.js](https://nodejs.org/en/docs/) est un environnement d' JavaScript exécution piloté par les événements conçu pour créer des applications réseau évolutives.
+ [npm](https://docs.npmjs.com/about-npm) est un registre de logiciels qui s'exécute dans un environnement Node.js et est utilisé pour partager ou emprunter des packages et gérer le déploiement de packages privés.

## Bonnes pratiques
<a name="authenticate-react-app-users-cognito-amplify-ui-best-practices"></a>

Si vous créez une nouvelle application, nous vous recommandons d'utiliser Amplify Gen 2.

## Épopées
<a name="authenticate-react-app-users-cognito-amplify-ui-epics"></a>

### Création d'un groupe d'utilisateurs Amazon Cognito
<a name="create-an-cog-user-pool"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe d'utilisateurs. | [Créez un groupe d'utilisateurs Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html). Configurez les options de connexion et les exigences de sécurité du groupe d'utilisateurs en fonction de votre cas d'utilisation. | Développeur d’applications | 
| Ajoutez un client d'application. | [Configurez un client d'application](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html) de groupe d'utilisateurs. Ce client est nécessaire pour que votre application puisse interagir avec le groupe d'utilisateurs Amazon Cognito. | Développeur d’applications | 

### Intégrez votre groupe d'utilisateurs Amazon Cognito au composant de l'interface utilisateur Authenticator
<a name="integrate-your-cog-user-pool-with-the-authenticator-ui-component"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez les dépendances. | Pour installer les `@aws-amplify/ui-react` packages `aws-amplify` et, exécutez la commande suivante depuis le répertoire racine de votre application :<pre>npm i @aws-amplify/ui-react aws-amplify</pre> | Développeur d’applications | 
| Configurez le groupe d'utilisateurs. | Sur la base de l'exemple suivant, créez un `aws-exports.js` fichier et enregistrez-le dans le `src` dossier. Le fichier doit inclure les informations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)<pre>// replace the user pool region, id, and app client id details<br />const awsmobile = {<br />    "aws_project_region": "put_your_region_here",<br />    "aws_cognito_region": "put_your_region_here",<br />    "aws_user_pools_id": "put_your_user_pool_id_here",<br />    "aws_user_pools_web_client_id": "put_your_user_pool_app_id_here"<br />}<br /><br />export default awsmobile;</pre> | Développeur d’applications | 
| Importez et configurez le service Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | Développeur d’applications | 
| Ajoutez le composant d'interface utilisateur Authenticator. | Pour afficher le composant d'`Authenticator`interface utilisateur, ajoutez les lignes de code suivantes au fichier de point d'entrée de l'application (`App.js`) :<pre>import { Authenticator } from '@aws-amplify/ui-react';<br />import '@aws-amplify/ui-react/styles.css';</pre>L'extrait de code d'exemple importe le composant d'`Authenticator`interface utilisateur et le fichier Amplify UI styles.css, qui est requis lors de l'utilisation des thèmes prédéfinis du composant.Le composant `Authenticator` UI fournit deux valeurs de retour :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)Consultez l'exemple de composant suivant :<pre>function App() {<br />    return (<br />        <Authenticator><br />            {({ signOut, user }) => (<br />                <div><br />                    <p>Welcome {user.username}</p><br />                    <button onClick={signOut}>Sign out</button><br />                </div><br />            )}<br />        </Authenticator><br />    );<br />}</pre>Pour un exemple de `App.js` fichier, consultez la section [Informations supplémentaires](#authenticate-react-app-users-cognito-amplify-ui-additional) de ce modèle. | Développeur d’applications | 
| (Facultatif) Récupérez les informations de session. | Une fois qu'un utilisateur est authentifié, vous pouvez récupérer les données du client Amplify concernant sa session. Par exemple, vous pouvez récupérer le jeton Web JSON (JWT) à partir de la session d'un utilisateur afin d'authentifier les demandes de sa session auprès d'une API principale.Consultez l'exemple suivant d'en-tête de demande qui inclut un JWT :<pre>import { fetchAuthSession } from 'aws-amplify/auth';<br />(await fetchAuthSession()).tokens?.idToken?.toString();</pre> | Développeur d’applications | 

## Résolution des problèmes
<a name="authenticate-react-app-users-cognito-amplify-ui-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Les nouveaux utilisateurs ne peuvent pas s'inscrire à l'application. | Comme suit, assurez-vous que votre groupe d'utilisateurs Amazon Cognito est configuré pour permettre aux utilisateurs de s'inscrire pour faire partie du groupe d'utilisateurs :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | 
| Le composant d'authentification a cessé de fonctionner après la mise à niveau de la version 5 vers la version 6. | La `Auth` catégorie est passée à une approche fonctionnelle et a nommé les paramètres dans Amplify v6. Vous devez maintenant importer la fonctionnalité APIs directement depuis le `aws-amplify/auth` chemin. Pour plus d'informations, voir [Migrer de la version 5 à la version 6](https://docs.amplify.aws/gen1/react/build-a-backend/auth/auth-migration-guide/) dans la documentation Amplify. | 

## Ressources connexes
<a name="authenticate-react-app-users-cognito-amplify-ui-resources"></a>
+ [Commencer à utiliser Amazon Cognito (site Web](https://aws.amazon.com/cognito/getting-started/))AWS 
+ [Créer une nouvelle application React](https://reactjs.org/docs/create-a-new-react-app.html) (documentation React)
+ [Qu'est-ce qu'Amazon Cognito ?](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) (documentation Amazon Cognito)
+ [Bibliothèque Amplify UI](https://ui.docs.amplify.aws/) (documentation Amplify)

## Informations supplémentaires
<a name="authenticate-react-app-users-cognito-amplify-ui-additional"></a>

Le `App.js` fichier doit contenir le code suivant :

```
import './App.css';
import { Amplify } from 'aws-amplify';
import awsExports from './aws-exports';
import { fetchAuthSession } from 'aws-amplify/auth';
import { Authenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
Amplify.configure({ ...awsExports });
let token = (await fetchAuthSession()).tokens?.idToken?.toString();
function App() {
  return (
      <Authenticator>
        {({ signOut, user }) => (
            <div>
              <p>Welcome {user.username}</p>
                <p>Your token is: {token}</p>
              <button onClick={signOut}>Sign out</button>
            </div>
        )}
      </Authenticator>
  );
}

export default App;
```

# Créez une application React à l'aide d'AWS Amplify et ajoutez l'authentification avec Amazon Cognito
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito"></a>

*Rishi Singla, Amazon Web Services*

## Résumé
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-summary"></a>

Ce modèle montre comment utiliser AWS Amplify pour créer une application basée sur React et comment ajouter une authentification au frontend à l'aide d'Amazon Cognito. AWS Amplify comprend un ensemble d'outils (framework open source, environnement de développement visuel, console) et de services (hébergement d'applications Web et de sites Web statiques) destinés à accélérer le développement d'applications mobiles et Web sur AWS. 

## Conditions préalables et limitations
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-prereqs"></a>

**Prérequis**
+ Un compte AWS actif
+ [Node.js](https://nodejs.org/en/download/) et [npm](https://www.npmjs.com/get-npm) installés sur votre machine

**Versions du produit**
+ Node.js version 10.x ou ultérieure (pour vérifier votre version, exécutez-le `node -v` dans une fenêtre de terminal)
+ npm version 6.x ou version ultérieure (pour vérifier votre version, exécutez-le `npm -v` dans une fenêtre de terminal)

## Architecture
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-architecture"></a>

**Pile technologique cible**
+ AWS Amplify
+ Amazon Cognito

## Outils
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-tools"></a>
+ [Amplify Command Line Interface (CLI)](https://docs.amplify.aws/cli/)
+ [Amplify Libraries (bibliothèques](https://docs.amplify.aws/lib/q/platform/react-native/) clientes open source)
+ [Amplify Studio (interface](https://docs.amplify.aws/console/) visuelle)

## Épopées
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-epics"></a>

### Installation de l'interface de ligne de commande AWS Amplify
<a name="install-aws-amplify-cli"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez la CLI Amplify. | L'Amplify CLI est une chaîne d'outils unifiée permettant de créer des services cloud AWS pour votre application React. Pour installer la CLI Amplify, exécutez :<pre>npm install -g @aws-amplify/cli</pre>npm vous informera si une nouvelle version majeure est disponible. Si tel est le cas, utilisez la commande suivante pour mettre à niveau votre version de npm :<pre>npm install -g npm@9.8.0</pre>où 9.8.0 fait référence à la version que vous souhaitez installer. | Développeur d’applications | 

### Création d'une application React
<a name="create-a-react-app"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une application React. | Pour créer une nouvelle application React, utilisez la commande :<pre>npx create-react-app amplify-react-application</pre>où `ampify-react-application` est le nom de l'application.Lorsque l'application a été créée avec succès, le message suivant s'affiche :<pre>Success! Created amplify-react-application</pre>Un répertoire avec différents sous-dossiers sera créé pour l'application React. | Développeur d’applications | 
| Lancez l'application sur votre ordinateur local. | Accédez au répertoire `amplify-react-application` créé à l'étape précédente et exécutez la commande :<pre>amplify-react-application% npm start</pre>Cela lance l'application React sur votre machine locale. | Développeur d’applications | 

### Configuration de la CLI Amplify
<a name="configure-the-amplify-cli"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez Amplify pour vous connecter à votre compte AWS. | Configurez Amplify en exécutant la commande :<pre>amplify-react-application % amplify configure</pre>La CLI Amplify vous demande de suivre ces étapes pour configurer l'accès à votre compte AWS :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html)Ce scénario nécessite que les utilisateurs IAM disposent d'un accès programmatique et d'informations d'identification à long terme, ce qui présente un risque de sécurité. Pour atténuer ce risque, nous vous recommandons de ne fournir à ces utilisateurs que les autorisations dont ils ont besoin pour effectuer la tâche et de supprimer ces autorisations lorsqu’elles ne sont plus nécessaires. Les clés d’accès peuvent être mises à jour si nécessaire. Pour plus d'informations, consultez la section [Mise à jour des clés d'accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) dans le *guide de l'utilisateur IAM*.Ces étapes apparaissent dans le terminal comme suit.<pre>Follow these steps to set up access to your AWS account:<br />Sign in to your AWS administrator account:<br />https://console.aws.amazon.com/<br />Press Enter to continue<br />Specify the AWS Region<br />? region:  us-east-1<br />Follow the instructions at<br />https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli<br />to complete the user creation in the AWS console<br />https://console.aws.amazon.com/iamv2/home#/users/create<br />Press Enter to continue<br />Enter the access key of the newly created user:<br />? accessKeyId:  ********************<br />? secretAccessKey:  ****************************************<br />This would update/create the AWS Profile in your local machine<br />? Profile Name:  new<br /><br />Successfully set up the new user.</pre>Pour plus d'informations sur ces étapes, consultez la [documentation](https://docs.amplify.aws/cli/start/install/#configure-the-amplify-cli) du centre de développement Amplify. | AWS général, développeur d'applications | 

### Initialiser Amplify
<a name="initialize-amplify"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Initialisez Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | Développeur d'applications, AWS général | 

### Ajouter l'authentification au frontend
<a name="add-authentication-to-the-frontend"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajout de l'authentification. | Vous pouvez utiliser la `amplify add <category>` commande pour ajouter des fonctionnalités telles qu'un identifiant utilisateur ou une API principale. Au cours de cette étape, vous allez utiliser la commande pour ajouter l'authentification.Amplify fournit un service d'authentification principal avec Amazon Cognito, des bibliothèques frontales et un composant d'interface utilisateur d'authentification intégré. Les fonctionnalités incluent l'inscription des utilisateurs, la connexion des utilisateurs, l'authentification multifactorielle, la déconnexion des utilisateurs et la connexion sans mot de passe. Vous pouvez également authentifier les utilisateurs en intégrant des fournisseurs d'identité fédérés tels qu'Amazon, Google et Facebook. La catégorie d'authentification Amplify s'intègre parfaitement aux autres catégories Amplify telles que les API, les analyses et le stockage, afin que vous puissiez définir des règles d'autorisation pour les utilisateurs authentifiés et non authentifiés.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito.html) | Développeur d'applications, AWS général | 

### Modifiez le fichier App.js
<a name="change-the-app-js-file"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Modifiez le fichier App.js. | Dans le `src` dossier, ouvrez le `App.js` fichier et modifiez-le. Le fichier modifié doit ressembler à ceci :<pre>{  App.Js File after modifications:<br />import React from 'react';<br />import logo from './logo.svg';<br />import './App.css';<br />import { Amplify } from 'aws-amplify';<br />import { withAuthenticator, Button, Heading } from '@aws-amplify/ui-react';<br />import awsconfig from './aws-exports';<br />Amplify.configure(awsconfig);<br />function App({ signOut }) {<br />  return (<br />      <div><br />      <h1>Thankyou for doing verification</h1><br />      <h2>My Content</h2><br />       <button onClick={signOut}>Sign out</button><br />    </div><br />  );<br />}<br />export default withAuthenticator(App);</pre> | Développeur d’applications | 
| Importez des packages React. | Le `App.js` fichier importe deux packages React. Installez ces packages à l'aide de la commande :<pre>amplify-react-application1 % npm install --save aws-amplify @aws-amplify/ui-react</pre> | Développeur d’applications | 

### Lancez l'application React et vérifiez l'authentification
<a name="launch-the-react-app-and-check-authentication"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez l'application. | Lancez l'application React sur votre machine locale :<pre>amplify-react-application1 % npm start</pre> | Développeur d'applications, AWS général | 
| Vérifiez l'authentification. | Vérifiez si l'application demande des paramètres d'authentification. (Dans notre exemple, nous avons configuré le courrier électronique comme méthode de connexion.)L'interface utilisateur du frontend doit vous demander vos informations de connexion et vous proposer la possibilité de créer un compte.Vous pouvez également configurer le processus de génération d'Amplify pour ajouter le backend dans le cadre d'un flux de travail de déploiement continu. Cependant, ce modèle ne couvre pas cette option. | Développeur d'applications, AWS général | 

## Ressources connexes
<a name="create-a-react-app-by-using-aws-amplify-and-add-authentication-with-amazon-cognito-resources"></a>
+ [Mise en route](https://docs.npmjs.com/getting-started) (documentation npm)
+ [Création d'un compte AWS autonome](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) (documentation sur la gestion des comptes AWS) 
+ [Documentation AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html)
+ [Documentation Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html)

# Créez un portail pour les micro-frontends en utilisant AWS Amplify Angular et Module Federation
<a name="create-amplify-micro-frontend-portal"></a>

*Milena Godau et Pedro Garcia, Amazon Web Services*

## Résumé
<a name="create-amplify-micro-frontend-portal-summary"></a>

Une architecture micro-frontend permet à plusieurs équipes de travailler indépendamment sur différentes parties d'une application frontale. Chaque équipe peut développer, créer et déployer un fragment du frontend sans interférer avec les autres parties de l'application. Du point de vue de l'utilisateur final, il semble s'agir d'une application unique et cohérente. Cependant, ils interagissent avec plusieurs applications indépendantes publiées par différentes équipes.

[Ce document décrit comment créer une architecture de micro-frontend en utilisant [AWS Amplify](https://docs.amplify.aws/gen1/angular/)le framework d'interface [Angular](https://angular.dev/overview) et la fédération de modules.](https://webpack.js.org/concepts/module-federation/) Dans ce modèle, les micro-frontends sont combinés côté client par une application shell (ou *parent*). L'application shell agit comme un conteneur qui récupère, affiche et intègre les micro-frontends. L'application shell gère le routage global, qui charge différents micro-frontends. Le plugin [@angular -architects/module-federation intègre Module Federation à Angular](https://www.npmjs.com/package/@angular-architects/module-federation). Vous déployez l'application shell et les micro-frontends en utilisant. AWS Amplify Les utilisateurs finaux accèdent à l'application via un portail Web.

Le portail est divisé verticalement. Cela signifie que les micro-frontends sont des vues entières ou des groupes de vues, et non des parties de la même vue. Par conséquent, l'application shell ne charge qu'un seul micro-frontend à la fois.

Les micro-frontends sont implémentés sous forme de modules distants. L'application shell charge paresseusement ces modules distants, ce qui reporte l'initialisation du micro-frontend jusqu'à ce qu'elle soit requise. Cette approche optimise les performances des applications en chargeant uniquement les modules nécessaires. Cela réduit le temps de chargement initial et améliore l'expérience utilisateur globale. De plus, vous partagez des dépendances communes entre les modules via le fichier de configuration du pack Web (**webpack.config.js**). Cette pratique favorise la réutilisation du code, réduit les doublons et rationalise le processus de regroupement.

## Conditions préalables et limitations
<a name="create-amplify-micro-frontend-portal-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS
+ [Node.js et npm, installés](https://nodejs.org/en/download/)
+ [Amplify CLI, installée](https://docs.amplify.aws/gen1/angular/tools/cli/)
+ CLI angulaire, [installée](https://angular.io/cli)
+ [Autorisations](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsamplify.html) d'utilisation AWS Amplify
+ Connaissance d'Angular

**Versions du produit**
+ Angular CLI version 13.1.2 ou ultérieure
+ @angular -architects/module-federation version 14.0.1 ou ultérieure
+ webpack version 5.4.0 ou ultérieure
+ AWS Amplify 1re génération

**Limites**

Une architecture micro-frontend est une approche puissante pour créer des applications Web évolutives et résilientes. Cependant, il est essentiel de comprendre les défis potentiels suivants avant d'adopter cette approche :
+ **Intégration** — L'un des principaux défis est l'augmentation potentielle de la complexité par rapport aux interfaces monolithiques. L'orchestration de plusieurs micro-frontends, la gestion des communications entre elles et la gestion des dépendances partagées peuvent s'avérer plus complexes. De plus, il peut y avoir une surcharge de performance associée à la communication entre les micro-frontends. Cette communication peut augmenter le temps de latence et réduire les performances. Cela doit être résolu par des mécanismes de messagerie efficaces et des stratégies de partage de données.
+ **Duplication de code** — Chaque micro-frontend étant développé indépendamment, il existe un risque de duplication de code pour des fonctionnalités communes ou des bibliothèques partagées. Cela peut augmenter la taille globale de l'application et poser des problèmes de maintenance.
+ **Coordination et gestion** — La coordination des processus de développement et de déploiement sur plusieurs micro-frontends peut s'avérer difficile. Dans une architecture distribuée, il est de plus en plus essentiel de garantir un versionnement cohérent, de gérer les dépendances et de maintenir la compatibilité entre les composants. L'établissement d'une gouvernance claire, de directives et de pipelines de test et de déploiement automatisés est essentiel pour une collaboration et une livraison fluides.
+ **Tests** — Il peut être plus complexe de tester des architectures de micro-frontend que de tester des frontends monolithiques. Cela nécessite des efforts supplémentaires et des stratégies de test spécialisées pour effectuer des tests et end-to-end des tests d'intégration entre composants, et pour valider des expériences utilisateur cohérentes sur plusieurs micro-frontends.

Avant de vous engager dans l'approche micro-frontend, nous vous recommandons de consulter [Comprendre et implémenter les micro-frontends](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html) sur. AWS

## Architecture
<a name="create-amplify-micro-frontend-portal-architecture"></a>

Dans une architecture micro-frontend, chaque équipe développe et déploie des fonctionnalités de manière indépendante. L'image suivante montre comment plusieurs DevOps équipes travaillent ensemble. L'équipe du portail développe l'application shell. L'application shell agit comme un conteneur. Il récupère, affiche et intègre les applications micro-frontend publiées par d'autres équipes. DevOps Vous pouvez l'utiliser AWS Amplify pour publier l'application shell et les applications micro-frontend.

![\[Publication de plusieurs micro-frontends sur une application shell à laquelle l'utilisateur accède via un portail Web.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/ddf82a69-bf1b-4ad1-8e60-3dd375699936/images/cf045bf1-11ea-46d9-93cb-3c603122450d.png)


Le schéma d'architecture montre le flux de travail suivant :

1. L'équipe du portail développe et gère l'application shell. L'application shell orchestre l'intégration et le rendu des micro-frontends afin de composer l'ensemble du portail.

1. Les équipes A et B développent et maintiennent une ou plusieurs micro-interfaces ou fonctionnalités intégrées au portail. Chaque équipe peut travailler indépendamment sur ses micro-frontends respectifs.

1. L'utilisateur final s'authentifie à l'aide d'Amazon Cognito.

1. L'utilisateur final accède au portail et l'application shell est chargée. Au fur et à mesure que l'utilisateur navigue, l'application shell s'occupe du routage et récupère le micro-frontend demandé, en chargeant son bundle.

## Outils
<a name="create-amplify-micro-frontend-portal-tools"></a>

**Services AWS**
+ [AWS Amplify](https://docs.amplify.aws/angular/start/)est un ensemble d'outils et de fonctionnalités spécialement conçus pour aider les développeurs Web et mobiles frontaux à créer rapidement des applications complètes. AWS Dans ce modèle, vous utilisez la CLI Amplify pour déployer les applications du micro-frontend Amplify.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir Services AWS par le biais de commandes dans votre interface de ligne de commande.

**Autres outils**
+ [@angular -architects/module-federation est un plugin qui intègre Angular à Module Federation](https://github.com/angular-architects/module-federation-plugin).
+ [Angular](https://angular.dev/overview) est un framework d'applications Web open source permettant de créer des applications d'une seule page modernes, évolutives et testables. Il suit une architecture modulaire basée sur des composants qui favorise la réutilisation et la maintenance du code.
+ [Node.js](https://nodejs.org/en/docs/) est un environnement d' JavaScript exécution piloté par les événements conçu pour créer des applications réseau évolutives.
+ [npm](https://docs.npmjs.com/about-npm) est un registre de logiciels qui s'exécute dans un environnement Node.js et est utilisé pour partager ou emprunter des packages et gérer le déploiement de packages privés.
+ [Webpack Module Federation](https://webpack.js.org/concepts/module-federation/) vous aide à charger du code compilé et déployé indépendamment, tel que des micro-frontends ou des plugins, dans une application.

**Référentiel de code**

Le code de ce modèle est disponible sur le [portail Micro-frontend à l'aide du référentiel Angular et Module Federation](https://github.com/aws-samples/angular-module-federation-mfe) GitHub . Ce dépôt contient les deux dossiers suivants :
+ `shell-app`contient le code de l'application shell.
+ `feature1-app`contient un exemple de micro-frontend. L'application shell récupère ce micro-frontend et l'affiche sous forme de page dans l'application portail.

## Bonnes pratiques
<a name="create-amplify-micro-frontend-portal-best-practices"></a>

Les architectures micro-frontend offrent de nombreux avantages, mais elles introduisent également de la complexité. Voici quelques bonnes pratiques pour un développement fluide, un code de haute qualité et une expérience utilisateur exceptionnelle :
+ **Planification et communication** — Pour rationaliser la collaboration, investissez dans la planification initiale, la conception et dans des canaux de communication clairs.
+ **Cohérence de conception** : appliquez un style visuel cohérent sur les micro-frontends à l'aide de systèmes de conception, de guides de style et de bibliothèques de composants. Cela permet d'offrir une expérience utilisateur cohérente et d'accélérer le développement.
+ **Gestion des dépendances** — Les micro-frontends évoluant de manière indépendante, adoptez des contrats standardisés et des stratégies de gestion des versions pour gérer efficacement les dépendances et éviter les problèmes de compatibilité.
+ **Architecture micro-frontend** — Pour permettre un développement et un déploiement indépendants, chaque micro-frontend doit avoir une responsabilité claire et bien définie pour une fonctionnalité encapsulée.
+ **Intégration et communication** — Pour faciliter l'intégration et minimiser les conflits, définissez des contrats et des protocoles de communication clairs entre les micro-interfaces APIs, y compris les événements et les modèles de données partagés.
+ **Tests et assurance qualité — Mettez** en œuvre l'automatisation des tests et des pipelines d'intégration continue pour les micro-frontends. Cela améliore la qualité globale, réduit les efforts de test manuel et valide les fonctionnalités entre les interactions entre les micro-frontend.
+ **Optimisation des performances** — Surveillez**** en permanence les indicateurs de performance et suivez les dépendances entre les micro-frontends. Cela vous permet d'identifier les goulots d'étranglement et de maintenir des performances applicatives optimales. Utilisez des outils de surveillance des performances et d'analyse des dépendances à cette fin.
+ **Expérience du développeur** : concentrez-vous sur l'expérience du développeur en fournissant une documentation, des outils et des exemples clairs. Cela vous permet de rationaliser le développement et d'intégrer de nouveaux membres à l'équipe.

## Épopées
<a name="create-amplify-micro-frontend-portal-epics"></a>

### Création de l'application shell
<a name="create-the-shell-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez l'application shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Installez le plug-in . | Dans la CLI angulaire, entrez la commande suivante pour installer le plugin [@angular -architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation) :<pre>ng add @angular-architects/module-federation --project shell --port 4200</pre> | Développeur d’applications | 
| Ajoutez l'URL du micro-frontend en tant que variable d'environnement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Définissez le routage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Déclarez le `mfe1` module. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Préparez le préchargement pour le micro-frontend. | Le préchargement du micro-frontend aide le webpack à négocier correctement les bibliothèques et les packages partagés.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Ajustez le contenu HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 

### Création de l'application micro-frontend
<a name="create-the-micro-frontend-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez le micro-frontend. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Installez le plug-in . | Entrez la commande suivante pour installer le plugin @angular -architects/module-federation :<pre>ng add @angular-architects/module-federation --project mfe1 --port 5000</pre> | Développeur d’applications | 
| Créez un module et un composant. | Entrez les commandes suivantes pour créer un module et un composant et les exporter en tant que module de saisie à distance :<pre>ng g module mfe1 --routing<br />ng g c mfe1</pre> | Développeur d’applications | 
| Définissez le chemin de routage par défaut. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Ajoutez l'`mfe1`itinéraire. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Modifiez le fichier **webpack.config.js.** | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Ajustez le contenu HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 

### Exécutez les applications localement
<a name="run-the-applications-locally"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Lancez l'`mfe1`application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Exécutez l'application shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 

### Refactoriser l'application shell pour gérer une erreur de chargement du micro-frontend
<a name="refactor-the-shell-application-to-handle-a-micro-frontend-loading-error"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un module et un composant. | Dans le dossier racine de l'application shell, entrez les commandes suivantes pour créer un module et un composant pour une page d'erreur :<pre>ng g module error-page --routing<br />ng g c error-page</pre> | Développeur d’applications | 
| Ajustez le contenu HTML. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Définissez le chemin de routage par défaut. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Créez une fonction pour charger les micro-frontends. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 
| Testez la gestion des erreurs. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 

### Déployez les applications en utilisant AWS Amplify
<a name="deploy-the-applications-by-using-amplifylong"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le micro-frontend. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d'applications, AWS DevOps | 
| Déployez l'application shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d'applications, propriétaire de l'application | 
| Activez CORS. | Les applications shell et micro-frontend étant hébergées indépendamment sur des domaines différents, vous devez activer le partage de ressources entre origines (CORS) sur le micro-frontend. Cela permet à l'application shell de charger le contenu depuis une autre origine. Pour activer CORS, vous devez ajouter des en-têtes personnalisés.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d'applications, AWS DevOps | 
| Créez une règle de réécriture sur l'application shell. | L'application Angular Shell est configurée pour utiliser HTML5 le routage. Si l'utilisateur effectue une actualisation complète, Amplify essaie de charger une page à partir de l'URL actuelle. Cela génère une erreur 403. Pour éviter cela, vous devez ajouter une règle de réécriture dans la console Amplify.Pour créer la règle de réécriture, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d'applications, AWS DevOps | 
| Testez le portail Web. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | Développeur d’applications | 

### nettoyer des ressources ;
<a name="clean-up-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez les applications. | Si vous n'avez plus besoin du shell et des applications micro-frontend, supprimez-les. Cela permet d'éviter de facturer des ressources que vous n'utilisez pas.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | AWS général | 

## Résolution des problèmes
<a name="create-amplify-micro-frontend-portal-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Aucun AWS profil disponible lors de l'exécution de la `amplify init` commande | Si aucun AWS profil n'est configuré, vous pouvez toujours exécuter la `amplify init` commande. Toutefois, vous devez sélectionner l'`AWS access keys`option lorsque vous êtes invité à saisir la méthode d'authentification. Ayez votre clé AWS d'accès et votre clé secrète à portée de main.Vous pouvez également configurer un profil nommé pour AWS CLI. Pour obtenir des instructions, consultez [la section Configuration et paramètres des fichiers d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dans la AWS CLI documentation. | 
| Erreur lors du chargement des entrées distantes | Si vous rencontrez une erreur lors du chargement des entrées distantes dans le fichier **main.ts** de l'application shell, assurez-vous que la `environment.mfe1URL` variable est correctement définie. La valeur de cette variable doit être l'URL du micro-frontend. | 
| Erreur 404 lors de l'accès au micro-frontend | Si vous obtenez une erreur 404 lorsque vous essayez d'accéder au micro-frontend local, par exemple à`http://localhost:4200/mfe1`, vérifiez les points suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/create-amplify-micro-frontend-portal.html) | 

## Informations supplémentaires
<a name="create-amplify-micro-frontend-portal-additional"></a>

**AWS documentation**
+ [Comprendre et implémenter des micro-frontends sur AWS(directives](https://docs.aws.amazon.com/prescriptive-guidance/latest/micro-frontends-aws/introduction.html)AWS prescriptives)
+ [Amplify CLI (documentation](https://docs.amplify.aws/gen1/angular/tools/cli/) Amplify)
+ [Hébergement Amplify (documentation](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html) Amplify)

**Autres références**
+ [Fédération de modules](https://webpack.js.org/concepts/module-federation/)
+ [Node.js](https://nodejs.org/en/)
+ [Angulaire](https://angular.io/)
+ [@angular -architects/module-federation](https://www.npmjs.com/package/@angular-architects/module-federation)

# Déployez une application monopage basée sur React sur Amazon S3 et CloudFront
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront"></a>

*Jean-Baptiste Guillois, Amazon Web Services*

## Résumé
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-summary"></a>

Une application monopage (SPA) est un site Web ou une application Web qui met à jour dynamiquement le contenu d'une page Web affichée en utilisant JavaScript APIs. Cette approche améliore l'expérience utilisateur et les performances d'un site Web car elle ne met à jour que les nouvelles données au lieu de recharger l'intégralité de la page Web depuis le serveur.

Ce modèle fournit une step-by-step approche pour coder et héberger un SPA écrit dans React sur Amazon Simple Storage Service (Amazon S3) et Amazon. CloudFront Dans ce modèle, le SPA utilise une API REST configurée dans Amazon API Gateway et exposée via une CloudFront distribution Amazon afin de simplifier la gestion du [partage de ressources entre origines (CORS).](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html)

## Conditions préalables et limitations
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Node.js et`npm`, installé et configuré. Pour plus d'informations, consultez la section [Téléchargements](https://nodejs.org/en/download/) de la documentation Node.js.
+ Yarn, installé et configuré. Pour plus d'informations, consultez la [documentation Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#windows-stable).
+ Git, installé et configuré. Pour plus d'informations, consultez la [documentation Git](https://github.com/git-guides/install-git).

## Architecture
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-architecture"></a>

![\[Architecture pour le déploiement d'un SPA basé sur React sur Amazon S3 et CloudFront\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/970a9d13-e8a2-44ac-aca5-a066e4be60e8/images/96061e05-8ac8-446e-b1da-baa6fc1cc7b6.png)


Cette architecture est automatiquement déployée en utilisant AWS CloudFormation (infrastructure en tant que code). Il utilise des services régionaux tels qu'Amazon S3 pour stocker les actifs statiques et Amazon CloudFront avec Amazon API Gateway pour exposer les points de terminaison d'API régionaux (REST). Les journaux des applications sont collectés à l'aide d'Amazon CloudWatch. Tous les appels AWS d'API sont audités dans AWS CloudTrail. Toute la configuration de sécurité (par exemple, les identités et les autorisations) est gérée dans Gestion des identités et des accès AWS (IAM). Le contenu statique est diffusé via le réseau de diffusion de CloudFront contenu (CDN) Amazon et les requêtes DNS sont gérées par Amazon Route 53.

## Outils
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-tools"></a>

**Services AWS**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP, et ce, WebSocket APIs à n'importe quelle échelle.
+ [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.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) accélère la diffusion de votre contenu Web en le diffusant via un réseau mondial de centres de données, ce qui réduit le temps de latence et améliore les performances.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)vous aide à auditer la gouvernance, la conformité et le risque opérationnel de votre Compte AWS
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.
+ [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.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) est un service Web DNS hautement disponible et évolutif.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) 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.

**Code**

L'exemple de code d'application de ce modèle est disponible dans le référentiel d'applications d'une [seule page CORS GitHub basé sur React](https://github.com/aws-samples/react-cors-spa).

## Bonnes pratiques
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-best-practices"></a>

En utilisant le stockage d'objets Amazon S3, vous pouvez stocker les actifs statiques de votre application de manière sécurisée, hautement résiliente, performante et rentable. Il n'est pas nécessaire d'utiliser un conteneur dédié ou une instance Amazon Elastic Compute Cloud (Amazon EC2) pour cette tâche.

En utilisant le réseau de diffusion de CloudFront contenu Amazon, vous pouvez réduire la latence que vos utilisateurs peuvent rencontrer lorsqu'ils accèdent à votre application. Vous pouvez également associer un pare-feu d'application Web ([AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/cloudfront-features.html)) pour protéger vos actifs contre les attaques malveillantes.

## Épopées
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-epics"></a>

### Créez et déployez votre application localement
<a name="locally-build-and-deploy-your-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Exécutez la commande suivante pour cloner le référentiel de l'exemple d'application :<pre>git clone https://github.com/aws-samples/react-cors-spa react-cors-spa && cd react-cors-spa</pre> | Développeur d'applications, AWS DevOps | 
| Déployez l'application localement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Développeur d'applications, AWS DevOps | 
|  Accédez à l'application localement. | Ouvrez une fenêtre de navigateur et entrez l'`http://localhost:3000`URL pour accéder à l'application. | Développeur d'applications, AWS DevOps | 

### Déployer l'application
<a name="deploy-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le AWS CloudFormation modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Développeur d'applications, AWS DevOps | 
| Personnalisez les fichiers source de votre application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Développeur d’applications | 
| Créez le package d'application. | Dans le répertoire de votre projet, exécutez la `yarn build` commande pour créer le package d'application. | Développeur d’applications | 
| Déployez le package d'application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | Développeur d'applications, AWS DevOps | 

### Tester l'application
<a name="test-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Accédez à l'application et testez-la. | Ouvrez une fenêtre de navigateur, puis collez le domaine de CloudFront distribution (le `SPADomain` résultat de la CloudFormation pile que vous avez déployée précédemment) pour accéder à l'application. | Développeur d'applications, AWS DevOps | 

### Nettoyez les ressources
<a name="clean-up-the-resources"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez le contenu du compartiment S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, développeur d'applications | 
| Supprimez la CloudFormation pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront.html) | AWS DevOps, développeur d'applications | 

## Ressources connexes
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-resources"></a>

Pour déployer et héberger votre application Web, vous pouvez également utiliser [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/getting-started.html), qui fournit un flux de travail basé sur Git pour héberger des applications Web complètes sans serveur avec un déploiement continu. Amplify Hosting en fait partie [AWS Amplify](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html), qui fournit un ensemble d'outils et de fonctionnalités spécialement conçus pour permettre aux développeurs Web et mobiles de créer rapidement et facilement des applications complètes. AWS

## Informations supplémentaires
<a name="deploy-a-react-based-single-page-application-to-amazon-s3-and-cloudfront-additional"></a>

Pour traiter les URLs demandes non valides de l'utilisateur susceptibles de générer 403 erreurs, une page d'erreur personnalisée configurée dans la CloudFront distribution détecte 403 erreurs et les redirige vers le point d'entrée de l'application (`index.html`).

Pour simplifier la gestion de CORS, l'API REST est exposée par le biais d'une CloudFront distribution.

# Déployez une API Amazon API Gateway sur un site Web interne à l'aide de points de terminaison privés et d'un Application Load Balancer
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer"></a>

*Saurabh Kothari, Amazon Web Services*

## Résumé
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-summary"></a>

Ce modèle vous montre comment déployer une API Amazon API Gateway sur un site Web interne accessible depuis un réseau sur site. Vous apprenez à créer un nom de domaine personnalisé pour une API privée en utilisant une architecture conçue avec des points de terminaison privés, un Application Load Balancer, PrivateLink AWS et Amazon Route 53. Cette architecture évite les conséquences imprévues de l'utilisation d'un nom de domaine personnalisé et d'un serveur proxy pour faciliter le routage basé sur le domaine sur une API. Par exemple, si vous déployez un point de terminaison de cloud privé virtuel (VPC) dans un sous-réseau non routable, votre réseau ne peut pas atteindre API Gateway. Une solution courante consiste à utiliser un nom de domaine personnalisé, puis à déployer l'API dans un sous-réseau routable, mais cela peut perturber d'autres sites internes lorsque la configuration du proxy transmet le trafic (`execute-api.{region}.vpce.amazonaws.com`) à AWS Direct Connect. Enfin, ce modèle peut vous aider à répondre aux exigences organisationnelles relatives à l'utilisation d'une API privée inaccessible depuis Internet et d'un nom de domaine personnalisé.

## Conditions préalables et limitations
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Un certificat SNI (Server Name Indication) pour votre site Web et votre API
+ Une connexion depuis un environnement sur site vers un compte AWS configuré à l'aide d'AWS Direct Connect ou d'AWS VPN Site-to-Site
+ Une [zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html) avec un domaine correspondant (par exemple, domain.com) qui est résolue à partir d'un réseau local et qui transmet les requêtes DNS à Route 53
+ Un sous-réseau privé routable accessible depuis un réseau local

**Limites**

Pour plus d'informations sur les quotas (anciennement appelés limites) pour les équilibreurs de charge, les règles et les autres ressources, consultez la section [Quotas pour vos équilibreurs de charge d'application dans la documentation Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-limits.html).

## Architecture
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-architecture"></a>

**Pile technologique**
+ Amazon API Gateway
+ Amazon Route 53
+ Application Load Balancer
+ AWS Certificate Manager
+ AWS PrivateLink

**Architecture cible**

Le schéma suivant montre comment un Application Load Balancer est déployé dans un VPC qui dirige le trafic Web vers un groupe cible de sites Web ou un groupe cible d'API Gateway en fonction des règles d'écoute d'Application Load Balancer. Le groupe cible API Gateway est une liste d'adresses IP pour le point de terminaison VPC dans API Gateway. API Gateway est configuré pour rendre l'API privée avec sa politique de ressources. La politique refuse tous les appels qui ne proviennent pas d'un point de terminaison VPC spécifique. Les noms de domaine personnalisés dans la passerelle API sont mis à jour pour utiliser api.domain.com pour l'API et son étape. Les règles Application Load Balancer sont ajoutées pour acheminer le trafic en fonction du nom d'hôte.

![\[Architecture qui utilise les règles de l'écouteur Application Load Balancer pour diriger le trafic Web.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/83145062-4535-4ad0-8947-4ea8950cd174/images/12715186-26ea-4123-b9ef-e3105a934ff3.png)


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

1. Un utilisateur d'un réseau local tente d'accéder à un site Web interne. La demande est envoyée à ui.domain.com et api.domain.com. La demande est ensuite résolue vers l'Application Load Balancer interne du sous-réseau privé routable. Le SSL est résilié au niveau de l'Application Load Balancer pour ui.domain.com et api.domain.com.

1. Les règles du récepteur, configurées sur l'Application Load Balancer, vérifient la présence de l'en-tête de l'hôte.

   a. Si l'en-tête de l'hôte est api.domain.com, la demande est transmise au groupe cible API Gateway. L'Application Load Balancer initie une nouvelle connexion à API Gateway via le port 443.

   b. Si l'en-tête de l'hôte est ui.domain.com, la demande est transmise au groupe cible du site Web.

1. Lorsque la demande atteint API Gateway, le mappage de domaine personnalisé configuré dans API Gateway détermine le nom d'hôte et l'API à exécuter.

**Automatisation et mise à l'échelle**

Les étapes de ce modèle peuvent être automatisées à l'aide d'AWS CloudFormation ou de l'AWS Cloud Development Kit (AWS CDK). Pour configurer le groupe cible des appels d'API Gateway, vous devez utiliser une ressource personnalisée pour récupérer l'adresse IP du point de terminaison du VPC. Appels d'API vers [describe-vpc-endpoints](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-vpc-endpoints.html)et [describe-network-interfaces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-network-interfaces.html)renvoyant les adresses IP et le groupe de sécurité, qui peuvent être utilisés pour créer le groupe cible d'adresses IP de l'API.

## Outils
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-tools"></a>
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) vous aide à créer, publier, gérer, surveiller et sécuriser REST, HTTP, et ce, WebSocket APIs à n'importe quelle échelle.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) est un service Web DNS hautement disponible et évolutif.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) vous aide à créer, stocker et renouveler des certificats et clés SSL/TLS X.509 publics et privés qui protègent vos sites Web et applications AWS.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) vous PrivateLink aide à créer des connexions privées unidirectionnelles VPCs à partir de vos services situés en dehors du VPC.

## Épopées
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-epics"></a>

### Création d'un certificat SNI
<a name="create-an-sni-certificate"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un certificat SNI et importez-le dans ACM. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur réseau | 

### Déployer un point de terminaison VPC dans un sous-réseau privé non routable
<a name="deploy-a-vpc-endpoint-in-a-non-routable-private-subnet"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un point de terminaison VPC d'interface dans API Gateway. | Pour créer un point de terminaison VPC d'interface, suivez les instructions de la section [Accéder à un service AWS à l'aide d'un point de terminaison VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) d'interface dans la documentation Amazon Virtual Private Cloud (Amazon VPC). | Administrateur du cloud | 

### Configuration de l'Application Load Balancer
<a name="configure-the-application-load-balancer"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un groupe cible pour votre application. | [Créez un groupe cible](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-target-group.html) pour les ressources d'interface utilisateur de votre application. | Administrateur du cloud | 
| Créez un groupe cible pour le point de terminaison API Gateway. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur du cloud | 
| Créez un Application Load Balancer. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur du cloud | 
| Créez des règles pour les auditeurs. | Créez des [règles d'écoute](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#listener-rules) pour effectuer les opérations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur du cloud | 

### Configuration de la Route 53
<a name="configure-route-53"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez une zone hébergée privée. | [Créez une zone hébergée privée](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) pour domain.com. | Administrateur du cloud | 
| Créez des enregistrements de domaine. | [Créez des enregistrements CNAME](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) pour les éléments suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur du cloud | 

### Création d'un point de terminaison d'API privé dans API Gateway
<a name="create-a-private-api-endpoint-in-api-gateway"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez et configurez un point de terminaison d'API privé. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Développeur d'applications, administrateur du cloud | 
| Créez un nom de domaine personnalisé. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer.html) | Administrateur du cloud | 

## Ressources connexes
<a name="deploy-an-amazon-api-gateway-api-on-an-internal-website-using-private-endpoints-and-an-application-load-balancer-resources"></a>
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/)
+ [Amazon Route 53](https://aws.amazon.com/route53/)
+ [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/)
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/)

# Intégrez des composants visuels Amazon Quick Sight dans des applications Web à l'aide d'Amazon Cognito et de l'automatisation iAc
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac"></a>

*Ishita Gupta, Saurabh Singh et Srishti Wadhwa, Amazon Web Services*

## Résumé
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-summary"></a>

Ce modèle propose une approche spécialisée pour intégrer les composants visuels Amazon Quick Sight dans les applications React en utilisant l'intégration des utilisateurs enregistrés avec une authentification Amazon Cognito rationalisée. Ces ressources sont ensuite déployées via un modèle d'infrastructure en tant que code (IaC). Contrairement à l'intégration traditionnelle de tableaux de bord, cette solution isole des tableaux et des graphiques spécifiques pour une intégration directe dans les applications React, ce qui améliore considérablement les performances et l'expérience utilisateur.

L'architecture établit un flux d'authentification efficace entre la gestion des utilisateurs d'Amazon Cognito et les autorisations de Quick Sight : les utilisateurs s'authentifient via Amazon Cognito et accèdent à leurs visualisations autorisées conformément aux règles de partage du tableau de bord de Quick Sight. Cette approche rationalisée élimine le besoin d'un accès direct à la console Quick Sight tout en maintenant des contrôles de sécurité robustes.

L'environnement complet est déployé via un AWS CloudFormation modèle unique qui fournit tous les composants d'infrastructure nécessaires, notamment :
+ Un backend sans serveur qui utilise Amazon AWS Lambda API Gateway
+ Hébergement frontal sécurisé via Amazon CloudFront, Amazon Simple Storage Service (Amazon S3), et AWS WAF
+ Gestion des identités à l'aide d'Amazon Cognito

Tous les composants sont configurés conformément aux meilleures pratiques de sécurité en matière de politiques de moindre privilège Gestion des identités et des accès AWS (IAM), de AWS WAF protection et de chiffrement. end-to-end

Cette solution est idéale pour les équipes de développement et les organisations qui souhaitent intégrer des analyses sécurisées et interactives dans leurs applications tout en maintenant un contrôle précis de l'accès des utilisateurs. La solution utilise des services AWS gérés et l'automatisation pour simplifier le processus d'intégration, améliorer la sécurité et garantir l'évolutivité afin de répondre aux besoins évolutifs de l'entreprise.

Public cible et cas d'utilisation :
+ **Développeurs frontaux** qui souhaitent intégrer des analyses dans les applications React
+ Les **équipes de production de logiciels en tant que service (SaaS)** qui souhaitent proposer des visualisations de données par utilisateur ou basées sur les rôles
+ **Architectes de solutions** intéressés par l'intégration de l' AWS analytique dans des portails personnalisés
+ **Développeurs de business intelligence (BI)** qui souhaitent exposer des visuels à des utilisateurs authentifiés sans avoir besoin d'un accès complet au tableau de bord
+ **Les équipes d'entreprise** qui souhaitent intégrer des graphiques Quick Sight interactifs dans les outils internes

## Conditions préalables et limitations
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-prereqs"></a>

**Conditions préalables**

Pour implémenter ce modèle avec succès, assurez-vous que les éléments suivants sont en place :
+ **Active Compte AWS** : Compte AWS avec les autorisations nécessaires pour déployer des CloudFormation piles et créer des ressources Lambda, API Gateway, Amazon Cognito CloudFront et Amazon S3.
+ Compte **Amazon Quick Sight : compte** Quick Sight actif avec au moins un tableau de bord contenant des visuels. Pour les instructions de configuration, consultez [Tutoriel : Création d'un tableau de bord Amazon Quick Sight à l'aide d'exemples de données](https://docs.aws.amazon.com/quicksuite/latest/userguide/example-analysis.html) figurant dans la documentation Amazon Quick.
+ **Un environnement de développement** composé des éléments suivants :
  + Node.js (version 16 ou ultérieure)
  + npm ou fil installé
  + Vite en tant qu'outil de construction de React
  + React (version 19.1.1)
+ **Partage de** tableaux de bord — Les tableaux de bord doivent être partagés dans Quick Sight et l'implémenteur doit se connecter pour accéder aux visuels ou aux tableaux de bord intégrés.

**Limites**
+ Ce modèle utilise la méthode d'intégration des utilisateurs enregistrés, qui nécessite que les implémenteurs disposent d'un compte Quick Sight actif.
+ L'accès est limité aux tableaux de bord et aux visuels qui sont explicitement partagés avec l'utilisateur authentifié de Quick Sight qui implémente ce modèle. Si l'implémenteur ne dispose pas des droits d'accès appropriés, la génération de l'URL d'intégration échouera et les visuels ne se chargeront pas.
+ La CloudFormation pile doit être déployée dans un environnement Région AWS où Quick Sight, API Gateway et Amazon Cognito sont pris en charge. Pour connaître la disponibilité par région, voir [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

**Versions du produit**
+ SDK d'[intégration Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) version 2.10.1
+ Version 19.1.1 de [React](https://www.npmjs.com/package/react)
+ [Node.js](https://nodejs.org/en/download) version 16 ou ultérieure pour garantir la compatibilité avec les dernières versions de React et Vite utilisées dans cette solution

## Architecture
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-architecture"></a>

**Architecture cible**

Le schéma suivant montre l'architecture et le flux de travail de ce modèle.

![\[Architecture et flux de travail pour intégrer des visuels Quick Sight dans une application React.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/75ad12b1-caaa-4532-b709-8f3eaf3f9cc0/images/d0905f61-9055-49cf-887d-f46f5ca6c871.png)


Dans ce flux de travail :

1. **L'utilisateur accède à l'application**. L'utilisateur ouvre l'application Web React à l'aide d'un navigateur. La demande est acheminée vers une CloudFront distribution qui agit comme un réseau de diffusion de contenu pour l'application.

1. **AWS WAF filtre les requêtes malveillantes**. ****Avant que la demande n'arrive CloudFront, elle est transmise AWS WAF. AWS WAF inspecte le trafic et bloque toute demande malveillante ou suspecte conformément aux règles de sécurité.

1. **Amazon S3 fournit des fichiers statiques**. Si la demande est propre, CloudFront extrait les ressources statiques du frontend (HTML, JS, CSS) d'un compartiment S3 privé à l'aide du contrôle d'accès à l'origine (OAC) et les transmet au navigateur.

1. **L'utilisateur se connecte**. Une fois l'application chargée, l'utilisateur se connecte via Amazon Cognito, qui authentifie l'utilisateur et renvoie un jeton Web JSON sécurisé (JWT) pour un accès autorisé à l'API.

1. **L'application envoie une demande d'API**. Après la connexion, l'application React effectue un appel sécurisé vers le `/get-embed-url` point de terminaison sur API Gateway et transmet le jeton JWT dans l'en-tête de la demande pour authentification.

1. **Le jeton est validé**. API Gateway valide le jeton à l'aide d'un autorisateur Amazon Cognito. Si le jeton est valide, la demande est traitée ; dans le cas contraire, elle est refusée avec une réponse 401 (non autorisée).

1. **La demande est dirigée vers Lambda pour traitement**. La demande validée est ensuite transmise à une fonction Lambda principale. Cette fonction est chargée de générer l'URL d'intégration pour le visuel Quick Sight demandé.

1. **Lambda génère l'URL d'intégration à partir de Quick** Sight. IAM utilise un rôle IAM doté des autorisations appropriées pour appeler l'`GenerateEmbedUrlForRegisteredUser`API Quick Sight afin de générer une URL visuelle sécurisée et adaptée à l'utilisateur.

1. **Lambda renvoie l'URL d'intégration à API Gateway**. Lambda renvoie l'URL d'intégration générée à API Gateway dans le cadre d'une réponse JSON. Cette réponse est ensuite préparée pour être envoyée au frontend.

1. **L'URL d'intégration est envoyée au navigateur.** L'URL d'intégration est renvoyée au navigateur en tant que réponse de l'API.

1. **Le visuel est présenté à l'utilisateur**. ****L'application React reçoit la réponse et utilise le SDK d'intégration Quick Sight pour rendre le visuel spécifique à l'utilisateur.

**Automatisation et mise à l'échelle**

Les déploiements du backend et du frontend sont entièrement automatisés à l'aide CloudFormation de ce qui fournit toutes les AWS ressources requises, notamment Amazon Cognito, Lambda, API Gateway, Amazon S3,,,, les rôles IAM et Amazon en un seul déploiement. CloudFront AWS WAF CloudWatch 

Cette automatisation garantit une infrastructure cohérente et reproductible dans tous les environnements. Tous les composants évoluent automatiquement : Lambda s'adapte aux appels de fonctions, CloudFront diffuse le contenu mis en cache dans le monde entier et API Gateway s'adapte aux demandes entrantes.

## Outils
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-tools"></a>

**Services AWS**
+ [Amazon Quick Sight](https://aws.amazon.com/quicksuite/quicksight/) est un service de business intelligence natif dans le cloud qui vous aide à créer, gérer et intégrer des tableaux de bord et des visuels interactifs.
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/) gère APIs cela en tant que pont entre l'application React et les services principaux.
+ [AWS Lambda](https://aws.amazon.com/lambda/)est un service de calcul sans serveur que ce modèle utilise pour générer une intégration Quick Sight sécurisée de URLs manière dynamique, et qui évolue automatiquement en fonction des demandes.
+ [Amazon Cognito](https://aws.amazon.com/cognito/) fournit une authentification et une autorisation aux utilisateurs, et émet des jetons sécurisés pour l'accès aux API.
+ [Amazon S3](https://aws.amazon.com/s3/) héberge des ressources frontales statiques pour ce modèle et les diffuse en toute sécurité via CloudFront ce modèle.
+ [Amazon CloudFront ](https://aws.amazon.com/cloudfront/getting-started/) diffuse du contenu frontal dans le monde entier avec une faible latence et s'intègre au AWS WAF filtrage du trafic.
+ [AWS WAF](https://aws.amazon.com/waf/)protège l'application Web contre le trafic malveillant en appliquant des règles de sécurité et en limitant le débit.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)automatise le provisionnement et la configuration de toutes les ressources de l'application en un seul déploiement.
+ [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) collecte des journaux et des métriques auprès de Lambda, d'API Gateway et à des AWS WAF fins de surveillance et de résolution des problèmes.

**Outils de développement**
+ [React JS](https://react.dev/) est un framework frontal que ce modèle utilise pour créer l'application Web et intégrer les visuels Quick Sight intégrés.
+ [Vite](https://vite.dev/) est un outil de construction utilisé pour le développement rapide et l'optimisation des versions de production de l'application React.
+ Le [SDK d'intégration Quick Sight](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk/v/2.10.1) facilite l'intégration des visuels Quick Sight dans l'application React et permet une interaction fluide entre l'application et les visuels.

**Référentiel de code**

Le code de ce modèle est disponible dans le référentiel GitHub [Amazon Quick Sight Visual Embedding in React](https://github.com/aws-samples/sample-quicksight-visual-embedding).

## Bonnes pratiques
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-best-practices"></a>

Ce modèle met automatiquement en œuvre les meilleures pratiques de sécurité suivantes :
+ Utilise les groupes d'utilisateurs Amazon Cognito pour l'authentification basée sur JWT, avec authentification multifactorielle (MFA) en option.
+ Sécurise APIs avec les autorisateurs Amazon Cognito et applique les politiques IAM du moindre privilège dans tous les services.
+ Implémente l'intégration des utilisateurs enregistrés dans Quick Sight et attribue automatiquement le rôle de lecteur aux utilisateurs.
+ Applique un chiffrement en transit compatible avec le protocole TLS 1.2 et les versions CloudFront ultérieures, ainsi que le protocole HTTPS.
+ Chiffre les données au repos en utilisant AES-256 pour Amazon S3 avec gestion des versions et OAC.
+ Configure les plans d'utilisation d'API Gateway avec régulation et quotas.
+ Sécurise Lambda grâce à la simultanéité réservée et à la protection des variables d'environnement.
+ Active la journalisation pour Amazon S3 CloudFront, Lambda et API Gateway ; surveille les services en utilisant. CloudWatch
+ Chiffre les journaux, applique des contrôles d'accès et applique des politiques de refus pour les téléchargements non HTTPS ou non chiffrés.

En outre, nous recommandons ce qui suit :
+ Utilisez-le CloudFormation pour automatiser les déploiements et maintenir des configurations cohérentes dans tous les environnements.
+ Assurez-vous que chaque utilisateur dispose des autorisations Quick Sight appropriées pour accéder aux visuels intégrés.
+ Protégez les points de terminaison d'API Gateway avec les autorisateurs Amazon Cognito et appliquez le principe du moindre privilège pour tous les rôles IAM.
+ Stockez des informations sensibles telles que Amazon Resource Names (ARNs) et IDs dans des variables d'environnement au lieu de les coder en dur.
+ Optimisez les fonctions Lambda en réduisant les dépendances et en améliorant les performances de démarrage à froid. Pour plus d'informations, consultez le billet de AWS blog [Optimisation des performances de démarrage à froid AWS Lambda en utilisant des stratégies d'amorçage avancées avec SnapStart](https://aws.amazon.com/blogs/compute/optimizing-cold-start-performance-of-aws-lambda-using-advanced-priming-strategies-with-snapstart/).
+ Ajoutez votre CloudFront domaine à la liste d'autorisation de Quick Sight pour permettre une intégration visuelle sécurisée.
+ Surveillez les performances et la sécurité en utilisant CloudWatch et AWS WAF pour la journalisation, les alertes et la protection du trafic.

**Autres bonnes pratiques recommandées**
+ Utilisez des domaines personnalisés dotés de certificats SSL AWS Certificate Manager pour offrir une expérience utilisateur sécurisée et personnalisée.
+ Chiffrez les données et les CloudWatch journaux Amazon S3 à l'aide de clés gérées par le client AWS Key Management Service (AWS KMS) pour un meilleur contrôle du chiffrement.
+  AWS WAF Élargissez les règles grâce au blocage géographique, à l'injection SQL (SQLi), à la protection par script intersite (XSS) et à des filtres personnalisés pour une meilleure prévention des menaces.
+ Activez CloudWatch les alarmes et AWS Config bénéficiez d' AWS CloudTrail une surveillance, d'un audit et d'une conformité de configuration en temps réel.
+ Appliquez des politiques IAM granulaires, appliquez la rotation des clés d'API et autorisez l'accès entre comptes uniquement lorsque cela est absolument nécessaire.
+ Réalisez des évaluations de sécurité régulières pour garantir l'alignement avec les cadres de conformité tels que System and Organization Controls 2 (SOC 2), le règlement général sur la protection des données (RGPD) et la loi HIPAA (Health Insurance Portability and Accountability Act).

## Épopées
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-epics"></a>

### Préparez l'environnement
<a name="prepare-the-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Pour cloner le référentiel. | Clonez le GitHub référentiel de cette solution sur votre système local et accédez au répertoire du projet :<pre>git clone https://github.com/aws-samples/sample-quicksight-visual-embedding.git<br /><br />cd sample-quicksight-visual-embedding</pre>Ce référentiel contient le CloudFormation modèle et le code source React nécessaires au déploiement de la solution. | Développeur d’applications | 

### Déployez la CloudFormation pile
<a name="deploy-the-cfn-stack"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déployez le modèle. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) Pour plus d'informations, consultez [la section Création et gestion des piles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) dans la CloudFormation documentation. | Administrateur AWS | 
| Surveillez la création de piles. | Surveillez la pile dans l'onglet **Events** jusqu'à ce que son statut soit **CREATE\$1COMPLETE**. | Administrateur AWS | 
| Récupérez les sorties de la pile. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrateur AWS | 

### Configuration de l'environnement frontal
<a name="configure-the-frontend-environment"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Récupérez les identifiants visuels de Quick Sight. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrateur Quick Sight | 
| Configurez votre environnement React local. | Pour configurer votre environnement React local et le lier aux AWS ressources, créez un `.env` fichier dans le `my-app/` dossier de votre GitHub dépôt local. Remplissez le fichier avec :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Voici un exemple de `.env` fichier :<pre>VITE_AWS_REGION=us-east-1<br /><br /># Cognito Configuration (from CloudFormation outputs)<br />VITE_USER_POOL_ID=us-east-1_xxxxxxxxx VITE_USER_POOL_WEB_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx<br /><br /># API Configuration (from CloudFormation outputs)<br />VITE_API_URL=https:/your-api-id.execute-api.us-east-1.amazonaws.com/prod<br /><br /># QuickSight Visual Configuration<br />VITE_DASHBOARD_ID=your-dashboard-id <br />VITE_SHEET_ID=your-sheet-id <br />VITE_VISUAL_ID=your-visual-id</pre> | Développeur d’applications | 

### Configurer l'authentification des utilisateurs
<a name="set-up-user-authentication"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Création ou gestion d'utilisateurs dans Cognito | Pour permettre aux utilisateurs authentifiés d'accéder aux visuels Quick Sight intégrés, vous devez d'abord créer des utilisateurs dans Amazon Cognito :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrateur AWS | 
| Fournir un accès au tableau de bord Quick Sight | Pour donner accès aux visuels de Quick Sight, accordez l'autorisation d'accès Viewer aux utilisateurs authentifiés :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Chaque utilisateur recevra un e-mail contenant un lien vers le tableau de bord. Vous pouvez modifier les autorisations à tout moment via le menu **Partager**.Pour plus d'informations, consultez la section [Accorder à des utilisateurs individuels et à des groupes d'Amazon Quick Sight l'accès à un tableau de bord dans Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/share-a-dashboard-grant-access-users.html) dans la documentation Amazon Quick. | Administrateur Quick Sight | 

### Créez et déployez le frontend React
<a name="build-and-deploy-the-react-frontend"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez les dépendances et créez le projet. | Dans le répertoire de l'application React, exécutez les commandes suivantes pour générer des fichiers de production optimisés :<pre>cd my-app<br />npm install<br />npm run build</pre> | Développeur d’applications | 
| Téléchargez les fichiers de compilation sur Amazon S3. | Téléchargez tous les fichiers du `my-app/dist/` répertoire vers le compartiment S3 approvisionné par CloudFormation (ne téléchargez pas le dossier lui-même). | Développeur d’applications | 
| Créez une CloudFront invalidation. | Sur la [CloudFront console](https://console.aws.amazon.com/cloudfront/v4/home), créez une invalidation pour le chemin `/*` afin d'actualiser le contenu mis en cache après le déploiement. Pour obtenir des instructions, consultez la section [Invalidation de fichiers](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation_Requests.html) dans la CloudFront documentation. | Administrateur AWS | 

### Configuration de la liste d'autorisation de Quick Sight
<a name="configure-the-qsight-allowlist"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ajoutez le CloudFront domaine à la liste d'autorisation de Quick Sight. | Pour permettre à votre CloudFront domaine d'intégrer en toute sécurité des visuels Quick Sight :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | Administrateur Quick Sight | 

### Accédez à l'application et vérifiez ses fonctionnalités
<a name="access-the-application-and-verify-functionality"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Ouvrez l'application React. | Utilisez le **CloudFront domaine** (à partir des CloudFormation sorties) pour ouvrir l'application Web React déployée dans un navigateur. | Propriétaire de l'application | 
| Vérifiez l'authentification. | Connectez-vous à l'application en utilisant les informations d'identification Amazon Cognito pour vérifier le flux d'authentification et la validation JWT via API Gateway. | Propriétaire de l'application | 
| Vérifiez les éléments visuels intégrés. | Vérifiez que les visuels de Quick Sight se chargent correctement dans l'application en fonction des autorisations d'accès spécifiques à l'utilisateur. | Propriétaire de l'application | 
| Validez l'API et la connectivité Lambda. | Vérifiez que l'application peut appeler correctement l'`/get-embed-url`API et récupérer une intégration Quick Sight valide URLs sans erreur. | Propriétaire de l'application | 

### Surveillance et maintenance de l'application
<a name="monitor-and-maintain-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Surveillez en utilisant CloudWatch. | Vous pouvez utiliser des outils AWS d'observabilité pour surveiller l'application et maintenir des performances sécurisées et évolutives en production.Consultez les journaux Lambda, les métriques d'API Gateway et les événements d'authentification Amazon Cognito afin de garantir l' CloudWatch intégrité des applications et de détecter les anomalies. | Administrateur AWS | 
| Suivi AWS WAF et CloudFront journaux. | Inspectez les AWS WAF journaux pour détecter les demandes bloquées ou suspectes et les journaux CloudFront d'accès pour connaître les indicateurs de performance et de mise en cache. | Administrateur AWS | 

## Résolution des problèmes
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Erreur « Domaine non autorisé » | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erreurs d’authentification | Causes possibles :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Solutions :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erreurs d'API Gateway | Causes possibles :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Solutions :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Les visuels de Quick Sight ne se chargent pas | Causes possibles :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Solutions :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 
| Erreur « L'utilisateur n'a pas accès » | Causes possibles :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html)Solution :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/embed-quick-sight-visual-components-into-web-apps-cognito-iac.html) | 

## Ressources connexes
<a name="embed-quick-sight-visual-components-into-web-apps-cognito-iac-resources"></a>

** AWS documentation**
+ [Souscrire à un abonnement Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/signing-up.html)
+ [Analyses intégrées pour Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/embedded-analytics.html)
+ [Référence de l'API Quick Sight — GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html)
+ [Groupes d'utilisateurs Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html)
+ [AWS Lambda Manuel du développeur](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Guide du développeur Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html)
+ [Surveillance de base et surveillance détaillée dans CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)
+ [AWS CloudFormation Guide de l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [Guide CloudFront du développeur Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)
+ [AWS WAF Manuel du développeur](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)

**Tutoriels et vidéos**
+ [Analyses intégrées pour Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/embedded-analytics.html)
+ [ YouTube Tutoriels Amazon Quick Sight](https://www.youtube.com/results?search_query=amazon+quicksight+embedding)

# Découvrez le développement complet d'applications Web natives pour le cloud avec Green Boost
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost"></a>

*Ben Stickley et Amiin Samatar, Amazon Web Services*

## Résumé
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-summary"></a>

En réponse à l'évolution des besoins des développeurs, Amazon Web Services (AWS) reconnaît la nécessité d'adopter une approche efficace du développement d'applications Web natives pour le cloud. L'objectif d'AWS est de vous aider à surmonter les obstacles courants associés au déploiement d'applications Web sur le cloud AWS. En exploitant les capacités des technologies modernes telles qu' TypeScriptAWS Cloud Development Kit (AWS CDK), React et Node.js, ce modèle vise à rationaliser et à accélérer le processus de développement.

S'appuyant sur la boîte à outils Green Boost (GB), le modèle propose un guide pratique pour créer des applications Web qui utilisent pleinement les fonctionnalités étendues d'AWS. Il constitue une feuille de route complète qui vous guide tout au long du processus de déploiement d'une application Web CRUD (Create, Read, Update, Delete) fondamentale intégrée à Amazon Aurora PostgreSQL Compatible Edition. Ceci est réalisé en utilisant l'interface de ligne de commande Green Boost (CLI Green Boost) et en établissant un environnement de développement local.

Après le déploiement réussi de l'application, le modèle explore les composants clés de l'application Web, notamment la conception de l'infrastructure, le développement du backend et du frontend, ainsi que les outils essentiels tels que cdk-dia pour la visualisation, facilitant ainsi une gestion de projet efficace.

## Conditions préalables et limitations
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-prereqs"></a>

**Conditions préalables**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installé
+ [Visual Studio Code (VS Code)](https://code.visualstudio.com/download) installé
+ [Interface de ligne de commande (AWS CLI) (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installée
+ [AWS CDK Toolkit installé](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ [Node.js 18](https://nodejs.org/en/download) installé, ou [Node.js 18 avec pnpm activé](https://pnpm.io/cli/env)
+ [pnpm](https://pnpm.io/installation) installé, s'il ne fait pas partie de votre installation de Node.js
+ Connaissance de base d'AWS CDK TypeScript, de Node.js et de React
+ Un [compte AWS actif](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html)
+ [Un compte AWS a démarré à l'aide](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) d'AWS CDK dans. `us-east-1` La région `us-east-1` AWS**** est requise pour le support des fonctions Amazon CloudFront Lambda @Edge.
+ [Informations d'identification de sécurité AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)`AWS_ACCESS_KEY_ID`, y compris celles correctement configurées dans votre environnement de terminal
+ Pour les utilisateurs de Windows, un terminal en mode administrateur (pour s'adapter à la façon dont pnpm gère les modules de nœuds)

**Versions du produit**
+ SDK AWS pour JavaScript version 3
+ AWS CDK version 2
+ Version 2.2 de l'interface de ligne de commande AWS
+ Version 18 de Node.js
+ Version 18 de React

## Architecture
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-architecture"></a>

**Pile technologique cible**
+ Amazon Aurora PostgreSQL-Compatible Edition
+ Amazon CloudFront
+ Amazon CloudWatch
+ Amazon Elastic Compute Cloud (Amazon EC2)
+ AWS Lambda
+ AWS Secrets Manager
+ Amazon Simple Notiﬁcation Service (Amazon SNS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS WAF

**Architecture cible**

Le schéma suivant montre que les demandes des utilisateurs passent par Amazon CloudFront, AWS WAF et AWS Lambda avant d'interagir avec un compartiment S3, une base de données Aurora, EC2 une instance et d'atteindre finalement les développeurs. Les administrateurs, quant à eux, utilisent Amazon SNS et Amazon à des CloudWatch fins de notification et de surveillance.

![\[Processus de déploiement d'une application Web CRUD intégrée à Amazon Aurora PostgreSQL à l'aide de la CLI Green Boost.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/129691e9-7fd3-4208-ab8c-05b9f40a5c4c.png)


Pour obtenir un aperçu plus approfondi de l'application après le déploiement, vous pouvez créer un diagramme à l'aide de [cdk-dia](https://github.com/pistazie/cdk-dia), comme indiqué dans l'exemple suivant.

![\[Le premier diagramme montre une vue centrée sur l'utilisateur ; le diagramme cdk-dia montre une vue de l'infrastructure technique.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/bacafc47-07c0-494b-8bbf-24bdc9b54f6a/images/5e4c3321-47bd-44e7-bf14-f470eed984c1.png)


Ces diagrammes présentent l'architecture de l'application Web sous deux angles distincts. Le diagramme cdk-dia offre une vue technique détaillée de l'infrastructure AWS CDK, en mettant en évidence des services AWS spécifiques tels que la compatibilité avec Amazon Aurora PostgreSQL et AWS Lambda. En revanche, l'autre diagramme adopte une perspective plus large, mettant l'accent sur le flux logique des données et les interactions avec les utilisateurs. La principale différence réside dans le niveau de détail : le cdk-dia explore les subtilités techniques, tandis que le premier schéma fournit une vue plus centrée sur l'utilisateur.

La création du diagramme cdk-dia est abordée dans l'épique *Comprendre l'infrastructure des applications à l'aide d'AWS* CDK.

## Outils
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-tools"></a>

**Services AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) est un moteur de base de données relationnelle entièrement géré et compatible ACID qui vous aide à configurer, exploiter et dimensionner les déploiements PostgreSQL.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) est un framework de développement logiciel qui vous aide à définir et à provisionner l'infrastructure du cloud AWS sous forme de code.
+ [L'interface de ligne de commande AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) est un outil open source qui vous permet d'interagir avec les services AWS par le biais de commandes dans votre shell de ligne de commande.
+ [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) accélère la diffusion de votre contenu Web en le diffusant via un réseau mondial de centres de données, ce qui réduit la latence et améliore les performances.
+ [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) vous CloudWatch aide à surveiller les indicateurs de vos ressources AWS et des applications que vous exécutez sur AWS en temps réel.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) fournit une capacité de calcul évolutive dans le cloud AWS. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous permet d'exécuter du code sans avoir à provisionner ou à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) vous aide à gérer vos applications et votre infrastructure exécutées dans le cloud AWS. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos ressources AWS en toute sécurité à grande échelle. Ce modèle utilise le gestionnaire de session AWS Systems Manager.
+ [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. [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.
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) est un pare-feu pour applications Web qui vous permet de surveiller les demandes HTTP et HTTPS qui sont transmises aux ressources protégées de votre application Web.

**Autres outils**
+ [Git](https://git-scm.com/docs) est un système de contrôle de version distribué et open source.
+ [Green Boost](https://awslabs.github.io/green-boost/overview/intro) est une boîte à outils permettant de créer des applications Web sur AWS.
+ [Next.js](https://nextjs.org/docs) est un framework React permettant d'ajouter des fonctionnalités et des optimisations.
+ [Node.js](https://nodejs.org/en/docs/) est un environnement d' JavaScript exécution piloté par les événements conçu pour créer des applications réseau évolutives.
+ [pgAdmin](https://www.pgadmin.org/) est un outil de gestion open source pour PostgreSQL. Il fournit une interface graphique qui vous permet de créer, de gérer et d'utiliser des objets de base de données.
+ [pnpm](https://pnpm.io/motivation) est un gestionnaire de paquets pour les dépendances du projet Node.js.

## Bonnes pratiques
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-best-practices"></a>

Consultez la section [Epics](#explore-full-stack-cloud-native-web-application-development-with-green-boost-epics) pour plus d'informations sur les recommandations suivantes :
+ Surveillez l'infrastructure à l'aide des CloudWatch tableaux de bord et des alarmes Amazon.
+ Appliquez les meilleures pratiques d'AWS en utilisant cdk-nag pour exécuter une analyse statique de l'infrastructure sous forme de code (IaC).
+ Établissez la redirection de port de base de données via le tunneling SSH (Secure Shell) avec le gestionnaire de session Systems Manager, qui est plus sécurisé que le fait d'avoir une adresse IP exposée publiquement.
+ Gérez les vulnérabilités en exécutant`pnpm audit`.
+ Appliquez les meilleures pratiques en utilisant [ESLint](https://eslint.org/)pour effectuer une analyse de TypeScript code statique et [Prettier](https://prettier.io/) pour standardiser le formatage du code.

## Épopées
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-epics"></a>

### Déployer une application Web CRUD compatible avec Aurora PostgreSQL
<a name="deploy-a-crud-web-app-with-aurora-postgresql-compatible"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez la CLI Green Boost. | Pour installer Green Boost CLI, exécutez la commande suivante.<pre>pnpm add -g gboost</pre> | Développeur d’applications | 
| Créez une application GB. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Installez les dépendances et déployez l'application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Attendez la fin du déploiement (environ 20 minutes). Pendant que vous attendez, surveillez les CloudFormation piles AWS dans la CloudFormation console. Remarquez comment les constructions définies dans le code correspondent à la ressource déployée. Passez en revue l'[arborescence de CDK Construct](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html) dans la CloudFormation console. | Développeur d’applications | 
| Accédez à l'application. | Après avoir déployé votre application GB localement, vous pouvez y accéder à l'aide de l' CloudFront URL. L'URL est imprimée dans la sortie du terminal, mais elle peut être un peu difficile à trouver. Pour le trouver plus rapidement, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Vous pouvez également trouver l' CloudFront URL en accédant à la CloudFront console Amazon :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Copiez le **nom de domaine** associé à la distribution. Cela ressemblera à`your-unique-id.cloudfront.net`. | Développeur d’applications | 

### Surveillez en utilisant Amazon CloudWatch
<a name="monitor-by-using-amazon-cloudwatch"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Consultez le CloudWatch tableau de bord. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Activez les alertes. | Un CloudWatch tableau de bord vous permet de surveiller activement votre application Web. Pour surveiller passivement votre application Web, vous pouvez activer les alertes.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

### Découvrez l'infrastructure des applications à l'aide d'AWS CDK
<a name="understand-the-app-infrastructure-by-using-aws-cdk"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un schéma d'architecture. | Générez un schéma d'architecture de votre application Web à l'aide de [cdk-dia](https://github.com/pistazie/cdk-dia). La visualisation de l'architecture permet d'améliorer la compréhension et la communication entre les membres de l'équipe. Il fournit une vue d'ensemble claire des composants du système et de leurs relations.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Utilisez cdk-nag pour appliquer les meilleures pratiques. | Utilisez [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html) pour vous aider à maintenir une infrastructure sécurisée et conforme en appliquant les meilleures pratiques, en réduisant le risque de vulnérabilités de sécurité et de mauvaises configurations.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

### Évaluer la configuration et le schéma de la base de données
<a name="evaluate-the-database-configuration-and-schema"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Acquérir des variables d'environnement. | Pour obtenir les variables d'environnement requises, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Établissez la redirection de port. | Pour établir la redirection de port, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Ajustez le délai d'expiration du gestionnaire de sessions de Systems Manager. | (Facultatif) Si le délai d'expiration de session par défaut de 20 minutes est trop court, vous pouvez l'augmenter jusqu'à 60 minutes dans la console Systems Manager en choisissant **Session Manager**, **Preferences**, **Edit**, **Idle session timeout**. | Développeur d’applications | 
| Visualisez la base de données. | pgAdmin est un outil open source convivial pour gérer les bases de données PostgreSQL. Il simplifie les tâches de base de données, vous permettant de créer, de gérer et d'optimiser efficacement les bases de données. Cette section explique comment [installer pgAdmin](https://www.pgadmin.org/download/) et comment utiliser ses fonctionnalités pour la gestion des bases de données PostgreSQL.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

### Déboguer avec Node.js
<a name="debug-with-node-js"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Déboguez le cas d'utilisation de la fonction Create Item. | Pour déboguer le cas d'utilisation lié à la création d'un élément, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

### Développez le frontend
<a name="develop-the-frontend"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez le serveur de développement. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

### Outillage avec Green Boost
<a name="tooling-with-green-boost"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez monorepo et le gestionnaire de paquets pnpm. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Exécutez des scripts pnpm. | Exécutez les commandes suivantes à la racine de votre dépôt :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Remarquez comment ces commandes sont exécutées dans tous les espaces de travail. Les commandes sont définies dans le `package.json#scripts` champ de chaque espace de travail. | Développeur d’applications | 
| À utiliser ESLint pour l'analyse de code statique. | Pour tester la capacité d'analyse de code statique de ESLint, procédez comme suit :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Gérez les dépendances et les vulnérabilités. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 
| Pré-validez les hameçons avec Husky. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html)Ces outils sont des mécanismes qui aident à empêcher le mauvais code de pénétrer dans votre application. | Développeur d’applications | 

### Détruire l'infrastructure
<a name="tear-down-the-infrastructure"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Supprimez le déploiement de votre compte. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/explore-full-stack-cloud-native-web-application-development-with-green-boost.html) | Développeur d’applications | 

## Résolution des problèmes
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| Impossible d'établir la redirection de port | Assurez-vous que vos informations d'identification AWS sont correctement configurées et que vous disposez des autorisations nécessaires.Vérifiez que les variables d'environnement Bastion Host ID (`DB_BASTION_ID`) et Database Endpoint (`DB_ENDPOINT`) sont correctement définies.Si vous rencontrez toujours des problèmes, consultez la documentation AWS pour [résoudre les problèmes liés aux connexions SSH et au gestionnaire de session](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html). | 
| Le site Web ne se charge pas `localhost:3000` | Vérifiez que la sortie du terminal indique une redirection de port réussie, y compris l'adresse de transfert.Assurez-vous qu'il n'y a aucun processus conflictuel utilisant le port 3000 sur votre machine locale.Vérifiez que l'application Green Boost est correctement configurée et s'exécute sur le port attendu (3000).Vérifiez dans votre navigateur Web la présence d'extensions ou de paramètres de sécurité susceptibles de bloquer les connexions locales. | 
| Messages d'erreur lors du déploiement local (`pnpm deploy:local`) | Lisez attentivement les messages d'erreur pour identifier la cause du problème.Vérifiez que les variables d'environnement et les fichiers de configuration nécessaires sont correctement définis. | 

## Ressources connexes
<a name="explore-full-stack-cloud-native-web-application-development-with-green-boost-resources"></a>
+ [Documentation du kit AWS CDK](https://docs.aws.amazon.com/cdk/latest/guide/home.html)
+ [Documentation Green Boost](https://awslabs.github.io/green-boost/learn/m1-deploy-gb-app)
+ [Documentation Next.js](https://nextjs.org/docs)
+ [Documentation Node.js](https://nodejs.org/en/docs/)
+ [Documentation React](https://reactjs.org/docs/getting-started.html)
+ [TypeScript documentation](https://www.typescriptlang.org/docs/)

 

# Exécutez des tests unitaires pour une application Node.js à GitHub l'aide d'AWS CodeBuild
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild"></a>

*Thomas Scott et Jean-Baptiste Guillois, Amazon Web Services*

## Résumé
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-summary"></a>

Ce modèle fournit un exemple de code source et des composants de test unitaires clés pour une API de jeu Node.js. Il inclut également des instructions pour exécuter ces tests unitaires à partir d'un GitHub référentiel à l'aide d'AWS CodeBuild, dans le cadre de votre flux de travail d'intégration continue et de livraison continue (CI/CD).

Le test unitaire est un processus de développement logiciel dans lequel différentes parties d'une application, appelées *unités*, sont testées individuellement et indépendamment pour en vérifier le bon fonctionnement. Les tests valident la qualité du code et confirment qu'il fonctionne comme prévu. D'autres développeurs peuvent également se familiariser facilement avec votre base de code en consultant les tests. Les tests unitaires réduisent le temps de refactorisation futur, aident les ingénieurs à se familiariser plus rapidement avec votre base de code et garantissent le comportement attendu.

Les tests unitaires consistent à tester des fonctions individuelles, notamment les fonctions AWS Lambda. Pour créer des tests unitaires, vous avez besoin d'un cadre de test et d'un moyen de valider les tests (assertions). Les exemples de code de ce modèle utilisent le framework de test [Mocha](https://mochajs.org/) et la bibliothèque d'[assertions Chai](https://www.chaijs.com/). 

Pour plus d'informations sur les tests unitaires et des exemples de composants de test, consultez la section [Informations supplémentaires](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional).

## Conditions préalables et limitations
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-prereqs"></a>
+ Un compte AWS actif avec les CodeBuild autorisations correctes
+ Un GitHub compte (voir [les instructions d'inscription](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account))
+ Git (voir les [instructions d'installation](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Un éditeur de code pour apporter des modifications et envoyer votre code vers GitHub

## Architecture
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-architecture"></a>

Ce modèle implémente l'architecture illustrée dans le schéma suivant.

![\[Architecture cloud AWS pour exécuter des tests CodeBuild unitaires avec un GitHub référentiel\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/4f4a3d1a-705a-45a6-b937-9212b188d226.png)


## Outils
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-tools"></a>

**Outils**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) est un système de contrôle de version que vous pouvez utiliser pour le développement de code.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/) est un service d'intégration continue entièrement géré qui compile le code source, exécute des tests et produit des packages logiciels prêts à être déployés. Grâce à CodeBuild cela, vous n'avez pas besoin de provisionner, de gérer et de dimensionner vos propres serveurs de construction. CodeBuild évolue en continu et traite plusieurs versions simultanément, afin que vos versions ne soient pas laissées en attente dans une file d'attente. Vous pouvez démarrer rapidement en utilisant des environnements de génération prépackagés, ou bien, vous pouvez créer vos propres environnements de génération personnalisés, que vous utiliserez avec vos outils de génération. Avec CodeBuild, les ressources informatiques que vous utilisez vous sont facturées à la minute.

**Code**

Le code source de ce modèle est disponible sur GitHub, dans le référentiel d'[applications de test unitaire de jeu Sample](https://github.com/aws-samples/node-js-tests-sample). Vous pouvez créer votre propre GitHub référentiel à partir de cet exemple (option 1) ou utiliser le référentiel d'échantillons directement (option 2) pour ce modèle. Suivez les instructions pour chaque option dans la section suivante. L'option que vous allez suivre dépend de votre cas d'utilisation.

## Épopées
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-epics"></a>

### Option 1 - Exécutez des tests unitaires sur votre GitHub dépôt personnel avec CodeBuild
<a name="option-1---run-unit-tests-on-your-personal-github-repository-with-codebuild"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez votre propre GitHub référentiel sur la base de l'exemple de projet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Développeur d'applications, administrateur AWS, AWS DevOps | 
| Créez un nouveau CodeBuild projet. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Développeur d'applications, administrateur AWS, AWS DevOps | 
| Démarrez le build. | Sur la page **Révision**, choisissez **Démarrer la génération** pour exécuter la génération. | Développeur d'applications, administrateur AWS, AWS DevOps | 

### Option 2 - Exécuter des tests unitaires sur un dépôt public avec CodeBuild
<a name="option-2---run-unit-tests-on-a-public-repository-with-codebuild"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez un nouveau projet CodeBuild de construction. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild.html) | Développeur d'applications, administrateur AWS, AWS DevOps | 
| Démarrez le build. | Sur la page **Révision**, choisissez **Démarrer la génération** pour exécuter la génération. | Développeur d'applications, administrateur AWS, AWS DevOps | 

### Analyser les tests unitaires
<a name="analyze-the-unit-tests"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Afficher les résultats des tests. | Dans la CodeBuild console, passez en revue les résultats du test unitaire de la CodeBuild tâche. Ils doivent correspondre aux résultats présentés dans la section [Informations supplémentaires](#run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional).Ces résultats valident l'intégration GitHub du référentiel avec CodeBuild.  | Développeur d'applications, administrateur AWS, AWS DevOps | 
| Appliquez un webhook. | Vous pouvez désormais appliquer un webhook, ce qui vous permet de démarrer automatiquement une compilation chaque fois que vous envoyez des modifications de code à la branche principale de votre dépôt. Pour obtenir des instructions, consultez la [CodeBuild documentation](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html). | Développeur d'applications, administrateur AWS, AWS DevOps | 

## Ressources connexes
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-resources"></a>
+ [Exemple d'application de test unitaire de jeu](https://github.com/aws-samples/node-js-tests-sample) (GitHub référentiel avec exemple de code)
+ [ CodeBuild Documentation AWS](https://docs.aws.amazon.com/codebuild/)
+ [GitHub événements webhook](https://docs.aws.amazon.com/codebuild/latest/userguide/github-webhook.html) (CodeBuild documentation)
+ [Création d'un nouveau dépôt](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository) (GitHub documentation)

## Informations supplémentaires
<a name="run-unit-tests-for-a-node-js-application-from-github-by-using-aws-codebuild-additional"></a>

**Résultats des tests unitaires**

Dans la CodeBuild console, vous devriez voir les résultats des tests suivants une fois le projet construit avec succès. 

![\[Résultats attendus du test unitaire\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/e18428ce-9ecf-4204-9f1f-5a6683a720b2/images/db861831-cfed-4e87-a498-0216606941f8.png)


**Exemples de composants de test unitaire**

Cette section décrit les quatre types de composants de test utilisés dans les tests unitaires : assertions, espions, stubs et simulacres. Il inclut une brève explication et un exemple de code pour chaque composant. 

**Assertions**

Une assertion est utilisée pour vérifier un résultat attendu. Il s'agit d'un composant de test important car il valide la réponse attendue d'une fonction donnée. L'exemple d'assertion suivant confirme que l'ID renvoyé est compris entre 0 et 1 000 lors de l'initialisation d'un nouveau jeu.

```
const { expect }  = require('chai');
const { Game } = require('../src/index');

describe('Game Function Group', () => {
 it('Check that the Game ID is between 0 and 1000', function() {
      const game = new Game();
      expect(game.id).is.above(0).but.below(1000)
 });
});
```

**espions**

Un espion est utilisé pour observer ce qui se passe lorsqu'une fonction est en cours d'exécution. Par exemple, vous souhaiterez peut-être vérifier que la fonction a été appelée correctement. L'exemple suivant montre que les méthodes start et stop sont appelées sur un objet de classe **Game**.

```
const { expect }  = require('chai');
const { spy } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () => {
   it('should verify that the correct function is called', () => {
      const spyStart = spy(Game.prototype, "start");
      const spyStop = spy(Game.prototype, "stop");
     
      const game = new Game();
      game.start();
      game.stop();
     
      expect(spyStart.called).to.be.true
      expect(spyStop.called).to.be.true
    });
});
```

**Talons**

Un stub est utilisé pour remplacer la réponse par défaut d'une fonction. Cela est particulièrement utile lorsque la fonction envoie une requête externe, car vous souhaitez éviter de faire des demandes externes à partir de tests unitaires. (Les requêtes externes sont mieux adaptées aux tests d'intégration, qui permettent de tester physiquement les demandes entre différents composants.) Dans l'exemple suivant, un stub force la fonction **GetID à renvoyer un ID**.

```
const { expect }  = require('chai');
const {.stub } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let generateIdStub = stub(Game.prototype, 'getId').returns(999999);

      const game = new Game();

      expect(game.getId).is.equal(999999);

      generateIdStub.restore();
    });
});
```

**Des moqueries**

Une simulation est une fausse méthode dont le comportement est préprogrammé pour tester différents scénarios. Une maquette peut être considérée comme une forme étendue de talon et peut effectuer plusieurs tâches simultanément. Dans l'exemple suivant, une simulation est utilisée pour valider trois scénarios :
+ La fonction est appelée 
+ La fonction est appelée avec des arguments
+ La fonction renvoie le nombre entier 9

```
const { expect }  = require('chai');
const {.mock } = require('sinon');

const { Game } = require('../src/index');

describe('Game Function Group', () =>  {
   it('Check that the Game ID is between 0 and 1000', function() {
      let mock = mock(Game.prototype).expects('getId').withArgs().returns(9);

      const game = new Game();
      const id = get.getId();

      mock.verify();
      expect(id).is.equal(9);
    });
});
```

# Structurer un projet Python dans une architecture hexagonale à l'aide d'AWS Lambda
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda"></a>

*Furkan Oruc, Dominik Goby, Darius Kunce et Michal Ploski, Amazon Web Services*

## Résumé
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-summary"></a>

Ce modèle montre comment structurer un projet Python dans une architecture hexagonale à l'aide d'AWS Lambda. Le modèle utilise l'AWS Cloud Development Kit (AWS CDK) comme outil d'infrastructure en tant que code (iAc), Amazon API Gateway comme API REST et Amazon DynamoDB comme couche de persistance. L'architecture hexagonale suit les principes de conception axés sur le domaine. Dans une architecture hexagonale, le logiciel comprend trois composants : le domaine, les ports et les adaptateurs. *Pour obtenir des informations détaillées sur les architectures hexagonales et leurs avantages, consultez le guide [Création d'architectures hexagonales sur AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/).*

## Conditions préalables et limitations
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ Expérience en Python
+ Connaissance d'AWS Lambda, d'AWS CDK, d'Amazon API Gateway et de DynamoDB
+ Un GitHub compte (voir [les instructions d'inscription](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account))
+ Git (voir les [instructions d'installation](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))
+ Un éditeur de code pour apporter des modifications et transférer votre code vers GitHub (par exemple, [Visual Studio Code](https://code.visualstudio.com/) ou [JetBrains PyCharm](https://www.jetbrains.com/pycharm/))
+ Docker est installé et le daemon Docker est opérationnel

**Versions du produit**
+ Git version 2.24.3 ou ultérieure
+ Python version 3.7 ou ultérieure
+ Kit de développement logiciel AWS version 2
+ Poetry version 1.1.13 ou ultérieure
+ AWS Lambda Powertools pour Python version 1.25.6 ou ultérieure
+ pytest version 7.1.1 ou ultérieure
+ Moto version 3.1.9 ou ultérieure
+ version 1.9.0 ou ultérieure de pydantic
+ Boto3 version 1.22.4 ou ultérieure
+ mypy-boto3-dynamodb version 1.24.0 ou ultérieure

## Architecture
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-architecture"></a>

**Pile technologique cible**

La pile technologique cible consiste en un service Python qui utilise API Gateway, Lambda et DynamoDB. Le service utilise un adaptateur DynamoDB pour conserver les données. Il fournit une fonction qui utilise Lambda comme point d'entrée. Le service utilise Amazon API Gateway pour exposer une API REST. L'API utilise AWS Identity and Access Management (IAM) pour l'[authentification des clients](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html).

**Architecture cible**

Pour illustrer l'implémentation, ce modèle déploie une architecture cible sans serveur. Les clients peuvent envoyer des demandes à un point de terminaison API Gateway. API Gateway transmet la demande à la fonction Lambda cible qui implémente le modèle d'architecture hexagonal. La fonction Lambda effectue des opérations de création, de lecture, de mise à jour et de suppression (CRUD) sur une table DynamoDB.


| 
| 
| Ce modèle a été testé dans un environnement PoC. Vous devez effectuer un examen de sécurité pour identifier le modèle de menace et créer une base de code sécurisée avant de déployer une architecture dans un environnement de production.  | 
| --- |

![\[Architecture cible pour structurer un projet Python en architecture hexagonale\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/25bd7169-ea5e-4a21-a865-c91c30a3c0da/images/de0d4f0d-ad19-43ec-bd10-676b25477b64.png)


L'API prend en charge cinq opérations sur une entité de produit :
+ `GET /products`renvoie tous les produits. 
+ `POST /products`crée un nouveau produit. 
+ `GET /products/{id}`renvoie un produit spécifique.
+ `PUT /products/{id}`met à jour un produit spécifique. 
+ `DELETE /products/{id}`supprime un produit spécifique.

Vous pouvez utiliser la structure de dossiers suivante pour organiser votre projet selon le modèle d'architecture hexagonal :  

```
app/  # application code
|--- adapters/  # implementation of the ports defined in the domain
     |--- tests/  # adapter unit tests
|--- entrypoints/  # primary adapters, entry points
     |--- api/  # api entry point
          |--- model/  # api model
          |--- tests/  # end to end api tests
|--- domain/  # domain to implement business logic using hexagonal architecture
     |--- command_handlers/  # handlers used to execute commands on the domain
     |--- commands/  # commands on the domain
     |--- events/  # events triggered via the domain
     |--- exceptions/  # exceptions defined on the domain
     |--- model/  # domain model
     |--- ports/  # abstractions used for external communication
     |--- tests/  # domain tests
|--- libraries/  # List of 3rd party libraries used by the Lambda function
infra/  # infrastructure code
simple-crud-app.py  # AWS CDK v2 app
```

## Outils
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-tools"></a>

**Services AWS**
+ [Amazon API Gateway](https://aws.amazon.com/api-gateway/) est un service entièrement géré qui permet aux développeurs de créer, publier, gérer, surveiller et sécuriser facilement APIs à n'importe quelle échelle.
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) est une base de données NoSQL à valeur clé entièrement gérée, sans serveur, conçue pour exécuter des applications hautes performances à n'importe quelle échelle.
+ [AWS Lambda](https://aws.amazon.com/lambda/) est un service de calcul sans serveur piloté par les événements qui vous permet d'exécuter du code pour pratiquement n'importe quel type d'application ou de service principal sans provisionner ni gérer de serveurs. Vous pouvez lancer des fonctions Lambda à partir de plus de 200 services AWS et applications logicielles en tant que service (SaaS), et ne payer que pour ce que vous utilisez.

**Outils**
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) est utilisé comme système de contrôle de version pour le développement de code dans ce modèle.
+ [Python](https://www.python.org/) est utilisé comme langage de programmation pour ce modèle. Python fournit des structures de données de haut niveau et une approche de la programmation orientée objet. AWS Lambda fournit un environnement d'exécution Python intégré qui simplifie le fonctionnement des services Python.
+ [Visual Studio Code](https://code.visualstudio.com/) est utilisé comme IDE pour le développement et les tests de ce modèle. Vous pouvez utiliser n'importe quel IDE prenant en charge le développement en Python (par exemple, [PyCharm](https://www.jetbrains.com/pycharm/)).
+ [AWS Cloud Development Kit (AWS CDK](https://aws.amazon.com/cdk/)) est un framework de développement logiciel open source qui vous permet de définir les ressources de vos applications cloud à l'aide de langages de programmation courants. Ce modèle utilise le CDK pour écrire et déployer l'infrastructure cloud sous forme de code.
+ [La poésie](https://python-poetry.org/) est utilisée pour gérer les dépendances dans le modèle.
+ [Docker](https://www.docker.com/) est utilisé par le AWS CDK pour créer le package et la couche Lambda.

**Code**

Le code de ce modèle est disponible dans le référentiel d'exemples d'[architecture hexagonale GitHub Lambda](https://github.com/aws-samples/lambda-hexagonal-architecture-sample).

## Bonnes pratiques
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-best-practices"></a>

Pour utiliser ce modèle dans un environnement de production, suivez les meilleures pratiques suivantes :
+ Utilisez les clés gérées par le client dans AWS Key Management Service (AWS KMS) pour chiffrer les [groupes de CloudWatch journaux Amazon et les tables](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) [Amazon DynamoDB](https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html).
+ Configurez [AWS WAF pour Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html) afin d'autoriser l'accès uniquement depuis le réseau de votre organisation.
+ Envisagez d'autres options d'autorisation API Gateway si IAM ne répond pas à vos besoins. Par exemple, vous pouvez utiliser les [groupes d'utilisateurs Amazon Cognito](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) ou les autorisateurs [Lambda d'API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html).
+ Utilisez les [sauvegardes DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html).
+ Configurez les fonctions Lambda avec un [déploiement de cloud privé virtuel (VPC)](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) afin de maintenir le trafic réseau dans le cloud.
+ Mettez à jour la configuration d'origine autorisée pour [le partage de ressources entre origines (CORS) avant le vol](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) afin de restreindre l'accès au domaine d'origine demandeur uniquement.
+ Utilisez [cdk-nag](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/check-aws-cdk-applications-or-cloudformation-templates-for-best-practices-by-using-cdk-nag-rule-packs.html) pour vérifier le code AWS CDK afin de connaître les meilleures pratiques en matière de sécurité.
+ Envisagez d'utiliser des outils d'analyse de code pour détecter les problèmes de sécurité courants dans le code. Par exemple, [Bandit](https://bandit.readthedocs.io/en/latest/) est un outil conçu pour détecter les problèmes de sécurité courants dans le code Python. [PIP-Audit analyse](https://pypi.org/project/pip-audit/) les environnements Python à la recherche de packages présentant des vulnérabilités connues.

Ce modèle utilise [AWS X-Ray](https://aws.amazon.com/xray/?nc1=h_ls) pour suivre les demandes via le point d'entrée, le domaine et les adaptateurs de l'application. AWS X-Ray aide les développeurs à identifier les goulets d'étranglement et à déterminer les latences élevées afin d'améliorer les performances des applications.

## Épopées
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-epics"></a>

### Initialiser le projet
<a name="initialize-the-project"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Créez votre propre référentiel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Installez les dépendances. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Configurez votre IDE. | Nous recommandons Visual Studio Code, mais vous pouvez utiliser n'importe quel IDE de votre choix qui supporte Python. Les étapes suivantes concernent Visual Studio Code.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Exécuter des tests unitaires, option 1 : utiliser Visual Studio Code. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Exécuter des tests unitaires, option 2 : utiliser des commandes shell. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 

### Déployez et testez l'application
<a name="deploy-and-test-the-application"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Demandez des informations d'identification temporaires. | Pour avoir des informations d'identification AWS sur le shell lorsque vous exécutez`cdk deploy`, créez des informations d'identification temporaires à l'aide d'AWS IAM Identity Center (successeur d'AWS Single Sign-On). Pour obtenir des instructions, consultez le billet de blog [Comment récupérer des informations d'identification à court terme pour une utilisation en CLI avec AWS IAM Identity Center](https://aws.amazon.com/blogs/security/aws-single-sign-on-now-enables-command-line-interface-access-for-aws-accounts-using-corporate-credentials/). | Développeur d'applications, AWS DevOps | 
| Déployez l'application. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d'applications, AWS DevOps | 
| Testez l'API, option 1 : utilisez la console. | Utilisez la [console API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html) pour tester l'API. Pour plus d'informations sur les opérations et les request/response messages de l'[API, consultez la section sur l'utilisation de l'API du fichier readme](https://github.com/aws-samples/lambda-hexagonal-architecture-sample/blob/main/README.md#api-usage) du GitHub référentiel. | Développeur d'applications, AWS DevOps | 
| Testez l'API, option 2 : utilisez Postman. | Si vous souhaitez utiliser un outil tel que [Postman](https://www.postman.com/) :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d'applications, AWS DevOps | 

### Développez le service
<a name="develop-the-service"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Rédigez des tests unitaires pour le domaine commercial. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Implémenter des commandes et des gestionnaires de commandes. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Rédigez des tests d'intégration pour les adaptateurs secondaires. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Implémentez des adaptateurs secondaires. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Rédigez end-to-end des tests. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 
| Implémentez les adaptateurs principaux. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html) | Développeur d’applications | 

## Ressources connexes
<a name="structure-a-python-project-in-hexagonal-architecture-using-aws-lambda-resources"></a>

**Guide APG**
+ [Création d'architectures hexagonales sur AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/hexagonal-architectures/)

**Références AWS**
+ [Documentation AWS Lambda](https://docs.aws.amazon.com/lambda/)
+ [Documentation du kit de développement AWS](https://docs.aws.amazon.com/cdk/)
  + [Votre première application AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)
+ [Documentation d'API Gateway](https://docs.aws.amazon.com/apigateway/)
  + [Contrôler l'accès à une API avec des autorisations IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html)
  + [Utiliser la console API Gateway pour tester une méthode d'API REST](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-test-method.html)
+ [Documentation Amazon DynamoDB](https://docs.aws.amazon.com/dynamodb/)

**Outils**
+ [Site web git-scm.com](https://git-scm.com/)
+ [Installation de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+ [Création d'un nouveau GitHub référentiel](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository)
+ [Site Web Python](https://www.python.org/)
+ [Outils puissants AWS Lambda pour Python](https://docs.powertools.aws.dev/lambda/python/latest/)
+ [Site de Postman](https://www.postman.com/)
+ [bibliothèque d'objets fictifs en Python](https://docs.python.org/3/library/unittest.mock.html)
+ [Site de poésie](https://python-poetry.org/)

**IDEs**
+ [Site Web de Visual Studio Code](https://code.visualstudio.com/)
+ [PyCharm website](https://www.jetbrains.com/pycharm/)

# Plus de modèles
<a name="websitesandwebapps-more-patterns-pattern-list"></a>

**Topics**
+ [Accédez à des applications de conteneur en privé sur Amazon ECS à l'aide d'AWS Fargate, d' PrivateLinkAWS et d'un Network Load Balancer](access-container-applications-privately-on-amazon-ecs-by-using-aws-fargate-aws-privatelink-and-a-network-load-balancer.md)
+ [Accédez à des applications de conteneur en privé sur Amazon ECS à l'aide d'AWS PrivateLink et d'un Network Load Balancer](access-container-applications-privately-on-amazon-ecs-by-using-aws-privatelink-and-a-network-load-balancer.md)
+ [Associer un AWS CodeCommit référentiel dans un compte Compte AWS à Amazon SageMaker AI Studio Classic dans un autre compte](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Automatisez la suppression des AWS CloudFormation piles et des ressources associées](automate-deletion-cloudformation-stacks-associated-resources.md)
+ [Limitez l'accès en fonction de l'adresse IP ou de la géolocalisation en utilisant AWS WAF](aws-waf-restrict-access-geolocation.md)
+ [Créez une application mobile React Native sans serveur à l'aide d'AWS Amplify](build-a-serverless-react-native-mobile-app-by-using-aws-amplify.md)
+ [Créez et testez des applications iOS avec AWS CodeCommit CodePipeline, AWS et AWS Device Farm](build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm.md)
+ [Configurez la journalisation pour les applications .NET dans Amazon CloudWatch Logs en utilisant NLog](configure-logging-for-net-applications-in-amazon-cloudwatch-logs-by-using-nlog.md)
+ [Consolidez la génération d'URL présignées Amazon S3 et le téléchargement d'objets en utilisant un point de terminaison associé à des adresses IP statiques](consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.md)
+ [Créez une définition de tâche Amazon ECS et montez un système de fichiers sur des EC2 instances à l'aide d'Amazon EFS](create-an-amazon-ecs-task-definition-and-mount-a-file-system-on-ec2-instances-using-amazon-efs.md)
+ [Déployez une application basée sur GRPC sur un cluster Amazon EKS et accédez-y à l'aide d'un Application Load Balancer](deploy-a-grpc-based-application-on-an-amazon-eks-cluster-and-access-it-with-an-application-load-balancer.md)
+ [Déployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Déployez des CloudWatch canaris Synthetics à l'aide de Terraform](deploy-cloudwatch-synthetics-canaries-by-using-terraform.md)
+ [Déployez des microservices Java sur Amazon ECS à l'aide d'AWS Fargate](deploy-java-microservices-on-amazon-ecs-using-aws-fargate.md)
+ [Déployez un cas d'utilisation de RAG AWS en utilisant Terraform et Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Déployez des ressources dans une AWS Wavelength zone à l'aide de Terraform](deploy-resources-wavelength-zone-using-terraform.md)
+ [Implémentez la gestion des versions d'API basée sur les chemins en utilisant des domaines personnalisés dans Amazon API Gateway](implement-path-based-api-versioning-by-using-custom-domains.md)
+ [Migrer une file d'attente de messagerie de Microsoft Azure Service Bus vers Amazon SQS](migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs.md)
+ [Migrer une application .NET de Microsoft Azure App Service vers AWS Elastic Beanstalk](migrate-a-net-application-from-microsoft-azure-app-service-to-aws-elastic-beanstalk.md)
+ [Migrer une application Web Go sur site vers AWS Elastic Beanstalk à l'aide de la méthode binaire](migrate-an-on-premises-go-web-application-to-aws-elastic-beanstalk-by-using-the-binary-method.md)
+ [Migrer un serveur SFTP sur site vers AWS AWS Transfer for SFTP](migrate-an-on-premises-sftp-server-to-aws-using-aws-transfer-for-sftp.md)
+ [Migrer d'un serveur WebSphere d'applications IBM vers Apache Tomcat sur Amazon EC2](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2.md)
+ [Migrez d'IBM WebSphere Application Server vers Apache Tomcat sur Amazon EC2 avec Auto Scaling](migrate-from-ibm-websphere-application-server-to-apache-tomcat-on-amazon-ec2-with-auto-scaling.md)
+ [Migrez des applications Java sur site vers AWS à l'aide d'AWS App2Container](migrate-on-premises-java-applications-to-aws-using-aws-app2container.md)
+ [Migrer les certificats SSL Windows vers un Application Load Balancer à l'aide d'ACM](migrate-windows-ssl-certificates-to-an-application-load-balancer-using-acm.md)
+ [Modernisez les applications ASP.NET Web Forms sur AWS](modernize-asp-net-web-forms-applications-on-aws.md)
+ [Surveillez l'activité des applications à l'aide de CloudWatch Logs Insights](monitor-application-activity-by-using-cloudwatch-logs-insights.md)
+ [Exécuter un conteneur Docker d'API Web ASP.NET Core sur une instance Amazon Linux EC2](run-an-asp-net-core-web-api-docker-container-on-an-amazon-ec2-linux-instance.md)
+ [Envoyez des attributs personnalisés à Amazon Cognito et injectez-les dans des jetons](send-custom-attributes-cognito.md)
+ [Diffusez du contenu statique dans un compartiment Amazon S3 via un VPC à l'aide d'Amazon CloudFront](serve-static-content-in-an-amazon-s3-bucket-through-a-vpc-by-using-amazon-cloudfront.md)
+ [Configuration d'une PeopleSoft architecture à haute disponibilité sur AWS](set-up-a-highly-available-peoplesoft-architecture-on-aws.md)
+ [Simplifiez le développement et le déploiement des robots Amazon Lex à l'aide d'un flux de travail automatisé](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Résoudre les problèmes liés aux états en AWS Step Functions utilisant Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)
+ [Utilisez Network Firewall pour capturer les noms de domaine DNS à partir de l'indication du nom du serveur pour le trafic sortant](use-network-firewall-to-capture-the-dns-domain-names-from-the-server-name-indication-sni-for-outbound-traffic.md)
+ [Visualisez les résultats AI/ML du modèle à l'aide de Flask et d'AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)