Вызвать контейнер асинхронно
Примечание
Функциональность находится на стадии Preview.
Настройте асинхронный вызов
-
В консоли управления
перейдите в каталог, в котором находится контейнер. -
Выберите сервис Serverless Containers.
-
Выберите контейнер, ревизию которого хотите создать.
-
Перейдите на вкладку Редактор.
-
В блоке Асинхронный вызов:
- Включите асинхронный вызов.
- Укажите сервисный аккаунт для асинхронного вызова, у которого есть роль
serverless-containers.containerInvoker.
-
Нажмите Создать ревизию.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы настроить асинхронный вызов, выполните команду:
yc serverless container revision deploy \
--container-name <имя_контейнера> \
--image <URL_Docker-образа> \
--service-account-id <идентификатор_сервисного_аккаунта> \
--async-service-account-id <идентификатор_сервисного_аккаунта_для_асинхронного_вызова>
Где:
--service-account-id— идентификатор сервисного аккаунта, у которого есть рольserverless-containers.editorили выше.--async-service-account-id— идентификатор сервисного аккаунта для асинхронного вызова, у которого есть рольserverless-containers.containerInvoker.
Результат:
done (6s)
id: bba1r76l8f73********
container_id: bbado1g2mtqj********
created_at: "2025-09-08T12:03:32.797Z"
image:
image_url: cr.yandex/crpmfvcgnl26********/ubuntu:hello
image_digest: sha256:96ab2d89a82fcfc63e24b9ef26de8b3b11ed1043cec41d4359a8de8b********
resources:
memory: "134217728"
cores: "1"
core_fraction: "100"
execution_timeout: 3s
concurrency: "1"
service_account_id: ajelprpohp7r********
status: ACTIVE
log_options:
folder_id: b1g681qpemb4********
runtime:
http: {}
async_invocation_config:
service_account_id: ajeaim70pe1u********
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы настроить асинхронный вызов:
-
Откройте файл конфигурации Terraform и добавьте к описанию контейнера блок
async_invocation:resource "yandex_serverless_container" "test-container" { name = "<имя_контейнера>" memory = "<объем_RAM>" execution_timeout = "<максимальное_время_выполнения>" service_account_id = "<идентификатор_сервисного_аккаунта>" image { url = <путь_к_образу_контейнера> } async_invocation { service_account_id = "<идентификатор_сервисного_аккаунта>" } }Где:
-
async_invocation— параметры асинхронного вызова:service_account_id— сервисный аккаунт, у которого есть рольserverless-containers.containerInvoker.
Более подробную информацию о параметрах ресурса
yandex_serverless_containerсм. в документации провайдера. -
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Проверить изменение контейнера и его настройки можно в консоли управления
yc serverless serverless-container revision get <идентификатор_ревизии_контейнера>
Чтобы настроить асинхронный вызов, воспользуйтесь методом REST API deployRevision для ресурса Container или вызовом gRPC API ContainerService/DeployRevision.
Вызовите контейнер
Вызовите контейнер по HTTP, указав при вызове заголовок X-Ycf-Container-Integration-Type: async.