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

调用AWS Lambda ListTags接口遇ValidationException异常求助

问题原因与解决方案

问题出在read命令的默认字段分隔符上:AWS CLI的--output text格式中,列与列之间是制表符分隔,但read默认会把所有空白字符(空格、制表符、换行)都当成字段分隔符。如果你的Lambda函数名包含空格,或者输出中有意外的空格干扰,read会错误地分割function_name和function_arn,导致传递给list-tags的ARN不完整或包含多余字符,触发正则校验失败。而最后一次调用成功,大概率是因为最后一个函数的名称没有空格,刚好被正确分割。

修正后的代码

functions=$(aws lambda list-functions --region "$region" --query "Functions[?starts_with(FunctionName, 'some-name-pattern')].[FunctionName,FunctionArn]" --output text)
# 指定read的分隔符为制表符,确保正确分割两列数据
while IFS=$'\t' read -r function_name function_arn
do
    echo "Function: ${function_name}"
    echo "ARN: ${function_arn}"
    aws lambda list-tags --region "$region" --resource "$function_arn" --query 'Tags' --output json
    echo
done <<< "$functions"

额外优化建议

如果担心$(...)捕获输出时丢失末尾换行导致最后一行被忽略,可以改用管道的方式读取输出(避免变量存储带来的换行问题):

aws lambda list-functions --region "$region" --query "Functions[?starts_with(FunctionName, 'some-name-pattern')].[FunctionName,FunctionArn]" --output text |
while IFS=$'\t' read -r function_name function_arn
do
    echo "Function: ${function_name}"
    echo "ARN: ${function_arn}"
    aws lambda list-tags --region "$region" --resource "$function_arn" --query 'Tags' --output json
    echo
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:23:19