Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a rövid útmutatóban az Azure Developer parancssori eszközeivel skálázható webes API-t hozhat létre a HTTP-kérelmekre reagáló függvényvégpontok használatával. A kód helyi tesztelése után üzembe helyezi azt egy új kiszolgáló nélküli függvényalkalmazásban, amelyet egy Flex Consumption-csomagban hoz létre az Azure Functionsben.
A projektforrás az Azure Developer CLI (azd) használatával egyszerűsíti a kód Azure-ban való üzembe helyezését. Ez az üzembe helyezés a biztonságos és méretezhető Azure Functions-környezetek jelenlegi ajánlott eljárásait követi.
Alapértelmezés szerint a Flex Consumption csomag egy használatalapú fizetéses számlázási modellt követ, ami azt jelenti, hogy ennek a rövid útmutatónak a végrehajtása néhány USD cent vagy annál kisebb költséggel jár az Azure-fiókjában.
Prerequisites
Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
-
Java 17 Fejlesztői készlet
- Ha a Java egy másik támogatott verzióját használja, frissítenie kell a projekt pom.xml fájlját.
- A
JAVA_HOMEkörnyezeti változót a Java Development Kit (JDK) megfelelő verziójának telepítési helyére kell állítani.
- Apache Maven 3.8.x
- Biztonságos HTTP-teszteszköz , amellyel JSON-hasznos adatokkal küldhet kérelmeket a függvényvégpontoknak. Ez a cikk a .
curl
A projekt inicializálása
azd init A parancs használatával helyi Azure Functions-kódprojektet hozhat létre egy sablonból.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-dotnet-azd -e httpendpoint-dotnetEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet az aktuális mappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
httpalkalmazásmappához való navigáláshoz:cd httpHozzon létre egy local.settings.json nevű fájlt a
httpJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template azure-functions-java-flex-consumption-azd -e httpendpoint-javaEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet az aktuális mappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
httpalkalmazásmappához való navigáláshoz:cd httpHozzon létre egy local.settings.json nevű fájlt a
httpJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-javascript-azd -e httpendpoint-jsEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet a gyökérmappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Hozzon létre egy local.settings.json nevű fájlt a JSON-adatokat tartalmazó gyökérmappában:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-powershell-azd -e httpendpoint-psEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet a gyökérmappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
srcalkalmazásmappához való navigáláshoz:cd srcHozzon létre egy local.settings.json nevű fájlt a
srcJSON-adatokat tartalmazó mappában:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-typescript-azd -e httpendpoint-tsEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet a gyökérmappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. A környezet nevét az Azure-ban létrehozott erőforráscsoport nevében is használja a rendszer.Hozzon létre egy local.settings.json nevű fájlt a JSON-adatokat tartalmazó gyökérmappában:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Ez a fájl helyi futtatáskor szükséges.
A helyi terminálban vagy parancssorban futtassa ezt a
azd initparancsot egy üres mappában:azd init --template functions-quickstart-python-http-azd -e httpendpoint-pyEz a parancs lekéri a projektfájlokat a sablontárházból , és inicializálja a projektet a gyökérmappában. A
-ejelölő megadja az aktuális környezet nevét. Ebbenazdaz esetben a környezet egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és egynél több definiálható. A környezet nevét az Azure-ban létrehozott erőforráscsoport nevében is használja a rendszer.Hozzon létre egy local.settings.json nevű fájlt a JSON-adatokat tartalmazó gyökérmappában:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python" } }Ez a fájl helyi futtatáskor szükséges.
Virtuális környezet létrehozása és aktiválása
A gyökérmappában futtassa ezeket a parancsokat a következő nevű .venvvirtuális környezet létrehozásához és aktiválásához:
python3 -m venv .venv
source .venv/bin/activate
Ha a Python nem telepíti a venv-csomagot a Linux-disztribúcióra, futtassa a következő parancsot:
sudo apt-get install python3-venv
Futtatás a helyi környezetben
Futtassa ezt a parancsot az alkalmazásmappából egy terminálban vagy parancssorban:
func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startAmikor a Functions-gazdagép elindul a helyi projektmappában, a HTTP által aktivált függvények URL-végpontjait írja a terminál kimenetére.
Note
Mivel a hozzáférési kulcs engedélyezése helyi futtatáskor nincs kényszerítve, a visszaadott függvény URL-címe nem tartalmazza a hozzáférési kulcs értékét, és nincs rá szüksége a függvény meghívásához.
A böngészőben lépjen a
httpgetvégpontra, amelynek az alábbi URL-címhez hasonlóan kell kinéznie:Egy új terminál vagy parancssori ablakban futtassa ezt a
curlparancsot egy JSON hasznos adattal rendelkező POST-kérés végpontra valóhttppostküldéséhez:curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.jsoncurl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d "@src/functions/testdata.json"Ez a parancs beolvassa a JSON hasznos adatait a
testdata.jsonprojektfájlból. Mindkét HTTP-kérésre találhat példákat atest.httpprojektfájlban.Ha elkészült, a gazdafolyamat leállításához nyomja le a Ctrl+C billentyűkombinációt a
func.exeterminálablakban.
- Futtassa
deactivatea virtuális környezet leállítását.
A kód áttekintése (nem kötelező)
Áttekintheti a két HTTP-eseményindító függvényvégpontot meghatározó kódot:
[Function("httpget")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")]
HttpRequest req,
string name)
{
var returnValue = string.IsNullOrEmpty(name)
? "Hello, World."
: $"Hello, {name}.";
_logger.LogInformation($"C# HTTP trigger function processed a request for {returnValue}.");
return new OkObjectResult(returnValue);
}
@FunctionName("httpget")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.FUNCTION)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
// Parse query parameter
String name = Optional.ofNullable(request.getQueryParameters().get("name")).orElse("World");
return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
}
const { app } = require('@azure/functions');
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: async (request, context) => {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
}
});
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function httpGetFunction(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
};
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: httpGetFunction
});
Ez a function.json fájl határozza meg a függvényt httpget :
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get"
],
"route": "httpget"
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
Ez a run.ps1 fájl implementálja a függvénykódot:
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters
$name = $Request.Query.name
$body = "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response."
if ($name) {
$body = "Hello, $name. This HTTP triggered function executed successfully."
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $body
})
@app.route(route="httpget", methods=["GET"])
def http_get(req: func.HttpRequest) -> func.HttpResponse:
name = req.params.get("name", "World")
logging.info(f"Processing GET request. Name: {name}")
return func.HttpResponse(f"Hello, {name}!")
A teljes sablonprojektet itt tekintheti át.
A teljes sablonprojektet itt tekintheti át.
A teljes sablonprojektet itt tekintheti át.
A teljes sablonprojektet itt tekintheti át.
A teljes sablonprojektet itt tekintheti át.
A teljes sablonprojektet itt tekintheti át.
Miután helyben ellenőrizte a függvényeket, ideje közzétenni őket az Azure-ban.
Üzembe helyezés az Azure-ban
Ez a projekt úgy van konfigurálva, hogy a parancs használatával telepítse ezt a azd up projektet egy új függvényalkalmazásban egy Rugalmas használatú csomagban az Azure-ban.
Tip
A projekt egy sor Bicep-fájlt tartalmaz (a infra mappában), amelyet azd arra használ, hogy az ajánlott eljárásokat követve biztonságos telepítést hozzon létre egy rugalmas fogyasztási tervben.
Futtassa ezt a parancsot, hogy
azdlétrehozza a szükséges Azure-erőforrásokat az Azure-ban, és üzembe helyezze a kódprojektet az új függvényalkalmazásban:azd upA gyökérmappa tartalmazza a
azure.yamlszükséges definíciófájltazd.Ha még nem jelentkezett be, a rendszer arra kéri, hogy hitelesítse az Azure-fiókjával.
Amikor a rendszer kéri, adja meg a szükséges üzembehelyezési paramétereket:
Parameter Description Azure-előfizetés Előfizetés, amelyben az erőforrások létrejönnek. Azure-hely Azure-régió, amelyben létre kell hozni az új Azure-erőforrásokat tartalmazó erőforráscsoportot. Csak azok a régiók jelennek meg, amelyek jelenleg támogatják a Rugalmas felhasználás csomagot. vnetEnabled Válassza a Hamis lehetőséget. Igaz értékre állítva az üzembe helyezés létrehozza a függvényalkalmazást egy új virtuális hálózaton. A
azd upparancs az alábbi kérdésekre adott válaszokat használja a Bicep konfigurációs fájljaival az üzembehelyezési feladatok elvégzéséhez:Hozza létre és konfigurálja ezeket a szükséges Azure-erőforrásokat (a következőnek felel meg
azd provision):- Rugalmas kihasználtságú csomag és függvényalkalmazás
- Azure Storage (kötelező) és Application Insights (ajánlott)
- Hozzáférési szabályzatok és szerepkörök a fiókhoz
- Szolgáltatásközi kapcsolatok felügyelt identitásokkal (tárolt kapcsolati sztring helyett)
- (Beállítás) Virtuális hálózat a függvényalkalmazás és a többi Azure-erőforrás biztonságos futtatásához
Csomagolja és telepítse a kódot az üzembehelyezési tárolóba (ez egyenértékű a következőval
azd deploy). Az alkalmazás ezután elindul, és az üzembe helyezett csomagban fut.
A parancs sikeres végrehajtása után megjelennek a létrehozott erőforrásokra mutató hivatkozások.
A függvény meghívása az Azure-ban
Mostantól meghívhatja a függvényvégpontokat az Azure-ban, ha HTTP-kéréseket küld az URL-címekre a HTTP-teszteszközzel vagy a böngészőből (GET-kérelmek esetén). Amikor a függvények az Azure-ban futnak, a hozzáférési kulcs engedélyezése kötelező, és a kéréshez meg kell adnia egy függvényhozzáférési kulcsot.
A Core Tools használatával lekérheti az Azure-ban futó függvények URL-végpontjait.
A helyi terminálban vagy parancssorban futtassa az alábbi parancsokat az URL-végpont értékeinek lekéréséhez:
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME func azure functionapp list-functions $APP_NAME --show-keysA
azd env get-valueparancs lekéri a függvényalkalmazás nevét a helyi környezetből. Ha ezt a--show-keyslehetőségetfunc azure functionapp list-functionshasználja, a visszaadott meghívási URL-cím: az egyes végpontok értéke tartalmaz egy függvényszintű hozzáférési kulcsot.A korábbiakhoz hasonlóan a HTTP-teszteszköz használatával ellenőrizze ezeket az URL-címeket az Azure-ban futó függvényalkalmazásban.
A kód ismételt üzembe helyezése
Futtassa a azd up parancsot annyiszor, amennyi szükséges az Azure-erőforrások kiépítéséhez és a kódfrissítések üzembe helyezéséhez a függvényalkalmazásban.
Note
Az üzembe helyezett kódfájlokat mindig felülírja a legújabb üzembehelyezési csomag.
A kérésekre adott kezdeti válaszokat azd és az általuk azd létrehozott környezeti változókat a rendszer helyileg tárolja a nevesített környezetben.
azd env get-values A paranccsal áttekintheti a környezetben az Azure-erőforrások létrehozásakor használt összes változót.
Az erőforrások eltávolítása
Ha végzett a függvényalkalmazással és a kapcsolódó erőforrásokkal, ezzel a paranccsal törölheti a függvényalkalmazást és annak kapcsolódó erőforrásait az Azure-ból, és elkerülheti a további költségek felmerülését:
azd down --no-prompt
Note
A --no-prompt beállítás arra utasítja azd , hogy az erőforráscsoportot anélkül törölje, hogy ön megerősítést kap.
Ez a parancs nincs hatással a helyi kódprojektre.