使用awscliv2执行sts命令返回127错误,请求排查原因
排查AWS CLI v2命令返回错误码127的原因
以下是几个常见的排查方向和解决方法:
脚本与交互式Shell的PATH环境变量不一致
交互式Shell的PATH包含目标路径,但脚本可能运行在非交互式环境(比如cron、CI/CD或其他启动方式),导致PATH被重置。- 解决:在脚本开头手动添加路径:
或者直接使用命令的绝对路径执行:export PATH="/Library/Frameworks/Python.framework/Versions/3.11/bin:$PATH"ACCOUNT_ID=`/Library/Frameworks/Python.framework/Versions/3.11/bin/awscliv2 --region ${S3_REGION} sts get-caller-identity | jq '.Account' | tr -d '"'` - 验证:在脚本中加入以下命令,对比交互式Shell的输出:
echo "Script PATH: $PATH" which awscliv2
- 解决:在脚本开头手动添加路径:
脚本执行用户与交互式用户不同
如果脚本是用sudo或其他用户身份运行,该用户的PATH可能不包含目标路径,或者没有awscliv2的执行权限。- 验证:在脚本中加入以下命令,确认执行用户和文件权限:
whoami ls -l /Library/Frameworks/Python.framework/Versions/3.11/bin/awscliv2 - 解决:如果是权限问题,执行
chmod +x /Library/Frameworks/Python.framework/Versions/3.11/bin/awscliv2;如果是用户PATH问题,同样添加路径或用绝对路径。
- 验证:在脚本中加入以下命令,确认执行用户和文件权限:
awscliv2是别名而非实际可执行文件
交互式Shell中which awscliv2的输出可能是一个别名,而非真实的可执行文件路径。- 验证:在交互式Shell中执行:
如果输出显示是别名,脚本无法直接使用该别名,建议改用真实命令的绝对路径。type awscliv2
- 验证:在交互式Shell中执行:
脚本使用的Shell解释器与交互式Shell不同
比如脚本开头用#!/bin/sh,而你平时用的是bash,不同Shell的PATH加载逻辑可能有差异。- 解决:修改脚本开头的Shebang为
#!/bin/bash,或者确保sh环境的PATH包含目标路径。
- 解决:修改脚本开头的Shebang为
内容的提问来源于stack exchange,提问作者Antoine089
相关产品推荐
相关产品推荐

