Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как использовать средства Функции Azure Core, чтобы создать первую функцию в контейнере Linux на локальном компьютере, проверить функцию локально, а затем опубликовать контейнерную функцию в реестре контейнеров. Из реестра контейнеров можно легко развернуть контейнерные функции в Azure.
Полный пример развертывания контейнерных функций в Azure, включающих действия, описанные в этой статье, см. в одной из следующих статей:
- Создайте свою первую контейнеризированную функцию Azure в Azure Container Apps
- Создание первой контейнеризованной функции Azure
Вы также можете создать приложение-функцию в портал Azure с помощью существующего контейнерного приложения-функции из реестра контейнеров. Дополнительные сведения см. в разделе создание в портале Azure с использованием контейнеров.
Выберите язык разработки
Сначала вы используете средства Функций Azure для создания кода проекта в качестве приложения-функции в контейнере Docker с помощью базового образа Linux для конкретного языка. Выберите язык в верхней части статьи.
Core Tools автоматически создает Файл Dockerfile для проекта, который использует самую актуальную версию правильного базового образа для языка функций. Следует регулярно обновлять контейнер из последнего базового образа и повторно развертывать его из обновленной версии контейнера. Дополнительные сведения см. в разделе "Создание контейнерных приложений-функций".
Предварительные требования
Перед началом необходимо иметь следующие требования:
Установите SDK .NET.
Установите основные средства Azure Functions Core Tools версии 4.0.5198 или более поздней версии.
- Установите версию 4.x инструментов Azure Functions Core.
- Установите версию Node.js , поддерживаемую функциями Azure.
- Установите версию Python, поддерживаемую функциями Azure.
- Установите SDK .NET.
Установите версию пакета разработчиков Java , поддерживаемого функциями Azure.
Установите Apache Maven версии 3.0 или более поздней.
- Установите Azure CLI версии 2.4 или более поздней.
Если у вас нет подписки Azure, создайте бесплатную учетную запись перед началом работы.
Чтобы опубликовать образ приложения-функции, создаваемого в реестре контейнеров, вам потребуется идентификатор Docker и Docker Desktop , работающий на локальном компьютере. Если у вас нет идентификатора Docker, можно создать учетную запись Docker.
Кроме того, необходимо выполнить раздел создание реестра контейнеров в кратком руководстве по реестрам контейнеров. Запишите полное доменное имя сервера для входа.
Создание и активация виртуальной среды
В подходящей папке выполните следующие команды, чтобы создать и активировать виртуальную среду с именем .venv. Обязательно используйте одну из версий Python, поддерживаемых Функции Azure.
python -m venv .venv
source .venv/bin/activate
Если пакет venv не установлен Python для вашего дистрибутива Linux, выполните следующую команду:
sudo apt-get install python3-venv
Все последующие команды будут выполняться в этой активированной виртуальной среде.
Создайте и протестируйте проект локальных функций
Чтобы создать проект приложения-функции в текущей папке, в терминале или в командной строке выполните следующую команду для выбранного языка:
func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker
В пустой папке выполните следующую команду, чтобы создать проект Функций из архетипа Maven:
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker
Параметр -DjavaVersion указывает среде выполнения, какую версию Java следует использовать. Используйте -DjavaVersion=11, чтобы функции выполнялись на Java 11. Если не указать параметр -DjavaVersion, Maven будет по умолчанию использовать Java 8. Дополнительные сведения см. в разделе Версии Java.
Внимание
Чтобы выполнить задания из этой статьи, переменной среды JAVA_HOME необходимо присвоить расположение установки правильной версии JDK.
Maven запрашивает значения, необходимые для завершения создания проекта при развертывании. Следуйте инструкциям и укажите следующее:
| Подсказка | значение | Описание |
|---|---|---|
| groupId | com.fabrikam |
Это значение уникально идентифицирует проект среди всех остальных. Оно должно соответствовать правилам именования пакетов для Java. |
| artifactId | fabrikam-functions |
Это значение содержит имя JAR-файла, без номера версии. |
| версия | 1.0-SNAPSHOT |
Выберите значение по умолчанию. |
| пакета | com.fabrikam.functions |
Это значение указывает на Java-пакет для генерируемого кода функции. Используйте значение по умолчанию. |
Введите Y или нажмите Enter для подтверждения.
Maven создаст файлы проекта в новой папке с именем artifactId, то есть fabrikam-functions в нашем примере.
Параметр --docker создает Dockerfile для проекта, который определяет подходящий контейнер для использования с Функцией Azure и с выбранной средой выполнения.
Перейдите в папку проекта:
cd fabrikam-functions
Добавьте функцию в проект с помощью следующей команды, где аргумент --name — это уникальное имя функции, а аргумент --template указывает триггер функции.
func new создает файл кода C# в проекте.
func new --name HttpExample --template "HTTP trigger"
Добавьте функцию в проект с помощью следующей команды, где аргумент --name — это уникальное имя функции, а аргумент --template указывает триггер функции. Командаfunc new создает вложенную папку с именем функции. Эта папка содержит файл конфигурации с именем function.json.
func new --name HttpExample --template "HTTP trigger"
Чтобы протестировать функцию локально, запустите локальный узел среды выполнения Функций Azure в корневой папке проекта.
Чтобы убедиться, что функция может вызываться позже при размещении в Docker, убедитесь, что уровень авторизации задан AuthorizationLevel.Anonymousили установлен, если он еще не настроен.
func start
func start
npm install
npm start
mvn clean package
mvn azure-functions:run
После того как вы увидите в выходных данных конечную точку HttpExample, перейдите к ней. В выходных данных ответа должно появиться приветственное сообщение.
После того, как вы увидите, что конечная точка HttpExample записана в выходные данные, перейдите к http://localhost:7071/api/HttpExample?name=Functions. Браузер должен отобразить сообщение «привет», которое повторяет значение Functions, переданное в параметр запроса name.
Нажмите Ctrl+C (Command+C на macOS), чтобы остановить хост.
Создание образа контейнера и проверка локально
(Необязательно.) Изучите файл Dockerfile в корневой папке проекта. В Dockerfile описана среда, необходимая для запуска приложения-функции на платформе Linux. Полный список поддерживаемых базовых образов для Функций Azure можно найти на странице базового образа Функций Azure.
В корневой папке проекта выполните команду docker build, указав имя azurefunctionsimage и тег v1.0.0. Замените <DOCKER-ID> идентификатором вашей учетной записи Docker Hub. Эта команда отвечает за создание образа Docker для контейнера.
docker build --tag <DOCKER-ID>/azurefunctionsimage:v1.0.0 .
После выполнения команды можно запустить новый контейнер локально.
Чтобы проверить сборку, запустите образ в локальном контейнере с помощью команды запуска Docker, замените <DOCKER-ID> еще раз идентификатором учетной записи Docker Hub и добавьте аргумент портов следующим образом -p 8080:80:
docker run -p 8080:80 -it <DOCKER-ID>/azurefunctionsimage:v1.0.0
После того как образ будет запущен в локальном контейнере, перейдите по адресу http://localhost:8080/api/HttpExample, где должно появиться такое же приветственное сообщение, как описано выше. Так как созданная вами функция, активируемая HTTP, использует анонимную авторизацию, можно вызвать функцию, выполняемую в контейнере, без получения ключа доступа. Дополнительные сведения см. в разделе Ключи авторизации.
После того как образ будет запущен в локальном контейнере, перейдите по адресу http://localhost:8080/api/HttpExample?name=Functions, где должно появиться такое же приветственное сообщение, как описано выше. Так как созданная вами функция, активируемая HTTP, использует анонимную авторизацию, можно вызвать функцию, выполняемую в контейнере, без получения ключа доступа. Дополнительные сведения см. в разделе Ключи авторизации.
После проверки приложения-функции в контейнере нажмите клавиши CTRL+C (Command+ в macOS), чтобы остановить выполнение.
Публикация образа контейнера в реестре
Чтобы сделать образ контейнера доступным для развертывания в среде размещения, необходимо отправить его в реестр контейнеров. Как одну из лучших практик безопасности, рекомендуется использовать экземпляр реестра контейнеров Azure и обеспечивать подключения на основе управляемых удостоверений. Docker Hub требует аутентификации с использованием общих секретов, что делает ваши развертывания более уязвимыми.
Реестр контейнеров Azure — это служба частного реестра для создания, хранения и обслуживания образов контейнеров и связанных с ними артефактов. Для публикации контейнеров в службах Azure следует использовать службу частного реестра.
Используйте эту команду для входа в экземпляр реестра с помощью текущих учетных данных Azure. Замените
<REGISTRY-NAME>именем экземпляра реестра контейнеров.az acr login --name <REGISTRY-NAME>Используйте эту команду, чтобы пометить образ с полным именем сервера входа в реестр. Замените
<LOGIN-SERVER>на полное имя сервера входа в ваш реестр и<DOCKER-ID>на ваш идентификатор Docker.docker tag <DOCKER-ID>/azurefunctionsimage:v1.0.0 <LOGIN-SERVER>/azurefunctionsimage:v1.0.0Используйте эту команду, чтобы загрузить контейнер в экземпляр реестра:
docker push <LOGIN-SERVER>/azurefunctionsimage:v1.0.0