VSCode需安装AWS Toolkit插件并依赖本地aws-cli、sam-cli及~/.aws/credentials凭据才能工作;必须通过Open Folder打开项目根目录,确保template.yaml存在且格式正确,修改凭据后须重启VS Code。

VSCode 本身不“集成”AWS Toolkit,而是靠插件调用你本地已装好的 aws-cli 和 sam-cli,再读取 ~/.aws/credentials 里的凭据完成操作。装完插件不等于能用——90% 的失败都卡在 CLI 没装对、凭据没生效、或项目没以文件夹形式打开。
为什么 AWS: Login 点了没反应或提示 “No credentials found”
插件不会自动扫描或修复你的凭据文件,它只做严格解析。常见断点:
-
~/.aws/credentials文件必须存在,且是纯文本(不能带 BOM,不能是 Windows 的 .txt 后缀) - profile 段落必须形如
[default]或[prod],中括号内不能有空格、点号、大写字母以外的符号 - 同一段落内必须同时包含
aws_access_key_id和aws_secret_access_key;若用临时凭证,还得加上aws_session_token - 终端里运行
aws sts get-caller-identity要能成功返回 ARN,否则插件一定连不上 - VS Code 必须重启——改完凭据后热重载不生效
template.yaml 右键没有 “Deploy Serverless Application”
这个菜单项是条件渲染的,不是永远可见。触发前提非常具体:
- VS Code 必须通过
File > Open Folder打开整个项目根目录,不能只是双击打开单个template.yaml - 文件名必须是
template.yaml(不是template.yml,也不是my-template.yaml) -
AWSTemplateFormatVersion字段不能缺失,且值需为"2010-09-09" - 函数的
CodeUri必须是相对路径,比如./src,不能是src/(少一个点)、/home/user/src(绝对路径)或空字符串
Deploy 后函数没更新,或提示 “No changes to deploy”
CloudFormation 默认跳过无变更部署,但开发者常误以为代码已上线。真实原因和应对方式:
- 改了函数代码但没删掉
.aws-sam目录:SAM 缓存了构建产物,下次部署仍用旧包 —— 删除该目录再sam build - 用了
--use-container但 Docker 没运行或权限不足:先在终端手动跑一次sam build --use-container,看报错是权限、镜像拉取失败还是网络问题 - 部署时选错了执行角色或 S3 bucket:首次部署必须指定一个已存在的、有
s3:PutObject权限的 bucket,名字不能含下划线 - 函数名在
template.yaml里被硬编码,而你在 AWS Console 手动改过名:CloudFormation 只认模板定义,不 merge 外部变更
调试时断点不命中或报 “Cannot find module ‘aws-sdk’”
本地调试启动的是 Node.js 进程,不是 Lambda 真实运行时。很多问题其实在部署前就能暴露:
- 项目根目录必须有
package.json,且已执行过npm install(或yarn install)安装所有依赖,包括aws-sdk -
launch.json中的runtimeExecutable要匹配实际语言:Node.js 项目是node,Python 项目得改成python并确认pythonPath正确 - 断点打在
require语句之后、exports.handler = async () => {}之前,可能因模块加载顺序失效 —— 建议直接打在 handler 函数第一行 - 模拟事件 JSON 中字段含中文或斜杠时,必须用双引号包裹并转义,否则调试器静默退出,不报错也不停
最易被忽略的一点:所有操作都依赖 VS Code 内置终端能否正确继承 shell 环境。如果你从桌面图标启动 VS Code,它很可能读不到 ~/.zshrc 里配置的 PATH —— 推荐始终从终端执行 code . 启动编辑器。


















