#azure #azure-machine-learning-service #azure-container-instances
#azure #azure-machine-learning-service #azure-container-instances
Вопрос:
Я могу развернуть службу прогнозирования машинного обучения Azure в своей рабочей области ws
, используя синтаксис
aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,
memory_gb=8,
tags={"method" : "some method"},
description='Predict something')
и затем
service = Webservice.deploy_from_image(deployment_config = aciconfig,
image = image,
name = service_name,
workspace = ws)
как описано в документации.
Однако при этом сервис становится общедоступным, а это не совсем оптимально.
Какой самый простой способ защитить службу ACI? Я понимаю, что передача auth_enabled=True
параметра может выполнить задание, но тогда как я могу поручить клиенту (скажем, использующему curl
или Postman) использовать службу впоследствии?
Ответ №1:
Смотрите здесь пример (на C #). Когда вы включите аутентификацию, вам нужно будет отправить ключ API в заголовке «Авторизация» в HTTP-запросе:
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authKey);
Смотрите здесь, как получить ключ.
Комментарии:
1. Если у нас есть несколько пользователей и / или приложений, которые будут использовать API, мы не должны предоставлять им всем один и тот же первичный ключ API. Как это сделать?
2. Вы могли бы, например, поставить управление Azure API впереди. learn.microsoft.com/en-us/azure/api-management
3. Да, я уже просмотрел Azure API Management, но было неясно, куда передавать основной токен. Не могли бы вы немного уточнить? Ценю это.
4. Смотрите здесь, как добавить HTTP-заголовок: learn.microsoft.com/en-us/azure/api-management/… Итак, вы должны выполнить авторизацию пользователя в API management, а затем заставить API mgmt вводить один и тот же первичный ключ для всех запросов к вашей серверной службе ML
Ответ №2:
Сначала извлеките первичный и вторичный ключи с помощью синтаксиса (Python), подобного
service.get_keys()
Если вы используете curl
, синтаксис может выглядеть следующим образом:
curl -H "Content-Type:application/json" -H "Authorization: Bearer <authKey>" -X POST -d '{"data": [some data]}' http://<url>:<port>/<method>
где <authKey>
находится один из ключей, полученных выше.