Общие вопросы про Serverless Containers
Я могу получить логи моей работы в сервисах?
Да, вы можете запросить информацию о работе с вашими ресурсами из логов сервисов Yandex Cloud. Для этого обратитесь в техническую поддержку
Почему при попытке отправить запрос к API сервиса возвращается ошибка Illegal duration format?
При отправке API-запроса, тело которого содержит параметры в формате type.googleapis.com/google.protobuf.Duration, сервис может вернуть ошибку:
Illegal duration format; duration must end with 's' for type type.googleapis.com/google.protobuf.Duration
Передавать значения в этом формате необходимо с добавлением суффикса s.
Например:
{
"timeout": "120s"
}
Почему возникает ошибка Code 502 Message Error during function invocationпосле миграции приложения в Serverless Containers?
Ошибка с кодом 502 может возникать, когда код в контейнере отправляет HTTP-запрос, который завершается с ошибкой.
Посмотрите журнал выполнения контейнера. Он может содержать полный текст ошибки вместе с упоминанием проблемного HTTP-запроса. Если в журнале нет полезных данных, настройте запись структурированных логов для приложения внутри контейнера.
Примечание
При вызове контейнера через HTTPS некоторые HTTP-заголовки запроса и ответа изменяются, как описано в разделе Фильтрация заголовков сообщений. При миграции приложения в Serverless Containers учитывайте эти изменения.
Почему возникает ошибка user container exec format errorпри попытке вызова контейнера Serverless Containers?
Проблема возникает из-за использования неподходящей среды выполнения.
Пересоберите контейнер с архитектурой --platform=linux/amd64.
Как исправить ошибку нехватки места?
Как может отображаться ошибка
zip I/O error: No space left on device
zip error: Output file write failure (write error on zip file)
===> executing build script
===> will start 'pip3.** install' in /function/code
...
ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device
Максимальный объем хранилища ограничен лимитами Serverless Containers. Лимиты — технические ограничения, обусловленные особенностями архитектуры Yandex Cloud. Изменить лимиты невозможно.
Если для приложения необходимо больше места, создайте виртуальную машину Compute Cloud и разверните приложение на ней.
Как привязать статический IP-адрес к контейнеру?
Привязать статический IP-адрес к контейнеру не получится, потому что контейнер может выполняться на ресурсах с разными адресами.
Если для решения задачи критично использование статического IP-адреса, создайте виртуальную машину Compute Cloud, сделайте ее публичный IP-адрес статическим и установите среду выполнения для используемого вами языка программирования. Далее запускайте выполнение кода на виртуальной машине.
Примечание
Вы также можете использовать API-шлюз для вызова контейнера через собственный домен. Подробнее:
Почему возникает ошибка Permission denied с кодом статуса 403при попытке создать ревизию контейнера?
Как может отображаться ошибка
url: https://console.yandex.cloud/folders/b1g*****************/functions/create-trigger;
message: Authentication problem: permission denied;
status: 403; description: Authentication problem: permission denied; code: GATEWAY_REQUEST_ERROR;
Request ID: ********-****-****-****-************; Trace ID: ****************;
url: https://console.yandex.cloud/folders/b1g*****************//serverless-containers/containers/bba*****************/editor;
message: Authentication problem: permission denied;
status: 403; description: Authentication problem: permission denied; code: GATEWAY_REQUEST_ERROR;
Request ID: ********-****-****-****-************; Trace ID: ****************;
url: https://console.yandex.cloud/folders/b1g*****************/api-gateway/create;
message: Permission denied; status: 403;
description: Permission denied; code: GATEWAY_REQUEST_ERROR;
Request ID: ********-****-****-****-************; Trace ID: ****************;
- Проверьте роли пользователя. Убедитесь, что у сервисного аккаунта есть роль на каталог или облако, позволяющая создавать ресурсы (обычно
editorили выше). - Проверьте статус облака. Облако должно находиться в статусе
ACTIVE.- Если облако в статусе ожидания удаления (
PENDING_DELETION), работа с ресурсами невозможна. Попробуйте отменить удаление облака. - Если облако заблокировано (например, из-за задолженности), необходимо устранить причину блокировки.
- Если облако в статусе ожидания удаления (
В большинстве случаев ошибка возникает, когда у сервисного аккаунта, от имени которого работает ресурс, нет прав на взаимодействие с другими сервисами. Например, если в тексте встречается ошибка Error PERMISSION_DENIED in client lockbox, значит, у сервисного аккаунта нет ролей для доступа к секретам Yandex Lockbox.
Если ошибка возникает при работе со смонтированным бакетом, убедитесь, что сервисному аккаунту назначена роль storage.viewer для чтения данных из бакета или роль storage.uploader для чтения данных из бакета и записи в него.
Если ошибка возникает при работе с триггерами, убедитесь, что у сервисного аккаунта, привязанного к функции, контейнеру или триггеру, есть необходимые роли:
- Вызов функции или контейнера: роль
functions.functionInvokerдля вызова функции или рольserverless-containers.containerInvokerдля вызова контейнера. - Дополнительные роли для триггеров:
- Триггер для Message Queue: роль
ymq.readerна каталог с очередью сообщений. - Триггер для Container Registry: роль
container-registry.images.pullerдля загрузки Docker-образов. - Триггер для Cloud Logging: роль
logging.readerна лог-группу. - Триггер для Data Streams: роль
yds.editorна поток данных. - Триггер для почты: роль
storage.uploaderна бакет, если в нем сохраняются вложения из писем. - (Опционально) Dead Letter Queue: роль
ymq.writerна очередь DLQ для записи сообщений, которые не удалось обработать.
- Триггер для Message Queue: роль
Примечание
Частая причина ошибки — роль назначена сервисному аккаунту на сам сервисный аккаунт. Такая роль не дает доступа к другим ресурсам каталога. Для работы с ними назначьте роль сервисному аккаунту на каталог или конкретный ресурс.