P: O que é o AWS CodeDeploy?
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 suas aplicações. 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.

P: Quem deve usar o AWS CodeDeploy?
O AWS CodeDeploy foi criado para desenvolvedores e administradores que precisam implantar aplicações em qualquer instância, incluindo as 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.

P: Que tipos de aplicativos podem ser implementados com o AWS CodeDeploy?
O AWS CodeDeploy pode ser usado para implementar 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.

P: Quais sistemas operacionais são suportados pelo AWS CodeDeploy?
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 and Microsoft Windows Server. Se quiser usar outros sistemas operacionais, o agente do AWS CodeDeploy está disponível como software de código aberto aqui. Para obter mais informações sobre a compatibilidade com sistemas operacionais, consulte a Documentação do AWS CodeDeploy.

P: O AWS CodeDeploy funcionará com minha cadeia de ferramentas?
Sim. O AWS CodeDeploy funciona com diversos sistemas de gerenciamento de configuração, sistemas de integração e implementação contínuas e sistemas de controle de fonte. Para obter mais informações, consulte a página de integrações do produto.

P: Em que o AWS CodeDeploy difere de outros serviços de implementação e gerenciamento da AWS, como o AWS Elastic Beanstalk e o AWS OpsWorks?
O AWS CodeDeploy é um serviço de blocos de criação que se concentra em ajudar desenvolvedores a implantar e a atualizar software em qualquer instância, incluindo as do Amazon EC2 e as executadas no local. O AWS Elastic Beanstalk e o AWS OpsWorks são soluções completas de gerenciamento de aplicações.

P: O AWS CodeDeploy oferece suporte a instâncias no local?
Sim. O AWS CodeDeploy é compatível com qualquer instância que possa instalar o agente do CodeDeploy e conectar-se a endpoints públicos da AWS.

 

P: O que é um aplicativo?
Uma aplicação é uma coleção de software e configuração para implantação em um grupo de instâncias. Normalmente, as instâncias no grupo são executadas no 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.

P: O que é uma revisão?
Uma revisão é uma versão específica de conteúdo implementável, como um código fonte, itens pós-criação, páginas da web, arquivos executáveis e scripts de implementação, juntamente com um arquivo AppSpec. O AWS CodeDeploy Agent pode acessar uma revisão do GitHub ou do bucket do Amazon S3.

P: O que é um grupo de implementação?
Um grupo de implantação é 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. Você pode definir vários grupos de implantação para uma aplicação, como preparação e produção. Para obter informações sobre tags, consulte Working with Amazon EC2 Tags in the Console. Para obter informações sobre a implementação em grupos Auto Scaling, consulte Auto Scaling Integration.

P: O que é uma configuração de implementação?
Uma configuração de implantação é uma restrição que determina como uma implantação progride entre as instâncias 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 a sua aplicação 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 implementação, consulte Instance Health.

P: Quais são os parâmetros que preciso especificar para uma implementação?
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.
P: O que é um arquivo AppSpec?
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 você o inclui no diretório raiz da sua 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 ganchos especifica o local (como caminhos relativos começando na raiz do pacote da revisão) dos scripts a executar durante cada fase da implementação. Cada fase de uma implementação é chamada de evento de ciclo de vida da implementaçã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 a referência do arquivo AppSpec.

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

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

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

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - location: helper_scripts/start_server.sh

      timeout: 30

      runas: root

P: O que são eventos de ciclo de vida de implementação?
Uma implementação passa por um conjunto de fases predefinidas chamado de eventos de ciclo de vida da implementação. Um evento de ciclo de vida da implementação oferece a você uma oportunidade de executar código como parte da implementaçã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 implementação Descrição
ApplicationStop

É o primeiro e evento de ciclo de vida da implementação que ocorre mesmo antes do download da revisão. O arquivo AppSpec e scripts usados para esse evento de ciclo de vida da implementação são da última revisão implementada 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 implementaçã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.

P: Como faço para começar a usar o AWS CodeDeploy?
Você pode fazer login no AWS Management Console e começar a usar o AWS CodeDeploy. Se estiver procurando uma visão geral rápida do serviço, consulte Conceitos básicos, que inclui um tutorial detalhado.

P: Há algum pré-requisito para usar uma instância do Amazon EC2 existente com o 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 Use an Existing Amazon EC2 Instance.

P: Quais são as etapas típicas para implementar um aplicativo usando o AWS CodeDeploy?
O diagrama a seguir mostra as etapas típicas durante uma implementação. Criar um aplicativos e grupo de desenvolvimento (consulte a seção Conceitos para obter uma explicação desses termos) são normalmente tarefas de configuração únicas por aplicativo. As ações recorrentes são upload de revisão e implementação dela. Para obter uma explicação detalhada, incluindo instruções passo a passo de cada uma dessas tarefas, consulte Implementações.

P: Como posso acessar o AWS CodeDeploy?
Você pode acessar o AWS CodeDeploy usando o AWS Management Console, a interface de linha de comando da AWS (AWS CLI), os AWS SDKs e as APIs do AWS CodeDeploy.

P: Que alterações preciso fazer no meu código para implementar usando o AWS CodeDeploy?
Você não precisa fazer nenhuma alteração no seu código. Você simplesmente adiciona um arquivo de configuração (chamado 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.

P: Como posso implementar um aplicativo a partir do meu sistema de controle de fonte usando o AWS CodeDeploy?
Se estiver usando o GitHub, você pode 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 implementação. Se o seu aplicativo precisar de uma etapa de construção, certifique-se de que o repositório GitHub ou o bucket do Amazon S3 contém os itens pós-criaçã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 Push a Revision.

P: Como o AWS CodeDeploy funcionará com minha ferramenta de gerenciamento de configuração?
Você pode invocar sua ferramenta de gerenciamento de configuração de qualquer gancho de evento de ciclo de vida da implementação no arquivo AppSpec. Por exemplo, se você tiver um roteiro do Chef que queria executar como parte de uma implementação, é possível fazer isso especificando no gancho do evento de ciclo de vida da implementaçã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 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.

P: Posso usar o AWS CodeDeploy com sistemas de integração e implementação contínuas?
Sim. Você pode integrar o AWS CodeDeploy com seus sistemas de integração e implementação contínuas chamando as APIs públicas usando o AWS CLI ou AWS SDKs. Você pode encontrar integrações e amostras pré-construídas em nossa página de integrações de produtos.

P: Como posso colocar minha aplicação nas instâncias do que acabei de adicionar ao grupo de implantação?
Implante a última revisão no grupo de implantação para que as instâncias recentemente adicionadas obtenham a sua aplicação. 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.

P: Como o AWS CodeDeploy funciona com o Auto Scaling?
Você pode associar o grupo Auto Scaling a um grupo de implementaçã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 Auto Scaling, ela será primeiro colocada em estado Pendente e uma implementação da última revisão bem-sucedida para o grupo de implementação é acionada nessa instância do Amazon EC2. Se a implementação for concluída com sucesso, o estado da instância do Amazon EC2 é alterado para InService. Se essa implementação falhar, a instância do Amazon EC2, uma nova instância do Amazon EC2 é lançada em estado Pendente e uma implementação é acionada para a instância do EC2 recentemente lançada. Para obter mais informações sobre eventos de ciclo de vida da instância do grupo Auto Scaling, consulte Auto Scalin Group Lifecycle.

P: Como eu monitoro o status de uma implementação?
Você pode monitorar o status de uma implantação usando o Console de Gerenciamento da AWS, a Interface de linha de comando da AWS (AWS CLI), os AWS SDKs e as APIs do AWS CodeDeploy. Você pode ver o status geral de uma implantação e obter mais detalhes para ver o status de cada instância e de cada evento de ciclo de vida da implantação para a 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.

P: Posso interromper uma implementação em andamento?
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.

P: Como eu reverto um aplicativo para a revisão anterior?
Para reverter um aplicativo para uma revisão anterior, você só precisa implementar 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 implementação, então não há diferença entre reimplementar e reverter. No entanto, você precisa se certificar de que as revisões anteriores estão disponíveis para reversão.

P: Posso usar um bucket do Amazon S3 versionado para armazenar revisões?
Sim. Você pode usar um bucket do Amazon S3 versionado e especificar o ID da versão para identificar uma revisão com exclusividade.

P: Quais são os limites de serviço ao usar o AWS CodeDeploy?
Para obter informações sobre os limites de serviço, consulte Limites. Para aumentar seus limites de serviço, envie uma solicitação através do AWS Support Center.

P: Posso obter um histórico de todas as chamadas de API do AWS CodeDeploy realizadas na minha conta para fins de análise de segurança ou solução de problemas operacionais?
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.

P: Posso usar o AWS CodeDeploy para implementar um aplicativo em instâncias do Amazon EC2 em execução em uma Amazon Virtual Private Cloud (VPC)?
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.

P: Posso usar o AWS Identity and Access Management (IAM) para gerenciar o acesso ao Amazon CodeDeploy?
Sim. O AWS CodeDeploy é compatível com as permissões de nível de serviço. 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 de IAM para permitir que um usuário implemente 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 o uso do IAM com o AWS CodeDeploy, consulte Access Permissions Reference.

P: Quais regiões são compatíveis com o AWS CodeDeploy?
Consulte Produtos e serviços regionais para obter detalhes sobre a disponibilidade do CodeDeploy por região.

P: Como eu implemento um aplicativo do AWS CodeDeploy em várias regiões?
O AWS CodeDeploy realiza implementaçõ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.

P: Quanto custa o AWS CodeDeploy?
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 Definição de preço para obter mais detalhes.