Сделать функцию публичной
Чтобы любой пользователь мог вызвать функцию без передачи заголовка авторизации, сделайте ее публичной.
- В консоли управления
перейдите в каталог, в котором находится функция. - Выберите сервис Cloud Functions.
- Выберите функцию, которую хотите сделать публичной.
- На странице Обзор включите опцию Публичная функция.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы сделать функцию публичной, выполните команду:
yc serverless function allow-unauthenticated-invoke <имя_функции>
Результат:
done (1s)
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций 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.