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özeit használva http-kérelmekre reagáló függvényeket hozhat létre. 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ásához az Azure-fiókjában néhány USD cent vagy annál kisebb költséggel jár.
Előfeltételek
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_HOME
környezeti változót a 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
A parancs használatával azd init
létrehozhat egy helyi Azure Functions-kódprojektet egy sablonból.
A helyi terminálban vagy parancssorban futtassa ezt a
azd init
parancsot egy üres mappában:azd init --template functions-quickstart-dotnet-azd -e flexquickstart-dotnet
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet az aktuális mappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
http
alkalmazásmappához való navigáláshoz:cd http
Hozzon létre egy local.settings.json nevű fájlt a
http
JSON-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 init
parancsot egy üres mappában:azd init --template azure-functions-java-flex-consumption-azd -e flexquickstart-java
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet az aktuális mappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
http
alkalmazásmappához való navigáláshoz:cd http
Hozzon létre egy local.settings.json nevű fájlt a
http
JSON-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 init
parancsot egy üres mappában:azd init --template functions-quickstart-javascript-azd -e flexquickstart-js
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet a gyökérmappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is 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 init
parancsot egy üres mappában:azd init --template functions-quickstart-powershell-azd -e flexquickstart-ps
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet a gyökérmappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is definiálható. Az Azure-ban létrehozott erőforráscsoport nevében is használatos.Futtassa ezt a parancsot az
src
alkalmazásmappához való navigáláshoz:cd src
Hozzon létre egy local.settings.json nevű fájlt a
src
JSON-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 init
parancsot egy üres mappában:azd init --template functions-quickstart-typescript-azd -e flexquickstart-ts
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet a gyökérmappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is 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 init
parancsot egy üres mappában:azd init --template functions-quickstart-python-http-azd -e flexquickstart-py
Ez a parancs lekéri a projektfájlokat a sablontárházból, és inicializálja a projektet a gyökérmappában. A
-e
jelölő megadja az aktuális környezet nevét. Ebbenazd
a környezetben egy egyedi üzembehelyezési környezetet tart fenn az alkalmazás számára, és több is 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": "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ű .venv
virtuá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ítette 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 start
mvn clean package mvn azure-functions:run
npm install func start
npm install npm start
Amikor 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.
A böngészőben keresse meg a
httpget
végpontot, amelynek így kell kinéznie:Egy új terminál vagy parancssori ablakban futtassa ezt a
curl
parancsot egy JSON hasznos adattal rendelkező POST-kérés végpontra valóhttppost
küldéséhez:curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.json
curl -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.json
projektfájlból. Mindkét HTTP-kérésre találhat példákat atest.http
projektfájlban.Ha elkészült, a gazdafolyamat leállításához nyomja le a Ctrl+C billentyűkombinációt a
func.exe
terminálablakban.
- Futtassa
deactivate
a 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.
Azure-erőforrások létrehozása
Ez a projekt úgy van konfigurálva, hogy a azd provision
parancs használatával függvényalkalmazást hozzon létre egy Flex Consumption-csomagban, valamint egyéb szükséges Azure-erőforrásokat.
Feljegyzés
Ez a projekt olyan Bicep-fájlokat tartalmaz, amelyek azd
az ajánlott eljárásokat követve biztonságos üzembe helyezést hoznak létre egy Rugalmas használatú csomagban.
azd deploy
A azd up
Java-alkalmazások jelenleg nem támogatják a parancsokat és a parancsokat.
A projekt gyökérmappájában futtassa ezt a parancsot a szükséges Azure-erőforrások létrehozásához:
azd provision
A gyökérmappa tartalmazza a
azure.yaml
szükséges definíciófájltazd
.Ha még nincs bejelentkezve, 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:
Paraméter Leírás 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. A
azd provision
parancs a bicep konfigurációs fájlokkal a következő kérdésekre adott választ használja a szükséges Azure-erőforrások létrehozásához és konfigurálásához:- 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)
- Virtuális hálózat a függvényalkalmazás és a többi Azure-erőforrás biztonságos futtatásához
A parancs sikeres végrehajtása után üzembe helyezheti a projektkódot ebben az új függvényalkalmazásban az Azure-ban.
Üzembe helyezés az Azure-ban
A Core Tools használatával csomagolhatja a kódot, és üzembe helyezheti az Azure-ban a target
kimeneti mappából.
Lépjen a kimeneti mappában lévő alkalmazásmappa megfelelőjéhez
target
:cd http/target/azure-functions/contoso-functions
Ennek a mappának host.json fájllal kell rendelkeznie, amely azt jelzi, hogy ez a lefordított Java-függvényalkalmazás gyökere.
Futtassa az alábbi parancsokat a lefordított Java-kódprojekt üzembe helyezéséhez az Azure új függvényalkalmazás-erőforrásában a Core Tools használatával:
APP_NAME=$(azd env get-value AZURE_FUNCTION_NAME) func azure functionapp publish $APP_NAME
A
azd env get-value
parancs lekéri a függvényalkalmazás nevét a helyi környezetből, amely az üzembe helyezéshezfunc azure functionapp publish
szükséges. A sikeres közzététel után az Azure-ban a HTTP-triggervégpontokra mutató hivatkozások jelennek meg.
Ü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.
Tipp.
Ez a projekt olyan Bicep-fájlokat tartalmaz, amelyek azd
az ajánlott eljárásokat követve biztonságos üzembe helyezést hoznak létre egy Rugalmas használatú csomagban.
Futtassa ezt a parancsot, hogy
azd
lé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 up
A gyökérmappa tartalmazza a
azure.yaml
szükséges definíciófájltazd
.Ha még nincs bejelentkezve, 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:
Paraméter Leírás 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. A
azd up
parancs a Bicep konfigurációs fájljaival a következő kérdésekre adott választ használja 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)
- 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 segítségével beszerezheti 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:
SET APP_NAME=(azd env get-value AZURE_FUNCTION_NAME) func azure functionapp list-functions $APP_NAME --show-keys
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME func azure functionapp list-functions $APP_NAME --show-keys
A
azd env get-value
parancs lekéri a függvényalkalmazás nevét a helyi környezetből.--show-keys
A beállítás aztfunc azure functionapp list-functions
jelenti, hogy 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
A parancsot annyiszor futtathatja azd up
, 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.
Feljegyzés
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örnyezet összes olyan változóját, amelyet az Azure-erőforrások létrehozásakor használtak.
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
Feljegyzés
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.