Az archív szinten lévő blob olvasásához először rehidratálnia kell a blobot a gyakori vagy ritka elérésű szintre. A rehidratálási folyamat több órát is igénybe vehet. A rehidratálási művelet állapotának ismételt lekérdezése helyett konfigurálhatja az Azure Event Gridet, hogy a blobrehidratálási művelet befejeződésekor eseményt aktiváljon, és kezelje az eseményt az alkalmazásban.
Esemény bekövetkezésekor az Event Grid egy végponton keresztül küldi el az eseményt egy eseménykezelőnek. Számos Azure-szolgáltatás szolgálhat eseménykezelőként, beleértve az Azure Functionst is. Az Azure-függvények olyan kódblokkok, amelyek egy eseményre reagálva hajthatók végre. Ez az útmutató végigvezeti egy Azure-függvény fejlesztésének folyamatán, majd konfigurálja az Event Gridet a függvény futtatására egy blob rehidratálásakor bekövetkező eseményre válaszul.
Ez a cikk bemutatja, hogyan hozhat létre és tesztelhet Azure-függvényeket a Visual Studióból a .NET használatával. Az Azure Functionst számos helyi fejlesztési környezetből és különböző programozási nyelvek használatával hozhatja létre. Az Azure Functions támogatott nyelveivel kapcsolatos további információkért lásd : Támogatott nyelvek az Azure Functionsben. Az Azure Functions fejlesztési lehetőségeiről további információt az Azure Functions helyi kóddal és tesztelésével kapcsolatban talál.
Olyan helyzetekben, ahol bizalmas adatokkal rendelkezik, például hitelesítő adatokkal, titkos kódokkal, hozzáférési jogkivonatokkal, API-kulcsokkal és más hasonló információkkal, mindenképpen használjon olyan eszközt, amely a szükséges biztonsági funkciókkal védi az adatokat, offline vagy helyileg működik, nem szinkronizálja az adatokat a felhőbe, és nem követeli meg, hogy online fiókba jelentkezzen be. Így csökkentheti a bizalmas adatok nyilvános közzétételével járó kockázatokat.
A függvényalkalmazások olyan Azure-erőforrások, amelyek tárolóként szolgálnak az Azure Functions számára. A cikkben ismertetett lépések végrehajtásához használhat egy új vagy meglévő függvényalkalmazást.
Ha új függvényalkalmazást szeretne létrehozni az Azure Portalon, kövesse az alábbi lépéseket:
Az Azure Portalon keresse meg a függvényalkalmazást. Válassza a Függvényalkalmazás ikont az előfizetésben található függvényalkalmazások listájához való navigáláshoz.
Új függvényalkalmazás létrehozásához kattintson a Létrehozás gombra.
Az Alapok lapon adjon meg egy erőforráscsoportot, és adjon meg egy egyedi nevet az új függvényalkalmazásnak.
Győződjön meg arról, hogy a Közzététel beállítás Kód értékre van állítva.
A Futtatókörnyezet verem legördülő listájában válassza a .NET lehetőséget. A Rendszer automatikusan kitölti a Verzió mezőt a .NET Core legújabb verziójának használatához.
Válassza ki az új függvényalkalmazás régióját.
Miután elvégezte az Alapszintű beállítások lapot, lépjen az Üzemeltetés lapra.
Az Üzemeltetés lapon válassza ki azt a tárfiókot, amelyben az Azure-függvényt tárolni fogja. Választhat egy meglévő tárfiókot, vagy létrehozhat egy újat.
Győződjön meg arról, hogy az operációs rendszer mezője Windowsra van állítva.
Válassza a Véleményezés + Létrehozás lehetőséget az új függvényalkalmazás létrehozásához.
A függvényalkalmazás konfigurálásával kapcsolatos további információkért tekintse meg a függvényalkalmazás kezelését az Azure Functions dokumentációjában.
Ezután hozzon létre egy Azure-függvényt, amely egy blob egy adott tárfiókban való rehidratálásakor fog futni. Kövesse az alábbi lépéseket egy Azure-függvény létrehozásához a Visual Studióban a C# és a .NET Core használatával:
Hozzon létre egy új Azure Functions-projektet. A részletekért kövesse a Függvényalkalmazás-projekt létrehozása című témakörben leírt utasításokat.
Az új Azure Functions-alkalmazás létrehozása lépésben válassza ki a következő értékeket:
Alapértelmezés szerint az Azure Functions-futtatókörnyezet azure Functions v3 (.NET Core) értékre van állítva. A Microsoft az Azure Functions-futtatókörnyezet ezen verziójának használatát javasolja.
A lehetséges eseményindítók listájában válassza az Event Grid-eseményindítót. További információ arról, hogy az Event Grid-eseményindító miért ajánlott eseményindító egy Blob Storage-esemény Azure-függvényekkel való kezeléséhez, lásd : Függvény használata eseménykezelőként az Event Grid-eseményekhez.
A Tárfiók beállítás jelzi az Azure-függvény tárolási helyét. Kiválaszthat egy meglévő tárfiókot, vagy létrehozhat egy újat.
A Létrehozás gombra kattintva hozza létre az új projektet a Visual Studióban.
Ezután nevezze át az osztályt és az Azure-függvényt a függvény átnevezésében leírtak szerint. Válasszon egy, a forgatókönyvnek megfelelő nevet.
A Visual Studióban válassza a Tools | NuGet Csomagkezelő | Csomagkezelő Console lehetőséget, majd telepítse a következő csomagokat a konzolról:
Az Azure-függvény osztályfájljában illessze be a következő utasításokat:
using System;
using System.IO;
using System.Text;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.EventGrid.Models;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;
using Azure;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
Keresse meg a Run metódust az osztályfájlban. Ez az a metódus, amely esemény bekövetkezésekor fut. Illessze be a következő kódot a Run metódus törzsébe. Ne felejtse el lecserélni a szögletes zárójelek helyőrző értékeit a saját értékeire:
// When either Microsoft.Storage.BlobCreated or Microsoft.Storage.BlobTierChanged
// event occurs, write the event details to a log blob in the same container
// as the event subject (the blob for which the event occurred).
// Create a unique name for the log blob.
string logBlobName = string.Format("function-log-{0}.txt", DateTime.UtcNow.Ticks);
// Get data from the event.
dynamic data = eventGridEvent.Data;
string eventBlobUrl = Convert.ToString(data.url);
string eventApi = Convert.ToString(data.api);
// Build string containing log information.
StringBuilder eventInfo = new StringBuilder();
eventInfo.AppendLine(string.Format("{0} operation occurred.", eventApi));
eventInfo.AppendLine(string.Format("Blob URL: {0}", eventBlobUrl));
eventInfo.AppendLine($@"Additional event details:
Id=[{eventGridEvent.Id}]
EventType=[{eventGridEvent.EventType}]
EventTime=[{eventGridEvent.EventTime}]
Subject=[{eventGridEvent.Subject}]
Topic=[{eventGridEvent.Topic}]");
// If event was BlobCreated and API call was CopyBlob, respond to the event.
bool copyBlobEventOccurred = (eventGridEvent.EventType == "Microsoft.Storage.BlobCreated") &&
(eventApi == "CopyBlob");
// If event was BlobTierChanged and API call was SetBlobTier, respond to the event.
bool setTierEventOccurred = (eventGridEvent.EventType == "Microsoft.Storage.BlobTierChanged") &&
(eventApi == "SetBlobTier");
// If one of these two events occurred, write event info to a log blob.
if (copyBlobEventOccurred | setTierEventOccurred)
{
// Create log blob in same account and container.
BlobUriBuilder logBlobUriBuilder = new BlobUriBuilder(new Uri(eventBlobUrl))
{
BlobName = logBlobName
};
TokenCredential credential = new DefaultAzureCredential();
string blobUri = "https://" + accountName + ".blob.core.windows.net/" + logBlobUriBuilder.BlobContainerName + "/" + logBlobName;
BlobClient logBlobClient = new BlobClient(new Uri(blobUri), credential);
byte[] byteArray = Encoding.ASCII.GetBytes(eventInfo.ToString());
try
{
// Write the log info to the blob.
// Overwrite if the blob already exists.
using (MemoryStream memoryStream = new MemoryStream(byteArray))
{
BlobContentInfo blobContentInfo =
logBlobClient.Upload(memoryStream, overwrite: true);
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
throw;
}
}
Az Azure Functions fejlesztésével kapcsolatos további információkért tekintse meg az Azure Functions fejlesztésére vonatkozó útmutatót.
Az Azure-függvénykód helyi teszteléséhez manuálisan kell elküldenie egy HTTP-kérést, amely elindítja az eseményt. A kérést közzéteheti a jelen cikk előfeltételként szolgáló szakaszában ismertetett eszközökkel.
Az Azure-függvény osztályfájljának tetején található egy URL-végpont, amelyet a helyi környezetben történő teszteléshez használhat. Ha ezzel az URL-címmel teszi közzé a kérést, a helyi környezetben aktiválja az eseményt, így hibakeresést végezhet a kódban. Az URL-cím formátuma a következő:
Az erre a végpontra küldött kérés szimulált kérés. Nem küld és nem fogad adatokat az Azure Storage-fiókból.
Küldjön egy kérést erre a végpontra a HTTP-kérési eszközzel és annak utasításaival. Ügyeljen arra, hogy a helyőrzőt {functionname} helyettesítse a függvény nevével (például Get http://localhost:7071/runtime/webhooks/EventGrid?functionName=BlobRehydrateEventHandler).
A Visual Studióban helyezze el a kívánt töréspontokat a kódban, és nyomja le az F5 billentyűt a hibakereső futtatásához.
A HTTP-kérési eszközben küldje el a kérelmet a végpontnak.
A kérés elküldésekor az Event Grid meghívja az Azure-függvényt, és a hibakeresést a szokásos módon végezheti el. További információkért és példákért tekintse meg a kérés manuális közzétételét az Azure Functions dokumentációjában.
Az eseményt kiváltó kérés szimulálva van, de az esemény aktiválásakor futó Azure-függvény naplóadatokat ír egy új blobba a tárfiókban. Ellenőrizheti a blob tartalmát, és megtekintheti az utolsó módosítás időpontját az Azure Portalon az alábbi képen látható módon:
Az Azure-függvény közzététele
Miután helyileg tesztelte az Azure-függvényt, a következő lépés az Azure-függvény közzététele a korábban létrehozott Azure-függvényalkalmazásban. A függvényt közzé kell tenni, hogy konfigurálhassa az Event Gridet, hogy a tárfiókban bekövetkező eseményeket a függvényvégpontra küldje.
A függvény közzétételéhez kövesse az alábbi lépéseket:
A Megoldáskezelő válassza ki és tartsa lenyomva az Azure Functions-projektet (vagy kattintson rá a jobb gombbal), és válassza a Közzététel lehetőséget.
A Közzététel ablakban válassza az Azure-t célként, majd válassza a Tovább gombot.
Válassza az Azure-függvényalkalmazást (Windows) az adott célként, majd válassza a Tovább gombot.
A Functions-példány lapon válassza ki az előfizetését a legördülő menüből, majd keresse meg az Azure-függvényalkalmazást az elérhető függvényalkalmazások listájában.
Győződjön meg arról, hogy a Futtatás csomagfájlból jelölőnégyzet be van jelölve.
A Befejezés gombra kattintva előkészítheti a függvény közzétételét.
A Közzététel lapon ellenőrizze, hogy a konfiguráció helyes-e. Ha figyelmeztetés jelenik meg arról, hogy az Application Insights szolgáltatásfüggősége nincs konfigurálva, ezen a lapon konfigurálhatja.
A Közzététel gombra kattintva megkezdheti az Azure-függvény közzétételét a korábban létrehozott Azure-függvényalkalmazásban.
Amikor módosítja az Azure-függvény kódját, közzé kell tennie a frissített függvényt az Azure-ban.
Feliratkozás blobrehidratálási eseményekre egy tárfiókból
Most már rendelkezik egy olyan függvényalkalmazással, amely egy Azure-függvényt tartalmaz, amely egy eseményre válaszul futtatható. A következő lépés egy esemény-előfizetés létrehozása a tárfiókból. Az esemény-előfizetés úgy konfigurálja a tárfiókot, hogy az Eseményrácson keresztül tegyen közzé egy eseményt a tárfiókban lévő blobon végrehajtott műveletre válaszul. Az Event Grid ezután elküldi az eseményt a megadott eseménykezelő végpontnak. Ebben az esetben az eseménykezelő az előző szakaszban létrehozott Azure-függvény.
Az esemény-előfizetés létrehozásakor szűrheti, hogy mely eseményeket küldi el a rendszer az eseménykezelőnek. A blobok archiválási rétegből való rehidratálásakor rögzítendő események a Microsoft.Storage.BlobTierChanged, amely egy Blobréteg beállítása műveletnek felel meg, és a Blob másolása műveletnek megfelelő Microsoft.Storage.BlobCreated események. A forgatókönyvtől függően előfordulhat, hogy csak az egyik ilyen eseményt szeretné kezelni.
Az esemény-előfizetés létrehozásához kövesse az alábbi lépéseket:
Az Azure Portalon keresse meg azt a tárfiókot, amely blobokat tartalmaz az archív rétegből való rehidratáláshoz.
Válassza az Események beállítást a bal oldali navigációs panelen.
Az Események lapon válassza a További beállítások lehetőséget.
Válassza az Esemény-előfizetés létrehozása lehetőséget.
Az Esemény-előfizetés létrehozása lapon, az Esemény-előfizetés részletei szakaszban adja meg az esemény-előfizetés nevét.
A Témakör részletei szakaszban adja meg a rendszertéma nevét. A rendszertéma egy vagy több, az Azure Storage által közzétett eseményt jelöl. A rendszertémakörökről további információt az Azure Event Grid rendszertémakörökben talál.
Az Eseménytípusok szakaszban válassza ki a Blob Által létrehozott és a Blobrétegben módosított eseményeket. Attól függően, hogy hogyan rehidratál egy blobot az archív rétegből, a két esemény egyike aktiválódik.
A Végpont részletei szakaszban válassza az Azure-függvényt a legördülő menüből.
Válassza a Végpont kiválasztása lehetőséget az előző szakaszban létrehozott függvény megadásához. Az Azure-függvény kiválasztása párbeszédpanelen válassza ki az Azure-függvény előfizetését, erőforráscsoportját és függvényalkalmazását. Végül válassza ki a függvény nevét a legördülő listában, és válassza a Kijelölés megerősítése lehetőséget.
A Létrehozás gombra kattintva létrehozhatja az esemény-előfizetést, és megkezdheti az események küldését az Azure Function eseménykezelőjének.
Az Azure-függvény teszteléséhez aktiválhat egy eseményt az esemény-előfizetést tartalmazó tárfiókban. A korábban létrehozott esemény-előfizetés két eseményre szűr: Microsoft.Storage.BlobCreated és Microsoft.Storage.BlobTierChanged. Ha valamelyik esemény aktiválódik, az aktiválja az Azure-függvényt.
A cikkben bemutatott Azure-függvény két forgatókönyvben ír egy naplóblobba:
Ha az esemény Microsoft.Storage.BlobCreated, és az API-művelet a Blob másolása.
Ha az esemény Microsoft.Storage.BlobTierChanged, és az API-művelet blobszint beállítása.
Ha meg szeretné tudni, hogyan tesztelheti a függvényt egy blob rehidratálásával, tekintse meg az alábbi két eljárás egyikét:
A rehidratálás befejezése után a naplóblob ugyanarra a tárolóra lesz írva, mint a rehidratált blob. Ha például másolási művelettel rehidratál egy blobot, az Azure Portalon láthatja, hogy az eredeti forrásblob az archív szinten marad, a teljesen rehidratált célblob megjelenik a célzott online szinten, és az Azure-függvény által létrehozott naplóblob is megjelenik a listában.
Ne feledje, hogy a blob rehidratálása a rehidratálás prioritási beállításától függően akár 15 órát is igénybe vehet. Ha magasra állítja a rehidratálási prioritást, a rehidratálás egy órán belül befejeződhet a 10 GB-nál kisebb méretű blobok esetében. A magas prioritású rehidratálás azonban nagyobb költséggel jár. További információ: A blob rehidratációjának áttekintése az archív rétegből.
Tipp.
Bár ennek az útmutatónak az a célja, hogy ezeket az eseményeket a blobrehidratálás kontextusában kezelje, tesztelési célokból hasznos lehet ezeket az eseményeket megfigyelni egy blob feltöltése vagy egy online blob szintjének módosításakor (azaz a gyakori elérésűtől a ritka elérésűig), mert az esemény azonnal aktiválódik.
Az Események szűrése az Event Gridben című témakörben talál további információt az Események szűrése az Azure Event Gridben című témakörben.
A Microsoft Azure-ban végpontok közötti megoldásokat hozhat létre az Azure Functions létrehozásához, webalkalmazások implementálásához és kezeléséhez, az Azure Storage használatával történő megoldások fejlesztéséhez stb.