Gyakorlat – Az ügyfélkódtár konfigurálása és inicializálása

Befejeződött

Az Azure Blob Storage-t használó alkalmazások tipikus munkafolyamata a következő:

  1. Konfiguráció lekérése: Indításkor töltse be a tárfiók konfigurációját, általában egy tárfiók kapcsolati sztring.

  2. Ügyfél inicializálása: Az Azure Storage-ügyfélkódtár inicializálásához használja a kapcsolati sztring. Ez az inicializálás létrehozza azokat az objektumokat, amelyeket az alkalmazás a Blob Storage API használatához használ.

  3. Használat: Tárolókon és blobokon való működéshez API-hívásokat kezdeményezhet az ügyfélkódtár használatával.

A kapcsolati sztring konfigurálása

Az alkalmazás futtatása előtt kérje le a használt tárfiók kapcsolati sztring. A lekéréshez bármilyen Azure felügyeleti felületet használhat, beleértve az Azure Portalt, az Azure CLI-t és az Azure PowerShellt. Amikor a webalkalmazást úgy állítja be, hogy a modul végén futtassa a kódot, az Azure CLI-vel lekérheti a korábban létrehozott tárfiók kapcsolati sztring.

A tárfiókok kapcsolati sztringjei tartalmazzák a fiókkulcsot. A fiókkulcsot titkosnak kell tekinteni. Biztonságosan tárolja. Itt egy App Service-alkalmazásbeállításban tárolhatja a kapcsolati sztring. Az App Service alkalmazásbeállításai biztonságos helyet jelentenek az alkalmazás titkos kulcsainak. Ez a kialakítás nem támogatja a helyi fejlesztést, és önmagában nem egy robusztus, teljes körű megoldás.

Figyelmeztetés:

A tárfiók kulcsait ne helyezze el kódokban vagy védelem nélküli konfigurációs fájlokban. A tárfiókkulcsok teljes hozzáférést nyújtanak a tárfiókokhoz. A kulcs kiszivárgása helyreállíthatatlan károkat és nagy számlákat eredményezhet. A kiszivárgott kulcsok helyreállításával kapcsolatos tárolási útmutatásért és tanácsért tekintse meg a modul végén található További olvasás című szakaszt.

A Blob Storage-objektummodell inicializálása

A .NET-hez készült Azure Storage SDK-ban a Blob Storage használatának szabványos mintája a következő:

  1. Példányosítson egy új BlobServiceClient objektumot, és adja meg a kapcsolati sztring a tárfióknak.

  2. A lekéréshez BlobContainerClienthívja meg GetBlobContainerClient annak a tárolónak a BlobServiceClient nevét, amellyel kapcsolatba szeretne lépni vagy létrehozni.

A kódban ezek a lépések így néznek ki.

BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);

Az inicializálási kód nem intéz hívásokat a hálózaton keresztül. Ez a tény azt jelenti, hogy néhány, helytelen információ miatt előforduló kivételt csak később dobnak ki. Ha például helytelenül formázott kapcsolati sztring ad meg az BlobServiceClient osztály konstruktorának, a rendszer azonnal kivételt jelez. Ha azonban a kapcsolati sztring olyan tárfiókra mutat, amely nem létezik, a rendszer kivételt nem tesz, amíg meg nem kísérli a műveletet a tárfiókon.

A Java-hoz készült Azure Storage SDK-ban a Blob Storage használatának szabványos mintája a következő lépésekből áll:

  1. Hozzon létre egy BlobServiceClient új BlobServiceClientBuilder objektumot a tárfiók kapcsolati sztring használatával.

  2. BlobContainerClient Ehhez hívja meg a getBlobContainerClient metódust annak BlobServiceClienta tárolónak a nevével, amellyel kapcsolatba szeretne lépni vagy létrehozni.

A kódban ezek a lépések így néznek ki.

BlobServiceClient blobServiceClient = BlobServiceClientBuilder()
    .connectionString(connectionString)
    .buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);

Az inicializálási kód nem intéz hívásokat a hálózaton keresztül. Ez a tény azt jelenti, hogy néhány, helytelen információ miatt előforduló kivételt csak később dobnak ki. Ha például helytelenül formázott kapcsolati sztring ad meg a BlobServiceClientBuilderrendszer, a rendszer azonnal kivételt jelez. Ha azonban a kapcsolati sztring olyan tárfiókra mutat, amely nem létezik, a rendszer kivételt nem tesz, amíg meg nem kísérli a műveletet a tárfiókon.

Tárolók létrehozása az indításkor

Ha tárolót szeretne létrehozni az alkalmazás indításakor vagy amikor az alkalmazás először megpróbál tárolót használni, hívja fel CreateIfNotExistsAsync a BlobContainerClient.

CreateIfNotExistsAsync nem ad kivételt, ha a tároló már létezik, de hálózati hívást indít az Azure Blob Storage-ba. Csak egyszer érdemes meghívni az inicializálásnál, nem pedig minden alkalommal, amikor használni szeretné a tárolót.

Ha tárolót szeretne létrehozni, amikor az alkalmazás elindul, vagy amikor először megpróbálja használni, hívja meg a tárolót existsBlobContainerClient , hogy ellenőrizze, létezik-e már tároló. Ha nem létezik, hívja meg a következőt create: Csak egyszer érdemes meghívni az inicializálásnál, nem pedig minden alkalommal, amikor használni szeretné a tárolót.

Gyakorlat

A befejezetlen alkalmazás klónozása és felfedezése

  1. Először klónozza a kezdőalkalmazást a GitHubról. A forráskód másolatának lekéréséhez és a szerkesztőben való megnyitásához futtassa a következő parancsokat az Azure Shell parancssori felületén:

    git clone https://github.com/MicrosoftDocs/mslearn-store-data-in-azure.git
    cd mslearn-store-data-in-azure/store-app-data-with-azure-blob-storage/src/start
    code .
    
  2. Nyissa meg a szerkesztőben a Controllers/FilesController.cs fájlt. Itt nincs teendő, de gyorsan áttekintheti az alkalmazás működését.

    Ez a vezérlő egy API-t implementál három művelettel:

    • Index: (GET /api/Files) az URL-címek listáját adja vissza, egyet minden feltöltött fájlhoz. Az alkalmazás kezelőfelülete ezt a módszert hívja a feltöltött fájlokra mutató hivatkozások létrehozásához.
    • Feltöltés: (POST /api/Files) megkapja a feltöltött fájlt, és menti azt.
    • Letöltés: (GET /api/Files/{filename}) letölti az egyes fájlokat a neve alapján.

    Mindegyik módszer egy storage nevű IStorage-példányt használ a feladathoz. A Kitöltéshez a Models/BlobStorage.cs fájl hiányos implementációja IStorage szükséges.

A NuGet-csomag hozzáadása

  • Adjon hozzá egy hivatkozást az Azure Storage SDK-ra. Futtassa a következő parancsokat az Azure Shell CLI-ben:

    dotnet add package Azure.Storage.Blobs
    dotnet restore
    

    Ez a parancs biztosítja, hogy a Blob Storage-ügyfélkódtár legújabb verzióját használja.

Configure

A szükséges konfigurációs értékek a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás a fájlok tárolására használ. Ebben a modulban csak a Azure-alkalmazás Service-ben fogja futtatni az alkalmazást. Kövesse az App Service ajánlott eljárásait, és tárolja az értékeket az App Service alkalmazásbeállításaiban. Ezt az App Service-példány létrehozásakor teheti meg. Jelenleg semmit sem kell tennie.

A konfiguráció használatakor a kezdőalkalmazás tartalmazza a szükséges vízvezetéket. A IOptions<AzureStorageConfig> konstruktorparaméter két tulajdonsággal BlobStorage rendelkezik: a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás blobok tárolására használ. Az alkalmazás indításakor van ConfigureServices egy kód, amely betölti Startup.cs a konfiguráció értékeit.

Inicializálás

  1. A szerkesztőben nyissa meg a Models/BlobStorage.cs fájlt. A fájl tetején adja hozzá a következő using utasításokat, hogy előkészítse a hozzáadni kívánt kódhoz.

    using Azure;
    using Azure.Storage.Blobs;
    using Azure.Storage.Blobs.Models;
    
  2. Keresse meg a(z) Initialize metódust. Az alkalmazás először hívja meg ezt a metódust BlobStorage . Ha kíváncsi, a Startup.cs webhelyen megnézhetiConfigureServices, hogyan történik a hívás.

    A tárolót az Initialize részben érdemes létrehozni, ha még nem létezik. Cserélje le a jelenlegi implementációt Initialize a következő kódra, és mentse a munkáját a CTRL S billentyűkombinációval+.

    public Task Initialize()
    {
        BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);
        return containerClient.CreateIfNotExistsAsync();
    }
    

A befejezetlen alkalmazás klónozása és felfedezése

  1. Először klónozza a kezdőalkalmazást a GitHubról. A forráskód másolatának lekéréséhez és a szerkesztőben való megnyitásához futtassa a következő parancsokat az Azure Shell parancssori felületén:

    git clone https://github.com/MicrosoftDocs/mslearn-store-data-in-azure.git
    cd mslearn-store-data-in-azure/store-java-ee-application-data-with-azure-blob-storage/start
    code .
    
  2. A szerkesztőben nyissa meg az src/main/java/com/microsoft/azure/samples/jsf/IndexBean.java fájlt. Itt nincs teendő, de gyorsan áttekintheti az alkalmazás működését.

    Ez a kérelem hatókörű bean három műveletet valósít meg, amelyeket az src/main/webapp/index.xhtml Java Server Faces (JSF) oldal használ:

    • listFileNames: a feltöltött fájlokhoz egy-egy fájlnevet ad vissza. Az index.xhtml oldal meghívja ezt a metódust a feltöltött fájlokra mutató hivatkozások listájának összeállításához.
    • feltöltés: egy feltöltött fájlt kap, és menti. A fájl tartalmát és metaadatait a uploadedFile JSF-keretrendszer injektálja a tulajdonságba.
    • letöltés: letölt egy adott fájlt a neve alapján.

    A munkájához minden metódus egy úgynevezett storagepéldányt Storage használ. Az src/main/java/com/microsoft/azure/samples/service/BlobStorage.java fájl hiányos implementációja Storageszükséges a kitöltéshez.

Az Azure Storage SDK for Java-referencia hozzáadása

Javasoljuk, hogy az Azure BOM használatával adjon hozzá Azure-ügyfélkódtárakat a projekthez. Egyszerű és elegáns módot kínál több Azure-ügyfélkódtár együttes használatára, miközben minimális függőségi ütközéseket biztosít.

  1. A szerkesztőben nyissa meg a pom.xml fájlt.

  2. Az Azure BOM projekthez való hozzáadásához adja hozzá az alábbi dependencyManagement szakaszt az project xml-címke alatt.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-sdk-bom</artifactId>
          <version>1.0.6</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  3. Az Azure Storage SDK for Java hozzáadásához adja hozzá az alábbiakat dependency az project/dependencies xml-szakaszhoz.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-blob</artifactId>
    </dependency>
    

Configure

A szükséges konfigurációs értékek a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás a fájlok tárolására használ. Ebben a modulban csak a Azure-alkalmazás Service-ben fogja futtatni az alkalmazást. Kövesse az App Service ajánlott eljárásait, és tárolja az értékeket az App Service alkalmazásbeállításaiban. Ezt az App Service-példány létrehozásakor teheti meg. Jelenleg semmit sem kell tennie.

A konfiguráció használatakor az App Service alkalmazásbeállításai környezeti változóként lesznek átadva az alkalmazáskódnak. Ezeket az inicializálási kódban olvashatja el.

Inicializálás

  1. A szerkesztőben nyissa meg az src/main/java/com/microsoft/azure/samples/service/BlobStorage.java fájlt. A fájl tetején adja hozzá a következő import utasításokat, hogy előkészítse a hozzáadni kívánt kódhoz.

    import java.util.stream.Collectors;
    
    import com.azure.storage.blob.BlobClient;
    import com.azure.storage.blob.BlobContainerClient;
    import com.azure.storage.blob.BlobServiceClient;
    import com.azure.storage.blob.BlobServiceClientBuilder;
    import com.azure.storage.blob.models.BlobItem;
    
  2. Adjon hozzá egy osztálytulajdonságot az BlobStorage osztályban a BlobContainerClient hivatkozás tárolásához.

    private BlobContainerClient blobContainerClient;
    

    Tipp.

    Az Azure-ügyfelek állapot nélküliek és szálbiztosak. A példányok gyorsítótárazása ajánlott, ahol lehetséges. A használt alkalmazás például egyetlen tárolót használ állandó névvel, ezért a legjobb, ha az alkalmazás élettartamának hatókörében gyorsítótárazza. BlobStorage@Singleton ezért a hivatkozás a saját mezőjében való tárolása BlobContainerClient javasolt.

  3. Keresse meg a init módszert széljegyzetekkel @PostConstruct . Az alkalmazás a példány létrehozása után BlobStorage és az első használat előtt hívja meg ezt a metódust.

    init Ha még nem létezik, akkor a tárolót itt hozhatja létre. Cserélje le az init jelenlegi formáját az alábbi kódra, majd mentse a módosítást.

    @PostConstruct
    private void init() {
        String connectionString = System.getenv("STORAGE_CONNECTION_STRING");
        String containerName = System.getenv("STORAGE_CONTAINER_NAME");
        BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
            .connectionString(connectionString)
            .buildClient();
        blobContainerClient = blobServiceClient.getBlobContainerClient(containerName);
        if (!blobContainerClient.exists()) {
            blobContainerClient.create();
        }
    }