Meu hook de eventos do ciclo de vida de implantação no AWS CodeDeploy chama um cmdlet do Windows PowerShell que retorna erros. No entanto, o cmdlet retorna um código de saída 0 (sucesso) e a implantação relata sucesso. Como posso garantir que os erros de encerramento e não encerramento do cmdlet do PowerShell façam com que meus hooks de eventos do ciclo de vida falhem no CodeDeploy?
Breve descrição
Por padrão, os cmdlets do PowerShell são executados até a conclusão e retornam um código de saída 0, a menos que ocorra um erro irrecuperável ou de encerramento. O CodeDeploy não relata uma falha no hook de eventos do ciclo de vida, a menos que o script associado retorne um código de saída diferente de 0.
Para fazer com que os hooks de eventos do ciclo de vida falhem quando ocorrerem erros que não são de encerramento, altere o comportamento do script. Para alterar o comportamento do script, configure a variável $ErrorActionPreference no cmdlet como ‘Interromper’. Em seguida, o PowerShell interrompe a execução do cmdlet e retorna um código de saída de 1 para erros de encerramento e não encerramento.
Para obter mais informações, consulte Compreensão dos erros de não encerramento no PowerShell no Blog de scripts da Microsoft.
Resolução
Importante: a resolução a seguir funciona com o Windows PowerShell 5.1 e superior.
1. Verifique qual versão do Windows PowerShell você está usando executando o seguinte comando PSVersionTable:
$PSVersionTable
2. Se sua versão do Windows PowerShell for anterior à versão 5.1, atualize sua versão do PowerShell. Para obter instruções, consulte Baixar e instalar o Windows PowerShell 5.1 no site do Microsoft Docs.
3. Inclua o código a seguir no início do cmdlet do PowerShell:
$ErrorActionPreference = 'Stop'
O PowerShell agora interrompe o cmdlet e retorna um código de saída 1 para erros de encerramento e não encerramento.
Informações relacionadas
Sobre variáveis de preferência (site do Microsoft Docs)
Seção ‘hooks’ do AppSpec
Monitoramento de implantações com as ferramentas do Amazon CloudWatch
Veja os logs do AWS CodeDeploy no console do Amazon CloudWatch