Поделиться через


Руководство. Запуск кода JavaScript в сеансе интерпретатора кода в приложениях контейнеров Azure (предварительная версия)

В этом руководстве показано, как выполнить код JavaScript в динамических сеансах приложений контейнеров Azure с помощью API HTTP.

Изучив этот учебник, вы:

  • Создание сеанса интерпретатора кода
  • Настройка соответствующего контекста безопасности для пула сеансов
  • Передача кода JavaScript для запуска приложения-контейнера

Примечание.

Функция интерпретатора кода JavaScript в динамических сеансах приложений контейнеров Azure в настоящее время находится в предварительной версии. Дополнительные сведения см . в разделе об ограничениях предварительной версии.

Необходимые компоненты

Перед началом работы с этим руководством вам потребуются следующие ресурсы.

Ресурс Description
Учетная запись Azure Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, вы можете создать ее бесплатно.
Azure CLI Установите интерфейс командной строки Azure.

Настройка

Начните с подготовки Azure CLI с последними обновлениями и войдите в Azure.

  1. Обновите Azure CLI до последней версии.

    az upgrade
    
  2. Зарегистрируйте поставщик ресурсов Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Установите последнюю версию расширения CLI для приложений контейнеров Azure.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. войдите в Azure.

    az login
    
  5. Запросите идентификатор подписки Azure и задайте значение переменной.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Задайте переменные, используемые в этой процедуре.

    Перед выполнением следующей команды обязательно замените заполнители, окруженные собственными значениями <> .

    RESOURCE_GROUP=<RESOURCE_GROUP_NAME>
    SESSION_POOL_NAME=<SESSION_POOL_NAME>
    LOCATION="northcentralus"
    

    Эти переменные используются для создания ресурсов в следующих шагах.

  7. Задайте подписку, которую вы хотите использовать для создания группы ресурсов

    az account set -s $SUBSCRIPTION_ID
    
  8. Создать группу ресурсов.

    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.

  1. Запрос идентификатора объекта пользователя.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Назначьте роль вашему удостоверению.

    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. Дополнительные сведения см . в правилах проверки подлинности и авторизации .

  1. Получение маркера доступа.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Создайте переменную для хранения заголовка запроса.

    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

Следующие шаги