核心是凭据有效和部署路径正确:凭据需通过~/.aws/credentials或sso正确配置且profile名匹配,部署时须确认region、函数名与日志组名严格一致,否则90%问题由此引发。

VSCode 里用 AWS Toolkit 管理 Lambda 函数,核心就两件事:凭据必须活、部署路径不能错。其他所有卡顿、权限报错、函数不更新,90% 都出在这两个环节。
凭据没生效,AWS: Login 命令点了也白点
插件不存密钥,只读取外部凭据源。点了 AWS: Login 却看不到函数列表?不是插件坏了,是它根本没拿到有效凭证。
- 优先检查
~/.aws/credentials文件是否存在且格式正确——必须有命名 profile 段落,比如[default]或[prod],且每段内含aws_access_key_id和aws_secret_access_key - 如果用 IAM Identity Center(SSO),起始 URL 必须和公司管理员给的一致,区域选错会导致登录成功但后续资源为空
- 终端执行
aws sts get-caller-identity能返回 ARN,才说明 CLI 凭据可用;Toolkit 默认复用这个链路,别绕开它去 VSCode 设置里填 AK/SK - 多账户切换时,务必在 VSCode 设置里显式指定
aws.profile,值必须和~/.aws/credentials中的 profile 名完全一致(区分大小写)
Deploy Function 失败常见错误现象与对应动作
右键函数 → Deploy Function 报错,不要急着重试。先看错误信息里是否含以下关键词:
-
ResourceNotFoundException:函数名拼错,或当前 region 不对——AWS Explorer 顶部显示的 region 必须和函数实际所在 region 一致 -
AccessDeniedException:凭据对应 IAM 角色缺少lambda:UpdateFunctionCode或lambda:CreateFunction权限,不是“只读”角色就能部署 -
InvalidParameterValueException:代码包体积超 50MB(未启用层)或 ZIP 包结构不对(如入口文件不在根目录、handler字符串和实际函数签名不匹配) - 无报错但函数没更新:确认你右键的是函数名节点,不是 template.yaml 文件——后者触发的是整个 SAM 应用部署,行为完全不同
调试时 Start Debugging 启动失败,本地环境缺依赖
点击 Start Debugging 后控制台报 Cannot find module 'aws-sdk' 或类似 Node.js require 错误,本质是本地运行时缺失依赖,和云端无关。
- 确保项目根目录有
package.json,且已运行过npm install(或yarn install)安装aws-sdk及其他 runtime 依赖 - 调试配置生成的
.vscode/launch.json中runtimeExecutable默认为node,如果你用的是 Python,需手动改为python并确认pythonPath指向正确解释器 - 模拟事件 JSON 中的字段若含中文或特殊符号,务必用双引号包裹、转义斜杠,否则调试器解析失败会静默退出
- 断点打在 handler 外部(如 require 语句后、函数声明前)可能不生效——Node.js 的模块加载机制导致调试器尚未 attach 到执行上下文
CloudWatch 日志打不开,Log Group 名称和函数名不严格对应
在 AWS Explorer 展开 Lambda 后看到函数,双击 “View CloudWatch Logs” 却提示 “No log group found”,大概率是日志组命名规则被忽略。
- Lambda 默认日志组名为
/aws/lambda/<function-name></function-name>,其中<function-name></function-name>是函数真实名称,不是你在 template.yaml 里写的LogicalId,也不是本地文件夹名 - 函数首次执行成功后才会自动创建日志组;如果函数从未运行过(比如部署后没调用),日志组不存在是正常现象
- 手动创建过同名日志组但没授予权限,会导致插件能列出但打不开——检查 IAM 策略是否含
logs:DescribeLogGroups和logs:FilterLogEvents - 日志流按时间倒序排列,最新一条未必在顶部;点击右上角 “Refresh” 才能拉到最新数据,不是实时轮询
真正麻烦的不是操作步骤,而是凭据、region、函数名、日志组名这四者之间隐含的强绑定关系——改其中任何一个,其他三个都得同步核对。漏掉一次 region 切换,就可能对着 us-west-2 的日志查 us-east-1 的函数问题。











