Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Gestione las implementaciones azul/verde de microservicios en varias cuentas y regiones mediante los servicios de código de AWS y las claves multirregionales de AWS KMS - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestione las implementaciones azul/verde de microservicios en varias cuentas y regiones mediante los servicios de código de AWS y las claves multirregionales de AWS KMS

Creado por Balaji Vedagiri (AWS), Ashish Kumar (AWS), Faisal Shahdad (AWS), Anand Krishna Varanasi (AWS), Vanitha Dontireddy (AWS) y Vivek Thangamuthu (AWS)

Resumen

Aviso: ya no AWS CodeCommit está disponible para nuevos clientes. Los clientes actuales de AWS CodeCommit pueden seguir utilizando el servicio con normalidad. Más información

En este patrón se describe cómo implementar una aplicación de microservicios global desde una cuenta central de AWS en varias cuentas de carga de trabajo y regiones de acuerdo con una estrategia de implementación azul/verde. El patrón es compatible con lo siguiente:

  • El software se desarrolla en una cuenta central, mientras que las cargas de trabajo y las aplicaciones se distribuyen en varias cuentas y regiones de AWS.

  • Se utiliza una única clave multirregional del Sistema de administración de claves de AWS (AWS KMS) para el cifrado y el descifrado a fin de permitir la recuperación de desastres.

  • La clave KMS es específica de cada región y debe mantenerse o crearse en tres regiones diferentes para los artefactos del proyecto. Una clave KMS multirregional facilita poder conservar el mismo ID de clave en todas las regiones.

  • El modelo de ramificación del flujo de trabajo de Git se implementa con dos ramas (de desarrollo y principal) y el código se fusiona mediante solicitudes de extracción (PRs). La función de Lambda de AWS que se implementa desde esta pila crea una PR desde la rama de desarrollo hacia la rama principal. La fusión de PR con la rama principal inicia una CodePipeline canalización de AWS, que organiza el flujo de integración y entrega continuas (CI/CD) y despliega las pilas en todas las cuentas.

Este patrón proporciona un ejemplo de configuración de infraestructura como código (IaC) mediante CloudFormation pilas de AWS para demostrar este caso de uso. La implementación azul/verde de los microservicios se implementa mediante AWS. CodeDeploy

Requisitos previos y limitaciones

Requisitos previos 

  • Cuatro cuentas de AWS activas:

    • Una cuenta de herramientas para administrar la canalización de código y mantener el CodeCommit repositorio de AWS.

    • Tres cuentas de carga de trabajo (de prueba) para implementar la carga de trabajo de los microservicios.

  • Este patrón utiliza las siguientes regiones. Si desea utilizar otras regiones, debe realizar las modificaciones adecuadas en las pilas multirregionales de AWS CodeDeploy y AWS KMS.

    • Cuenta Tools (AWS CodeCommit): ap-south-1

    • Cuenta de carga de trabajo (de prueba) 1: ap-south-1

    • Cuenta de carga de trabajo (de prueba) 2: eu-central-1

    • Cuenta de carga de trabajo (de prueba) 3: us-east-1

  • Tres buckets de Amazon Simple Storage Service (Amazon S3) para las regiones de implementación de cada cuenta de carga de trabajo. (Se denominan S3BUCKETNAMETESTACCOUNT1, S3BUCKETNAMETESTACCOUNT2 y S3BUCKETNAMETESTACCOUNT3 más adelante en este patrón).

    A modo de ejemplo, se pueden crear estos buckets en cuentas y regiones específicas con nombres de bucket únicos de la siguiente manera (reemplazar xxxx por un número aleatorio):

    ##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

Limitaciones

El patrón utiliza AWS CodeBuild y otros archivos de configuración para implementar un microservicio de muestra. Si tiene un tipo de carga de trabajo diferente (por ejemplo, sin servidor), debe actualizar todas las configuraciones pertinentes.

Arquitectura

Pila de tecnología de destino

  • AWS CloudFormation

  • AWS CodeCommit

  • AWS CodeBuild

  • AWS CodeDeploy

  • AWS CodePipeline

Arquitectura de destino

Arquitectura de destino para implementar microservicios en varias cuentas y regiones

Automatizar y escalar

La configuración se automatiza mediante plantillas de CloudFormation pila de AWS (IaC). Se puede escalar fácilmente para varios entornos y cuentas.

Herramientas

Servicios de AWS

  • AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación.

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • AWS CodeDeploy automatiza las implementaciones en Amazon Elastic Compute Cloud EC2 (Amazon) o en instancias locales, funciones de AWS Lambda o servicios de Amazon Elastic Container Service (Amazon ECS).

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma continua.

  • Amazon Elastic Container Registry (Amazon ECR) es un servicio de registro de imágenes de contenedor administrado que es seguro, escalable y fiable.

  • Amazon Elastic Container Service (Amazon ECS) es un servicio de administración de contenedores escalable y rápido que ayuda a ejecutar, detener y administrar contenedores en un clúster.

  • AWS Key Management Service (AWS KMS) facilita poder crear y controlar claves criptográficas para proteger los datos.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

Herramientas adicionales

  • Git es un sistema de control de versiones distribuido y de código abierto que funciona con el CodeCommit repositorio de AWS.

  • Docker es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores. Este patrón utiliza Docker para crear y probar imágenes de contenedores de forma local.

  • cfn-lint y cfn-nag son herramientas de código abierto que le ayudan a revisar CloudFormation las pilas para detectar cualquier error o problema de seguridad.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub Global Blue/Green de múltiples regiones y cuentas.

Epics

TareaDescripciónHabilidades requeridas

Exporte las variables de entorno para CloudFormation el despliegue de pilas.

Defina las variables de entorno que se utilizarán como entrada en las CloudFormation pilas más adelante en este patrón.

  1. Actualice los nombres de los buckets que creó en las tres cuentas y regiones, tal y como se explicó anteriormente en la sección Requisitos previos:

    export S3BUCKETNAMETESTACCOUNT1=<S3BUCKETACCOUNT1> export S3BUCKETNAMETESTACCOUNT2=<S3BUCKETACCOUNT2> export S3BUCKETNAMETESTACCOUNT3=<S3BUCKETACCOUNT3>
  2. Defina una cadena de asignación al azar para crear buckets de artefactos, ya que los nombres de los buckets deben ser únicos en todo el mundo:

    export BUCKETSTARTNAME=ecs-codepipeline-artifacts-19992
  3. Defina y exporte la cuenta IDs y las regiones:

    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

Configurar las variables de entorno

TareaDescripciónHabilidades requeridas

Exporte las variables de entorno para CloudFormation el despliegue de pilas.

Defina las variables de entorno que se utilizarán como entrada en las CloudFormation pilas más adelante en este patrón.

  1. Actualice los nombres de los buckets que creó en las tres cuentas y regiones, tal y como se explicó anteriormente en la sección Requisitos previos:

    export S3BUCKETNAMETESTACCOUNT1=<S3BUCKETACCOUNT1> export S3BUCKETNAMETESTACCOUNT2=<S3BUCKETACCOUNT2> export S3BUCKETNAMETESTACCOUNT3=<S3BUCKETACCOUNT3>
  2. Defina una cadena de asignación al azar para crear buckets de artefactos, ya que los nombres de los buckets deben ser únicos en todo el mundo:

    export BUCKETSTARTNAME=ecs-codepipeline-artifacts-19992
  3. Defina y exporte la cuenta IDs y las regiones:

    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
TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Clone el repositorio de muestras en un nuevo repositorio de su lugar de trabajo:

##In work location git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git
AWS DevOps

Empaquete los recursos de Cloudformation.

En este paso, empaqueta los artefactos locales a los que hacen referencia las CloudFormation plantillas para crear los recursos de infraestructura necesarios para servicios como Amazon Virtual Private Cloud (Amazon VPC) y Application Load Balancer.

Las plantillas están disponibles en la carpeta Infra del repositorio de código.

##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

Valide las plantillas de paquetes.

Valide las plantillas de paquetes:

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

Implemente los archivos del paquete en las cuentas de carga de trabajo,

  1. Actualice los valores de los marcadores de posición y los nombres de las cuentas en el script infraParameters.json según su configuración.

  2. Implemente las plantillas de paquetes en sus tres cuentas de carga de trabajo.

    ##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

Package e implemente las CloudFormation pilas para la infraestructura

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Clone el repositorio de muestras en un nuevo repositorio de su lugar de trabajo:

##In work location git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git
AWS DevOps

Empaquete los recursos de Cloudformation.

En este paso, empaqueta los artefactos locales a los que hacen referencia las CloudFormation plantillas para crear los recursos de infraestructura necesarios para servicios como Amazon Virtual Private Cloud (Amazon VPC) y Application Load Balancer.

Las plantillas están disponibles en la carpeta Infra del repositorio de código.

##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

Valide las plantillas de paquetes.

Valide las plantillas de paquetes:

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

Implemente los archivos del paquete en las cuentas de carga de trabajo,

  1. Actualice los valores de los marcadores de posición y los nombres de las cuentas en el script infraParameters.json según su configuración.

  2. Implemente las plantillas de paquetes en sus tres cuentas de carga de trabajo.

    ##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
TareaDescripciónHabilidades requeridas

Pase una imagen de muestra a un repositorio de Amazon ECR.

Pase una imagen de muestra (NGINX) al repositorio Amazon Elastic Container Registry (Amazon ECR) denominado web (tal y como se establece en los parámetros). Puede personalizar la imagen según sea necesario.

Para iniciar sesión y configurar las credenciales para enviar una imagen a Amazon ECR, siga las instrucciones de la documentación de Amazon ECR.

Los comandos son:

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

Escale Amazon ECS y verifique el acceso.

  1. Escale Amazon ECS para crear dos réplicas:

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

    donde Poc-Service se refiere a la aplicación de muestra.

  2. Compruebe que se pueda acceder a los servicios desde el equilibrador de carga de aplicación mediante un nombre de dominio completo (FQDN) o un DNS desde un navegador o mediante el comando curl.

AWS DevOps

Insertar una imagen de muestra y escalar Amazon ECS

TareaDescripciónHabilidades requeridas

Pase una imagen de muestra a un repositorio de Amazon ECR.

Pase una imagen de muestra (NGINX) al repositorio Amazon Elastic Container Registry (Amazon ECR) denominado web (tal y como se establece en los parámetros). Puede personalizar la imagen según sea necesario.

Para iniciar sesión y configurar las credenciales para enviar una imagen a Amazon ECR, siga las instrucciones de la documentación de Amazon ECR.

Los comandos son:

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

Escale Amazon ECS y verifique el acceso.

  1. Escale Amazon ECS para crear dos réplicas:

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

    donde Poc-Service se refiere a la aplicación de muestra.

  2. Compruebe que se pueda acceder a los servicios desde el equilibrador de carga de aplicación mediante un nombre de dominio completo (FQDN) o un DNS desde un navegador o mediante el comando curl.

AWS DevOps
TareaDescripciónHabilidades requeridas

Cree un CodeCommit repositorio en la cuenta de herramientas.

Cree un CodeCommit repositorio en la cuenta de herramientas mediante la codecommit.yaml plantilla, que se encuentra en la code carpeta del GitHub repositorio. Debe crear este repositorio solo en la única región en la que planea desarrollar el código.

aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides CodeCommitReponame=$CODECOMMITREPONAME \ ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

Cree un bucket de S3 para gestionar los artefactos generados por CodePipeline.

Cree un depósito de S3 para gestionar los artefactos generados CodePipeline mediante la pre-reqs-bucket.yaml plantilla, que se encuentra en la code carpeta del GitHub repositorio. Las pilas se deben implementar en las tres regiones y cuentas de carga de trabajo (prueba) y de herramientas.

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

Configure una clave KMS multirregional.

  1. Cree una clave KMS multirregional con las claves principales y de réplica que CodePipeline utilizará. En nuestro ejemplo, ToolsAccount1region - ap-south-1 será la región principal.

    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. Configure las variables CMKARN para pasarlas a los proyectos. CodeBuild Los valores están disponibles en la salida de la pila de plantillas ecs-codepipeline-pre-reqs -KMS (el ID de clave será el mismo en todas las regiones y empezará por). mrk- Alternativamente, puede obtener los valores de CMKARN de la cuenta de herramientas. Expórtelos en todas las sesiones de la cuenta: 

    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

Configure el CodeBuild proyecto en la cuenta de herramientas.

  1. Utilice la codebuild_IAM.yaml plantilla de la code carpeta del GitHub repositorio para configurar AWS Identity and Access Management (IAM) para AWS CodeBuild en una sola región de la cuenta de herramientas:

    #In ToolsAccount aws cloudformation deploy --stack-name ecs-codebuild-iam \ --template-file codebuild_IAM.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
  2. Utilice la codebuild.yaml plantilla CodeBuild para configurar su proyecto de compilación. Implemente esta plantilla en las tres regiones de la manera siguiente:

    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

Configúrelo CodeDeploy en cuentas de carga de trabajo.

Utilice la codedeploy.yaml plantilla de la code carpeta del GitHub repositorio para configurar las tres cuentas CodeDeploy de carga de trabajo. El resultado de mainInfraStack incluye los nombres de recursos de Amazon (ARNs) del clúster de Amazon ECS y el listener Application Load Balancer.

nota

Los valores de las pilas de infraestructura ya se han exportado, por lo que las plantillas de pila los CodeDeploy importan.

##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

Configurar los servicios y recursos de código

TareaDescripciónHabilidades requeridas

Cree un CodeCommit repositorio en la cuenta de herramientas.

Cree un CodeCommit repositorio en la cuenta de herramientas mediante la codecommit.yaml plantilla, que se encuentra en la code carpeta del GitHub repositorio. Debe crear este repositorio solo en la única región en la que planea desarrollar el código.

aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides CodeCommitReponame=$CODECOMMITREPONAME \ ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

Cree un bucket de S3 para gestionar los artefactos generados por CodePipeline.

Cree un depósito de S3 para gestionar los artefactos generados CodePipeline mediante la pre-reqs-bucket.yaml plantilla, que se encuentra en la code carpeta del GitHub repositorio. Las pilas se deben implementar en las tres regiones y cuentas de carga de trabajo (prueba) y de herramientas.

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

Configure una clave KMS multirregional.

  1. Cree una clave KMS multirregional con las claves principales y de réplica que CodePipeline utilizará. En nuestro ejemplo, ToolsAccount1region - ap-south-1 será la región principal.

    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. Configure las variables CMKARN para pasarlas a los proyectos. CodeBuild Los valores están disponibles en la salida de la pila de plantillas ecs-codepipeline-pre-reqs -KMS (el ID de clave será el mismo en todas las regiones y empezará por). mrk- Alternativamente, puede obtener los valores de CMKARN de la cuenta de herramientas. Expórtelos en todas las sesiones de la cuenta: 

    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

Configure el CodeBuild proyecto en la cuenta de herramientas.

  1. Utilice la codebuild_IAM.yaml plantilla de la code carpeta del GitHub repositorio para configurar AWS Identity and Access Management (IAM) para AWS CodeBuild en una sola región de la cuenta de herramientas:

    #In ToolsAccount aws cloudformation deploy --stack-name ecs-codebuild-iam \ --template-file codebuild_IAM.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
  2. Utilice la codebuild.yaml plantilla CodeBuild para configurar su proyecto de compilación. Implemente esta plantilla en las tres regiones de la manera siguiente:

    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

Configúrelo CodeDeploy en cuentas de carga de trabajo.

Utilice la codedeploy.yaml plantilla de la code carpeta del GitHub repositorio para configurar las tres cuentas CodeDeploy de carga de trabajo. El resultado de mainInfraStack incluye los nombres de recursos de Amazon (ARNs) del clúster de Amazon ECS y el listener Application Load Balancer.

nota

Los valores de las pilas de infraestructura ya se han exportado, por lo que las plantillas de pila los CodeDeploy importan.

##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
TareaDescripciónHabilidades requeridas

Cree un proyecto de código en la cuenta de herramientas.

En la cuenta de herramientas, ejecute el comando:

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

Proporcione acceso CodePipeline y CodeBuild funciones en la política de claves de AWS KMS y en la política de bucket de S3.

  1. Proporcione acceso CodePipeline y CodeBuild funciones en la política clave de 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. Actualice la política de buckets de S3 para permitir el acceso CodePipeline y CodeDeploy las funciones:

    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

Configúrelo CodePipeline en la cuenta de herramientas

TareaDescripciónHabilidades requeridas

Cree un proyecto de código en la cuenta de herramientas.

En la cuenta de herramientas, ejecute el comando:

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

Proporcione acceso CodePipeline y CodeBuild funciones en la política de claves de AWS KMS y en la política de bucket de S3.

  1. Proporcione acceso CodePipeline y CodeBuild funciones en la política clave de 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. Actualice la política de buckets de S3 para permitir el acceso CodePipeline y CodeDeploy las funciones:

    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
TareaDescripciónHabilidades requeridas

Envía los cambios al CodeCommit repositorio.

  1. Clone el CodeCommit repositorio que se creó en el codecommitrepoStack mediante el git clone comando, tal y como se describe en la CodeCommit documentación de AWS.

  2. Actualice los artefactos de entrada con los detalles necesarios:

    • Archivo JSON: actualice AccountID en el archivo en tres lugares de este archivo. Cambie el nombre de los tres archivos para incluir la cuenta IDs.

    • Archivos YAML: actualiza el ARN y la versión de la definición de la tarea. Cambie el nombre de los tres archivos para incluir la cuenta. IDs

  3. Modifique el archivo index.html para realizar algunos cambios menores en la página de inicio.

  4. Copie los siguientes archivos en el repositorio y confirme:

    index.html Dockerfile buildspec.yaml appspec_<accountid>.yaml (3 files - one per account ) taskdef<accountid>.json (3 files - one per account)
  5. Inicie o reinicie el proyecto y verifique los resultados.

  6. Acceda al servicio desde el equilibrador de carga de aplicación mediante un FQDN o un DNS y compruebe que se hayan implementado las actualizaciones.

Llamar y probar el proyecto

TareaDescripciónHabilidades requeridas

Envía los cambios al CodeCommit repositorio.

  1. Clone el CodeCommit repositorio que se creó en el codecommitrepoStack mediante el git clone comando, tal y como se describe en la CodeCommit documentación de AWS.

  2. Actualice los artefactos de entrada con los detalles necesarios:

    • Archivo JSON: actualice AccountID en el archivo en tres lugares de este archivo. Cambie el nombre de los tres archivos para incluir la cuenta IDs.

    • Archivos YAML: actualiza el ARN y la versión de la definición de la tarea. Cambie el nombre de los tres archivos para incluir la cuenta. IDs

  3. Modifique el archivo index.html para realizar algunos cambios menores en la página de inicio.

  4. Copie los siguientes archivos en el repositorio y confirme:

    index.html Dockerfile buildspec.yaml appspec_<accountid>.yaml (3 files - one per account ) taskdef<accountid>.json (3 files - one per account)
  5. Inicie o reinicie el proyecto y verifique los resultados.

  6. Acceda al servicio desde el equilibrador de carga de aplicación mediante un FQDN o un DNS y compruebe que se hayan implementado las actualizaciones.

TareaDescripciónHabilidades requeridas

Limpie todos los recursos implementados.

  1. Reduzca verticalmente Amazon ECS a cero instancias:

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 0
  2. Elimine las CloudFormation pilas de cada cuenta y región:

    ##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.

Limpieza

TareaDescripciónHabilidades requeridas

Limpie todos los recursos implementados.

  1. Reduzca verticalmente Amazon ECS a cero instancias:

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 0
  2. Elimine las CloudFormation pilas de cada cuenta y región:

    ##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.

Solución de problemas

ProblemaSolución

Los cambios realizados en el repositorio no se están implementando.

  • Comprueba los CodeBuild registros para ver si hay errores en la acción de compilación de Docker. Para obtener más información, consulte la Documentación de CodeBuild .

  • Compruebe la CodeDeploy implementación para ver si hay algún problema de implementación de Amazon ECS.

Recursos relacionados

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.