Azure Fundamentals · Oppitunti

Azure Functions -laukaisimet ja sidonnat

Kirjoittakaa HTTP-laukaisun käyttävä funktio, lisätkää tulossidonta Azure Queue Storageen kirjoittamista varten ja perehtykää Consumption Planin automaattisen skaalauksen malliin.

Oppitunti 1/413 vaihetta

Azure Functions -laukaisimet ja sidonnat on ilmainen Azure Fundamentals-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Azure Fundamentals-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.

Mitä Azure Functions on?

Azure Functions on palvelimeton laskentapalvelu, jonka avulla voitte suorittaa pieniä koodiyksiköitä (funktioita) tapahtumien perusteella ilman infrastruktuurin hallintaa. Maksatte vain funktion suorituksen aikana käytetystä suoritusajasta ja muistista — funktion ollessa käyttämättömänä kustannuksia ei synny. Functions sopii erinomaisesti tapahtumapohjaisiin tehtäviin, kevyisiin API-rajapintoihin, ajastettuihin töihin ja pilvipalveluiden integrointiin ilman jatkuvasti käynnissä olevaa palvelinta.

Käynnistimet: mikä käynnistää funktion

Jokaisella Azure Function -funktiolla on oltava täsmälleen yksi käynnistin, joka määrittää suorituksen aiheuttavan tapahtuman. Yleisiä käynnistimiä ovat HTTP (saapuva HTTP-pyyntö), Timer (CRON-aikataulu), Blob Storage (uusi blob säilössä), Queue Storage (uusi viesti jonossa), Event Hub (tapahtumavirta), Service Bus (jono- tai aiheviesti) ja Cosmos DB (muutossyöte). Käynnistin vastaanottaa tapahtuman tiedot ja välittää ne funktiokoodille.

// 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: käynnistin- ja sidonta-asetukset

Kääntämättömissä kielissä, kuten JavaScriptissä ja Pythonissa, kunkin funktion hakemistossa oleva function.json-tiedosto määrittää sen käynnistimet ja sidonnat. Tiedosto yhdistää tapahtumalähteet ja tulosteet funktiokoodin nimettyihin parametreihin. C#:ssa ja Javassa sidonnat määritetään suoraan koodissa attribuuteilla tai annotaatioilla. Functions-ajonaikainen ympäristö lukee asetukset ja muodostaa yhteydet Azure-palveluihin automaattisesti.

// 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'
    }
  ]
}

Tulostesidonnat: tietojen kirjoittaminen palveluihin

Tulostesidontojen avulla funktio voi kirjoittaa tietoja Azure-palveluihin (Blob Storage, Queue Storage, Cosmos DB, Event Hub ja muut) ilman SDK:iden tai yhteysmerkkijonojen hallintaa. Määritätte vain arvon tulostesidonnan parametrille, ja Functions-ajonaikainen ympäristö huolehtii kirjoittamisesta. Tämä vähentää huomattavasti toisteista koodia ja irrottaa funktion tietyn Azure-palvelun toteutuksen yksityiskohdista.

// 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' };
};

Ajastinkäynnistin CRON-lausekkeilla

Timer-käynnistin suorittaa funktion CRON-lausekkeella määritetyn aikataulun mukaisesti. Azure Functions käyttää kuusiosaista CRON-lauseketta: {seconds} {minutes} {hours} {day} {month} {day-of-week}. Käyttäkää lauseketta 0 0 * * * * kerran tunnissa, lauseketta 0 0 0 * * * päivittäin keskiyöllä tai lauseketta 0 0 9-17 * * 1-5 arkipäivien työaikana kerran tunnissa. Ajastinfunktiot sopivat esimerkiksi siivoustehtäviin, raporttien luomiseen ja kuntotarkistuksiin.

// 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');
};

Consumption-suunnitelma: palvelimeton skaalaus

Consumption-suunnitelmassa Azure Functions skaalautuu automaattisesti nollasta satoihin instansseihin käynnistintapahtumien määrän perusteella. Maksatte vain suoritusten määrästä ja käytetystä muistista gigatavu-sekunteina — ensimmäinen miljoona suoritusta kuukaudessa on maksuton. Functions-isäntä voi skaalata HTTP-käynnistimen enintään 200 instanssiin ja jonokäynnistimen samanaikaisten jonoviestien määrään asti. Kylmäkäynnistys eli ensimmäinen suoritus joutokäynnin jälkeen lisää lyhyen viiveen, jota Premium-suunnitelman valmiiksi lämmitetyt instanssit vähentävät.

# 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- ja Dedicated-suunnitelmat

Premium-suunnitelma poistaa kylmäkäynnistykset pitämällä instansseja valmiiksi lämmitettyinä, lisää VNet-integraation ja sallii pidemmät suoritusajan aikakatkaisut (enintään 60 minuuttia). Dedicated (App Service) -suunnitelma suorittaa funktioita samassa App Service -suunnitelmassa kuin verkkosovellukset. Se sopii tilanteisiin, joissa tarvitsette ennakoitavat kustannukset tai käytettävissänne on ennestään App Service -laskentakapasiteettia. Valitkaa Consumption todelliseen palvelimettomaan hinnoitteluun ja Premium suorituskykyä vaativiin tai VNet-yhteyttä käyttäviin funktioihin.

# 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

Azure Functions -funktioiden käyttöönotto

Ottakaa Azure Functions -funktiot käyttöön Azure Functions Core Tools -työkaluilla (func azure functionapp publish), VS Code -laajennuksella, Azuren CLI:n kautta tehtävällä ZIP-käyttöönotolla tai CI/CD-putkella Azure Pipelinesissa tai GitHub Actionsissa. Ottakaa tuotantoon aina käyttöön putken kautta kehittäjän tietokoneen sijaan, jotta tuotantoon päätyvät testatut ja tunnisteella merkityt versiot. Functions-ajonaikainen ympäristö tukee myös Docker-säilön käyttöönottoa, joka tarjoaa täyden hallinnan ajonaikaisesta ympäristöstä.

# 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

Sovellusasetukset ja Key Vault -viittaukset

Function Apps -sovellukset tallentavat määritykset sovellusasetuksiin, jotka näkyvät funktiokoodissa ympäristömuuttujina. Tallentakaa yhteysmerkkijonot, API-avaimet ja salaisuudet sovellusasetuksina. Käyttäkää tuotannossa Key Vault -viittauksia, jolloin arvo tallennetaan Key Vaultiin ja sovellusasetuksessa viitataan siihen vain nimen perusteella. Näin salaisuudet eivät päädy portaaliin tai käyttöönottotiedostoihin. Ottakaa Function App -sovelluksessa hallittu identiteetti käyttöön, jotta se voi todentautua Key Vaultiin ilman tunnistetietoja.

# 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'];

Functions-funktioiden valvonta Application Insightsilla

Azure Functions integroituu automaattisesti Application Insightsiin, kun määritätte instrumentointiavaimen tai yhteysmerkkijonon. Jokainen funktion suoritus seurataan pyyntönä, mukaan lukien kesto, onnistuminen tai epäonnistuminen sekä mukautetut ominaisuudet. Käyttäkää Application Insightsin Live Metrics -näkymää suoritusten seuraamiseen reaaliajassa testauksen aikana ja Failures-näkymää virheiden selvittämiseen täydellisten poikkeusjälkien ja riippuvuuskutsujen avulla.

# 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' } });

Samanaikaisuus ja skaalautumisen toiminta

Jonokäynnisteisten funktioiden tapauksessa Functions-isäntä käsittelee useita viestejä rinnakkain. Määrittäkää batchSize host.json-tiedostossa hallitaksenne, kuinka monta viestiä yksi instanssi käsittelee samanaikaisesti. HTTP-käynnistimillä ulosskaalaus lisää uusia instansseja automaattisesti. Säätäkää läpimenoa ja estäkää taustapalveluiden, kuten tietokantojen, ylikuormittuminen ulosskaalaustilanteissa käyttämällä asetusta maxConcurrentCalls (Service Bus -käynnistimet) tai maxPollingInterval (jonokäynnistimet).

// 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'
}

Pikatarkistus

Testatkaa, kuinka hyvin ymmärrätte tällä oppitunnilla käsitellyt Microsoft Azure Fundamentals (AZ-900) -käsitteet.

Oppitunnin kertaus

Tällä oppitunnilla opitte, että laukaisimet määrittävät funktion käynnistävän tapahtuman (HTTP, ajastin, jono, blob-säilö jne.), tulossidonnat mahdollistavat funktioiden kirjoittamisen Azure-palveluihin ilman SDK-koodia ja Consumption-suunnitelma tarjoaa aidosti palvelimettoman suorituskertakohtaisesti laskutettavan skaalautumisen nollasta alkaen. Seuraavaksi tutustumme tilallisia työnkulkuja varten tarkoitettuihin Durable Functions -toimintoihin.

Aloita maksutta

Opi Azure Fundamentals tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Azure Functions -laukaisimet ja sidonnat” ilmainen?

Kyllä – oppitunnin ”Azure Functions -laukaisimet ja sidonnat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Azure Fundamentals-kurssin, päivitä CoddyKit PROhon. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Azure Functions -laukaisimet ja sidonnat”?

Kirjoittakaa HTTP-laukaisun käyttävä funktio, lisätkää tulossidonta Azure Queue Storageen kirjoittamista varten ja perehtykää Consumption Planin automaattisen skaalauksen malliin. Harjoittelet Azure Fundamentals-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Azure Fundamentals-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Azure Fundamentals-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Azure Functions -laukaisimet ja sidonnat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Azure Fundamentals-oppitunnilla?

Kyllä. Jokainen Azure Fundamentals-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Azure Functions -laukaisimet ja sidonnat
  2. Durable Functions tilallisiin työnkulkuihin
  3. Azure Logic Apps
  4. Event Grid ja tapahtumapohjainen arkkitehtuuri
← Takaisin: Azure Fundamentals