Я попросил Курсор последовательно выполнить три разные задачи:
📌 Написать код функций для AWS Lambda
📌 Описать CDK-стек для деплоя
📌 Собственно, провести деплой
И когда деплой не завёлся, а Курсор начал искать варианты решения проблемы, он предложил мне понизить версию Python в лямбдах до 3.6. Я сначала не понял, а потом как понял…
Одна из самых частых проблем, возникающих при работе над многослойными проектами в Курсоре, — это управление зависимостями. Он постоянно прописывает конкретные версии библиотек, не проверяя их актуальность. Как результат — устаревшие либы, которые тянут за собой устаревшие рантаймы. Версия AWS CDK, которую он указал, была на 900 😱😱😱 релизов старше последней стабильной! Отсюда и всплыл Python 3.6
В общем, после воркшопа родилось новое правило для Cursor Rules, которое сразу же показало свою эффективность в воскресенье, пока я работал над очередным проектом:
✅ Перед тем как прописывать любые зависимости, узнай, какая последняя стабильная версия, и проверь, не установлена ли уже нужная библиотека локально.
В .cursor/rules, конечно, это выглядит иначе. Вот во что Курсор транслировал моё короткое требование 👇
## Python Runtime Version Alignment
- ALWAYS align Python runtime versions between local development and AWS Lambda
- Required Python version: 3.13.x
- Required Lambda runtime: PYTHON_3_13
- AWS Lambda supported Python runtimes: PYTHON_3_8, PYTHON_3_9, PYTHON_3_10, PYTHON_3_11, PYTHON_3_12, PYTHON_3_13
- Ensure all development environments (local, venv, CI/CD) use Python 3.13.x
- Test Lambda functions locally with target Python version before deployment
## Python Dependencies (requirements.txt)
- ALWAYS check for the latest version of any external library before adding it to requirements.txt
- Use exact version pinning (==) for all dependencies to ensure reproducibility
- Before adding a new dependency, verify its latest version using:
- PyPI: https://pypi.org/project/[package-name]/
- pip index versions [package-name]
- Or use tools like pip-check-updates or pip-review
## Node.js Dependencies (package.json)
- ALWAYS check for the latest version of any external library before adding it to package.json
- Use exact version pinning (no ^ or ~) for production dependencies to ensure reproducibility
- Before adding a new dependency, verify its latest version using:
- npm view [package-name] version
- npm outdated
- Or use tools like npm-check-updates or npm-check
## Version Update Process
1. Before adding any new dependency, research the latest stable version
2. Check for breaking changes in major version updates
3. Test compatibility with existing codebase
4. Update all related files (requirements.txt, package.json, package-lock.json)
5. Document any breaking changes or migration steps