Я развернул v1 API, используя SAM. Стек представляет собой таблицу API Gateway, Lambda и DynamoDB.
Функция Lambda управляется через свойство AutoPublishAlias
. Псевдоним называется «Live». Каждый раз, когда я развертываю новый выпуск v1, я получаю новую версию Lambda, и псевдоним «Live» изменяется, чтобы указывать на новый выпуск, например:
Перед выпуском:
Lambda version:
3 <--- Alias: Live <--- v1 API
2
1
После выпуска:
Lambda version:
4 <--- Alias: Live <--- v1 API
3
2
1
Теперь я хочу развернуть v2, но оставить развернутым v1.
Я рассмотрел подход модификации моего чванства для создания путей с базовыми путями / v1 и / v2. Я бы также создал псевдоним "v1", указывающий на последний выпуск v1, и использовал бы этот псевдоним для API / v1, например:
Lambda version:
5 <--- Alias: Live <--- v2 API
4 <--- Alias: v1 <--- v1 API
3
2
1
Затем AutoPublishAlias
будет продолжать перемещать псевдоним "Live" в каждом новом выпуске, но псевдоним "v1" будет сохраняться там, где он был, например:
Новая версия v2
Lambda version:
6 <--- Alias: Live <--- v2 API
5
4 <--- Alias: v1 <--- v1 API
3
2
1
Это кажется разумным, за исключением того, что сделать исправление ошибки в v1 будет сложно. Я удивлен, что не нашел ни одного обсуждения версионирования API (не лямбда-версионирования) с SAM в Интернете. Есть соглашение для обработки этого?