Руководство. Запуск кода JavaScript в сеансе интерпретатора кода в приложениях контейнеров Azure (предварительная версия)
В этом руководстве показано, как выполнить код JavaScript в динамических сеансах приложений контейнеров Azure с помощью API HTTP.
Изучив этот учебник, вы:
- Создание сеанса интерпретатора кода
- Настройка соответствующего контекста безопасности для пула сеансов
- Передача кода JavaScript для запуска приложения-контейнера
Примечание.
Функция интерпретатора кода JavaScript в динамических сеансах приложений контейнеров Azure в настоящее время находится в предварительной версии. Дополнительные сведения см . в разделе об ограничениях предварительной версии.
Необходимые компоненты
Перед началом работы с этим руководством вам потребуются следующие ресурсы.
Ресурс | Description |
---|---|
Учетная запись Azure | Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, вы можете создать ее бесплатно. |
Azure CLI | Установите интерфейс командной строки Azure. |
Настройка
Начните с подготовки Azure CLI с последними обновлениями и войдите в Azure.
Обновите Azure CLI до последней версии.
az upgrade
Зарегистрируйте поставщик ресурсов
Microsoft.App
.az provider register --namespace Microsoft.App
Установите последнюю версию расширения CLI для приложений контейнеров Azure.
az extension add \ --name containerapp \ --allow-preview true --upgrade
войдите в Azure.
az login
Запросите идентификатор подписки Azure и задайте значение переменной.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
Задайте переменные, используемые в этой процедуре.
Перед выполнением следующей команды обязательно замените заполнители, окруженные собственными значениями
<>
.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION="northcentralus"
Эти переменные используются для создания ресурсов в следующих шагах.
Задайте подписку, которую вы хотите использовать для создания группы ресурсов
az account set -s $SUBSCRIPTION_ID
Создать группу ресурсов.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION
Создание пула сеансов интерпретатора кода
az containerapp sessionpool create
Используйте команду для создания пула сеансов Node.js, ответственного за выполнение произвольного кода JavaScript.
az containerapp sessionpool create \
--name $SESSION_POOL_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--max-sessions 5 \
--network-status EgressEnabled \
--container-type NodeLTS \
--cooldown-period 300
Задание назначений ролей для API выполнения кода
Чтобы взаимодействовать с API пула сеансов, необходимо использовать удостоверение с назначением Azure ContainerApps Session Executor
роли. В этом руководстве вы используете удостоверение пользователя идентификатора пользователя Microsoft Entra для вызова API.
Запрос идентификатора объекта пользователя.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
Назначьте роль вашему удостоверению.
az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee-object-id $USER_OBJECT_ID \ --assignee-principal-type User \ --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME"
Получение маркера носителя
Для прямого доступа к API пула сеансов создайте маркер доступа для включения в Authorization
заголовок запросов. Убедитесь, что маркер содержит утверждение аудитории (aud
) со значением https://dynamicsessions.io
. Дополнительные сведения см . в правилах проверки подлинности и авторизации .
Получение маркера доступа.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
Создайте переменную для хранения заголовка запроса.
AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
Этот заголовок сопровождает запрос, который вы делаете в конечную точку приложения.
Получение конечной точки управления пулом сеансов
Используйте следующую команду, чтобы вернуть конечную точку приложения.
SESSION_POOL_MANAGEMENT_ENDPOINT=$(az containerapp sessionpool show -n $SESSION_POOL_NAME -g $RESOURCE_GROUP --query "properties.poolManagementEndpoint" -o tsv)
Эта конечная точка — это расположение, в котором выполняются вызовы API для выполнения полезных данных кода в сеансе интерпретатора кода.
Выполнение кода в сеансе
Теперь, когда у вас есть маркер носителя для установления контекста безопасности и конечной точки пула сеансов, вы можете отправить приложению запрос на выполнение блока кода.
Выполните следующую команду, чтобы запустить код JavaScript для записи "hello world" в приложении.
curl -v -X 'POST' -H "$AUTH_HEADER" "$SESSION_POOL_MANAGEMENT_ENDPOINT/code/execute?api-version=2024-02-02-preview&identifier=test" -H 'Content-Type: application/json' -d '
{
"properties": {
"codeInputType": "inline",
"executionType": "synchronous",
"code": "console.log(\"hello-world\")"
}
}'
Вы увидите выходные данные, аналогичные следующему примеру.
{
"properties": {
"status": "Success",
"stdout": "hello-world\n",
"stderr": "",
"executionResult": "",
"executionTimeInMilliseconds": 5
}
}
Дополнительные примеры API интерпретатора кода можно найти на сайте GitHub.
Очистка ресурсов
Ресурсы, созданные в этом руководстве, влияют на счет Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, созданное в этом руководстве.
az group delete \
--resource-group $RESOURCE_GROUP