Пытаюсь перейти с 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- язык-машинопись с использованием этой документации
Я хочу перенести его на версию 4, как мне это сделать @IkhtesamAfrin
почему вы хотите использовать пакет applicationinsights? У вас есть какие-то особые требования или вы просто хотите использовать формат handler: async (req, context) => {return cgHttpTrigger(req, context, (req, context) => {....})} в версии 4?
@IkhtesamAfrin, поскольку код реализован только в этой форме, и я могу мигрировать только, поэтому мне приходится использовать оба (applicationinsights и обработчик из приложения), поскольку мы отслеживаем запросы
Кроме того, как вы сказали, applicationinsights работает в функции v3 из-за наличия контекста в @azure/functions, не можем ли мы использовать InvocationContext из v4, чтобы заменить его? @ИхтесамАфрин
без использования пакета applicationinsights вы также можете отслеживать запрос в приложении. Вам нужно использовать экземпляр InvocationContext, а затем регистрировать данные в соответствии с вашими потребностями, например context.log(), context.info, context.trace или context.error. Чтобы просмотреть эти журналы, вам необходимо развернуть функцию в приложении-функции.
Я считаю, что метод startOperation из applicationinsights зависит от azureFunctionsTypes.Context
в НЕДАВНОМ ИЗМЕНЕНИИ я добавил исходный код, чтобы показать, зачем мне нужен appinsight @IkhtesamAfrin
См. эту проблему на github github.com/microsoft/ApplicationInsights-node.js/issues/…, там говорится, что пакет applicationinsights на данный момент поддерживает только v3, а поддержка v4 находится в стадии разработки.
Итак, что я могу сделать прямо сейчас, чтобы наилучшим образом приспособиться к этой миграции @IkhtesamAfrin
Вам нужно рассмотреть возможность использования любого другого пакета, например @azure/monitor-opentelemetry
можем ли мы избежать использования этого и при этом включить оболочку информации о функции-обработчике для размещения этого ?@IkhtesamAfrin
Но в этом случае нам также нужно в какой-то момент передать параметр context, тогда выдается ошибка @azure/functions/types/index"' has no exported member 'Context'..






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