You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform外部数据源中让Bash脚本传递自定义错误信息

解决Terraform外部数据源自定义错误提示问题

要让Terraform在执行时显示自定义的环境变量缺失提示,需要调整脚本的错误输出逻辑——Terraform的external数据源会捕获脚本的**标准错误(stderr)**内容并展示在控制台错误信息中,而默认echo输出的是标准输出(stdout),不会被识别为错误信息。

修改后的my_script.sh脚本如下:

#!/bin/bash

if [ -z "$SOME_ENV" ]; then
  # 将错误信息重定向到标准错误流
  echo "Env SOME_ENV is missed" >&2
  exit 1
fi

# 正常执行时必须输出合法JSON到stdout(external数据源强制要求)
echo '{"status": "ok"}'

# do some work...

核心要点:

  • 用>&2把自定义错误信息转向标准错误流,Terraform会自动抓取这部分内容并显示在错误提示里。
  • 脚本正常执行阶段,必须输出有效的JSON格式内容到标准输出,这是external数据源的硬性要求,否则即便没有错误也会触发Terraform报错。

修改后执行terraform apply,当SOME_ENV未设置时,控制台会显示包含自定义提示的错误信息:

│ The data source received an unexpected error while attempting to execute the program.
│ 
│ Program: /bin/bash
│ Error Message: Env SOME_ENV is missed
│ State: exit status 1

内容的提问来源于stack exchange,提问作者NotDmitry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:33:16