Управление версиями функции

Для управления версиями функции необходимо знать имя или уникальный идентификатор функции, которой эта версия принадлежит.

Для обращения к функции используйте ее имя или уникальный идентификатор, которые можно узнать с помощью команды:

$ yc serverless function list
+----------------------+--------------------+----------------------+
|          ID          |        NAME        |      FOLDER ID       |
+----------------------+--------------------+----------------------+
| b097d9ous3gep99khe83 | my-beta-function   | aoek49ghmknnpj1ll45e |
+----------------------+--------------------+----------------------+

Управление версиями функции позволяет:

Также вы можете изменить код функции с помощью редактора кода.

Примечание

Изменение и удаление версий функции не предусмотрено, для сохранения целостности связей. Подробнее о взаимосвязи ресурсов читайте в разделе Функция.

Создать версию функции

Для создания версии функции вы можете воспользоваться одним из форматов загрузки кода. Для примера будет использован ZIP-архив.

Важная информация

Файл больше 3,5 МБ необходимо загружать через Object Storage. Подробнее об ограничениях читайте в разделе Квоты и лимиты.

Подготовить ZIP-архив с кодом функции

  1. Сохраните следующий код в файл с названием 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}!`
        }
    };
    
  2. Добавьте файл index.js в ZIP-архив hello-js.zip.

Создать версию функции

При создании версии необходимо задать следующие параметры:

  • Среда выполнения — предоставляет дополнительные библиотеки и переменные окружения, к которым можно получить доступ из кода функции. Соответствует языку программирования, на котором написана ваша функция.
  • Точка входа — имя функции, которая будет вызываться в качестве обработчика. Подробнее об обработчике читайте в разделе Модель программирования.
  • Таймаут — максимальное время выполнения функции, после которого сервис прервет выполнение, не дожидаясь ответа. Включает в себя время начальной инициализации при первом запуске.

Создайте версию функции:

  1. Откройте Cloud Functions в каталоге, где требуется создать версию функции.
  2. Выберите функцию, для которой необходимо создать версию.
  3. В разделе Последняя версия нажмите кнопку Создать в редакторе.
  4. Задайте параметры версии:
- Среда выполнения: `nodejs`.
- Таймаут, с: 5.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
  1. Подготовьте код функции:
- Способ: ZIP-архив.
- Файл: `hello-js.zip`.
- Точка входа: `index.handler`.
  1. Нажмите кнопку Создать версию.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

Создайте версию функции:

$ yc serverless function version create \
--function-name=my-nodejs-function \ # Имя функции.
--runtime nodejs12 \ # Среда выполенения.
--entrypoint index.handler \ # Обработчик, указывается в формате <имя файла с функцией>.<имя обработчика>.
--memory 128m \ # Объем RAM.
--execution-timeout 5s \ # Максимальное время выполнения функции до таймаута.
--source-path ./hello-js.zip # ZIP-архив c кодом функции и всеми необходимыми зависимостями.

Получить информацию о версии функции

Получить список версий функции

Получите список версий функции:

  1. Откройте Cloud Functions в каталоге с функцией, для которой требуется получить список версий.
  2. Выберите функцию, для которой необходимо получить список версий.
  3. В разделе История версий будет показан список версий функции и подробная информация о них.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

Получите список версий функции:

$ yc serverless function version list --function-name my-beta-function
+----------------------+----------------------+----------+--------------+---------+---------------------+
|          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 |
+----------------------+----------------------+----------+--------------+---------+---------------------+

Получить подробную информацию о версии функции

Получите подробную информацию о версии функции:

  1. Откройте Cloud Functions в каталоге с функцией, для которой требуется получить список версий.
  2. Выберите функцию, для которой необходимо получить список версий.
  3. В разделе История версий будет показан список версий функции и подробная информация о них.

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

Для обращения к версии используйте параметры ID или TAGS из предыдущего пункта.

  • Получите подробную информацию о версии с помощью уникального идентификатора:

    $ yc serverless function version get b09u830mb1n32a7rj0n8
    
    id: b09u830mb1n32a7rj0n8
    function_id: b097d9ous3gep99khe83
    description: test2
    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
    
    
  • Получите подробную информацию о версии с помощью тега:

    $ yc serverless function version get-by-tag --function-name my-beta-function --tag beta
    
    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
    ```
    
    

Добавить переменную окружения

Добавьте переменную окружения:

  1. В консоли управления выберите сервис Cloud Functions.
  2. Нажмите значок image в строке функции, для версии которой вы хотите добавить переменную окружения.
  3. Откройте раздел Редактор.
  4. В открывшемся окне в блоке Параметры добавьте переменную окружения в поле Переменные окружения и нажмите Добавить переменную окружения. Можно добавить несколько переменных.
  5. Нажмите кнопку Создать версию в верхнем правом углу. Будет создана новая версия функции с указанными переменными окружения.

Управлять тегами версии

При создании новой версии, ей присваивается тег по умолчанию — $latest. Вы можете добавить или удалить тег версии.

Для обращения к версии функции используйте ее уникальный идентификатор. Как узнать уникальный идентификатор версии, читайте в пункте Получить список версий функции.

Добавить тег

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

Добавьте тег версии:

$ yc serverless function version set-tag --id b09ch6pmpohfc9sogj5f --tag first

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

Удалить тег

Если у вас еще нет интерфейса командной строки Яндекс.Облака, установите и инициализируйте его.

Удалите тег версии:

$ yc serverless function version remove-tag --id b09ch6pmpohfc9sogj5f --tag first

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