Az Azure Functions-proxyk használataWork with Azure Functions Proxies

Ez a cikk bemutatja, hogyan konfigurálhat és az Azure Functions-proxyk használata.This article explains how to configure and work with Azure Functions Proxies. Ezzel a funkcióval a függvényalkalmazás, egy másik erőforrás által végrehajtott végpontokat adhat meg.With this feature, you can specify endpoints on your function app that are implemented by another resource. Ilyen proxyk segítségével egy nagy méretű API felosztása több függvényalkalmazás (ahogy a mikroszolgáltatási architektúra) esetében, miközben továbbra is egyetlen API-felületet ügyfelek számára.You can use these proxies to break a large API into multiple function apps (as in a microservice architecture), while still presenting a single API surface for clients.

Ez az információ az Azure Functions-fejlesztők számára.This is reference information for Azure Functions developers. Ha most ismerkedik az Azure Functions, indítsa el az alábbi forrásanyagokat:If you're new to Azure Functions, start with the following resources:

Megjegyzés

Standard funkciók számlázási proxy végrehajtások vonatkozik.Standard Functions billing applies to proxy executions. További információkért lásd: Azure Functions árképzése.For more information, see Azure Functions pricing.

Hozzon létre egy proxytCreate a proxy

Ez a szakasz bemutatja, hogyan hozhat létre egy proxyt a Functions portálján.This section shows you how to create a proxy in the Functions portal.

  1. Nyissa meg a Azure Portal, és folytassa a függvényalkalmazáshoz.Open the Azure portal, and then go to your function app.
  2. A bal oldali panelen válassza ki a új proxy.In the left pane, select New proxy.
  3. Adja meg a proxykiszolgáló nevét.Provide a name for your proxy.
  4. Konfigurálja a végpontot, amely ki van téve a függvényalkalmazás megadásával a útvonalsablonhoz és HTTP-metódusok.Configure the endpoint that's exposed on this function app by specifying the route template and HTTP methods. Ezeket a paramétereket a szabályainak megfelelően viselkednek HTTP-eseményindítók.These parameters behave according to the rules for HTTP triggers.
  5. Állítsa be a háttérkiszolgáló URL-cím egy másik végpontra.Set the backend URL to another endpoint. Ezt a végpontot egy másik függvényalkalmazás egy függvényt, vagy lehet, hogy bármely más API-t.This endpoint could be a function in another function app, or it could be any other API. Az érték nem lehet statikus kell, és azt is lehet hivatkozni Alkalmazásbeállítások és paramétert az eredeti ügyfélkérelemben.The value does not need to be static, and it can reference application settings and parameters from the original client request.
  6. Kattintson a Create (Létrehozás) gombra.Click Create.

A proxy már létezik a függvényalkalmazás az új végpont.Your proxy now exists as a new endpoint on your function app. Az ügyfél szempontjából legyen az Azure Functions-HttpTrigger egyenértékű.From a client perspective, it is equivalent to an HttpTrigger in Azure Functions. Az új proxykiszolgáló kipróbálhatja a proxykiszolgáló URL-cím másolása és tesztelésére is a kedvenc HTTP-ügyféllel.You can try out your new proxy by copying the Proxy URL and testing it with your favorite HTTP client.

Módosítsa a kérelmek és válaszokModify requests and responses

Az Azure Functions-proxyk módosíthatja a kérelmek és válaszok a háttérrendszerből.With Azure Functions Proxies, you can modify requests to and responses from the back-end. Ezekkel az adatátalakításokkal változókat is használhat, ahogyan az az Változók használata.These transformations can use variables as defined in Use variables.

Módosítsa a háttér-kérelemModify the back-end request

Alapértelmezés szerint a háttér-kérelem egy másolatát az eredeti kérelem inicializálása.By default, the back-end request is initialized as a copy of the original request. Amellett, hogy a háttér-URL-cím beállítása, a HTTP módszert, fejlécek és lekérdezési karakterlánc paraméterei módosításokat végezheti el.In addition to setting the back-end URL, you can make changes to the HTTP method, headers, and query string parameters. A módosított értékek hivatkozhatnak Alkalmazásbeállítások és paramétert az eredeti ügyfélkérelemben.The modified values can reference application settings and parameters from the original client request.

Háttér-kérelmek által bővítése módosítható a portálon a kérés felülbírálása proxy részletek lapon szakaszában.Back-end requests can be modified in the portal by expanding the request override section of the proxy detail page.

A válasz módosításaModify the response

Alapértelmezés szerint az ügyfél válaszára inicializálva van a háttér-válasz egy másolatát.By default, the client response is initialized as a copy of the back-end response. A válasz állapotkódja, indoklás, fejlécek és törzs módosításokat végezheti el.You can make changes to the response's status code, reason phrase, headers, and body. A módosított értékek hivatkozhatnak Alkalmazásbeállítások, paramétert az eredeti ügyfélkérelemben, és paraméterek a háttér-válaszból.The modified values can reference application settings, parameters from the original client request, and parameters from the back-end response.

Háttér-kérelmek által bővítése módosítható a portálon a válasz felülbírálása proxy részletek lapon szakaszában.Back-end requests can be modified in the portal by expanding the response override section of the proxy detail page.

Változók használataUse variables

A proxy konfigurációját nem kell lehet statikus.The configuration for a proxy does not need to be static. Feltétel, hogy az ügyfél eredeti kérést, a háttér-válasz vagy alkalmazásbeállítások változókat használja.You can condition it to use variables from the original client request, the back-end response, or application settings.

Útmutató helyi funkciókReference local functions

Használhat localhost egy függvényre ugyanazon függvényalkalmazáson belül, közvetlenül egy körbejárási proxy kérés nélkül.You can use localhost to reference a function inside the same function app directly, without a roundtrip proxy request.

"backendurl": "https://localhost/api/httptriggerC#1" a használatával hivatkozik egy helyi HTTP által aktivált függvényt az útvonal: /api/httptriggerC#1"backendurl": "https://localhost/api/httptriggerC#1" will reference a local HTTP triggered function at the route /api/httptriggerC#1

Megjegyzés

Ha a függvényt használ funkciója, a rendszergazda vagy a sys engedélyezési szintek, szüksége lesz a kód és a clientId, az eredeti függvény URL-Címének megfelelően adja meg.If your function uses function, admin or sys authorization levels, you will need to provide the code and clientId, as per the original function URL. Ebben az esetben a hivatkozás módon jelenik meg: "backendurl": "https://localhost/api/httptriggerC#1?code=<keyvalue>&clientId=<keyname>"In this case the reference would look like: "backendurl": "https://localhost/api/httptriggerC#1?code=<keyvalue>&clientId=<keyname>"

Hivatkozás kérés paramétereiReference request parameters

Használhatja a kérelem paramétereit, a háttér-URL-cím tulajdonsága bemeneteként vagy módosítja a kérelmek és válaszok részeként.You can use request parameters as inputs to the back-end URL property or as part of modifying requests and responses. Néhány paraméter van megadva a kiindulási proxykonfigurációt útvonal sablon is köthetők, és mások származhatnak a bejövő kérelem tulajdonságai.Some parameters can be bound from the route template that's specified in the base proxy configuration, and others can come from properties of the incoming request.

Útválasztási sablon paramétereiRoute template parameters

Az útvonal-sablonban használt paraméterek név szerint lehet hivatkozni a érhetők el.Parameters that are used in the route template are available to be referenced by name. A paraméternév kapcsos zárójelek között van ({}).The parameter names are enclosed in braces ({}).

Például, ha a proxy tartozik egy útvonal-sablont, például /pets/{petId}, a háttér-URL-cím tartalmazhat értékét {petId}, mint a https://<AnotherApp>.azurewebsites.net/api/pets/{petId}.For example, if a proxy has a route template, such as /pets/{petId}, the back-end URL can include the value of {petId}, as in https://<AnotherApp>.azurewebsites.net/api/pets/{petId}. Ha az útvonalsablonhoz megszakítja a helyettesítő karakter, például /api/{*restOfPath}, az érték {restOfPath} a bejövő kérelem elérési útja a fennmaradó szegmensek karakterláncként van.If the route template terminates in a wildcard, such as /api/{*restOfPath}, the value {restOfPath} is a string representation of the remaining path segments from the incoming request.

További kérés paramétereiAdditional request parameters

Az útvonal Sablonparaméterek mellett a következő értékeket is használható konfigurációs értékek:In addition to the route template parameters, the following values can be used in config values:

  • {request.method} : A HTTP-metódus, amely az eredeti kérésére szolgál.{request.method}: The HTTP method that's used on the original request.
  • {request.headers. <HeaderName>} : A fejlécet, amely az eredeti kérést is olvasható.{request.headers.<HeaderName>}: A header that can be read from the original request. Cserélje le <HeaderName> az olvasni kívánt fejléc nevét.Replace <HeaderName> with the name of the header that you want to read. Ha a kérelem nem tartalmazza a fejléc, az érték nem üres karakterlánc.If the header is not included on the request, the value will be the empty string.
  • {request.querystring. <ParameterName>} : Lekérdezési sztring paramétereként, amely az eredeti kérést is olvasható.{request.querystring.<ParameterName>}: A query string parameter that can be read from the original request. Cserélje le <ParameterName> az olvasni kívánt paraméter nevére.Replace <ParameterName> with the name of the parameter that you want to read. A kérelem nem tartalmazza a paramétert, ha az érték lesz az üres karakterlánc.If the parameter is not included on the request, the value will be the empty string.

Háttér-válasz paraméterekReference back-end response parameters

Válasz paraméterek módosítása a válasz az ügyfélhez részeként is használható.Response parameters can be used as part of modifying the response to the client. A következő értékeket a konfigurációs értékek használhatók:The following values can be used in config values:

  • {backend.response.statusCode} : A háttér-válasz visszaadott HTTP-állapotkódot.{backend.response.statusCode}: The HTTP status code that's returned on the back-end response.
  • {backend.response.statusReason} : A háttér-válasz visszaadott HTTP indoklás.{backend.response.statusReason}: The HTTP reason phrase that's returned on the back-end response.
  • {backend.response.headers. <HeaderName>} : A fejlécet, amely a háttér-válaszból olvasható.{backend.response.headers.<HeaderName>}: A header that can be read from the back-end response. Cserélje le <HeaderName> az olvasni kívánt fejléc nevét.Replace <HeaderName> with the name of the header you want to read. Ha a válasz nem tartalmazza a fejléc, az érték nem üres karakterlánc.If the header is not included on the response, the value will be the empty string.

Referencia-AlkalmazásbeállításokReference application settings

Is hivatkozhat a függvényalkalmazás definiált Alkalmazásbeállítások téve a beállítás nevét százalékjelek (%).You can also reference application settings defined for the function app by surrounding the setting name with percent signs (%).

Ha például egy háttér-URL-címe https://%ORDER_PROCESSING_HOST%/api/orders "% ORDER_PROCESSING_HOST %" ORDER_PROCESSING_HOST beállítás értéke lenne.For example, a back-end URL of https://%ORDER_PROCESSING_HOST%/api/orders would have "%ORDER_PROCESSING_HOST%" replaced with the value of the ORDER_PROCESSING_HOST setting.

Tipp

Alkalmazásbeállítások használja a háttér-gazdagépek több központi telepítést, ha vagy tesztelési környezetben.Use application settings for back-end hosts when you have multiple deployments or test environments. Így biztosíthatja, hogy mindig beszélünk a megfelelő háttér-környezetnek.That way, you can make sure that you are always talking to the right back-end for that environment.

Proxyk hibaelhárításaTroubleshoot Proxies

A jelző hozzáadásával "debug":true bármely a proxy a proxies.json hibakeresési naplózás lehetővé teszi.By adding the flag "debug":true to any proxy in your proxies.json you will enable debug logging. Naplók találhatók D:\home\LogFiles\Application\Proxies\DetailedTrace érhető el a speciális eszközök (kudu) keresztül.Logs are stored in D:\home\LogFiles\Application\Proxies\DetailedTrace and accessible through the advanced tools (kudu). Bármilyen HTTP-válaszok is tartalmazni fog egy Proxy-Trace-Location fejléc eléréséhez a naplófájl URL-címet.Any HTTP responses will also contain a Proxy-Trace-Location header with a URL to access the log file.

Az ügyféloldalról proxy hozzáadásával is hibakeresést egy Proxy-Trace-Enabled fejléc beállítása true.You can debug a proxy from the client side by adding a Proxy-Trace-Enabled header set to true. Ezzel is egy nyomkövetési naplózása a fájlrendszerhez, és a nyomkövetési URL-cím egy fejléccel a válaszban visszaadandó.This will also log a trace to the file system, and return the trace URL as a header in the response.

Proxy-nyomkövetések letiltásaBlock proxy traces

Biztonsági okokból előfordulhat, hogy nem szeretné, hogy a szolgáltatás hozza létre a nyomkövetési hívó minden.For security reasons you may not want to allow anyone calling your service to generate a trace. Nem lesz a bejelentkezési hitelesítő adatok nélkül nyomkövetési tartalmához való hozzáféréshez, de a nyomkövetés erőforrásokat használ fel, és elérhetővé teszi, hogy használ-e az Függvényproxykat.They will not be able to access the trace contents without your login credentials, but generating the trace consumes resources and exposes that you are using Function Proxies.

Hozzáadásával teljesen tiltsa le a nyomkövetések "debug":false bármely adott proxyval való a proxies.json.Disable traces altogether by adding "debug":false to any particular proxy in your proxies.json.

Speciális konfigurációAdvanced configuration

Az Ön által konfigurált proxyk vannak tárolva egy proxies.json fájlt, amely a függvény alkalmazás könyvtár gyökerében található.The proxies that you configure are stored in a proxies.json file, which is located in the root of a function app directory. Manuálisan szerkesztheti ezt a fájlt, és üzembe helyezése során az alkalmazás bármelyik használatakor a telepítési módszerek a Functions támogatja.You can manually edit this file and deploy it as part of your app when you use any of the deployment methods that Functions supports.

Tipp

Ha nem állított be az üzembe helyezési módszerekkel, akkor is együttműködik a proxies.json fájlt a portálon.If you have not set up one of the deployment methods, you can also work with the proxies.json file in the portal. Lépjen a függvényalkalmazásban, jelölje be platformfunkciók, majd válassza ki az App Service Editor.Go to your function app, select Platform features, and then select App Service Editor. Ezzel a módszerrel a függvényalkalmazás teljes-fájl szerkezete megtekintheti és majd a módosításokat.By doing so, you can view the entire file structure of your function app and then make changes.

Proxies.JSON határozza meg a proxyk objektum, amely a nevesített proxyk és a definíciójukat áll.Proxies.json is defined by a proxies object, which is composed of named proxies and their definitions. Ha szükséges, ha a szerkesztő támogatja, hivatkozhat egy JSON-sémájában kód befejezésére.Optionally, if your editor supports it, you can reference a JSON schema for code completion. Egy példa fájlt a következőhöz hasonlóan nézhet ki:An example file might look like the following:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": [ "GET" ],
                "route": "/api/{test}"
            },
            "backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>"
        }
    }
}

Minden egyes proxy tartozik egy rövid nevet, például proxy1 az előző példában.Each proxy has a friendly name, such as proxy1 in the preceding example. A megfelelő proxykiszolgáló-definíciós objektummal határozzák meg a következő tulajdonságokkal:The corresponding proxy definition object is defined by the following properties:

  • matchCondition: Kötelező – meghatározása a kéréseket, amelyek a proxy végrehajtásának aktiválása egy objektumot.matchCondition: Required--an object defining the requests that trigger the execution of this proxy. Megosztott két tulajdonságot tartalmaz HTTP-eseményindítók:It contains two properties that are shared with HTTP triggers:
    • metódusok: A proxy válaszol a HTTP-metódusok tömbje.methods: An array of the HTTP methods that the proxy responds to. Ha nincs megadva, a proxy válaszol az összes HTTP-metódusok a útvonalon.If it is not specified, the proxy responds to all HTTP methods on the route.
    • útvonal: Kötelező – meghatározza az útvonalsablonhoz, szabályozásával, amely kérelem URL-címek a proxy válaszol.route: Required--defines the route template, controlling which request URLs your proxy responds to. Ellentétben a HTTP-eseményindítók esetén nincs alapértelmezett érték.Unlike in HTTP triggers, there is no default value.
  • backendUri: Az URL-címe a háttér-erőforrás, amelyhez a kérés küldése a proxyn keresztül kell lennie.backendUri: The URL of the back-end resource to which the request should be proxied. Ez az érték hivatkozhat alkalmazás beállítás- és az eredeti ügyfél kérelemből.This value can reference application settings and parameters from the original client request. Ha ez a tulajdonság nem található, az Azure Functions válaszol egy HTTP 200 OK.If this property is not included, Azure Functions responds with an HTTP 200 OK.
  • requestOverrides: Egy objektum, amely meghatározza az átalakítások a háttér-kérelemre.requestOverrides: An object that defines transformations to the back-end request. Lásd: egy requestOverrides objektum meghatározása.See Define a requestOverrides object.
  • responseOverrides: Az átalakítások meghatározása az ügyfél válaszára való objektum.responseOverrides: An object that defines transformations to the client response. Lásd: egy responseOverrides objektum meghatározása.See Define a responseOverrides object.

Megjegyzés

A útvonal tulajdonság frissítése az Azure Functions-proxyk nem fogadja el a routePrefix a Függvényalkalmazás állomáskonfiguráció tulajdonságát.The route property in Azure Functions Proxies does not honor the routePrefix property of the Function App host configuration. Ha például tartalmazzon egy előtagot /api, bele kell foglalni a útvonal tulajdonság.If you want to include a prefix such as /api, it must be included in the route property.

Az egyes proxyk letiltásaDisable individual proxies

Letilthatja egyes proxyk hozzáadásával "disabled": true , a proxy a proxies.json fájlt.You can disable individual proxies by adding "disabled": true to the proxy in the proxies.json file. Ez azt eredményezi, bármilyen kérelmeket felel meg a matchCondition visszaadandó 404-es.This will cause any requests meeting the matchCondition to return 404.

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "Root": {
            "disabled":true,
            "matchCondition": {
                "route": "/example"
            },
            "backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>"
        }
    }
}

Nastavení aplikaceApplication Settings

A proxy viselkedését több alkalmazás beállításai vezérlik.The proxy behavior can be controlled by several app settings. Azok az összes leírt a funkciók App beállításainak ismertetéseThey are all outlined in the Functions App Settings reference

(Karakterlánc formázása) fenntartott karaktereketReserved Characters (string formatting)

Proxyk, olvassa el minden kívül egy JSON-karakterlánc fájl használatával , egy escape szimbólumot.Proxies read all strings out of a JSON file, using \ as an escape symbol. Proxyk is tudja értelmezni a kapcsos zárójelek közé.Proxies also interpret curly braces. Tekintse meg az alábbi példák teljes körű.See a full set of examples below.

KarakterCharacter Escape-karaktertEscaped Character PéldaExample
{vagy}{ or } {{és}}{{ or }} {{ example }} --> { example }
\ \\ example.com\\text.html --> example.com\text.html
"" \" \"example\" --> "example"

Egy requestOverrides objektum meghatározásaDefine a requestOverrides object

A requestOverrides objektuma határozza meg, amikor a háttér-erőforrás neve a kérés végzett módosítások.The requestOverrides object defines changes made to the request when the back-end resource is called. Az objektum az alábbi tulajdonságokat határozzák meg:The object is defined by the following properties:

  • backend.Request.Method: A háttéralkalmazás meghívásához használt HTTP-metódus.backend.request.method: The HTTP method that's used to call the back-end.
  • backend.request.querystring.<ParameterName> : Lekérdezési sztring paramétereként, amely állíthat be a háttéralkalmazás meghívásához.backend.request.querystring.<ParameterName>: A query string parameter that can be set for the call to the back-end. Cserélje le <ParameterName> , amely beállítja a paraméter nevével.Replace <ParameterName> with the name of the parameter that you want to set. Ha az üres karakterlánc van megadva, a paraméter nem szerepel a háttér-kérés.If the empty string is provided, the parameter is not included on the back-end request.
  • backend.Request.Headers. <HeaderName> : A fejlécet, amely állíthat be a háttéralkalmazás meghívásához.backend.request.headers.<HeaderName>: A header that can be set for the call to the back-end. Cserélje le <HeaderName> nevét a fejlécet, amely a következőt kívánja beállítani.Replace <HeaderName> with the name of the header that you want to set. Az üres karakterláncot adjon meg, ha a háttér-kérelem nem tartalmazza a fejlécet.If you provide the empty string, the header is not included on the back-end request.

Értékek hivatkozhatnak Alkalmazásbeállítások és a paraméterek az eredeti ügyfél kérelemből.Values can reference application settings and parameters from the original client request.

Konfiguráció például előfordulhat, hogy a következőhöz hasonló:An example configuration might look like the following:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": [ "GET" ],
                "route": "/api/{test}"
            },
            "backendUri": "https://<AnotherApp>.azurewebsites.net/api/<FunctionName>",
            "requestOverrides": {
                "backend.request.headers.Accept": "application/xml",
                "backend.request.headers.x-functions-key": "%ANOTHERAPP_API_KEY%"
            }
        }
    }
}

Egy responseOverrides objektum meghatározásaDefine a responseOverrides object

A requestOverrides objektuma határozza meg, hogy a válasz az ügyfélhez átadott végrehajtott módosításokat.The requestOverrides object defines changes that are made to the response that's passed back to the client. Az objektum az alábbi tulajdonságokat határozzák meg:The object is defined by the following properties:

  • response.statusCode: A HTTP-állapotkódot kell visszaadni az ügyfélnek.response.statusCode: The HTTP status code to be returned to the client.
  • response.statusReason: A HTTP indoklás, az ügyfél számára.response.statusReason: The HTTP reason phrase to be returned to the client.
  • Response.body: Az ügyfél számára, hogy a szervezet karakteres formáját.response.body: The string representation of the body to be returned to the client.
  • Response.Headers. <HeaderName> : A fejlécet, amely beállítható a válasz az ügyfélhez.response.headers.<HeaderName>: A header that can be set for the response to the client. Cserélje le <HeaderName> nevét a fejlécet, amely a következőt kívánja beállítani.Replace <HeaderName> with the name of the header that you want to set. Az üres karakterláncot adjon meg, ha a fejléc nem szerepel a válasz.If you provide the empty string, the header is not included on the response.

Értékek Alkalmazásbeállítások, az ügyfél eredeti kérés paraméterei és paramétereket is lehet hivatkozni a háttér-válaszból.Values can reference application settings, parameters from the original client request, and parameters from the back-end response.

Konfiguráció például előfordulhat, hogy a következőhöz hasonló:An example configuration might look like the following:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": [ "GET" ],
                "route": "/api/{test}"
            },
            "responseOverrides": {
                "response.body": "Hello, {test}",
                "response.headers.Content-Type": "text/plain"
            }
        }
    }
}

Megjegyzés

Ebben a példában a válasz törzse értéke közvetlenül, ezért nem backendUri tulajdonság van szükség.In this example, the response body is set directly, so no backendUri property is needed. A példa bemutatja, hogyan használhatja az Azure Functions-proxyk utánzási API-k esetében.The example shows how you might use Azure Functions Proxies for mocking APIs.