Gérez les déploiements bleu/vert de microservices vers plusieurs comptes et régions à l'aide des services de code AWS et des clés multirégionales AWS KMS - Recommandations AWS

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.

Gérez les déploiements bleu/vert de microservices vers plusieurs comptes et régions à l'aide des services de code AWS et des clés multirégionales AWS KMS

Créée par Balaji Vedagiri (AWS), Ashish Kumar (AWS), Faisal Shahdad (AWS), Anand Krishna Varanasi (AWS), Vanitha Dontireddy (AWS) et Vivek Thangamuthu (AWS)

Récapitulatif

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

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 déploiement bleu/vert. 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 déploiement bleu/vert de microservices est mis en œuvre à l'aide d'AWS. CodeDeploy

Conditions préalables et limitations

Prérequis

  • 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ésS3BUCKETNAMETESTACCOUNT1, 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

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

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

Services AWS

  • AWS 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 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 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 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 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) est un service géré de registre d'images de conteneurs sécurisé, évolutif et fiable.

  • Amazon Elastic Container Service (Amazon ECS) 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) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • Amazon Simple Storage Service (Amazon 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.

Outils supplémentaires

  • Git est un système de contrôle de version distribué open source qui fonctionne avec le CodeCommit référentiel AWS.

  • Docker 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 et 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 les déploiements GitHub mondiaux bleu/vert dans plusieurs régions et dans le référentiel de comptes.

Épopées

TâcheDescriptionCompé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.

  1. Mettez à jour les noms de bucket que vous avez créés dans les trois comptes et régions, comme expliqué précédemment dans la section Conditions préalables :

    export S3BUCKETNAMETESTACCOUNT1=<S3BUCKETACCOUNT1> export S3BUCKETNAMETESTACCOUNT2=<S3BUCKETACCOUNT2> export S3BUCKETNAMETESTACCOUNT3=<S3BUCKETACCOUNT3>
  2. Définissez une chaîne aléatoire pour créer des compartiments d'artefacts, car les noms de compartiments doivent être uniques à l'échelle mondiale :

    export BUCKETSTARTNAME=ecs-codepipeline-artifacts-19992
  3. Définissez et exportez le compte IDs et les régions :

    export TOOLSACCOUNT=<TOOLSACCOUNT> export CODECOMMITACCOUNT=<CODECOMMITACCOUNT> export CODECOMMITREGION=ap-south-1 export CODECOMMITREPONAME=Poc export TESTACCOUNT1=<TESTACCOUNT1> export TESTACCOUNT2=<TESTACCOUNT2> export TESTACCOUNT3=<TESTACCOUNT3> export TESTACCOUNT1REGION=ap-south-1 export TESTACCOUNT2REGION=eu-central-1 export TESTACCOUNT3REGION=us-east-1 export TOOLSACCOUNTREGION=ap-south-1 export ECRREPOSITORYNAME=web
AWS DevOps
TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Clonez le référentiel d'échantillons dans un nouveau référentiel sur votre lieu de travail :

##In work location git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git
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.

##In TestAccount1## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \ --s3-prefix infraStack \ --region $TESTACCOUNT1REGION \ --output-template-file infrastructure_${TESTACCOUNT1}.template
##In TestAccount2## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \ --s3-prefix infraStack \ --region $TESTACCOUNT2REGION \ --output-template-file infrastructure_${TESTACCOUNT2}.template
##In TestAccount3## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \ --s3-prefix infraStack \ --region $TESTACCOUNT3REGION \ --output-template-file infrastructure_${TESTACCOUNT3}.template
AWS DevOps

Validez les modèles de package.

Validez les modèles de package :

aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT1}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT2}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT3}.template
AWS DevOps

Déployez les fichiers du package dans les comptes de charge de travail,

  1. Mettez à jour les valeurs d'espace réservé et les noms de compte dans le nfraParameters.json script i en fonction de votre configuration.

  2. Déployez les modèles de package dans vos trois comptes de charge de travail.

    ##In TestAccount1## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT1}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT1REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount2## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT2}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT2REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount3## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT3}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT3REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
AWS DevOps
TâcheDescriptionCompé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.

Les commandes sont les suivantes :

docker pull nginx docker images docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag
AWS DevOps

Faites évoluer Amazon ECS et vérifiez l'accès.

  1. Faites évoluer Amazon ECS pour créer deux répliques :

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 2

    Poc-Service fait référence à votre exemple d'application.

  2. Vérifiez que les services sont accessibles depuis l'Application Load Balancer en utilisant un nom de domaine complet (FQDN) ou un DNS depuis un navigateur ou en utilisant la commande curl.

AWS DevOps
TâcheDescriptionCompé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.

aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides CodeCommitReponame=$CODECOMMITREPONAME \ ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
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.

aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

Configurez une clé KMS multirégionale.

  1. Créez une clé KMS multirégionale avec les clés principales et répliques qui CodePipeline seront utilisées. Dans notre exemple, ToolsAccount1region - ap-south-1 ce sera la région principale.

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. Définissez les variables CMKARN à transmettre aux CodeBuild projets. Les valeurs sont disponibles dans la sortie de la pile de modèles ecs-codepipeline-pre-reqs -KMS (l'ID de clé sera le même dans toutes les régions et commence parmrk-). Vous pouvez également obtenir les valeurs CMKARN à partir du compte des outils. Exportez-les dans toutes les sessions du compte : 

    export CMKARN1=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN2=arn:aws:kms:eu-central-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN3=arn:aws:kms:us-east-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMARNTOOLS=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx
AWS DevOps

Configurez le CodeBuild projet dans le compte Outils.

  1. Utilisez le codebuild_IAM.yaml modèle figurant code dans le dossier du GitHub référentiel pour configurer AWS Identity and Access Management (IAM) pour AWS CodeBuild dans une seule région dans le compte tools :

    #In ToolsAccount aws cloudformation deploy --stack-name ecs-codebuild-iam \ --template-file codebuild_IAM.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
  2. Utilisez le codebuild.yaml modèle CodeBuild pour configurer votre projet de construction. Déployez ce modèle dans les trois régions comme suit :

    aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT1 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN1 \ --template-file codebuild.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN2 \ --template-file codebuild.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT3 \ CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN3 \ --template-file codebuild.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
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.

Note

Les valeurs des piles d'infrastructure sont déjà exportées, elles sont donc importées par les modèles de CodeDeploy pile.

##WorkloadAccount1## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount2## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount3## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps
TâcheDescriptionCompétences requises

Créez un pipeline de code dans le compte Tools.

Dans le compte des outils, exécutez la commande :

aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \ TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \ TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \ CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \ CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \ --template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM
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.

  1. Fournissez un accès CodePipeline et des CodeBuild rôles dans la politique clé d'AWS KMS :

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ CodeBuildCondition=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. Mettez à jour la politique du compartiment S3 pour autoriser l'accès CodePipeline et CodeDeploy les rôles :

    aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps
TâcheDescriptionCompétences requises

Transférez les modifications au CodeCommit référentiel.

  1. Clonez le CodeCommit référentiel créé dans le à codecommitrepoStack l'aide de la git clone commande, comme décrit dans la CodeCommit documentation AWS.

  2. Mettez à jour les artefacts d'entrée avec les détails requis :

    • Fichier JSON : mise à jour AccountID dans le fichier à trois endroits de ce fichier. Renommez les trois fichiers pour inclure le compte IDs.

    • Fichiers YAML : mettez à jour l'ARN et la version de la définition de la tâche. Renommez les trois fichiers pour inclure le compte IDs.

  3. Modifiez le index.html fichier pour apporter quelques modifications mineures à la page d'accueil.

  4. Copiez les fichiers suivants dans le référentiel et validez :

    index.html Dockerfile buildspec.yaml appspec_<accountid>.yaml (3 files - one per account ) taskdef<accountid>.json (3 files - one per account)
  5. Démarrez ou redémarrez le pipeline et vérifiez les résultats.

  6. Accédez au service depuis l'Application Load Balancer à l'aide d'un FQDN ou d'un DNS, et vérifiez que les mises à jour ont été déployées.

TâcheDescriptionCompétences requises

Nettoyez toutes les ressources déployées.

  1. Réduisez Amazon ECS à zéro instance :

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 0
  2. Supprimez les CloudFormation piles de chaque compte et de chaque région :

    ##In Tools Account## aws cloudformation delete-stack --stack-name ecscodepipelinestack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name ecs-codepipeline-pre-reqs-KMS --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name codecommitrepoStack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecs-codebuild-iam --region $TOOLSACCOUNTREGION ##NOTE: Artifact buckets will not get deleted if there are artifacts so it has to be emptied manually before deleting.##
    ##In Workload / Test Accounts## ##Account:1## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT1REGION ##Account:2## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT2REGION ##Account:3## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT3REGION ##NOTE: Amazon ECR (web) will not get deleted if the registry still includes images. It can be manually cleaned up if not required.

Résolution des problèmes

ProblèmeSolution

Les modifications que vous avez apportées au 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 .

  • Vérifiez le CodeDeploy déploiement pour détecter tout problème de déploiement d'Amazon ECS.

Ressources connexes