Een door HTTP geactiveerde functie maken in azureCreate an HTTP triggered function in Azure

In dit artikel leest u hoe u opdracht regel Programma's kunt gebruiken om een python-project te maken dat wordt uitgevoerd in Azure Functions.This article shows you how to use command-line tools to create a Python project that runs in Azure Functions. De functie die u maakt, wordt geactiveerd door HTTP-aanvragen.The function you create is triggered by HTTP requests. Ten slotte publiceert u uw project om te worden uitgevoerd als een serverloze functie in Azure.Finally, you publish your project to run as a serverless function in Azure.

Dit artikel is de eerste van twee Quick starts voor Azure Functions.This article is the first of two quickstarts for Azure Functions. Nadat u dit artikel hebt voltooid, voegt u een Azure Storage wachtrij-uitvoer binding toe aan uw functie.After you complete this article, you add an Azure Storage queue output binding to your function.

VereistenPrerequisites

Voordat u begint, moet u het volgende hebben:Before you start, you must have the following:

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.If you don't have an Azure subscription, create a free account before you begin.

Een virtuele omgeving maken en activeren (optioneel)Create and activate a virtual environment (optional)

Als u python-functies lokaal wilt ontwikkelen en testen, is het raadzaam een python 3,6-omgeving te gebruiken.To locally develop and test Python functions, it is recommended to use a Python 3.6 environment. Voer de volgende opdrachten uit om een virtuele omgeving met de naam .venv te maken.Run the following commands to create and activate a virtual environment named .venv.

Notitie

Als python venv niet heeft geïnstalleerd op uw Linux-distributie, kunt u dit installeren met de volgende opdracht:If Python didn't install venv on your Linux distribution, you can install it using the following command:

sudo apt-get install python3-venv

BashBash:

python3.6 -m venv .venv
source .venv/bin/activate

Power shell of een Windows-opdracht prompt:PowerShell or a Windows command prompt:

py -3.6 -m venv .venv
.venv\scripts\activate

De overige opdrachten worden uitgevoerd binnen de virtuele omgeving.The remaining commands are run inside the virtual environment.

Een lokaal Functions-project makenCreate a local Functions project

Een functions-project is het equivalent van een functie-app in Azure.A Functions project is the equivalent of a function app in Azure. Het kan meerdere functies hebben die allemaal dezelfde lokale en hosting configuraties delen.It can have multiple functions that all share the same local and hosting configurations.

Voer in de virtuele omgeving de volgende opdracht uit en kies python als uw runtime voor de werk nemer.In the virtual environment, run the following command, choosing python as your worker runtime.

func init MyFunctionProj

Er wordt een map gemaakt met de naam MyFunctionProj , die de volgende drie bestanden bevat:A folder named MyFunctionProj is created, which contains the following three files:

  • local.settings.jsonwordt gebruikt voor het opslaan van app-instellingen en verbindings reeksen wanneer deze lokaal worden uitgevoerd.local.settings.json is used to store app settings and connection strings when running locally. Dit bestand wordt niet gepubliceerd naar Azure.This file doesn't get published to Azure.
  • requirements.txtbevat de lijst met pakketten die moeten worden geïnstalleerd bij het publiceren naar Azure.requirements.txt contains the list of packages to be installed on publishing to Azure.
  • host.jsonbevat algemene configuratie opties die van invloed zijn op alle functies in een functie-app.host.json contains global configuration options that affect all functions in a function app. Dit bestand wordt gepubliceerd naar Azure.This file does get published to Azure.

Ga naar de map New MyFunctionProj:Navigate to the new MyFunctionProj folder:

cd MyFunctionProj

Een functie makenCreate a function

Als u een functie wilt toevoegen aan uw project, voert u de volgende opdracht uit:To add a function to your project, run the following command:

func new

Kies de sjabloon http-trigger , HttpTrigger Typ als naam voor de functie en druk op ENTER.Choose the HTTP trigger template, type HttpTrigger as the name for the function, then press Enter.

Er wordt een submap met de naam http trigger gemaakt die de volgende bestanden bevat:A subfolder named HttpTrigger is created, which contains the following files:

  • Function. json: configuratie bestand dat de functie, trigger en andere bindingen definieert.function.json: configuration file that defines the function, trigger, and other bindings. Bekijk dit bestand en controleer of de waarde voor scriptFile verwijst naar het bestand met de functie, terwijl de aanroep-en bindingen zijn gedefinieerd in de bindings matrix.Review this file and see that the value for scriptFile points to the file containing the function, while the invocation trigger and bindings are defined in the bindings array.

    Elke binding vereist een richting, type en een unieke naam.Each binding requires a direction, type and a unique name. De http-trigger heeft een invoer binding van httpTrigger het type en de uitvoer httpbinding van het type.The HTTP trigger has an input binding of type httpTrigger and output binding of type http.

  • init.py_: script bestand dat uw door http geactiveerde functie is._ _ ___init__.py: script file that is your HTTP triggered function. Controleer dit script en controleer of het een standaard waarde main()bevat.Review this script and see that it contains a default main(). HTTP-gegevens van de trigger worden door gegeven aan deze functie req met behulp van de benoemde bindings parameter.HTTP data from the trigger is passed to this function using the req named binding parameter. Gedefinieerd in function. json, req is een instantie van de klasse Azure. functions. HttpRequest.Defined in function.json, req is an instance of the azure.functions.HttpRequest class.

    Het retour object, gedefinieerd als $return in function. json, is een instantie van de klasse Azure. functions. HttpResponse.The return object, defined as $return in function.json, is an instance of azure.functions.HttpResponse class. Zie Azure functions HTTP-triggers en-bindingenvoor meer informatie.To learn more, see Azure Functions HTTP triggers and bindings.

De functie lokaal uitvoerenRun the function locally

Met de volgende opdracht wordt de functie-app gestart, die lokaal wordt uitgevoerd met dezelfde Azure Functions runtime die zich in azure bevindt.The following command starts the function app, which runs locally using the same Azure Functions runtime that is in Azure.

func host start

Wanneer de host functions wordt gestart, wordt er iets zoals de volgende uitvoer geschreven, die voor de Lees baarheid is afgekapt:When the Functions host starts, it writes something like the following output, which has been truncated for readability:


                  %%%%%%
                 %%%%%%
            @   %%%%%%    @
          @@   %%%%%%      @@
       @@@    %%%%%%%%%%%    @@@
     @@      %%%%%%%%%%        @@
       @@         %%%%       @@
         @@      %%%       @@
           @@    %%      @@
                %%
                %

...

Content root path: C:\functions\MyFunctionProj
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.

...

Http Functions:

        HttpTrigger: http://localhost:7071/api/HttpTrigger

[8/27/2018 10:38:27 PM] Host started (29486ms)
[8/27/2018 10:38:27 PM] Job host started

Kopieer de URL van uw HttpTrigger-functie uit de uitvoer van de runtime en plak deze in de adresbalk van uw browser.Copy the URL of your HttpTrigger function from the runtime output and paste it into your browser's address bar. Voeg de queryreeks ?name=<yourname> toe aan de URL en voer de aanvraag uit.Append the query string ?name=<yourname> to this URL and execute the request. Hieronder ziet u de reactie op de GET-aanvraag die door de lokale functie wordt geretourneerd, weergegeven in de browser:The following shows the response in the browser to the GET request returned by the local function:

Lokaal testen in de browser

Nu u de functie lokaal hebt uitgevoerd, kunt u de functie-app en andere vereiste resources maken in Azure.Now that you have run your function locally, you can create the function app and other required resources in Azure.

Een resourcegroep makenCreate a resource group

Maak een resourcegroep met de opdracht az group create.Create a resource group with the az group create. Een Azure-resourcegroep is een logische container waarin Azure-resources, zoals functie-apps, databases en opslagaccounts worden geïmplementeerd en beheerd.An Azure resource group is a logical container into which Azure resources like function apps, databases, and storage accounts are deployed and managed.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt.The following example creates a resource group named myResourceGroup.
Als u Cloud Shell niet gebruikt, moet u zich eerst aanmelden met az login.If you are not using Cloud Shell, sign in first using az login.

az group create --name myResourceGroup --location westeurope

In het algemeen maakt u de resource groep en de resources in een regio bij u in de buurt.You generally create your resource group and the resources in a region near you.

Een Azure Storage-account makenCreate an Azure Storage account

Functions gebruikt een account voor algemeen gebruik in Azure Storage om de status en andere gegevens van uw functies te onderhouden.Functions uses a general-purpose account in Azure Storage to maintain state and other information about your functions. Maak een algemeen opslagaccount in de resourcegroep die u hebt gemaakt, met behulp van de opdracht az storage account create.Create a general-purpose storage account in the resource group you created by using the az storage account create command.

Vervang in de volgende opdracht de tijdelijke aanduiding <storage_name> door een wereldwijd unieke opslagaccountnaam.In the following command, substitute a globally unique storage account name where you see the <storage_name> placeholder. Namen van opslagaccounts moeten tussen 3 en 24 tekens lang zijn en mogen alleen cijfers en kleine letters bevatten.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

az storage account create --name <storage_name> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Een functie-app maken in azureCreate a function app in Azure

Een functie-app biedt een omgeving voor het uitvoeren van de functie code.A function app provides an environment for executing your function code. U kunt er functies mee groeperen in een logische eenheid, zodat u resources eenvoudiger kunt beheren, implementeren en delen.It lets you group functions as a logical unit for easier management, deployment, and sharing of resources.

Voer in de volgende opdracht uit met daarin een unieke functie-appnaam in plaats van de tijdelijke plaatsaanduiding <APP_NAME> en gebruik de naam van het opslagaccount in plaats van <STORAGE_NAME>.Run the following command using a unique function app name in place of the <APP_NAME> placeholder and the storage account name for <STORAGE_NAME>. De <APP_NAME> is ook het standaard DNS-domein voor de functie-app.The <APP_NAME> is also the default DNS domain for the function app. Deze naam moet uniek zijn in alle apps in Azure.This name needs to be unique across all apps in Azure.

az functionapp create --resource-group myResourceGroup --os-type Linux \
--consumption-plan-location westeurope  --runtime python \
--name <APP_NAME> --storage-account  <STORAGE_NAME>

Notitie

Linux-en Windows-apps kunnen niet worden gehost in dezelfde resource groep.Linux and Windows apps cannot be hosted in the same resource group. Als u een bestaande resource groep hebt met myResourceGroup de naam met een Windows-functie-app of web-app, moet u een andere resource groep gebruiken.If you have an existing resource group named myResourceGroup with a Windows function app or web app, you must use a different resource group.

Met deze opdracht wordt ook een gekoppeld Azure-toepassing Insights-exemplaar in dezelfde resource groep ingericht dat kan worden gebruikt voor het bewaken en weer geven van Logboeken.This command will also provision an associated Azure Application Insights instance in the same resource group that can be used for monitoring and viewing logs.

U bent nu klaar om uw lokale functions-project te publiceren naar de functie-app in Azure.You're now ready to publish your local functions project to the function app in Azure.

Het functie-appproject implementeren in AzureDeploy the function app project to Azure

Nadat de functie-app is gemaakt in azure, kunt u de func azure functionapp publish opdracht kern hulpprogramma's gebruiken om uw project code te implementeren in Azure.After the function app is created in Azure, you can use the func azure functionapp publish Core Tools command to deploy your project code to Azure. In deze voor beelden vervangt <APP_NAME> u door de naam van uw app uit de vorige stap.In these examples, replace <APP_NAME> with the name of your app from the previous step.

func azure functionapp publish <APP_NAME> --build remote

Met --build remote de optie bouwt u uw python-project op afstand in azure van de bestanden in het implementatie pakket.The --build remote option builds your Python project remotely in Azure from the files in the deployment package.

De uitvoer ziet er ongeveer als volgt uit, die is afgekapt voor de Lees baarheid:You'll see output similar to the following, which has been truncated for readability:

Getting site publishing info...
...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in myfunctionapp:
    HttpTrigger - [httpTrigger]
        Invoke url: https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....

Kopieer de Invoke url waarde voor uw HttpTrigger, die u nu kunt gebruiken om uw functie in azure te testen.Copy the Invoke url value for your HttpTrigger, which you can now use to test your function in Azure. De URL bevat een code query teken reeks waarde die uw functie sleutel is.The URL contains a code query string value that is your function key. Met deze sleutel kunnen anderen moeilijk uw HTTP trigger-eind punt aanroepen in Azure.This key makes it difficult for others to call your HTTP trigger endpoint in Azure.

De functie in azure testenTest the function in Azure

Gebruik krul om de geïmplementeerde functie te testen.Use cURL to test the deployed function. Voeg de query reeks &name=<yourname> toe aan de URL met behulp van de URL, met inbegrip van de functie code die u uit de vorige stap hebt gekopieerd.Using the URL, including the function key, that you copied from the previous step, append the query string &name=<yourname> to the URL.

Krul gebruiken om de functie in azure aan te roepen.

U kunt ook de gekopieerde URL, inclusief de functie sleutel, in naar het adres van uw webbrowser plakken.You can also paste the copied URL, including the function key, in to the address of your web browser. Voeg de query reeks &name=<yourname> toe aan de URL voordat u de aanvraag uitvoert.Again, append the query string &name=<yourname> to the URL before you execute the request.

Een webbrowser gebruiken om de functie aan te roepen.

Notitie

Als u bijna realtime logboeken wilt weer geven voor een gepubliceerde python-app, kunt u het beste het Application Insights gebruiken Live Metrics streamTo view near real-time logs for a published Python app, we recommend using the Application Insights Live Metrics Stream

Volgende stappenNext steps

U hebt een python-functies project gemaakt met een door HTTP geactiveerde functie, deze uitvoeren op uw lokale computer en geïmplementeerd in Azure.You've created a Python functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Breid uw functie nu uit door...Now, extend your function by...