Automação de implantação de código com AWS CodeCommit e CodeDeploy
Publicados: 2022-03-25Como 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:
- 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.
- 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.
- 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.
- 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 :
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.
- Criar um usuário do IAM
- Permitir acesso a : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Você encontrará essa opção na guia “Anexar políticas existentes diretamente”.
- Agora, faça login com este usuário do IAM.
- Clique em Credenciais de Segurança no canto superior direito.
- Clique na guia de credenciais do AWS CodeCommit .
- Na seção “HTTPS Git credenciais para AWS CodeCommit”, clique no botão Gerar credencial .
- 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.
- Acesse o painel do CodeCommit no usuário do IAM.
- No canto superior direito, selecione a região onde deseja criar seu repositório.
- Clique em Criar repositório, dê um nome, descrição e clique em criar.
- 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
Carregando seu arquivo de projeto pela primeira vez
- Abra o prompt de comando de seu sistema local onde reside seu código original.
- No prompt de comando, navegue até o caminho em que seu código reside.
- 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
- Criar instância do EC2 e instalar o agente do CodeDeploy
- Criar uma função de instância
- Abra seu console do AWS IAM.
- Vá para a guia Funções >> Criar função.
- 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 .
- Pesquise e selecione a política chamada AmazonEC2RoleforAWSCodeDeploy e escolha Next: Tags .
- Escolha Avançar: Revisão. Insira um nome para a função (por exemplo, EC2InstanceRole ) e clique em Create .
- Criar uma instância do EC2
- Vá para o console EC2. Clique em Iniciar instância.
- 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.)
- 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 .
- Configure a página de detalhes da instância, faça o seguinte:
- Em Número de instâncias, insira 1 .
- Em Auto-atribuir IP público, escolha Ativar .
- Na função do IAM, escolha a função do IAM que você criou no procedimento anterior (por exemplo, EC2InstanceRole ).
- 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
- Deixe o restante dos itens na página Etapa 3: Configurar detalhes da instância inalterados. Escolha Avançar: Adicionar armazenamento .
- Deixe a página Step 4: Add Storage inalterada e escolha Next: Add Tags.
- 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.
- 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
- Escolha Revisar e Iniciar.
- Na página Review Instance Launch , escolha Launch. Quando solicitado por um par de chaves, selecione ' Continuar sem um par de chaves' .
- Escolha View Instances para fechar a página de confirmação e retornar ao console.
- 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 .)
- 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.

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