2016-09-08 2 views
0

Я пытаюсь создать Azure-функцию, которая запускается http-запросом, а затем выбирает данные из базы данных SQL, затем возвращает данные.Доступ к базе данных SQL от Azure Function в NodeJS

Я пытался создать простой пример, который просто подключается к базе данных, следуя пример здесь: https://msdn.microsoft.com/library/mt715784.aspx Это не Azure функции конкретное, но я думал, что он должен работать:

var Connection = require('tedious').Connection; 
var config = { 
    userName: 'userName', 
    password: 'password', 
    server: 'databaseServer.database.windows.net', 
    options: {encrypt: true, database: 'AdventureWorks'} 
}; 

module.exports = function(context, req, saasSql) { 

    var connection = new Connection(config); 
    connection.on('connect', function(err) { 
     if(err) { 
      context.log(err); 
     } else { 
      context.log("Connected"); 

      context.res = { 
       body: 'Connected' 
      }; 
      context.done(); 
     } 
    }); 
}; 

Однако когда это выполняется (запускается в консоли администратора). Я получаю сообщение журнала, чтобы сказать, что функция началась, а затем ничего больше в журналах. В окне вывода внизу отображается состояние: 502 Bad Gateway и это сообщение: Аутентификация включена для приложения-функции. Перед запуском функции отключите проверку подлинности.

Я предполагаю, что это потому, что я не вызываю context.done(), поскольку аутентификация отключена для этой функции. Я не могу понять, как получить информацию об ошибке и т. Д. Из попытки подключения, я также попытался привязать к событию ошибки, но ничего не запущено.

UPDATE

Сообщение об ошибке была ошибкой в ​​коде Azure Функции и показывал неправильную ошибку. Тем не менее, приведенный выше код все еще не запускается (и ошибка не возникает). Это нормально, когда я создаю локальный сервер узлов и запускаю этот путь, поэтому кажется, что проблема связана с работой в структуре Azure Functions. Есть ли способ подключиться к базе данных SQL от Azure Function?

ответ

0

Сообщение об ошибке "Authentication is enabled for the function app. Disable authentication before running the function." указывает, что вы включили Authentication/Authorization feature вашего приложения-приложения. Это предотвратит доступ портала к вашей функции Http, поскольку требуется аутентификация. Обратите внимание, что эта аутентификация отличается от аутентификации уровня функции, которую вы настраиваете на портале функций.

Таким образом, в настоящее время единственным способом для этого является то, что вы должны делать это, как говорится в сообщении об ошибке: отключите функцию уровня приложения Apph. У нас есть элемент отслеживания в нашем репо, чтобы улучшить это (issue here).

+0

Аутентификация уже отключена для этой функции. Я тестировал это, и кажется, что сообщение отображается также, когда функция никогда не вызывается() Я предполагаю, что Azure отключает ее после простоя в течение определенного периода времени. – smuff

+0

Это сообщение об ошибке довольно специфично для описанного мной сценария. Если вы говорите, что у вас нет активированного веб-приложения Authz, и это все еще происходит, зарегистрируйте ошибку здесь: https://github.com/projectkudu/AzureFunctionsPortal/issues. – mathewc

+0

[Проблема поднята] (https://github.com/projectkudu/AzureFunctionsPortal/issues/548), auth отключен для веб-приложения. Есть ли у вас примеры подключения к базе данных SQL из функции узла. Я пробовал утомительный подход выше, а также интеграцию, но не могу заставить работать. – smuff