执行aws lambda create-function命令卡住,无法运行后续命令如何解决
问题产生原因
该问题是AWS CLI默认的分页机制导致的:AWS CLI v2版本默认开启输出分页功能,当aws lambda create-function命令返回的JSON结果长度超过终端显示行数时,会自动调用less分页器展示内容,你返回结果末尾的(END)就是less分页器的终止提示符。此时分页器会等待用户输入交互指令(如按q退出),导致shell脚本执行到这一步时阻塞卡住,无法继续执行后续逻辑。
解决方案
可以通过以下几种方式禁用AWS CLI的分页功能解决阻塞问题:
- 方案1:单次命令禁用分页
在create-function命令中添加--no-cli-pager参数,仅对当前命令禁用分页器,修改后的命令如下:
aws lambda create-function --function-name "${function_name}" \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs12.x \ --role=r1 --no-cli-pager
- 方案2:当前shell会话临时禁用分页
执行脚本前先导出AWS_PAGER环境变量为空,该配置仅对当前终端会话生效:
export AWS_PAGER=""
- 方案3:全局关闭AWS CLI分页功能
如果希望所有aws命令都不触发分页,可以执行以下命令修改全局配置:
aws configure set cli_pager ''
也可以直接编辑~/.aws/config文件,在[default]配置段添加如下内容:
cli_pager =
补充优化建议:原有校验逻辑仅判断命令返回码,若要进一步保证Lambda函数完全激活后再执行调用,可以在创建命令和调用命令之间添加状态等待逻辑:
aws lambda wait function-active --function-name "${function_name}"该命令会自动轮询Lambda状态,直到函数进入
Active状态后才会继续执行后续逻辑,避免出现函数未就绪导致调用失败的问题。
内容的提问来源于stack exchange,提问作者Yuzuki Ayase
相关产品推荐
相关产品推荐

