Skip to content

Ошибка сборки в Cloud Function: нехватка ресурсов (signal: killed) при использовании yandex-cloud/go-sdk #26

@MikhailChe

Description

@MikhailChe

При попытке загрузить Cloud Function с использованием пакета go-sdk, сборщик (builder) не справляется с выделенными ресурсами и процесс сборки завершается с ошибкой. Проблема воспроизводится при стандартном сценарии использования: функция реализует вызов Vision OCR (именно ради него я подключал SDK) и затем отправляет результат в сторонний сервис или очередь (telegram в моем случае).

История:
Аналогичная проблема обсуждалась в #23. Проблема возникает при сборке, когда код функции включает в себя зависимости:
• github.com/ydb-platform/ydb-go-sdk/v3
• github.com/ydb-platform/ydb-go-yc
• и другие (см. go.mod ниже).

Пример ошибки сборки:

===> executing build script  
go: downloading github.com/mikhailche/telebot v0.0.0-20230920205458-6d5a982b8ef0  
...  
go: downloading github.com/hashicorp/errwrap v1.0.0  
mikhailche/botcomod: /function/runtime/pkg/tool/linux_amd64/link: signal: killed  
===> execution failed: exit status 1  

Дополнительная информация:
Пример кода доступен по ссылке:
https://github.com/Mikhailche/izumrudny-bot

Прямые зависимости, указанные в go.mod:
• github.com/google/uuid v1.6.0
• github.com/mikhailche/telebot v0.0.0-20230920205458-6d5a982b8ef0
• github.com/stretchr/testify v1.9.0 (используется только в тестах, не включается в лямбду)
• github.com/ydb-platform/ydb-go-sdk/v3 v3.43.0
• github.com/yandex-cloud/go-sdk v0.0.0-20250210144447-399a857b9c4e
• go.uber.org/zap v1.24.0

Шаги для воспроизведения:

  1. Создать cloud function с кодом, подобным тому, что находится в указанном репозитории.
  2. В файле go.mod подключить зависимости, особенно обращая внимание на github.com/yandex-cloud/go-sdk и github.com/ydb-platform/ydb-go-sdk
  3. Попытаться собрать и загрузить Cloud Function.

Ожидаемое поведение:
Сборка лямбды должна проходить корректно, без ошибки «signal: killed», либо должен быть предоставлен способ оптимизировать сборку под ограниченные ресурсы билдера.

Вопросы и предложения:

  • Возможно ли оптимизировать сборку/ссылку с ydb-go-sdk таким образом, чтобы понизить требования к ресурсам?
  • Может ли проблема быть связана с особенностями компиляции/линковки, требующими слишком много памяти?

Замечания:

  • Известно, что можно использовать REST, но в SDK удобно применять credentials provider (InstanceServiceAccount), особенно в контексте Cloud Functions.
  • Предлагать собирать вручную *.so файлы не стоит — в таком случае лучше использовать serverless container.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions