-
Notifications
You must be signed in to change notification settings - Fork 19
Description
При попытке загрузить 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
Шаги для воспроизведения:
- Создать cloud function с кодом, подобным тому, что находится в указанном репозитории.
- В файле go.mod подключить зависимости, особенно обращая внимание на github.com/yandex-cloud/go-sdk и github.com/ydb-platform/ydb-go-sdk
- Попытаться собрать и загрузить Cloud Function.
Ожидаемое поведение:
Сборка лямбды должна проходить корректно, без ошибки «signal: killed», либо должен быть предоставлен способ оптимизировать сборку под ограниченные ресурсы билдера.
Вопросы и предложения:
- Возможно ли оптимизировать сборку/ссылку с ydb-go-sdk таким образом, чтобы понизить требования к ресурсам?
- Может ли проблема быть связана с особенностями компиляции/линковки, требующими слишком много памяти?
Замечания:
- Известно, что можно использовать REST, но в SDK удобно применять credentials provider (InstanceServiceAccount), особенно в контексте Cloud Functions.
- Предлагать собирать вручную *.so файлы не стоит — в таком случае лучше использовать serverless container.