Cloud & IT Cert Prep · Lektion

Azure Functions-triggere og bindings

Skriv en HTTP-udløst funktion, tilføj en output-binding, der skriver til Azure Queue Storage, og forstå Consumption Plans automatiske skaleringsmodel.

Lektion 1 af 413 trin

Azure Functions-triggere og bindings er en gratis Cloud & IT Cert Prep-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cloud & IT Cert Prep, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad er Azure Functions?

Azure Functions er en serverløs computertjeneste, der lader dig køre små kodenheder (funktioner) som reaktion på hændelser uden at administrere infrastruktur. Du betaler kun for den køretid og hukommelse, der bruges, mens din funktion kører — der er ingen omkostning, når funktionen er inaktiv. Functions er velegnet til hændelsesdrevne opgaver, lette API'er, planlagte job og integration af cloudtjenester uden en permanent server.

Triggere: Det, der starter en funktion

Alle Azure Functions-funktioner skal have præcis én trigger, der definerer den hændelse, som får funktionen til at køre. Almindelige triggere omfatter HTTP (indgående HTTP-anmodning), Timer (CRON-plan), Blob Storage (ny blob i en container), Queue Storage (ny meddelelse i en kø), Event Hub (strøm af hændelser), Service Bus (meddelelse i en kø eller et emne) og Cosmos DB (ændringsfeed). Triggeren modtager hændelsesdataene og videregiver dem til din funktionskode.

// HTTP trigger function (JavaScript/Node.js)
module.exports = async function (context, req) {
  const name = req.query.name || (req.body && req.body.name);
  const message = name ? 'Hello, ' + name : 'Pass a name in the query or body';
  context.res = {
    status: 200,
    body: { message }
  };
};

Function.json: Konfiguration af trigger og binding

I ikke-kompilerede sprog (JavaScript, Python) erklærer en function.json-fil i hver funktions mappe dens triggere og bindinger. Denne fil knytter hændelseskilder og output til navngivne parametre i din funktionskode. I C# og Java erklæres bindinger ved hjælp af attributter/annotationer direkte i koden. Functions-runtime-miljøet læser konfigurationen og opretter automatisk forbindelserne til Azure-tjenester.

// function.json — HTTP trigger + Queue output binding
{
  'bindings': [
    {
      'authLevel': 'function',
      'type': 'httpTrigger',
      'direction': 'in',
      'name': 'req',
      'methods': ['post']
    },
    {
      'type': 'http',
      'direction': 'out',
      'name': 'res'
    },
    {
      'type': 'queue',
      'direction': 'out',
      'name': 'outputQueue',
      'queueName': 'processing-queue',
      'connection': 'AzureWebJobsStorage'
    }
  ]
}

Outputbindinger: Skrivning til tjenester

Outputbindinger lader din funktion skrive data til Azure-tjenester (Blob Storage, Queue Storage, Cosmos DB, Event Hub osv.) uden at administrere SDK'er eller forbindelsesstrenge. Du tildeler blot en værdi til outputbindingens parameter, hvorefter Functions-runtime-miljøet håndterer skrivningen. Det reducerer mængden af standardkode betydeligt og afkobler din funktion fra implementeringsdetaljerne for den specifikke Azure-tjeneste.

// HTTP trigger with Queue output binding (Node.js)
module.exports = async function (context, req) {
  const orderData = req.body;

  // Write to queue via output binding -- no SDK needed!
  context.bindings.outputQueue = JSON.stringify({
    orderId: orderData.id,
    timestamp: new Date().toISOString()
  });

  context.res = { status: 202, body: 'Order queued' };
};

Timer-trigger med CRON-udtryk

Timer-triggeren kører en funktion efter en plan, der er defineret af et CRON-udtryk. Azure Functions bruger en CRON med 6 dele: {seconds} {minutes} {hours} {day} {month} {day-of-week}. Brug 0 0 * * * * hver time, 0 0 0 * * * dagligt ved midnat eller 0 0 9-17 * * 1-5 hver time i arbejdstiden på hverdage. Timer-funktioner er nyttige til oprydningsjob, rapportgenerering og tilstandstjek.

// Timer trigger — runs every day at 02:00 UTC
// function.json binding:
// {
//   'type': 'timerTrigger',
//   'schedule': '0 0 2 * * *',
//   'name': 'myTimer'
// }

module.exports = async function (context, myTimer) {
  const now = new Date().toISOString();
  context.log('Daily cleanup started at', now);
  // ... perform cleanup logic ...
  context.log('Cleanup completed');
};

Forbrugsplan: Serverløs skalering

Med forbrugsplanen skalerer Azure Functions automatisk fra nul til hundredvis af instanser baseret på hastigheden af triggerhændelser. Du betaler kun for antallet af kørsler og de forbrugte GB-sekunder hukommelse — den første million kørsler pr. måned er gratis. Functions-værten kan skalere en HTTP-trigger til op til 200 instanser og en kø-trigger til antallet af kømeddelelser samtidigt. En kold start (første kørsel efter inaktivitet) medfører en kort forsinkelse, som reduceres af Premium-planens forvarmede instanser.

# View billing details for a function app
az functionapp show \
  --name myFunctionApp \
  --resource-group MyRG \
  --query '{name:name, plan:serverFarmId, state:state}'

# Create a Function App on Consumption plan
az functionapp create \
  --name myFunctionApp \
  --resource-group MyRG \
  --consumption-plan-location eastus \
  --runtime node \
  --runtime-version 18 \
  --storage-account mystorageaccount

Premium- og dedikerede planer

Premium-planen eliminerer kolde starter ved at holde forvarmede instanser klar, tilføjer VNet-integration og tillader længere kørselstidsgrænser (op til 60 minutter). Den dedikerede plan (App Service) kører funktioner på den samme App Service-plan som webapps, hvilket er nyttigt, når du har brug for forudsigelige omkostninger eller allerede har App Service-computerkapacitet, du kan bruge. Vælg Forbrug for ægte serverløs økonomi og Premium til funktioner, der er følsomme over for ydeevne eller har forbindelse til et VNet.

# Create a Function App on Premium plan (EP1)
az functionapp plan create \
  --name MyPremiumPlan \
  --resource-group MyRG \
  --location eastus \
  --sku EP1 \
  --is-linux

az functionapp create \
  --name myFunctionAppPremium \
  --resource-group MyRG \
  --plan MyPremiumPlan \
  --runtime python \
  --runtime-version 3.11 \
  --storage-account mystorageaccount

Implementering af Azure Functions

Implementer Azure Functions ved hjælp af Azure Functions Core Tools (func azure functionapp publish), VS Code-udvidelsen, ZIP-implementering via Azure CLI eller et CI/CD-forløb i Azure Pipelines eller GitHub Actions. I produktion skal du altid implementere fra et forløb i stedet for fra en udviklermaskine for at sikre, at testede versioner med tags når produktionen. Functions-runtime-miljøet understøtter også implementering af Docker-containere, så du får fuld kontrol over runtime-miljøet.

# Local development: install Core Tools
npm install -g azure-functions-core-tools@4

# Start locally (triggers work against real Azure services)
func start

# Deploy to Azure
func azure functionapp publish myFunctionApp

# Or deploy via Azure CLI (ZIP deploy)
zip -r function.zip . --exclude '.git/*'
az functionapp deployment source config-zip \
  --name myFunctionApp \
  --resource-group MyRG \
  --src function.zip

Programindstillinger og Key Vault-referencer

Function Apps gemmer konfiguration i programindstillinger — de vises som miljøvariabler i din funktionskode. Gem forbindelsesstrenge, API-nøgler og hemmeligheder som programindstillinger. I produktion skal du bruge Key Vault-referencer, så værdien gemmes i Key Vault og kun refereres til med navn i programindstillingen. På den måde holdes hemmeligheder ude af portalen og implementeringsartefakterne. Aktivér en administreret identitet på Function App'en, så den kan godkende sig til Key Vault uden legitimationsoplysninger.

# Set application settings
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    STORAGE_CONNECTION='@Microsoft.KeyVault(SecretUri=https://mykv.vault.azure.net/secrets/storage-conn/)' \
    COSMOS_DB_URI='https://mycosmosdb.documents.azure.com'

# In function code, read as normal env var
# const storageConn = process.env['STORAGE_CONNECTION'];

Overvågning af Functions med Application Insights

Azure Functions integreres automatisk med Application Insights, når du angiver en instrumenteringsnøgle eller forbindelsesstreng. Hver funktionskørsel spores som en anmodning, herunder varighed, succes/fejl og brugerdefinerede egenskaber. Brug Application Insights' Live Metrics til at overvåge kørsler i realtid under test, og ruden Failures til at diagnosticere fejl med fulde undtagelsesspor og afhængighedskald.

# Connect Application Insights to a Function App
az functionapp config appsettings set \
  --name myFunctionApp \
  --resource-group MyRG \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING='InstrumentationKey=xxxxxxxx;...'

# Custom telemetry in function code (Node.js)
const appInsights = require('applicationinsights');
appInsights.setup().start();
const client = appInsights.defaultClient;
client.trackEvent({ name: 'OrderProcessed', properties: { orderId: '123' } });

Samtidighed og skaleringsadfærd

For køudløste funktioner behandler Functions-værten flere meddelelser parallelt. Konfigurer batchSize i host.json for at styre, hvor mange meddelelser én instans behandler samtidigt. For HTTP-triggere tilføjes nye instanser automatisk ved udskalering. Brug maxConcurrentCalls (Service Bus-triggere) eller maxPollingInterval (kø-triggere) til at justere gennemløbet og undgå at overbelaste downstream-tjenester som databaser under udskaleringshændelser.

// host.json — tune queue trigger concurrency
{
  'version': '2.0',
  'extensions': {
    'queues': {
      'batchSize': 16,          // messages per instance
      'newBatchThreshold': 8,   // fetch more when < 8 remain
      'maxPollingInterval': '00:00:02',
      'visibilityTimeout': '00:05:00'
    }
  },
  'functionTimeout': '00:10:00'
}

Hurtig kontrol

Test din forståelse af begreberne i Microsoft Azure Fundamentals (AZ-900) fra denne lektion.

Opsummering af lektionen

I denne lektion lærte du, at udløsere definerer den hændelse, der starter en funktion (HTTP, Timer, Queue, Blob osv.), at outputbindinger lader funktioner skrive til Azure-tjenester uden SDK-kode, og at Consumption-planen giver ægte serverløs skalering fra nul med betaling pr. kørsel. Nu skal vi se nærmere på Durable Functions til tilstandsfulde arbejdsgange.

Gratis at komme i gang

Lær Cloud & IT Cert Prep med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
150
Lektioner
600

Ofte stillede spørgsmål

Er lektionen “Azure Functions-triggere og bindings” gratis?

Ja — hele teksten til “Azure Functions-triggere og bindings” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cloud & IT Cert Prep-kurset, skal du opgradere til CoddyKit PRO. Cloud & IT Cert Prep-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Azure Functions-triggere og bindings”?

Skriv en HTTP-udløst funktion, tilføj en output-binding, der skriver til Azure Queue Storage, og forstå Consumption Plans automatiske skaleringsmodel. Du øver dig i Cloud & IT Cert Prep med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cloud & IT Cert Prep?

Der kræves ingen tidligere erfaring. Cloud & IT Cert Prep på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Azure Functions-triggere og bindings”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cloud & IT Cert Prep-lektion?

Ja. Alle Cloud & IT Cert Prep-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Azure Functions-triggere og bindings
  2. Durable Functions til stateful workflows
  3. Azure Logic Apps
  4. Event Grid og eventdrevet arkitektur
← Tilbage til Cloud & IT Cert Prep