Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Обзор
      • Обзор
      • Интерфейс Function
      • Интерфейс YcFunction
      • Класс HttpServlet
      • Spring Boot
    • Управление зависимостями
    • Обработчик запросов
    • Контекст вызова
    • Журналирование
    • Обработка ошибок
    • Использование SDK
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы
  1. Разработка на Java
  2. Модель программирования
  3. Интерфейс YcFunction

Использование интерфейса YcFunction для обработчика на Java

Статья создана
Yandex Cloud
Обновлена 21 апреля 2025 г.

Чтобы создать обработчик на Java, вы можете реализовать интерфейс YcFunction. Для этого дополнительно добавьте SDK в зависимости.

Пример корректного обработчика:

import yandex.cloud.sdk.functions.YcFunction;
import yandex.cloud.sdk.functions.Context;

public class Handler implements YcFunction<Integer, String> {
  @Override
  public String handle(Integer i, Context c) {
    return String.valueOf(i);
  }
}

Важно

Указывайте два значения для параметров типа YcFunction: первый тип является типом входного аргумента, второй — типом возвращаемого значения. Для метода handle не забудьте передать второй аргумент — контекст вызова.

Примеры некорректных обработчиков:

import yandex.cloud.sdk.functions.YcFunction;
import yandex.cloud.sdk.functions.Context;
// у YcFunction указан лишь один тип параметра
// у Handler не должно быть типов-параметров (см. требования к обработчику)
public class Handler<T> implements YcFunction<T, Integer> {
  @Override
  public Integer handle(T i, Context c) {
    return 2;
  }
}
import yandex.cloud.sdk.functions.YcFunction;
import yandex.cloud.sdk.functions.Context;
// у YcFunction не указаны оба типа параметра
public class Handler implements YcFunction {
  @Override
  public Object apply(Object i, Context c) {
    return i;
  }
}

Можно использовать любые классы в качестве входного и возвращаемого типов.

Примечание

Поля этих классов могут иметь любые модификаторы доступа. Если поле непубличное, писать для него getter/setter необязательно.

Пример: вывод информации о функцииПример: вывод информации о функции

Следующая функция получает на вход число, выводит данные о функции, взятые из контекста вызова, в журнал выполнения и возвращает данные о том, является ли переданное число четным.

Важно

Функцию необходимо вызывать с помощью Yandex Cloud CLI или с помощью HTTP-запроса с параметром ?integration=raw.

Файл Handler.java:

import yandex.cloud.sdk.functions.YcFunction;
import yandex.cloud.sdk.functions.Context;

public class Handler implements YcFunction<Integer, Boolean> {

  private String format(String f, String s) {
    return String.format(f, s);
  }

  @Override
  public Boolean handle(Integer number, Context c) {
    System.out.println(format("Function name: %s", c.getFunctionName()));
    System.out.println(format("Function version: %s", c.getFunctionVersion()));
    // если не выбран сервисный аккаунт, напечатается пустая строка
    System.out.println(format("Service account token: %s", c.getTokenJson()));
    return number % 2 == 0;
  }
}

Пример входных данных:

41

В журнале будет напечатано:

Function name: <название_функции>
Function version: <идентификатор_версии_функции>
Service account token: <токен_сервисного_аккаунта>

Возвращаемая строка:

false

Была ли статья полезна?

Предыдущая
Интерфейс Function
Следующая
Класс HttpServlet
Проект Яндекса
© 2025 ООО «Яндекс.Облако»