如何使終止和非終止 PowerShell cmdlet 錯誤導致生命週期事件掛接在 CodeDeploy 中失敗?

1 分的閱讀內容
0

AWS CodeDeploy 中的部署生命週期事件掛接呼叫會傳回錯誤的 Windows PowerShell cmdlet。不過,cmdlet 會傳回 0 (成功) 的結束代碼,且部署報告成功。如何確保終止和非終止 PowerShell cmdlet 錯誤都會導致我的生命週期事件掛接在 CodeDeploy 中失敗?

簡短說明

根據預設,PowerShell cmdlets 會執行到完成,並傳回結束代碼 0,除非發生無法復原或終止錯誤發生。除非關聯的指令碼傳回與 0 不同的結束代碼,否則 CodeDeploy 不會報告生命週期事件掛接失敗。

若要在發生非終止錯誤時使生命週期事件掛接失敗,請變更指令碼的行為。若要變指令碼的行為,請將 cmdlet 中的 $ErrorActionPreference 變數設定為 '停止'。PowerShell 接著會停止執行 cmdlet,並同時針對終止和非終止錯誤傳回結束代碼 1。

如需詳細資訊,請參閱 Microsoft Scripting Blog 上的瞭解 PowerShell 中的非終止錯誤

解決方法

**重要事項:**下列解析度適用於 Windows PowerShell 5.1 及更高版本。

1.    請執行下列 $PSVersionTable 命令,驗證您正在使用的 Windows PowerShell 版本:

$PSVersionTable

2.    如果您的 Windows PowerShell 版本早於 5.1 版本,請升級您的 PowerShell 版本。如需指示,請參閱 Microsoft Docs 網站上的下載並安裝 Windows PowerShell 5.1

3.    在 PowerShell cmdlet 的開頭包含下列程式碼:

$ErrorActionPreference = 'Stop'

PowerShell 現在會停止 cmdlet,並同時針對終止和非終止錯誤傳回結束代碼 1。


相關資訊

關於偏好設定變數 (Microsoft Docs 網站)

AppSpec 的 '勾點' 部分

使用 Amazon CloudWatch 工具監控部署

在 Amazon CloudWatch 主控台中查看 AWS CodeDeploy 日誌

AWS 官方
AWS 官方已更新 2 年前