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

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

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

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

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

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

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

Table 1 Меню inline editor

Menu

Description

File

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

Edit

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

Find

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

Go to

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

View

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

Test

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

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

Изменение кода функции

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

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

    Таблица 2 Информация о коде

    Параметр

    Описание

    Обработчик

    • For a Node.js or Python function, the handler must be named in the format of [file name].[function name], which must contain a period (.). Enter myfunction.handler, which indicates that the file name is myfunction.js (myfunction.py for a Python function and myfunction.java for a Java function) and the function name is 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.

    Инициализатор

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

    ПРИМЕЧАНИЕ:

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

    Зависимости

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

    ПРИМЕЧАНИЕ:

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

    Code Entry Mode

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

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

    Runtime

    Code Entry Mode

    Description

    Node.js

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

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

    Upload ZIP file

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

    Upload file from OBS

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

    Python

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

    Редактировать код в code box. Для получения дополнительной информации см. 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 bucket.

    Upload file from OBS

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

    C#(.NET Core)

    Upload ZIP file

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

    Upload file from OBS

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

    PHP

    Upload ZIP file

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

    Upload file from OBS

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

    Custom

    Edit code inline

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

    Upload ZIP file

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

    Upload file from OBS

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

    Cangjie

    Upload ZIP file

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

    Upload file from OBS

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

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

    Menu

    Description

    File

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

    Edit

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

    Find

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

    Go to

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

    View

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

    Test

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

    Note
    • Java — это компилируемый язык, который не поддерживает редактирование кода в строке. Если ваша функция не использует сторонние зависимости, вы можете загрузить function JAR file. Если ваша функция использует сторонние зависимости, упакуйте зависимости и function JAR file в ZIP file и затем загрузите ZIP file.
    • Если вы редактируете код на 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. На отображаемой странице выберите существующее app или определите новый app, а затем загрузите 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

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

    Окружение

    Переменные окружения.

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

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

  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 в столбце Operation. В отображаемом диалоговом окне введите DELETE и нажмите OK.