执行amplify pull拉取AWS Amplify后端至空目录时遇ENOENT错误
问题情况
我有一个AWS Amplify项目,后端为Python编写的AWS Lambda。尝试将后端环境拉取到新的空目录时,执行命令:
amplify pull --appId xxxxxxxxxxx --envName env
本该将项目拉取至空目录,却触发如下错误:
⠙ Confirm login in the browser or manually paste in your CLI login key:
Successfully received Amplify Studio tokens.
Amplify AppID found: xxxxxxxxxxx. Amplify App name is: app
Backend environment dev found in Amplify Console app: app
🛑 Failed to pull the backend.ENOENT: no such file or directory, stat '/Users/app/amplify/.temp/#current-cloud-backend/function/lambda_app/src/env/bin/python'
Error: ENOENT: no such file or directory, stat '/Users/app/amplify/.temp/#current-cloud-backend/function/lambda_app/src/env/bin/python'
目标目录new_app为空,无任何Amplify相关文件夹。另外,执行amplify init会生成新的appId,导致无法使用原appId执行amplify pull。
解决步骤
- 清理云端Lambda的虚拟环境文件:登录AWS Amplify控制台,找到对应Lambda函数,检查代码包中是否包含
env或.venv这类本地虚拟环境目录,删除后重新部署云端后端。 - 修正原项目的.gitignore规则:确保原项目的
.gitignore已添加env/、.venv/等规则,避免本地虚拟环境文件被提交到云端。 - 重新执行拉取命令:回到空目录,再次运行
amplify pull --appId xxxxxxxxxxx --envName env,此时云端代码不含虚拟环境目录,拉取过程不会触发路径不存在的错误。 - 备选方案:关联现有后端而非新建:若不想修改云端代码,可在空目录执行
amplify init,选择「Existing app」选项,输入原appId和环境名,关联到现有后端。拉取完成后,手动在本地重新创建Python虚拟环境即可。
内容的提问来源于stack exchange,提问作者yaros

