Perguntas frequentes sobre o AWS CodeDeploy

Geral

O AWS CodeDeploy é um serviço que automatiza as implantações de código em qualquer instância, incluindo as do Amazon EC2 e as executadas no local. O AWS CodeDeploy facilita o lançamento rápido de novos recursos, ajuda a evitar tempo de indisponibilidade durante a implantação e lida com a complexidade de atualizar seus aplicativos. Você pode usar o AWS CodeDeploy para automatizar implantações, eliminando a necessidade de operações manuais sujeitas a erro. O serviço é escalável juntamente com a infraestrutura, permitindo implantar facilmente em uma ou em milhares de instâncias.

O AWS CodeDeploy foi criado para desenvolvedores e administradores que precisam implantar aplicativos em qualquer instância, inclusive as instâncias do Amazon EC2 e as executadas localmente. Ele é flexível e também pode ser usado por qualquer pessoa para atualizar software ou executar scripts em suas instâncias.

O AWS CodeDeploy pode ser usado para implantar qualquer tipo de aplicativo. Para usar o AWS CodeDeploy, você especifica os arquivos a copiar e os scripts a executar em cada instância durante a implantação. O AWS CodeDeploy independe da linguagem de programação e da arquitetura, portanto, você pode usar scripts para qualquer lógica de implementação personalizada.

O AWS CodeDeploy é compatível com uma grande variedade de sistemas operacionais. O AWS CodeDeploy oferece agentes testados no Amazon Linux, no Red Hat Enterprise Linux, no Ubuntu Server e no Microsoft Windows Server. Se você deseja usar outros sistemas operacionais, o agente do AWS CodeDeploy está disponível como um software de código aberto aqui. Para obter mais informações sobre o suporte fornecido para os sistemas operacionais, consulte a documentação do AWS CodeDeploy.

Sim. O AWS CodeDeploy funciona com diversos sistemas de gerenciamento de configuração, sistemas de integração e implantação contínuas e sistemas de controle de fonte. Para obter mais informações, consulte a página de integrações de produtos.

O AWS CodeDeploy é um serviço de componentes básicos dedicado a ajudar desenvolvedores a implantar e a atualizar software em qualquer instância, inclusive as instâncias do Amazon EC2 e as executadas localmente. O AWS Elastic Beanstalk e o AWS OpsWorks são soluções completas de gerenciamento de aplicativos.

Sim. O AWS CodeDeploy é compatível com qualquer instância que possa instalar o agente do CodeDeploy e se conectar aos endpoints públicos da AWS.

Conceitos

Um aplicativo é uma coleção de software e configuração para implantação em um grupo de instâncias. Normalmente, as instâncias no grupo executam o mesmo software. Por exemplo, se você tiver um grande sistema distribuído, o nível de web provavelmente constituirá um aplicativo e o nível de dados constituirá outro aplicativo.

Uma revisão refere-se a uma versão específica de conteúdo disponível para a implantação, como código-fonte, artefatos posteriores à compilação, páginas da Web, arquivos executáveis e scripts de implantação, além de um arquivo AppSpec. O AWS CodeDeploy Agent pode acessar uma revisão do GitHub ou do bucket do Amazon S3.

Um grupo de implantação é a entidade do AWS CodeDeploy para agrupar instâncias do EC2 ou funções do AWS Lambda em uma implantação do CodeDeploy. Para implantações do EC2, é um conjunto de instâncias associado a uma aplicação que você pretende implantar. Você pode adicionar instâncias a um grupo de implantação especificando uma tag, um grupo de Auto Scaling ou ambos. Em uma implantação do AWS Lambda, um grupo de implantação define um conjunto de configurações do AWS CodeDeploy para implantação futura de Lambda sem servidor no grupo, como alarmes e reversões.

Você pode definir vários grupos de implantação para um aplicativo, como preparação e produção. Para obter mais informações sobre as etiquetas, consulte Working with Amazon EC2 Tags in the Console. Para obter mais informações sobre a implantação em grupos do Auto Scaling, consulte Auto Scaling Integration.

Uma configuração de implantação especifica como a implantação deve proceder, incluindo como lidar com falhas de implantação, por meio de um grupo de implantação. Você pode usar uma configuração de implantação para realizar implantações sem tempo de inatividade em grupos de implantação de várias instâncias. Por exemplo, se o aplicativo precisar que pelo menos 50% das instâncias em um grupo de implantação estejam ativas e atendendo o tráfego, você pode especificar isso em sua configuração de implantação para que ela não cause tempo de inatividade. Se nenhuma configuração de implantação estiver associada com a implantação ou com o grupo de implantação, o AWS CodeDeploy implantará por padrão em uma instância por vez.  Para obter mais informações sobre a configuração de implantação, consulte Instance Health.

Há três parâmetros que você precisa especificar para uma implementação:

  1. Revisão − Especifica o que implementar.
  2. Grupo de implementação − Especifica onde implementar.
  3. Configuração de implementação − Um parâmetro opcional que especifica como implementar.

Um arquivo AppSpec é um arquivo de configuração que especifica os arquivos a serem copiados e os scripts a serem executados. O arquivo AppSpec usa o formato YAML e deve ser incluído no diretório raiz da revisão. O arquivo AppSpec é usado pelo AWS CodeDeploy Agent e consiste em duas seções. A seção de arquivos especifica os arquivos de origem para cópia em sua revisão e a pasta de destino em cada instância. A seção de ganchos especifica o local (como caminhos relativos começando na raiz do pacote da revisão) dos scripts a executar durante cada fase da implantação. Cada fase de uma implantação é chamada de evento de ciclo de vida da implantação. A seguir, uma amostra de um arquivo AppSpec. Para obter mais informações sobre um arquivo AppSpec, incluindo todas as opções que podem ser especificadas, consulte AppSpec File Reference.

os: linux

files: 

# É possível especificar um ou mais mapeamentos na seção de arquivos.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # As seções de ganchos do ciclo de vida permitem especificar scripts de implantação.

ApplicationStop: 

# Etapa 1: interromper o Apache e o MySQL caso estejam em execução.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Etapa 2: instalar o Apache e o MySQL.

# É possível especificar um ou mais scripts por evento do ciclo de vida de implantação.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Etapa 3: definir as permissões.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Etapa 4: iniciar o servidor.

    - location: helper_scripts/start_server.sh

      timeout: 30

      runas: root

Uma implantação passa por um conjunto de fases predefinidas chamado de eventos de ciclo de vida da implantação. Um evento de ciclo de vida da implantação permite que você execute código como parte da implantação. A seguinte tabela lista a os diferentes eventos de ciclo de vida da implementação atualmente suportados, na ordem de execução, juntamente com exemplos de quando você pode querer usá-los.

Evento de ciclo de vida da implantação:

  • ApplicationStop
    • É o primeiro evento de ciclo de vida da implantação que ocorre mesmo antes do download da revisão. O arquivo AppSpec e os scripts usados para esse evento de ciclo de vida da implantação são da última revisão implantada com sucesso.  

      Você pode usar o evento de ciclo de vida da implementação ApplicationStop se quiser interromper o aplicativo sem problemas ou remover pacotes atualmente instalados na preparação de uma implementação.

  • DownloadBundle

    • Durante esse evento de ciclo de vida da implantação, o agente copia os arquivos de revisão para um local temporário na instância. Esse evento de ciclo de vida da implementação é reservado para o agente e não pode ser usado para executar scripts do usuário.

  • BeforeInstall

    • Você pode usar o evento de ciclo de vida da implementação BeforeInstall para pré-instalar tarefas como arquivos de descriptografia e criar um backup da versão atual.

  • Instalar

    • Durante esse evento de ciclo de vida da implantação, o agente copia os arquivos de revisão de um local temporário para a pasta de destino final. Esse evento de ciclo de vida da implementação é reservado para o agente e não pode ser usado para executar scripts do usuário.

  • AfterInstall

    • Você pode usar o evento de ciclo de vida da implementação AfterInstall para tarefas como configuração do seu aplicativo ou alteração de permissões do arquivo.

  • ApplicationStart

    • Você normalmente usa o evento de ciclo de vida da implementação ApplicationStart para reiniciar os serviços que foram interrompidos durante o ApplicationStop.

  • ValidateService

    • ValidateService é o último evento de ciclo de vida da implementação e é uma oportunidade de verificar se a implementação foi concluída com sucesso.

 

 

Conceitos básicos

Você pode fazer login no Console de Gerenciamento da AWS e começar a usar o AWS CodeDeploy. Se você está procurando uma breve visão geral do serviço, consulte Getting Started, que inclui um tutorial passo a passo.

Uso do AWS CodeDeploy

A instância do Amazon EC2 deve estar associada a um perfil de instância do IAM e deve estar executando um sistema operacional compatível. Para obter mais informações, consulte Configurar uma instância do Amazon EC2 para trabalhar com o AWS CodeDeploy.

O diagrama a seguir mostra as etapas típicas durante uma implantação. A criação de uma aplicação e de um grupo de implantação (consulte a seção Conceitos para obter uma explicação sobre esses termos) são tarefas normalmente realizadas uma única vez por aplicação. As ações recorrentes são upload de um revisão e implantação dessa revisão. Para obter uma explicação detalhada, incluindo instruções passo a passo para cada uma dessas tarefas, consulte Deployments.

Você não precisa fazer nenhuma alteração no seu código. Basta adicionar um arquivo de configuração (denominado arquivo AppSpec) no diretório raiz do seu pacote de revisão, que especifica os arquivos a serem copiados e os scripts a serem executados.

Se estiver usando o GitHub, você poderá implantar uma revisão em formato .zip, .tar ou .tar.gz do seu repositório diretamente nas instâncias. Para outros sistemas de controle de fonte, você pode empacotar e carregar a revisão em um bucket do Amazon S3 em formato .zip, .tar ou .tar.gz e especificar a localização do Amazon S3 ao fazer uma implantação. Se o aplicativo precisar de uma etapa de compilação, certifique-se de que o repositório GitHub ou o bucket do Amazon S3 contém os artefatos pós-compilação. Para obter mais informações sobre como usar o GitHub com o AWS CodeDeploy, consulte nossa página de integrações de produtos. Para obter mais informações sobre como usar o Amazon S3 para armazenar revisões, consulte Enviar uma revisão do AWS CodeDeploy para o Amazon S3.

Você pode invocar sua ferramenta de gerenciamento de configuração de qualquer gancho de evento de ciclo de vida da implantação no arquivo AppSpec. Por exemplo, se você tiver um roteiro do Chef que queria executar como parte de uma implantação, é possível fazer isso especificando esse roteiro no gancho do evento de ciclo de vida da implantação apropriado no arquivo AppSpec. Além disso, você pode usar seu sistema de gerenciamento de configurações para instalar o agente do AWS CodeDeploy nas instâncias. Para obter amostras que ilustram o uso do AWS CodeDeploy com sistemas de gerenciamento de configuração, como Chef, Puppet, Ansible e Saltstack, consulte nossa página de integrações de produtos.

Sim. Você pode integrar o AWS CodeDeploy com seus sistemas de integração e implantação contínuas chamando as APIs públicas usando a ILC da AWS ou os AWS SDKs. Você pode encontrar integrações desenvolvidas previamente e amostras na nossa página de integrações de produtos.

Implante a última revisão no grupo de implantação para que as instâncias recentemente adicionadas obtenham o aplicativo. Exceto no caso de instâncias do Amazon EC2 lançadas como parte do grupo de Auto Scaling, o AWS CodeDeploy não implanta automaticamente a última revisão nas instâncias recentemente adicionadas.

Você pode associar o grupo de Auto Scaling a um grupo de implantação para ter certeza de que as instâncias recentemente lançadas sempre tenham a última versão do seu aplicativo. Toda vez que uma nova instância do Amazon EC2 é lançada para o grupo de Auto Scaling, ela será primeiro colocada em estado Pending e uma implantação da última revisão bem-sucedida para o grupo de implantação será acionada nessa instância do Amazon EC2. Se a implantação for concluída com sucesso, o estado da instância do Amazon EC2 será alterado para InService. Se essa implantação falhar, a instância do Amazon EC2, uma nova instância do Amazon EC2 será lançada em estado Pending e uma implantação será acionada para a instância do EC2 recentemente lançada. Para obter mais informações sobre os eventos de ciclo de vida das instâncias do grupo do Auto Scaling, consulte Auto Scaling Group Lifecycle.

Você pode acompanhar o status de uma implantação usando o Console de Gerenciamento da AWS, a AWS Command Line Interface (AWS CLI), os AWS SDKs e as APIs do AWS CodeDeploy. É possível visualizar o status geral de uma implantação e examinar mais detalhadamente o status de cada instância e o status de cada evento de ciclo de vida da implantação para essa instância. Você também pode ver as entradas de log correspondentes a qualquer falha, facilitando a depuração dos problemas de implantação sem ter que fazer login na instância.

Sim. Se você interromper uma implantação em andamento, o serviço do AWS CodeDeploy instruirá o agente em cada instância para interromper a execução de scripts adicionais. Para retornar seu aplicativo a um estado consistente, você pode reimplementar a revisão ou implementar outra revisão.

Para reverter um aplicativo para uma revisão anterior, você só precisa implantar aquela revisão. O AWS CodeDeploy monitora os arquivos que foram copiados para a revisão atual e os remove antes de começar uma nova implantação, então não há diferença entre reimplantar e reverter. No entanto, você precisa se certificar de que as revisões anteriores estão disponíveis para reversão.

Sim. Você pode usar um bucket do Amazon S3 versionado e especificar o ID da versão para identificar uma revisão com exclusividade.

Para obter mais informações sobre os limites de serviço, consulte Limits. Para aumentar os limites de serviço, envie uma solicitação por meio do AWS Support Center.

Sim. Para receber um histórico das chamadas de API do AWS CodeDeploy efetuadas na sua conta, basta ativar o AWS CloudTrail no Console de Gerenciamento da AWS.

É possível criar notificações para eventos que afetem suas implantações. As notificações serão enviadas na forma de notificações do Amazon SNS. Cada notificação incluirá uma mensagem de status e um link para os recursos cujo evento gerou essa notificação. As notificações não geram custo adicional, mas você pode ser cobrado por outros produtos da AWS utilizados pelas notificações, como o Amazon SNS. Para saber como começar a usar as notificações, consulte o guia de notificações do usuário. Além disso, os clientes que usam o AWS Chatbot podem configurar notificações para serem enviadas aos seus canais do Slack ou às salas de chat do Amazon Chime. Para obter mais detalhes, acesse aqui.

Segurança

Sim, mas o agente do AWS CodeDeploy instalado nas instâncias do Amazon EC2 deve poder acessar os endpoints de serviços públicos do AWS CodeDeploy e do Amazon S3. Para obter mais informações, consulte AWS CodeDeploy Endpoints e Amazon S3 Endpoints.

Sim. O AWS CodeDeploy é compatível com as permissões em nível de recurso. Para cada recurso do AWS CodeDeploy, você pode especificar qual usuário tem acesso e a quais ações. Por exemplo, você pode definir uma política do IAM para permitir que um usuário implante um aplicativo específico, mas apenas liste revisões para outros aplicativos. Você pode, portanto, evitar que usuários façam alterações indesejadas no aplicativo errado. Para obter mais informações sobre como usar o IAM com o AWS CodeDeploy, consulte a Access Permissions Reference.

Regiões

Consulte os produtos e serviços por região para obter mais detalhes sobre a disponibilidade do CodeDeploy por região.

O AWS CodeDeploy realiza implantações com recursos da AWS localizados na mesma região. Para implementar um aplicativo em várias regiões, defina o aplicativo em suas regiões de destino, copie o pacote do aplicativo para um bucket do Amazon S3 em cada região e inicie as implementações usando uma distribuição serial ou paralela entre as regiões.

Faturamento

Não há encargos adicionais para implantações de código em instâncias do Amazon EC2 usando o AWS CodeDeploy. Você paga 0,02 USD por atualização de instância no local usando o AWS CodeDeploy. Consulte a página de preços para obter mais detalhes.