종료 및 종료되지 않는 PowerShell cmdlet 오류로 인해 CodeDeploy에서 수명 주기 이벤트 후크가 실패하게 하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 9월 17일

AWS CodeDeploy의 배포 수명 주기 이벤트 후크가 실행 중 오류를 반환하는 Windows PowerShell cmdlet을 호출합니다. 하지만 cmdlet은 종료 코드 0(성공)을 반환하고 배포가 성공을 보고합니다.

종료 및 종료되지 않는 PowerShell cmdlet 오류로 인해 CodeDeploy에서 수명 주기 이벤트 후크가 실패하는지 확인하려면 어떻게 해야 합니까?

간략한 설명

기본적으로 PowerShell cmdlet은 복구할 수 없거나 종료 오류가 발생하지 않는 한(예: 0으로 나누는 경우), 종료 코드 0을 반환합니다. PowerShell cmdlet에서 복구할 수 있는 오류가 발생하는 경우(예: 존재하지 않는 디렉터리를 읽으려고 시도하는 경우) cmdlet이 계속 실행되어 종료 코드 0을 반환합니다. 그러나 연결된 스크립트가 0이 아닌 종료 코드를 반환하지 않는 한, CodeDeploy는 수명 주기 이벤트 후크 실패를 보고하지 않습니다. 자세한 내용은 Understanding non-terminating errors in PowerShell을 참조하십시오.

종료되지 않는 오류가 발생할 때 수명 주기 이벤트 후크가 실패하게 하려면 $ErrorActionPreference 변수를 구성하여 스크립트의 동작을 변경합니다.

해결 방법

중요: 다음 해결 방법은 Windows PowerShell 5.1 이상에서 작동합니다.

1.     $ PSVersionTable 명령을 실행하여 사용 중인 PowerShell 버전을 확인한 다음, 필요한 경우 PowerShell 버전을 업그레이드합니다 .

2.    PowerShell cmdlet의 시작 부분에 다음 코드를 포함시킵니다.

$ErrorActionPreference = 'Stop'

$ErrorActionPreferenceStop으로 설정하면 PowerShell이 cmdlet의 실행을 중지하고 종료 및 종료되지 않는 오류 모두에 대해 종료 코드 1을 반환합니다.