Перед обновлением до AWS SDK для .NET 4.1 откройте прямую публикацию в блоге AWS Developer и убедитесь, что там стоит номер версии и статус generally available, а не preview или release candidate. Затем сверьте целевую платформу проекта, пройдите по журналу изменений и соберите ветку с новой версией. Если сборка падает на несовместимости target framework, верните прежнюю версию и планируйте переход на поддерживаемую платформу отдельной задачей.
Что именно подтверждает первоисточник: анонс, preview или GA
Ссылка на категорию announcements в блоге AWS Developer — это лента, а не подтверждение релиза. Откройте конкретный пост и зафиксируйте три вещи: дату публикации, точный номер версии и формулировку статуса. Для 4.1 важно, написано ли там «generally available» или речь идёт о предварительной сборке.
Дальше сверьте номер с записью в официальном журнале изменений и со страницей пакета на NuGet. Если на NuGet у пакета AWSSDK.Core стоит метка prerelease, значит, это ещё не стабильный выпуск, и ставить его в продакшен рано.
- Прямая ссылка на пост, а не на страницу категории.
- Дата публикации и статус релиза в тексте поста.
- Номер версии в посте, в changelog и на NuGet — все три должны совпадать.
- Метка prerelease у пакета на NuGet.
Если хотя бы один пункт расходится, не выпускайте материал про состоявшийся запуск. Ограничьтесь заметкой о preview или верните задачу на проверку источника. Анонс, испытание и запуск — разные события, и путать их в тексте нельзя.
Какие пакеты и зависимости затронет переход на 4.1
В типичном проекте AWS SDK подключён не одним пакетом, а набором: AWSSDK.Core плюс сервисные пакеты вроде AWSSDK.S3 или AWSSDK.DynamoDBv2. Версии у них должны совпадать, иначе возможны конфликты типов при сборке.
Начните с файла проекта и lock-файла. Выпишите текущие версии всех пакетов AWS и то, какие версии общих библиотек они тянут за собой. Обновление SDK часто поднимает версии транзитивных зависимостей — тех пакетов, которые вы не подключали напрямую, но которые приходят вместе с SDK.
| Что проверить | Где смотреть | Что это меняет |
|---|---|---|
| Целевая платформа | Файл проекта, свойство TargetFramework | Если платформа ниже минимальной для 4.1, сборка не пройдёт |
| Версии пакетов AWS | Файл проекта и lock-файл | Рассинхрон версий ломает сборку на этапе разрешения типов |
| Транзитивные зависимости | Вывод restore, lock-файл | Новые версии общих библиотек могут конфликтовать с уже подключёнными |
| Инструменты | Amazon.Lambda.Tools, AWS Toolkit, CLI-обвязка | Инструменты обновляются отдельно и могут требовать своей версии SDK |
Отдельно проверьте инструменты сборки и деплоя. Amazon.Lambda.Tools и AWS Toolkit for Visual Studio живут своим циклом версий, и их совместимость с 4.1 стоит уточнить до того, как вы нажмёте «обновить всё».
Потенциальные breaking changes и устаревшие API
Breaking changes — это изменения, после которых старый код перестаёт компилироваться или начинает вести себя иначе. В журнале изменений ищите разделы про удалённые и переименованные методы, изменения поведения по умолчанию и новые обязательные параметры конфигурации.
Дальше пройдите по кодовой базе поиском. Ищите вызовы устаревших методов, настройки клиентов, credential-провайдеры и retry-политики. Именно там чаще всего всплывают сюрпризы: код компилируется, но запросы начинают повторяться иначе или ошибки обрабатываются по-другому.
- Устаревшие и удалённые типы и методы.
- Изменения в конфигурации клиентов и провайдерах учётных данных.
- Поведение повторов при ошибках.
- Сериализация запросов и ответов, формат логирования.
На практике это выглядит так: проект на net6.0 использует SDK 3.x и библиотеку логирования. Вы меняете версию пакета в отдельной ветке и собираете. Сборка падает с ошибкой несовместимости target framework — возвращаете версию и планируете переход на поддерживаемую платформу. Если сборка проходит, запускаете тесты и вручную проверяете по одному запросу к каждому используемому сервису.
План проверки на тестовом окружении
Обновляйте пакеты в отдельной ветке, а не в основной. Прогоните сборку и юнит-тесты, затем интеграционные тесты против тестового AWS-аккаунта или LocalStack. LocalStack — локальная эмуляция сервисов AWS, удобная для проверки сценариев без реальных ресурсов.
Проверьте ключевые сценарии: аутентификацию, работу с S3, DynamoDB, Lambda и очередями. Зафиксируйте метрики задержки и долю ошибок до и после обновления, чтобы сравнение было предметным, а не на глаз.
Отдельно проверьте подпись запросов, повторы и обработку ошибок. Эти места меняются чаще всего, и именно там ломается поведение, которое тесты не всегда ловят.
Стратегия выката и отката
Выкатывайте сначала на некритичных сервисах, затем на основных. Зафиксируйте версии в lock-файле, чтобы откат был быстрым и предсказуемым: вернуть старую версию пакета и восстановить lock-файл проще, чем искать, что именно изменилось.
Заранее определите критерии успеха и триггеры отката. Например, рост доли ошибок или задержки выше согласованного порога — повод вернуться на прежнюю версию, не дожидаясь конца окна выката.
Что делать, если релиз ещё не подтверждён
Если прямой публикации с номером 4.1 и статусом GA нет, не выдавайте анонс или preview за состоявшийся запуск. Укажите проверенную дату и статус со ссылкой на прямую публикацию либо отложите материал.
Для команды это значит одно: обновление планируйте по факту подтверждённого релиза, а не по слухам из ленты. Проверьте статус ещё раз в день выката — он мог измениться.
Нужно ли обновлять все пакеты AWS сразу?
Да, версии AWSSDK.Core и сервисных пакетов должны совпадать. Обновляйте их одним набором и фиксируйте результат в lock-файле.
Чем preview отличается от GA?
Preview — предварительная сборка для испытаний, GA — стабильный выпуск. Для продакшена ориентируйтесь на GA и метку prerelease на NuGet.
Что делать, если проект на старой платформе .NET?
Сначала проверьте минимальную поддерживаемую версию в требованиях пакета. Если платформа ниже, обновление не встанет — планируйте переход на поддерживаемую версию отдельной задачей.
Как быстро откатиться, если что-то сломалось?
Верните прежнюю версию пакета и восстановите lock-файл. Поэтому и нужна отдельная ветка и зафиксированные версии до выката.