Миграция функции Azure с версии 3 на версию 4

Пытаюсь перейти с v3 на v4. https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=python-v2%2Cisolated-process%2Cnodejs-v3%2Cfunctionsv2&pivots=programming- язык-машинопись с использованием этой документации

Я хочу изменить приведенный ниже код на v4

В версии 3

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const cgHttpTrigger: AzureFunction = async (
  context: any,
  req: any,
  httpTrigger: AzureFunction
) => {
  return appInsights.wContext(async () => {
    const startTime = Date.now() // Start trackRequest timer

    // Run the Function
    await httpTrigger(context, req)

    // Track Request on completion
    a.d.trackRequest({
      name: context.req.method + " " + context.req.url,
      resultCode: context.res.status,
  }, correlationContext ?? undefined)()
}

Я пытался использовать приложение из v4 Azure/функций и пытался обернуть вышеуказанную функцию.

В версии 4

import { app} from '@azure/functions';

    app.http('appIn', {
      methods: ['GET', 'POST'],
      handler: cgHttpTrigger(httpTrigger),
    });

как я могу обернуть это во что-то вроде

handler:  async (req, context) => {return cgHttpTrigger(req, context, (req, context) => {....})} 

Ресурсы

https://www.npmjs.com/package/applicationinsights/v/2.0.0-beta.200831.1

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=python-v2%2Cisolated-process%2Cnodejs-v3%2Cfunctionsv2&pivots=programming- язык-машинопись с использованием этой документации

Похоже, что пакет applicationinsights работает в функции v3 из-за наличия Context в @azure/functions, но в модели v4 есть InvocationContext. Так что я считаю, что правильно работает только с моделью v3.

Ikhtesam Afrin 10.06.2024 10:42

Я хочу перенести его на версию 4, как мне это сделать @IkhtesamAfrin

art 10.06.2024 15:12

почему вы хотите использовать пакет applicationinsights? У вас есть какие-то особые требования или вы просто хотите использовать формат handler: async (req, context) => {return cgHttpTrigger(req, context, (req, context) => {....})} в версии 4?

Ikhtesam Afrin 10.06.2024 15:15

@IkhtesamAfrin, поскольку код реализован только в этой форме, и я могу мигрировать только, поэтому мне приходится использовать оба (applicationinsights и обработчик из приложения), поскольку мы отслеживаем запросы

art 10.06.2024 15:18

Кроме того, как вы сказали, applicationinsights работает в функции v3 из-за наличия контекста в @azure/functions, не можем ли мы использовать InvocationContext из v4, чтобы заменить его? @ИхтесамАфрин

art 10.06.2024 15:20

без использования пакета applicationinsights вы также можете отслеживать запрос в приложении. Вам нужно использовать экземпляр InvocationContext, а затем регистрировать данные в соответствии с вашими потребностями, например context.log(), context.info, context.trace или context.error. Чтобы просмотреть эти журналы, вам необходимо развернуть функцию в приложении-функции.

Ikhtesam Afrin 10.06.2024 15:21

Я считаю, что метод startOperation из applicationinsights зависит от azureFunctionsTypes.Context

Ikhtesam Afrin 10.06.2024 15:23

в НЕДАВНОМ ИЗМЕНЕНИИ я добавил исходный код, чтобы показать, зачем мне нужен appinsight @IkhtesamAfrin

art 10.06.2024 15:23

См. эту проблему на github github.com/microsoft/ApplicationInsights-node.js/issues/…, там говорится, что пакет applicationinsights на данный момент поддерживает только v3, а поддержка v4 находится в стадии разработки.

Ikhtesam Afrin 10.06.2024 15:42

Итак, что я могу сделать прямо сейчас, чтобы наилучшим образом приспособиться к этой миграции @IkhtesamAfrin

art 10.06.2024 15:47

Вам нужно рассмотреть возможность использования любого другого пакета, например @azure/monitor-opentelemetry

Ikhtesam Afrin 10.06.2024 15:56

можем ли мы избежать использования этого и при этом включить оболочку информации о функции-обработчике для размещения этого ?@IkhtesamAfrin

art 10.06.2024 15:58

Но в этом случае нам также нужно в какой-то момент передать параметр context, тогда выдается ошибка @azure/functions/types/index"' has no exported member 'Context'..

Ikhtesam Afrin 10.06.2024 16:01
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
1
13
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как было предложено, нам нужно переключиться на @azure/monitor-opentelemetry. Причина - Обратитесь к этой проблеме github github.com/microsoft/ApplicationInsights-node.js/issues/…, в ней говорится, что пакет applicationinsights на данный момент поддерживает только v3, а поддержка v4 находится в стадии разработки.

Другие вопросы по теме