Executando um hook do CodeDeploy em apenas uma instância em um grupo

2

Estou tentando descobrir como usar o CodeDeploy para atualizar nosso aplicativo em um grupo de instâncias. A documentação me ajudou a obter os arquivos implantados e fazer ajustes conforme necessário (preservando arquivos de configuração, reiniciando processos, etc.) usando ganchos.

Eu estou preso em um requisito embora. Durante uma implementação, o aplicativo contém um script do MySQL que precisa ser executado no banco de dados (RDS). Eu posso criar um gancho para fazer isso, mas só quero que o gancho seja executado uma vez para toda a implantação. Eu acho que ele será executado uma vez em cada instância no grupo de implantação. Qual é a melhor maneira de conseguir isso?

    
por thelr 31.01.2018 / 16:05

1 resposta

1

Como a operação em questão está executando scripts de banco de dados, resolvi isso adicionando uma consulta adicional que INSERT o ID de implantação (uma variável de ambiente disponível) em uma tabela de log de implantação. A tabela impõe a exclusividade na coluna de ID de implementação e o script não fará nada se a inserção falhar.

Isso tem um bom efeito colateral de gerar um histórico de implantação dentro do aplicativo.

Além disso, não há risco de o "bloqueio" ser lançado cedo demais - é um bloqueio permanente para cada implantação. Estou assumindo que o CodeDeploy sempre fornecerá IDs de implantação exclusivos.

UPDATE: revisitei isso mais tarde para evitar que o escalonamento automático execute novamente os scripts do banco de dados desnecessariamente (eles implantam a mesma revisão, mas com diferentes IDs de implantação). Agora eu uso o aws cli tools () para solicitar as informações de revisão da API do CodeDeploy e inseri-las na minha tabela de banco de dados, em vez do ID de implantação.

    
por 06.02.2018 / 15:18