Облачная платформаAdvanced

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

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

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

Приложение группирует функции как единицу логики сервиса для упрощённого управления. Вы можете создавать несколько функций в рамках приложения.

Редактирование кода в строке

FunctionGraph позволяет редактировать код функции так же, как при управлении проектом. Вы можете создавать и редактировать файлы и папки. После загрузки ZIP‑пакета кода вы можете просматривать и редактировать код в консоли. Table 1 описывает меню встроенного редактора.

Table 1 Меню встроенного редактора

Menu

Описание

File

Создаёт файлы и папки. Вы можете создавать файлы, создавать папки на основе шаблонов и закрывать все файлы.

Edit

Редактирует код функции. Вы можете выполнить операции undo, edit или comment.

Find

Ищет и заменяет код.

Go to

Переходит к определённому месту в коде. Можно перейти к указанной строке, скобкам или следующей проблемной строке.

View

Предоставляет общие функции. Вы можете просмотреть command palette и изменить display theme.

Test

Тестирует функцию онлайн и отображает результат теста, дайджест и логи.

Note
  • Java — это компилируемый язык, который не поддерживает редактирование кода в строке. Если ваша функция не использует сторонние зависимости, вы можете загрузить function JAR file. Если функция использует сторонние зависимости, упакуйте зависимости и function JAR file в ZIP file, а затем загрузите ZIP file.
  • Если вы редактируете код на Go, упакуйте скомпилированный файл в формате ZIP и убедитесь, что имя файла динамической библиотеки соответствует имени plug‑in обработчика. Например, если имя файла динамической библиотеки function.so, задайте handler function.Handler согласно Table 2.
  • При создании ZIP file разместите файл handler в каталоге root, чтобы ваш код мог работать нормально после распаковки.

Modifying Function Code

После создания функции по умолчанию версия — latest. Каждая функция имеет последнюю версию. Вы можете изменять функцию только на основе её последней версии.

  1. Войдите в консоль FunctionGraph и выберите Functions > Function List в панели навигации.
  2. Нажмите function name.
  3. (Optional) На странице function details выберите latest version.
  4. На вкладке Code или Configuration измените информацию о коде согласно Table 2 и Table 3.

    Table 2 Code information

    Parameter

    Description

    Handler

    • Для функции Node.js или Python обработчик должен быть назван в формате [file name].[function name], который должен содержать точку (.). Укажите myfunction.handler, что указывает, что имя файла — myfunction.js (myfunction.py для функции Python и myfunction.java для функции Java) и имя функции — handler.
    • Для функции Java обработчик должен быть назван в формате [package name].[file name].[function name], например, com.xxxxx.exp.Myfunction.myHandler.
    • Для функции Go обработчик должен быть назван в формате [plug-in name].[function name], например, function.Handler. Имя функции должно начинаться с заглавной буквы, а имя обработчика может содержать не более 128 символов.
    • Для функции C# обработчик должен быть назван в формате [.NET assembly file name]::[namespace and class of the handler function]::[handler function name], например, HelloCsharp::Example.Hello::Handler.
    • Для функции Cangjie обработчик должен быть назван в формате [Dynamic dependency library name].so. Имя может содержать не более 128 символов.

      Пример: libuser_func_test_success.so.

    Initializer

    Вы можете включить инициализацию функции на вкладке Code после создания функции. Инициализатор должен быть назван так же, как обработчик. Например, для функции Node.js или Python задайте имя инициализатора в формате [file name].[initialization function name].

    NOTE:

    Этот параметр не требуется, если инициализация функции отключена. Подробности о том, как создать функцию инициализации, см. Initializing the Function.

    Dependencies

    Сторонние программные пакеты, необходимые функции. Вы можете управлять зависимостями, загружая их в FunctionGraph. Если зависимости слишком велики, загрузите их через OBS. Для получения дополнительной информации см. Dependent Libraries.

    ПРИМЕЧАНИЕ:

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

    Code Entry Mode

    Метод ввода кода функции. Подробную информацию о поддерживаемых режимах ввода кода см. в Table 3.

    Table 3 Режимы ввода кода

    Runtime

    Code Entry Mode

    Description

    Node.js

    Edit code inline

    Редактировать код в окне кода. Для получения дополнительной информации см. Table 4.

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер загружаемого ZIP‑файла не может превышать 50 МБ. Если он превышает 50 МБ, загрузите ZIP‑файл с помощью бакета OBS.

    Upload file from OBS

    Вставьте URL‑ссылку на бакет OBS, содержащий ZIP‑файл кода.

    Python

    Редактировать код непосредственно

    Редактировать код в окне кода. Для получения дополнительной информации см. Table 4.

    Загрузить ZIP‑файл

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер загружаемого ZIP‑файла не может превышать 50 МБ. Если он превышает 50 МБ, загрузите ZIP‑файл с помощью OBS‑бакета.

    Загрузить файл из OBS

    Вставьте URL‑ссылку OBS‑бакета, в котором хранится ZIP‑файл кода.

    Java

    Загрузить ZIP‑файл

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер загружаемого ZIP‑файла не может превышать 50 МБ. Если он превышает 50 МБ, загрузите ZIP‑файл с помощью OBS‑бакета.

    Загрузить JAR‑файл

    Нажмите Select File и загрузите локальный JAR‑файл в FunctionGraph. Размер загружаемого JAR‑файла не может превышать 50 МБ. Если он превышает 50 МБ, преобразуйте его в ZIP‑файл и загрузите ZIP‑файл в OBS.

    Загрузить файл из OBS

    Вставьте URL‑ссылку OBS‑бакета, в котором хранится ZIP‑файл кода.

    Go

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер ZIP‑файла, который будет загружен, не может превышать 50 MB. Если он превышает 50 MB, загрузите ZIP‑файл, используя OBS‑бакет.

    Upload file from OBS

    Вставьте URL‑ссылку OBS‑бакета, в котором хранится ZIP‑файл кода.

    C#(.NET Core)

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер ZIP‑файла, который будет загружен, не может превышать 50 MB. Если он превышает 50 MB, загрузите ZIP‑файл, используя OBS‑бакет.

    Upload file from OBS

    Вставьте URL‑ссылку OBS‑бакета, в котором хранится ZIP‑файл кода.

    PHP

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер ZIP‑файла, который будет загружен, не может превышать 50 MB. Если он превышает 50 MB, загрузите ZIP‑файл, используя OBS‑бакет.

    Upload file from OBS

    Вставьте URL‑ссылку OBS‑бакета, в котором хранится ZIP‑файл кода.

    Custom

    Edit code inline

    Редактировать код в окне кода. Для получения дополнительной информации см. Table 1.

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер загружаемого ZIP‑файла не может превышать 50 МБ. Если он превышает 50 МБ, загрузите ZIP‑файл с помощью OBS bucket.

    Upload file from OBS

    Вставьте URL‑ссылку на OBS bucket, в котором хранится ZIP‑файл кода.

    Cangjie

    Upload ZIP file

    Нажмите Select File и загрузите локальный пакет кода в FunctionGraph. Размер загружаемого ZIP‑файла не может превышать 50 МБ. Если он превышает 50 МБ, загрузите ZIP‑файл с помощью OBS bucket.

    Upload file from OBS

    Вставьте URL‑ссылку на OBS bucket, в котором хранится ZIP‑файл кода.

    Notice
    • При написании кода на Python не называйте ваш пакет с тем же суффиксом, что и стандартная библиотека Python, например json, lib и os. В противном случае будет выдана ошибка, указывающая на сбой загрузки модуля.
    • Если загружаемый код содержит конфиденциальную информацию (например пароли учетных записей), зашифруйте её, чтобы предотвратить утечку.
    Table 4 Описание меню inline editor

    Menu

    Описание

    File

    Создает файлы и папки. Вы можете создавать файлы, шаблоны файлов и модули Python, а также закрывать все файлы.

    Edit

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

    Find

    Ищет и заменяет код.

    Go to

    Переходит к определенному месту в коде. Вы можете перейти к указанной строке, скобкам или следующей проблемной строке.

    View

    Предоставляет общие функции. Вы можете просмотреть command palette и изменить тему отображения.

    Test

    Тестирует функцию онлайн и отображает результат теста, дайджест и логи.

    Note
    • Java — это компилируемый язык, который не поддерживает редактирование кода в строке. Если ваша функция не использует сторонние зависимости, вы можете загрузить файл JAR функции. Если функция использует сторонние зависимости, упакуйте зависимости и файл JAR функции в ZIP‑архив, а затем загрузите ZIP‑архив.
    • Если вы редактируете код на Go, упакуйте скомпилированный файл в ZIP‑формате и убедитесь, что имя файла динамической библиотеки соответствует имени плагина обработчика. Например, если имя файла динамической библиотеки function.so, задайте обработчик function.Handler согласно Table 2.
    • При создании ZIP‑файла разместите файл обработчика в каталоге root, чтобы ваш код мог работать нормально после распаковки.

  5. Нажмите Save.

Экспорт функции

Вы можете экспортировать созданные функции, их код и конфигурации.

  1. Войдите в консоль FunctionGraph и выберите Functions > Function List в панели навигации.
  2. Нажмите имя функции.
  3. На отображаемой странице сведений о функции выберите Operation > Export function в правом верхнем углу.

    Note
    • Пользователь может экспортировать только одну функцию за раз.
    • Экспортируемый пакет ресурсов функции не может превышать 50 МБ.
    • Имя экспортируемого пакета ресурсов функции имеет формат function name+MD5 value of function code.zip.
    • Экспортируемый пакет ресурсов функции не включает информацию об алиасах.
    • Если функция отключена или включена, все её версии будут отключены или включены.
    • Зашифрованные переменные окружения могут быть экспортированы.

Импорт функции

Вы можете импортировать ZIP‑файл, содержащий конфигурации и код, в FunctionGraph.

  1. Войдите в консоль управления FunctionGraph и выберите Functions > Function List в панели навигации.
  2. Нажмите Import Function в правом верхнем углу.
  3. На отображаемой странице выберите существующее приложение или определите новое приложение, а затем загрузите ZIP‑файл.

    Notice

    Если загружаемый ZIP‑файл содержит конфиденциальную информацию (например, пароли учетных записей), зашифруйте конфиденциальную информацию, чтобы предотвратить утечку.

  4. Нажмите OK.

    Note
    • Можно импортировать только одну функцию за раз.
    • Импортируемый пакет ресурсов должен быть ZIP‑пакетом, содержащим файл конфигурации YAML и файл кода, как показано на Figure 1. Размер пакета не может превышать 10 МБ.

      Figure 1 Resource package


    • Пакет ресурсов должен содержать только один файл конфигурации YAML.
    • Поля в файле YAML должны соответствовать тем же требованиям, что и при создании функции.
    • Файл кода указывается через поле codeFilename в файле YAML.
    • Для поля Resource в файле YAML можно указать только одну функцию.
    • При использовании пакета зависимостей, если код в этом пакете можно получить из OBS, импорт проходит успешно. В противном случае импорт завершается с ошибкой.
    • Можно повторно импортировать экспортированный пакет ресурсов, но необходимо указать уникальное имя функции. Версия импортируемой функции по умолчанию — latest.

    Ниже показан пример файла конфигурации YAML. Поля в этом файле описаны в Table 5.

    HcCrmTemplateVersion: v2
    Resources:
    HelloWorld:
    Type: HC::Serverless::Function
    Properties:
    Handler: index.handler
    Runtime: Node.js6.10
    CodeType: inline
    CodeFileName: index.js
    DependencyPkg: ""
    Description: ""
    MemorySize: 128
    Timeout: 3
    Version: latest
    Environment:
    Variables: {}
    Table 5 описание YAML‑файла

    Параметр

    Описание

    HcCrmTemplateVersion

    Фиксированное значение: v2.

    Ресурсы

    Подробные сведения о функции.

    Тип

    Фиксированное значение: HC::Serverless::Function.

    Свойства

    Информация о функции.

    Обработчик

    Обработчик функции.

    Среда выполнения

    Среда выполнения.

    CodeType

    Режим ввода кода, который может быть jar, zip или inline.

    CodeFileName

    Имя файла кода.

    DependencyPkg

    Адрес зависимости.

    Description

    Описание функции.

    MemorySize

    Размер памяти.

    Timeout

    Тайм-аут выполнения функции.

    Version

    Версия функции.

    Environment

    Переменные среды.

Отключение функции

Отключённые функции больше не могут быть выполнены.

  1. Войдите в консоль FunctionGraph и выберите Functions > Function List в панели навигации.
  2. Нажмите имя функции, которую хотите отключить.
  3. На отображаемой странице сведений о функции нажмите Disable в правом верхнем углу.
  4. На отображаемой странице нажмите Yes. Функция отключена.

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

Включение функции

Отключённые функции могут быть включены снова по мере необходимости.

  1. Войдите в консоль FunctionGraph и выберите Functions > Function List в панели навигации.
  2. Нажмите имя функции, которую хотите включить.
  3. На отображаемой странице сведений о функции нажмите Enable в правом верхнем углу.

Удаление функции

Вы можете удалить неиспользуемые функции, чтобы освободить ресурсы.

  1. Войдите в консоль FunctionGraph, и выберите Functions > Function List в панели навигации.
  2. В Function List найдите строку, содержащую целевую функцию, и нажмите Delete в столбце операции. В отображаемом диалоговом окне введите DELETE и нажмите OK.