Управление версиями функции
Управление версиями функции позволяет:
- Создать версию
- Получить информацию о версии функции
- Добавить переменную окружения
- Управлять тегами версии
Вы можете изменить код функции с помощью редактора кода.
Примечание
Для сохранения целостности связей изменение и удаление версий функции не предусмотрено. Подробнее о взаимосвязи ресурсов читайте в разделе Функция.
Получить список функций
Для управления версиями функции нужны имя или уникальный идентификатор функции, которой эта версия принадлежит. Чтобы узнать их, получите список функций.
- В консоли управления перейдите в каталог, в котором хотите посмотреть список функций.
- Откройте сервис Cloud Functions.
- Перейдите на вкладку Функции.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список функций, выполните команду:
yc serverless function list
Результат:
+----------------------+--------------------+----------------------+--------+
| ID | NAME | FOLDER ID | STATUS |
+----------------------+--------------------+----------------------+--------+
| b097d9ous3gep99khe83 | my-beta-function | aoek49ghmknnpj1ll45e | ACTIVE |
+----------------------+--------------------+----------------------+--------+
Получить список функций можно с помощью метода API list.
Создать версию функции
Для создания версии функции вы можете воспользоваться одним из форматов загрузки кода. Для примера будет использован ZIP-архив.
Важно
Файл больше 3,5 МБ необходимо загружать через Object Storage. Подробнее об ограничениях читайте в разделе Квоты и лимиты.
Подготовить ZIP-архив с кодом функции
-
Сохраните следующий код в файл с названием
index.js
:exports.handler = async function (event, context) { let name = 'World'; if (event.queryStringParameters && event.queryStringParameters.name) { name = event.queryStringParameters.name } return { 'statusCode': 200, 'headers': { 'Content-Type': 'text/plain' }, 'isBase64Encoded': false, 'body': `Hello, ${name}!` } };
-
Добавьте файл
index.js
в ZIP-архивhello-js.zip
.
Создать версию функции
При создании версии необходимо задать следующие параметры:
- Среда выполнения — предоставляет дополнительные библиотеки и переменные окружения, к которым можно получить доступ из кода функции. Соответствует языку программирования, на котором написана ваша функция.
- Точка входа — функция, которая будет вызываться в качестве обработчика. Подробнее об обработчике читайте в разделе Модель программирования.
- Таймаут — максимальное время выполнения функции, после которого сервис прервет выполнение, не дожидаясь ответа. Включает в себя время начальной инициализации при первом запуске.
- В консоли управления перейдите в каталог, в котором находится функция.
- Откройте сервис Cloud Functions.
- Выберите функцию, версию которой хотите создать.
- В разделе Последняя версия нажмите кнопку Создать в редакторе.
- Задайте параметры версии:
- Среда выполнения:
nodejs
. - Таймаут, с: 5.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
- Среда выполнения:
- Подготовьте код функции:
- Способ: ZIP-архив.
- Файл:
hello-js.zip
. - Точка входа:
index.handler
.
- Нажмите кнопку Создать версию.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать версию функции, выполните команду:
yc serverless function version create \
--function-name=my-nodejs-function \
--runtime nodejs12 \
--entrypoint index.handler \
--memory 128m \
--execution-timeout 5s \
--source-path ./hello-js.zip
где:
--function-name
— имя функции, версию которой вы хотите создать.
--runtime
— среда выполенения.
--entrypoint
— точка входа, указывается в формате <имя файла с функцией>.<имя обработчика>.
--memory
— объем RAM.
--execution-timeout
— максимальное время выполнения функции до таймаута.
--source-path
— ZIP-архив c кодом функции и необходимыми зависимостями.
Результат:
done (1s)
id: d4evvn8obisajd51plaq
function_id: d4elpv8pft639ku7k0u6
created_at: "2020-08-01T19:09:19.531Z"
runtime: nodejs12
entrypoint: index.handler
resources:
memory: "134217728"
execution_timeout: 5s
image_size: "4096"
status: ACTIVE
tags:
- $latest
log_group_id: ckg3qh8h363p40gmr9gn
Создать версию функции можно с помощью метода API createVersion.
Получить информацию о версии функции
Получить список версий функции
- В консоли управления перейдите в каталог, в котором находится функция.
- Откройте сервис Cloud Functions.
- Перейдите на вкладку Функции.
- Выберите функцию, для которой хотите получить список версий.
- В разделе История версий будет показан список версий функции и подробная информация о них.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список версий функции, выполните команду:
yc serverless function version list --function-name <имя функции>
Результат:
+----------------------+----------------------+----------+--------------+---------+---------------------+
| ID | FUNCTION ID | RUNTIME | ENTRYPOINT | TAGS | CREATED AT |
+----------------------+----------------------+----------+--------------+---------+---------------------+
| b09u830mb1n32a7rj0n8 | b097d9ous3gep99khe83 | python37 | test.handler | $latest | 2019-06-13 09:23:23 |
| b09ch6pmpohfc9sogj5f | b097d9ous3gep99khe83 | python37 | test.handler | beta | 2019-06-13 09:12:38 |
+----------------------+----------------------+----------+--------------+---------+---------------------+
Получить список версий функции можно с помощью метода API listVersions.
Получить подробную информацию о версии функции
- В консоли управления перейдите в каталог, в котором находится функция.
- Откройте сервис Cloud Functions.
- Перейдите на вкладку Функции.
- Выберите функцию, для которой хотите получить список версий.
- В разделе История версий будет показан список версий функции и подробная информация о них.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить подробную информацию о версии функции по:
-
ID
, выполните команду:yc serverless function version get <идентификатор версии>
Результат:
id: b09u830mb1n32a7rj0n8 function_id: b097d9ous3gep99khe83 created_at: "2019-06-13T09:23:23.383Z" runtime: python37 entrypoint: test.handler resources: memory: "134217728" execution_timeout: 5s image_size: "4096" status: ACTIVE tags: - $latest log_group_id: eolv6578frac08uh5h6s
-
TAGS
, выполните команду:yc serverless function version get-by-tag --function-name <имя функции> --tag <тег>
Результат:
id: b09ch6pmpohfc9sogj5f function_id: b097d9ous3gep99khe83 created_at: "2019-06-13T09:12:38.464Z" runtime: python37 entrypoint: test.handler resources: memory: "134217728" execution_timeout: 5s image_size: "4096" status: ACTIVE tags: - beta log_group_id: eolv6578frac08uh5h6s
Получить подробную информацию о версии функции можно с помощью метода API getVersion.
Добавить переменную окружения
При добавлении переменных окружения создается новая версия функции. В существующую версию переменные добавить нельзя.
- В консоли управления перейдите в каталог, в котором находится функция.
- Откройте сервис Cloud Functions.
- Выберите функцию, для версии которой хотите добавить переменную окружения.
- Перейдите на вкладку Редактор.
- В открывшемся окне, в блоке Параметры, укажите переменную окружения и нажмите Добавить переменную окружения. Можно добавить несколько переменных окружения.
- Нажмите кнопку Создать версию. Будет создана новая версия функции с указанными переменными окружения.
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы добавить переменные окружения, выполните команду:
Важно
Если в прошлой версии уже были переменные окружения, они перезапишутся.
yc serverless function version create \
--function-name=<имя функции> \
--runtime <среда выполнения> \
--entrypoint <точка входа> \
--memory 128m \
--execution-timeout 5s \
--source-version-id <идентификатор версии> \
--environment <переменные окружения>
где:
--function-name
— имя функции.
--runtime
— среда выполнения.
--entrypoint
— точка входа, указывается в формате <имя файла с функцией>.<имя обработчика>.
--memory
— объем RAM.
--execution-timeout
— максимальное время выполнения функции до таймаута.
--source-version-id
— ID версии функции, код которой вы хотите скопировать.
--environment
— переменные окружения в формате key=value. Можно указать несколько пар через запятую.
Добавить переменные окружения можно с помощью метода API createVersion.
Управлять тегами версии
При создании новой версии ей присваивается тег по умолчанию — $latest
. Вы можете добавить или удалить тег версии.
Для обращения к версии функции используйте ее уникальный идентификатор. Как узнать уникальный идентификатор версии, читайте в разделе Получить список версий функции.
Добавить тег
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы добавить тег версии, выполните команду:
yc serverless function version set-tag --id <идентификатор версии> --tag <тег>
Результат:
id: b09ch6pmpohfc9sogj5f
function_id: b097d9ous3gep99khe83
created_at: "2019-06-13T09:12:38.464Z"
runtime: python37
entrypoint: test.handler
resources:
memory: "134217728"
execution_timeout: 5s
image_size: "4096"
status: ACTIVE
tags:
- beta
- first
log_group_id: eolv6578frac08uh5h6s
Добавить тег можно с помощью метода API setTag.
Удалить тег
Если у вас еще нет интерфейса командной строки Yandex.Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить тег версии, выполните команду:
yc serverless function version remove-tag --id <идентификатор версии> --tag <тег>
Результат:
id: b09ch6pmpohfc9sogj5f
function_id: b097d9ous3gep99khe83
created_at: "2019-06-13T09:12:38.464Z"
runtime: python37
entrypoint: test.handler
resources:
memory: "134217728"
execution_timeout: 5s
image_size: "4096"
status: ACTIVE
tags:
- beta
log_group_id: eolv6578frac08uh5h6s
Удалить тег можно с помощью метода API removeTag.