Automação de implantação de código com AWS CodeCommit e CodeDeploy

Publicados: 2022-03-25

Automate Code Deployment with AWS CodeCommit & CodeDeploy

Como desenvolvedor da Web, seu trabalho pode incluir várias tarefas complexas, como automação de implantação de código em servidores de produção ou se você trabalha em grupo e enfrenta problemas ao enviar seu código para um site ao vivo, esta postagem do blog é uma solução para superar todos esses questões.

Ao usar o FTP, você deve ter sobrescrito o código do seu co-desenvolvedor, um problema bastante comum e que acontece com a maioria de nós. Este guia mostrará a automação de implantação de código com os serviços AWS CodeCommit, CodeDeploy e Pipeline.

Visão geral tecnológica:

  1. AWS CodeCommit : Usaremos o CodeCommit para manter nossos repositórios (Web Content/Code Files) que conterão todos os arquivos de projeto e logs de confirmação.
  2. Servidor EC2 : Usaremos o EC2 como nosso servidor de produção, ele conterá o site ativo e o código para os visitantes do seu site.
  3. AWS CodeDeploy : Ele manterá o aplicativo para publicar seu código no servidor EC2. Também criaremos um grupo de implantação que conterá o nome/tag da instância do EC2 de destino em que desejamos publicar nosso código.
  4. Pipeline : Selecionaremos o CodeCommit como nossa fonte e o CodeDeploy como nosso estágio de implantação. Portanto, sempre que qualquer alteração de código for detectada no CodeCommit, o pipeline será executado e enviará essas alterações de código para o CodeDeploy (instância do EC2).

Automação de implantação de código: explicada em detalhes :

Procurando por ESPECIALISTAS da AWS? CONFIRA AQUI

Criando um usuário do IAM e do Git para automação de implantação de código

Primeiro, precisaremos criar um usuário do IAM e um usuário do Git que fará as alterações de código e as publicará no servidor de implantação.

  1. Criar um usuário do IAM
    1. Permitir acesso a : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Você encontrará essa opção na guia “Anexar políticas existentes diretamente”.
  2. Agora, faça login com este usuário do IAM.
  3. Clique em Credenciais de Segurança no canto superior direito.
  4. Clique na guia de credenciais do AWS CodeCommit .
  5. Na seção “HTTPS Git credenciais para AWS CodeCommit”, clique no botão Gerar credencial .
  6. Agora, copie esse nome de usuário e senha em um local seguro. Este será o nome de usuário e senha principal do seu Git para enviar/puxar alterações de código.

Criando um repositório no CodeCommit

Agora, vamos criar um repositório que conterá seu código exato.

  1. Acesse o painel do CodeCommit no usuário do IAM.
  2. No canto superior direito, selecione a região onde deseja criar seu repositório.
  3. Clique em Criar repositório, dê um nome, descrição e clique em criar.
  4. Na seção " Clonar o repositório ", você verá uma URL do seu repositório. Guarde-o em um lugar seguro. Será parecido com: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest

Creating a Repository in CodeCommit

Procurando por ESPECIALISTAS da AWS? CONFIRA AQUI

Carregando seu arquivo de projeto pela primeira vez

  1. Abra o prompt de comando de seu sistema local onde reside seu código original.
  2. No prompt de comando, navegue até o caminho em que seu código reside.
  3. Agora, execute os seguintes comandos para enviar seu código para o repositório da AWS pela primeira vez:

git init
git config –local init.defaultBranch main
git config –global init.defaultBranch main
gi adicionar. ## isso irá confirmar todos os arquivos do projeto
git commit –m “Commit inicial”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all

Uploading your project file for the first time

  • Criar instância do EC2 e instalar o agente do CodeDeploy
  1. Criar uma função de instância
    1. Abra seu console do AWS IAM.
    2. Vá para a guia Funções >> Criar função.
    3. Em Selecionar tipo de entidade confiável, selecione Serviço da AWS . Em 'Escolher um caso de uso', selecione EC2 . Em 'Selecione seu caso de uso', escolha EC2. Escolha Avançar: Permissões .
    4. Pesquise e selecione a política chamada AmazonEC2RoleforAWSCodeDeploy e escolha Next: Tags .
    5. Escolha Avançar: Revisão. Insira um nome para a função (por exemplo, EC2InstanceRole ) e clique em Create .
  2. Criar uma instância do EC2
    1. Vá para o console EC2. Clique em Iniciar instância.
    2. Escolha uma Amazon Machine Image (AMI), localize Amazon Linux 2 AMI (HVM), SSD Volume Type e escolha Select. (Esta AMI é rotulada como “Elegível para nível gratuito” e pode ser encontrada no topo da lista.)
    3. Escolha um tipo de instância , escolha o tipo t2.micro elegível para o nível gratuito como a configuração de hardware para sua instância e, em seguida, escolha Next: Configure Instance Details .
    4. Configure a página de detalhes da instância, faça o seguinte:
      1. Em Número de instâncias, insira 1 .
      2. Em Auto-atribuir IP público, escolha Ativar .
      3. Na função do IAM, escolha a função do IAM que você criou no procedimento anterior (por exemplo, EC2InstanceRole ).
      4. Expanda Detalhes avançados e, no campo Dados do usuário, insira o seguinte:

#!/bin/bash
yum -y atualização
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./instalar
./instalar automaticamente

  1. Deixe o restante dos itens na página Etapa 3: Configurar detalhes da instância inalterados. Escolha Avançar: Adicionar armazenamento .
  2. Deixe a página Step 4: Add Storage inalterada e escolha Next: Add Tags.
  3. Escolha Adicionar etiqueta . Em Chave, insira Nome e em Valor, insira MyCodePipelineDemo . Escolha Avançar: Configurar Grupo de Segurança. Posteriormente, você cria um aplicativo CodeDeploy que implanta o aplicativo de exemplo nessa instância. O CodeDeploy seleciona instâncias para implantação com base nas tags anexadas às instâncias.
  4. Configurar a página do grupo de segurança, faça o seguinte:
      • Ao lado de Atribuir um grupo de segurança , selecione Criar um novo grupo de segurança .
      • Na linha para SSH , em Source , escolha My IP .
      • Escolha Add Rule , escolha HTTP e, em Source , escolha My IP
  5. Escolha Revisar e Iniciar.
  6. Na página Review Instance Launch , escolha Launch. Quando solicitado por um par de chaves, selecione ' Continuar sem um par de chaves' .
  7. Escolha View Instances para fechar a página de confirmação e retornar ao console.
  8. Você pode visualizar o status da inicialização na página Instâncias . Quando você executa uma instância, seu estado inicial é 'pendente'. Depois que a instância é iniciada, seu estado muda para 'executando' e recebe um nome DNS público. (Se a coluna Public DNS não for exibida, escolha o ícone Mostrar/Ocultar e selecione Public DNS .)
  9. Pode levar alguns minutos para que a instância esteja pronta para você se conectar a ela. Visualize as informações na coluna Verificações de status para ver se sua instância passou nas verificações de status.

Create an EC2 Instance

Procurando por ESPECIALISTAS da AWS? CONFIRA AQUI

Criar um aplicativo no CodeDeploy

  • Criar uma função de serviço do CodeDeploy
    • Abra o console do IAM em https://console.aws.amazon.com/iam/
    • No painel do console, escolha Funções .
    • Escolha Criar função .
    • Em Selecionar tipo de entidade confiável, selecione Serviço da AWS . Em Escolher um caso de uso , selecione CodeDeploy . Em Selecione seu caso de uso, escolha CodeDeploy. Escolha Avançar: Permissões. A política gerenciada AWSCodeDeployRole já está anexada à função.
    • Escolha Avançar: Marcas e Avançar: Revisão.
    • Insira um nome para a função (por exemplo, CodeDeployRole) e escolha Criar função.
  • Criar um aplicativo no CodeDeploy
    • Abra o console do CodeDeploy em https://console.aws.amazon.com/codedeploy
    • Se a página Aplicativos não for exibida, no menu, escolha Aplicativos .
    • Escolha Criar aplicativo .
    • Em Nome do aplicativo, insira MyDemoApplication .
    • Em Compute Platform, escolha EC2/On-premises .
    • Escolha Criar um aplicativo.

    Create an application in CodeDeploy

  • Criar um grupo de implantação no CodeDeploy
    • Na página que exibe seu aplicativo, escolha Criar grupo de implantação .
    • No nome do grupo de implantação, insira MyDemoDeploymentGroup .
    • In-Service Role, escolha a função de serviço que você criou anteriormente (por exemplo, CodeDeployRole ).
    • Em tipo de implantação, escolha in-loco .
    • Em Configuração do ambiente , escolha Instâncias do Amazon EC2 . No campo Chave, insira Nome . No campo Valor, insira o nome que você usou para marcar a instância (por exemplo, MyCodePipelineDemo ).
    • Em Configuração de implantação, escolha CodeDeployDefault.OneAtaTime .
    • Em Load Balancer, certifique-se de que Habilitar balanceamento de carga não esteja selecionado . Você não precisa configurar um balanceador de carga ou escolher um grupo de destino para este exemplo.
    • Expanda a seção Avançado. Em Alarmes, se algum alarme estiver listado, escolha Ignore alarm configuration.
    • Escolha Criar grupo de implantação.

Create a deployment group in CodeDeploy

Procurando por ESPECIALISTAS da AWS? CONFIRA AQUI

Criar um pipeline

    • Criar um pipeline
    • Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em http://console.aws.amazon.com/codesuite/codepipeline/home
    • Abra o console do CodePipeline em https://console.aws.amazon.com/codepipeline/
    • Selecione Criar pipeline .
    • Na Etapa 1 : Selecionar configurações do pipeline, no nome do pipeline, insira MyFirstPipeline .
    • Na Função de serviço, escolha Nova função de serviço para permitir que o CodePipeline crie uma função de serviço no IAM.
    • Deixe as configurações em Configurações avançadas em seus padrões e selecione Avançar.
    • Na Etapa 2 : Adicionar estágio de origem, em Provedor de origem, selecione CodeCommit .
      Em Nome do repositório, selecione o nome do repositório do CodeCommit que você criou na etapa 1: Criar um repositório do CodeCommit. Em Nome da filial, escolha principal e selecione Próxima etapa.
    • Depois de selecionar o nome e a ramificação do repositório, uma mensagem exibe a regra do Amazon CloudWatch Events a ser criada para esse pipeline.
    • Nas opções 'Alterar detecção', deixe os padrões. Isso permite que o CodePipeline use o Amazon CloudWatch Events para detectar alterações em seu repositório de origem.
    • Selecione Avançar .
    • Na Etapa 3 : Adicionar estágio de compilação, selecione Ignorar estágio de compilação e aceite a mensagem de aviso escolhendo Ignorar novamente . Selecione Avançar .

    Observação : neste tutorial, você está implantando um código que requer um serviço sem compilação, portanto, você pode pular esta etapa. No entanto, se o código-fonte precisar ser compilado antes de ser implantado nas instâncias, você poderá configurar o CodeBuild nesta etapa.

    • Na Etapa 4 : Adicionar estágio de implantação, em Provedor de implantação, selecione CodeDeploy .
      No nome do aplicativo, selecione MyDemoApplication . No grupo Deployment, selecione MyDemoDeploymentGroup e, em seguida, selecione Next step .
    • Na Etapa 5 : Revise as informações e selecione Criar pipeline .
    • O pipeline começa a ser executado após ser criado. Ele baixa o código do repositório do CodeCommit e cria uma implantação do CodeDeploy em sua instância do EC2. Você pode visualizar as mensagens de progresso, 'sucesso' e 'falha' conforme o exemplo do CodePipeline implanta a página da Web na instância do Amazon EC2 na implantação do CodeDeploy.

Create a Pipeline

Você está tudo pronto agora! Vá para Implantar Implantações. Você verá os logs de todas as implantações bem-sucedidas e as que falharam.

Para verificar as alterações no site, abra sua instância do EC2, procure seu DNS público, que aparecerá como: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .

Depois de navegar, você verá suas páginas ao vivo.

Create an Option Group

Você concluiu com êxito a automação de implantação de código. Agora você pode enviar novas alterações de código para seu repositório e publicá-las em seu site automaticamente. Se você ainda tiver problemas, sinta-se à vontade para comentar aqui.

Procurando por ESPECIALISTAS da AWS? CONFIRA AQUI