Сделать функцию публичной
Чтобы любой пользователь мог вызвать функцию без передачи заголовка авторизации, сделайте ее публичной.
- В консоли управления
перейдите в каталог, в котором находится функция. - Выберите сервис Cloud Functions.
- Выберите функцию, которую хотите сделать публичной.
- На странице Обзор включите опцию Публичная функция.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы сделать функцию публичной, выполните команду:
yc serverless function allow-unauthenticated-invoke <имя_функции>
Результат:
done (1s)
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы сделать функцию публичной:
-
Опишите в конфигурационном файле параметры прав доступа к функции:
resource "yandex_function_iam_binding" "function-iam" { function_id = "<идентификатор_функции>" role = "functions.functionInvoker" members = [ "system:allUsers", ] }Где:
-
function_id— идентификатор функции. Чтобы узнать идентификатор функции, получите список функций в каталоге. -
role— роль, которую нужно назначить. -
members— список пользователей, которым нужно назначить роль.Чтобы функция стала публичной, назначьте роль
functions.functionInvokerвсем неавторизованным пользователям (публичной группеAll users).
Более подробную информацию о параметрах ресурса
yandex_function_iam_bindingсм. в документации провайдера. -
-
Проверьте конфигурацию командой:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминал слово
yesи нажмите Enter.Проверить назначение роли функции можно в консоли управления
или с помощью команды CLI:yc serverless function list-access-bindings <имя_функции>
Чтобы сделать функцию публичной, воспользуйтесь методом REST API setAccessBindings для ресурса Function или вызовом gRPC API FunctionService/SetAccessBindings.