Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
На первый взгляд
Цель: Использование прокси-сервера разработки с функциями Azure JS
Время: 10 минут
Плагины: Разные
Предварительные требования:настройка прокси-сервера разработки, основных средств Функций Azure
Если вы создаете Функции Azure с помощью JavaScript и хотите использовать прокси-сервер разработки, следуйте общим рекомендациям по использованию Прокси разработки с Node.js приложениями.
Это важно
Чтобы предотвратить сбой работы Azure Functions при запуске, запустите прокси-сервер разработки без регистрации его в качестве системного прокси с помощью --as-system-proxy false параметра или настройте asSystemProxy на false в devproxyrc.json файле. Если вы регистрируете Dev Proxy в качестве системного прокси-сервера, функции Azure не запускаются при старте с сообщением об ошибке, аналогичным:
Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: Requesting HTTP version 2.0 with version policy RequestVersionOrHigher while unable to establish HTTP/2 connection.", DebugException="System.Net.Http.HttpRequestException: Requesting HTTP version 2.0 with version policy RequestVersionOrHigher while unable to establish HTTP/2 connection.")'
Чтобы легко переключаться между использованием прокси-сервера разработки в разработке и не использовать его в рабочей среде, можно настроить прокси-сервер в приложении Функции Azure с помощью переменных среды. Измените файл local.settings.json, чтобы включить переменную среды HTTPS_PROXY. Кроме того, отключите проверку сертификата, чтобы разрешить приложению Функции Azure доверять самоподписанному сертификату, используемому Dev Proxy.
Файл: local.settings.json
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"HTTPS_PROXY": "http://127.0.0.1:8000",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
}
В приложении Функции Azure используйте process.env объект для чтения переменных среды и настройки прокси-сервера для HTTP-запросов.
Файл: src/functions/MyFnHttpTrigger.ts
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
export async function MyFnHttpTrigger(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const options = process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {};
const resp = await fetch('https://jsonplaceholder.typicode.com/posts', options);
const data = await resp.json();
return {
status: 200,
jsonBody: data
};
};
app.http('MyFnHttpTrigger', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: MyFnHttpTrigger
});