AWS SDK v3 for NodeJS调用Lambda无执行也无报错问题求助
排查Lambda函数调用无响应问题的步骤
1. 检查调用权限配置
- 确认发起调用的Lambda执行角色拥有
lambda:InvokeFunction权限,且资源范围明确包含被调用Lambda的ARN。在CloudFormation模板里要给角色添加对应策略,示例:Policies: - Statement: - Effect: Allow Action: lambda:InvokeFunction Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:目标函数名称" - 避免过度依赖通配符
*,优先指定具体ARN,减少权限冲突或配置遗漏的可能。
2. 验证调用代码逻辑
- 检查
lambda.send()的参数是否准确:FunctionName必须完全匹配被调用Lambda的名称或ARN,注意AWS资源名称区分大小写,别犯拼写错误。 - 明确调用类型:如果是异步调用,必须指定
InvocationType: 'Event';默认同步调用(RequestResponse)会因被调用Lambda报错而抛出异常,阻断后续代码执行。建议加try-catch捕获错误:try { await lambda.send(new InvokeCommand({ FunctionName: '目标函数名', InvocationType: 'Event' })); } catch (err) { console.error('Lambda调用失败:', err); // 补充错误处理,避免后续流程中断 } - 排查
scheduleNotification()内部逻辑:是否存在未捕获的异步异常、提前返回的条件判断,或者异步操作未加await导致代码看似执行但实际未完成。
3. 检查CloudFormation部署状态
- 确认栈内两个Lambda函数都部署成功,无资源创建失败的记录。
- 验证被调用Lambda的基础配置:内存、超时时间是否合理,有没有触发并发限制导致无法接收请求。
- 核对发起调用的Lambda的环境变量,确保被调用函数名称配置正确,无硬编码错误。
4. 日志与CLI测试排查
- 查看发起调用的Lambda的CloudWatch日志,搜索
lambda.send()相关条目,确认是否有权限不足、函数不存在等错误信息。 - 检查被调用Lambda的日志组:确认角色拥有
logs:CreateLogGroup、logs:CreateLogStream、logs:PutLogEvents权限,避免日志无法写入的情况。 - 用AWS CLI直接测试调用,排除代码层面问题:
查看命令返回结果,同时检查CloudWatch日志是否有调用记录。aws lambda invoke --function-name 目标函数名 --invocation-type Event response.json
5. 其他排查点
- 如果发起调用的Lambda在VPC内,需确保VPC配置了NAT网关或Lambda服务端点,否则无法访问Lambda服务。
- 确认被调用Lambda未设置预留并发,导致无法接收新的调用请求。
内容的提问来源于stack exchange,提问作者Gabriel Silva
相关产品推荐
相关产品推荐

