Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Överblick
Mål: Använda Dev Proxy med JS Azure Functions
Tid: 10 minuter
Plugins: Olika
Krav:Konfigurera Dev Proxy, Azure Functions Core Tools
Om du skapar Azure Functions med JavaScript och vill använda Dev Proxy följer du den allmänna vägledningen för att använda Dev Proxy med Node.js program.
Viktigt!
Om du vill förhindra att Azure Functions misslyckas vid start startar du Dev Proxy utan att registrera det som en systemproxy, antingen med hjälp --as-system-proxy false av alternativet eller genom att konfigurera asSystemProxy till false i devproxyrc.json filen. Om du registrerar Dev Proxy som en systemproxy misslyckas Azure Functions vid start med ett felmeddelande som liknar:
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.")'
För att enkelt kunna växla mellan att använda Dev Proxy under utveckling och inte använda den i produktion kan du konfigurera proxyn i Azure Functions-appen med hjälp av miljövariabler.
local.settings.json Ändra filen så att den HTTPS_PROXY innehåller miljövariabeln. Inaktivera dessutom certifikatverifiering så att Azure Functions-appen kan lita på det självsignerade certifikat som används av Dev Proxy.
Fil: 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"
}
}
I Azure Functions-appen använder du process.env objektet för att läsa miljövariablerna och konfigurera proxyn för dina HTTP-begäranden.
Fil: 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
});