Поиск «истинной» версии кода среды выполнения AWS Lambda

Проблема

Мы столкнулись с ситуацией, когда обновление версии среды выполнения AWS лямбда вызывает проблемы с нашим кодом.

Это работает (nodejs 18.v24; также работает .v26):

Это не работает (nodejs 18.v28):

Однако эти номера версий не соответствуют фактическим версиям Node, которые я могу найти. На сайте Node последняя версия 18 — 18.20.2 (на момент написания этой статьи).

Вопрос

Как мне найти фактическую версию Node по номеру версии AWS, чтобы я мог сравнить различия между v.26 и v.28 и попытаться определить, какое обновление может вызывать проблемы с нашим кодом?

🤔 А знаете ли вы, что...
Node.js позволяет создавать веб-приложения в реальном времени с помощью библиотеки Socket.io.


495
2

Ответы:

Версия среды выполнения Lambda не коррелирует с дополнительной версией Node.js, поэтому, например, версия среды выполнения «nodejs 18.v24» не означает, что следует использовать Node.js версии 18.24.x, скорее это 24-й раз, когда aws обновляется. среда выполнения nodejs18.

Проблема, скорее всего, вызвана зависимостью. Обычно версия исправления не вызывает такой проблемы, поэтому это может быть редкая проблема, которую трудно обнаружить.

В качестве временного решения вы можете установить среду выполнения лямбда вручную и запретить ее обновление, чтобы у вас было некоторое время, чтобы найти проблему, а затем обновить версию среды выполнения. В документации aws есть некоторая информация по этому поводу:

В том редком случае, когда новая версия времени выполнения несовместима с существующей функцией, вы можете откатить ее версию времени выполнения до более ранней. Это обеспечивает работоспособность вашего приложения и сводит к минимуму сбои в работе, предоставляя время для устранения несовместимости перед возвратом к последней версии среды выполнения.

Я предполагаю, что ваша лямбда-функция в настоящее время по умолчанию использует версию $LATEST и должна также автоматически обновлять версию времени выполнения, поэтому эти инструкции могут быть тем, что вам нужно.

Если вы используете режим автоматического обновления версии среды выполнения или используете $LATEST версию среды выполнения, вы можете выполнить откат версии среды выполнения, используя ручной режим. Для версии функции, для которой требуется выполнить откат, измените режим обновления версии среды выполнения на «Вручную» и укажите ARN предыдущей версии среды выполнения.

ARN рабочей версии можно получить из логов лабды, которые вы выложили с вопросом

Это страницы документации, на которых я нашел эту информацию.


Решено

Интерфейс командной строки AWS не предоставляет средств для преобразования лямбда-ARN или лямбда-ARN среды выполнения в соответствующую версию Node.js.

Если вам нужна эта информация, просто сообщите об этом CloudWatch через console.info(process.version), а затем просмотрите журнал для тестового запуска.

Например:

export const handler = async (event) => {
  console.info('NODE_VERSION', process.version)
  const response = {
    statusCode: 200,
    body: process.version,
  };
  return response;
};

Создает журналы типа:

INIT_START Runtime Version: nodejs:20.v22   Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:b41f958332022b46328145bcd27dce02539c950ccbf6fde05884f8106362b755
2024-05-07T18:44:28.717Z    47f2299a-daec-4586-b97f-fd7c0ebf66b4    INFO    NODE_VERSION v20.12.0