如何使终止和非终止 PowerShell cmdlet 错误导致生命周期事件钩子在 CodeDeploy 中失败?

1 分钟阅读
0

AWS CodeDeploy 中的部署生命周期事件钩子调用了返回错误的 Windows PowerShell cmdlet。但是,cmdlet 返回退出代码 0(成功),且部署报告成功。我想确保终止和非终止 PowerShell cmdlet 错误会导致生命周期事件钩子在 CodeDeploy 中失败。

简短描述

默认情况下,除非出现不可恢复的或终止错误,否则 PowerShell cmdlet 会运行至完成并返回退出代码 0。除非关联脚本返回的退出代码不为 0,否则 CodeDeploy 不会报告生命周期事件钩子失败。

要使生命周期事件钩子在发生非终止错误时失败,请更改脚本的行为。要更改脚本的行为,请将 cmdlet 中的 $ErrorActionPreference 变量配置为 'Stop'。然后,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 网站上的 about_Preference_Variables

AppSpec“钩子”部分

使用 Amazon CloudWatch 工具监控部署

在 Amazon CloudWatch 控制台中查看 AWS CodeDeploy 日志

AWS 官方
AWS 官方已更新 3 个月前