Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По возможности создайте и проверьте проект кода Функций Azure в локальной среде разработки. С помощью основных средств Функций Azure вы получаете локальную версию функций Среды выполнения Azure, которая интегрируется с популярными средствами разработки для интегрированной разработки, отладки и развертываний. Локальные функции могут даже подключаться к динамическим службам Azure.
В этой статье приведены некоторые общие рекомендации по локальной разработке, например работа с файломlocal.settings.json. Он также предоставляет ссылку на руководство, специфичное для среды разработки.
Подсказка
Подробные сведения о том, как разрабатывать функции локально, см. в статьях по связанным руководствам по интегрированной среде разработки.
Локальные среды разработки
Способ разработки функций на локальном компьютере зависит от настроек языка и инструментов. Выберите предпочитаемый язык в верхней части статьи.
Подсказка
Все локальные разработки используют основные средства Azure Functions Core Tools для предоставления среды выполнения Функций для отладки в локальной среде.
Используйте эти среды разработки для локального кода функций на предпочитаемом языке:
| Окружающая среда | Описание |
|---|---|
| Visual Studio | Средства функций Azure включены в рабочую среду разработки AzureVisual Studio. Вы можете компилировать и развернуть код функции C# в Azure в виде библиотеки классов .NET. Включает основные инструменты для локального тестирования. Дополнительные сведения см. в статье "Создание первой функции C# в Azure с помощью Visual Studio". |
| Visual Studio Code | Расширение Функций Azure для Visual Studio Code добавляет поддержку функций в Visual Studio Code. Требуются основные инструменты. Поддерживает разработку в Linux, macOS и Windows. Для получения дополнительных сведений см. статью Создание функции в Azure с помощью Visual Studio Code. |
| Командная строка или терминал | Azure Functions Core Tools предоставляет базовую среду выполнения и шаблоны для создания функций, дающих возможность локальной разработки. Поддерживает разработку в Linux, macOS и Windows. Дополнительные сведения см. в статье "Создание функции C# в Azure из командной строки". |
| Окружающая среда | Описание |
|---|---|
| Maven | Архетип Maven использует основные средства для разработки функций Java. Поддерживает разработку в Linux, macOS и Windows. Дополнительные сведения см. в статье Создание первой функции с помощью Java и Maven. |
| Visual Studio Code | Расширение Функций Azure для Visual Studio Code добавляет поддержку функций в Visual Studio Code. Требуются основные инструменты. Поддерживает разработку в Linux, macOS и Windows. Для получения дополнительных сведений см. статью Создание функции в Azure с помощью Visual Studio Code. |
| IntelliJ IDEA | Архетип Maven и основные средства позволяют разрабатывать функции с помощью IntelliJ. Дополнительные сведения см. в статье "Создание первой функции Java в Azure с помощью IntelliJ". |
| Eclipse | Архетип Maven и основные средства позволяют разрабатывать функции с помощью Eclipse. Дополнительные сведения см. в статье "Создание первой функции Java в Azure с помощью Ecplise". |
| Окружающая среда | Описание |
|---|---|
| Visual Studio Code | Расширение Функций Azure для Visual Studio Code добавляет поддержку функций в Visual Studio Code. Требуются основные инструменты. Поддерживает разработку в Linux, macOS и Windows. Для получения дополнительных сведений см. статью Создание функции в Azure с помощью Visual Studio Code. |
| Командная строка или терминал | Azure Functions Core Tools предоставляет базовую среду выполнения и шаблоны для создания функций, дающих возможность локальной разработки. Поддерживает разработку в Linux, macOS и Windows. Дополнительные сведения см. в статье "Создание функции Node.js в Azure" из командной строки. |
| Окружающая среда | Описание |
|---|---|
| Visual Studio Code | Расширение Функций Azure для Visual Studio Code добавляет поддержку функций в Visual Studio Code. Требуются основные инструменты. Поддерживает разработку в Linux, macOS и Windows. Для получения дополнительных сведений см. статью Создание функции в Azure с помощью Visual Studio Code. |
| Командная строка или терминал | Azure Functions Core Tools предоставляет базовую среду выполнения и шаблоны для создания функций, дающих возможность локальной разработки. Поддерживает разработку в Linux, macOS и Windows. Дополнительные сведения см. в статье "Создание функции PowerShell в Azure" из командной строки. |
| Окружающая среда | Описание |
|---|---|
| Visual Studio Code | Расширение Функций Azure для Visual Studio Code добавляет поддержку функций в Visual Studio Code. Требуются основные инструменты. Поддерживает разработку в Linux, macOS и Windows. Для получения дополнительных сведений см. статью Создание функции в Azure с помощью Visual Studio Code. |
| Командная строка или терминал | Azure Functions Core Tools предоставляет базовую среду выполнения и шаблоны для создания функций, дающих возможность локальной разработки. Поддерживает разработку в Linux, macOS и Windows. Дополнительные сведения см. в статье "Создание функции Python в Azure" из командной строки. |
Каждая из этих локальных сред разработки позволяет создавать проекты приложений-функций и использовать предопределенные шаблоны функций для создания новых функций. В каждой среде используются основные средства, чтобы можно было протестировать и отладить функции в реальной среде выполнения Функций на собственном компьютере так же, как и любое другое приложение. Вы также можете опубликовать в Azure проект приложения-функции с помощью любой из этих сред.
Файлы локального проекта
Каталог проекта Functions содержит следующие файлы в корневой папке проекта независимо от языка:
| Имя файла | Описание |
|---|---|
| host.json | Дополнительные сведения см. в справке по файлу host.json. |
| local.settings.json | Параметры, используемые Core Tools при запуске на локальной машине, включая параметры приложения. Чтобы узнать больше, см. файл локальных настроек. |
| .gitignore | Предотвращает случайную публикацию файла local.settings.json в репозитории Git. Чтобы узнать больше, см. файл локальных настроек. |
| .vscode\extensions.json | Файл параметров, используемый при открытии папки проекта в Visual Studio Code. |
Другие файлы в проекте зависят от языка и конкретных функций. Дополнительные сведения см. в руководстве разработчика по языку.
Файл с локальными параметрами
В файле local.settings.json хранятся параметры приложения и настройки, используемые локальными средствами разработки. Используйте параметры в local.settings.json файле только при локальном запуске проекта. При публикации проекта в Azure добавьте все необходимые параметры в параметры приложения для приложения-функции.
Внимание
local.settings.json Так как файл может содержать секреты, такие как строки подключения, будьте осторожны при фиксации его в системе управления версиями. Средства, поддерживающие функции, предоставляют способы синхронизации параметров в local.settings.json файле с параметрами приложения в приложении-функции, в котором развертывается проект.
Файл local.settings.json имеет эту структуру:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
При локальном выполнении проектов поддерживаются следующие параметры:
| Настройка | Описание |
|---|---|
IsEncrypted |
Если этот параметр задан true, все значения шифруются с помощью локального ключа компьютера. Используется с командами func settings. Значение по умолчанию: false. Возможно, вам потребуется зашифровать файл local.settings.json на локальном компьютере, если он содержит секреты, например строки подключения службы. Хост автоматически расшифровывает настройки при запуске. Перед чтением локально зашифрованных параметров используйте команду func settings decrypt. |
Values |
Коллекция параметров приложения, используемых при локальном выполнении проекта. Эти пары "ключ — значение" (строковые выражения) соответствуют параметрам приложения-функции в Azure, например AzureWebJobsStorage. Многие триггеры и привязки имеют свойство, относящееся к параметру строки подключения приложения, например Connection для триггера хранилища BLOB. Для таких свойств требуется определить параметр приложения в массиве Values. Список часто используемых параметров см. в следующей таблице. Значения должны быть строками, а не объектами JSON или массивами. Имена параметров не могут включать двойное подчеркивание ( __) и не должны включать двоеточие (:). Символы двойного подчеркивания зарезервированы средой выполнения, а двоеточие зарезервировано для поддержки внедрения зависимостей. |
Host |
Параметры в этом разделе служат для настройки хост-процесса Функций при выполнении проектов в локальной среде. Эти параметры отделены от параметров host.json, которые также применяются при выполнении проектов в Azure. |
LocalHttpPort |
Задает порт по умолчанию, используемый при выполнении локального узла Функций (func host start и func run). Аргумент командной строки --port имеет приоритет над этим параметром. Например, при запуске в интегрированной среде разработки Visual Studio можно изменить номер порта, перейдя в окно "Свойства проекта —> отладка" и явно указав номер порта в команде, которую можно указать в host start --port <your-port-number> поле "Аргументы приложения". |
CORS |
Определяет источники, для которых разрешен общий доступ к ресурсам независимо от источника (CORS). Источники указываются в виде разделенного запятыми списка без пробелов. Допускается подстановочное значение (*), разрешающее запросы из любого источника. |
CORSCredentials |
Если задано значение true, разрешает запросы withCredentials. |
ConnectionStrings |
Коллекция. Не применяйте эту коллекцию для строк подключения, используемых привязками функций. Эта коллекция используется только платформами, которые обычно получают строки подключений из раздела ConnectionStrings в файле конфигурации, как например Entity Framework. Строки подключения, содержащиеся в этом объекте, добавляются в среду с типом поставщика System.Data.SqlClient. Элементы этой коллекции не публикуются в Azure с другими параметрами приложения. Необходимо явным образом добавить эти значения в коллекцию Connection strings в настройках приложения-функции. Если вы создаете SqlConnection в коде функции, сохраните значение строки подключения вместе с другими подключениями в разделе Параметры приложения на портале. |
Следующие параметры приложения можно включать в массив Values при локальном запуске.
| Настройка | Значения | Описание |
|---|---|---|
AzureWebJobsStorage |
Строка подключения учетной записи хранения илиUseDevelopmentStorage=true |
Содержит строку подключения для учетной записи хранения Azure Требуется при использовании триггеров, отличающихся от HTTP. Для получения дополнительной информации см. справочник по AzureWebJobsStorage.При установке локального эмулятора Azurite и задании AzureWebJobsStorage значения UseDevelopmentStorage=true, в Core Tools будет использоваться эмулятор. Дополнительные сведения см. в эмуляторе локального хранилища. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true|false |
Чтобы отключить функцию при локальном выполнении, добавьте в коллекцию "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true", где <FUNCTION_NAME> — имя функции. Чтобы узнать больше, см. Как отключить функции в Функциях Azure. |
FUNCTIONS_WORKER_RUNTIME |
dotnetdotnet-isolatednodejavapowershellpython |
Указывает целевой язык среды выполнения Функций. Требуется для среды выполнения Функций версии 2.x и выше. Основные инструменты создают этот параметр для проекта. См. справочный материал по FUNCTIONS_WORKER_RUNTIME. |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
Указывает, что PowerShell 7 будет использоваться при локальном запуске. Если параметр не задан, используется PowerShell Core 6. Этот параметр используется только при локальном запуске. При запуске в Azure версия среды выполнения PowerShell определяется параметром конфигурации сайта powerShellVersion, который можно настроить на портале. |
Сведения об использовании значений из массива values в качестве переменных среды в коде функции см. в руководстве разработчика по переменным среды .
Сведения об использовании значений из массива values в качестве переменных среды в коде функции см. в руководстве разработчика по переменным среды .
Сведения об использовании значений из массива values в качестве переменных среды в коде функции см. в руководстве разработчика по переменным среды .
Сведения об использовании значений из массива values в качестве переменных среды в коде функции см. в руководстве разработчика по переменным среды .
Синхронизация параметров
При локальной разработке функций включите все локальные параметры, необходимые приложению, в параметры приложения приложения-функции, где развертывается код. Возможно, вам также потребуется скачать текущие параметры из приложения-функции в локальный проект. Хотя параметры приложения можно настроить вручную в портал Azure, следующие средства также позволяют синхронизировать параметры приложения с локальными параметрами в проекте:
Триггеры и привязки
При локальной разработке функций рассмотрите поведение триггеров и привязки. Для триггеров HTTP можно вызвать конечную точку HTTP на локальном компьютере с помощью http://localhost/. Для функций, не активированных по протоколу HTTP, используйте несколько вариантов для локального выполнения:
- Строки подключения, предназначенные для динамических служб Azure, можно использовать для тестирования привязок во время локальной разработки. Добавьте соответствующие параметры строки подключения в массив
Valuesв файле local.settings.json. Когда вы это делаете, локальные запуски во время тестирования могут повлиять на продуктовые службы. Вместо этого рекомендуется настроить отдельные динамические службы для использования во время разработки и тестирования, а затем переключиться на разные службы во время рабочей среды. - Для триггеров на основе хранилища используйте локальный эмулятор хранилища.
- Запустите функции триггера, отличные от HTTP, вручную с помощью специальных конечных точек администратора. Для получения дополнительной информации см. статью Вручную запустить функцию, не являющуюся HTTP-триггером.
Во время локального тестирования необходимо локально запустить программу-хост, предоставляемую Core Tools (func.exe). Дополнительные сведения см. в разделе Функции Azure Core Tools.
Средства тестирования HTTP
Во время разработки вы можете вызвать любую из конечных точек функции из веб-браузера, когда они поддерживают метод HTTP GET. Однако для других методов HTTP, поддерживающих передачу данных, например POST или PUT, необходимо использовать средство тестирования HTTP для создания и отправки этих HTTP-запросов в конечные точки функции.
Внимание
В сценариях, когда запросы должны включать конфиденциальные данные, обязательно используйте средство, которое защищает данные и снижает риск предоставления конфиденциальных данных общественности. Конфиденциальные данные, которые следует защитить, могут включать учетные данные, секреты, маркеры доступа, ключи API, данные геолокации и персональные данные.
Обеспечьте безопасность данных, выбрав средство тестирования HTTP, которое работает в автономном режиме или локально, не синхронизирует данные с облаком и не требует входа в учетную запись в Интернете. Некоторые средства также могут защитить данные от случайного воздействия, реализуя определенные функции безопасности.
Избегайте использования средств, которые централизованно хранят журнал HTTP-запросов (включая конфиденциальную информацию), не соблюдайте рекомендации по безопасности или не соблюдайте проблемы конфиденциальности данных.
Рекомендуется использовать одно из этих средств для безопасной отправки HTTP-запросов в конечные точки функций:
- Visual Studio Code с расширением HTTP-файла из Visual Studio Marketplace, например REST Client
- Visual Studio поддерживает HTTP-файлы, начиная с версии 17.8
- PowerShell Invoke-RestMethod
- Microsoft Edge — средство сетевой консоли
- Бруно
- curl
Эмулятор локального хранилища
Во время локальной разработки можно использовать локальный эмулятор Azurite при тестировании функций с привязками службы хранилища Azure (хранилище очередей, хранилище BLOB-объектов и хранилище таблиц), не подключаясь к службам удаленного хранилища. Azurite интегрируется с Visual Studio Code и Visual Studio, а также можно запустить его из командной строки с помощью npm. Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки локальной службы хранилища Azure.
Следующий параметр в Values коллекции файла local.settings.json указывает локальному узлу Функций использовать Azurite для подключения по умолчанию AzureWebJobsStorage :
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
При использовании этого значения параметра любой триггер или привязка Azure Storage, использующий AzureWebJobsStorage в качестве подключения, подключается к Azurite при выполнении локально. При использовании эмуляции хранилища во время локального выполнения следует учитывать следующие рекомендации.
- Необходимо установить и запустить Azurite.
- Перед публикацией в Azure необходимо проверить фактическое подключение хранилища к службам Azure.
- При публикации проекта не опубликуйте
AzureWebJobsStorageпараметр какUseDevelopmentStorage=true. В Azure параметрAzureWebJobsStorageвсегда должен быть строкой подключения учетной записи хранения, используемой вашим приложением-функцией. Дополнительные сведения см. в разделеAzureWebJobsStorage.
Связанные статьи
- Дополнительные сведения о локальной разработке функций с помощью Visual Studio см. в статье "Разработка функций Azure с помощью Visual Studio".
- Дополнительные сведения о локальной разработке функций с помощью Visual Studio Code на компьютере Mac, Linux или Windows см. в статье "Разработка функций Azure с помощью Visual Studio Code".
- Дополнительные сведения о разработке функций из командной строки или терминала см. в статье Работа с инструментами Azure Functions Core Tools.