Krok 1. Przekazywanie danych obrazu w chmurze za pomocą usługi Azure Storage

Niniejszy samouczek jest pierwszą częścią serii. Z tego samouczka dowiesz się, jak wdrożyć aplikację internetową. Aplikacja internetowa używa biblioteki klienta usługi Azure Blob Storage do przekazywania obrazów na konto magazynu.

W jednej części serii wykonasz następujące zadania:

  • Tworzenie konta magazynu
  • Tworzenie kontenera i ustawianie uprawnień
  • Pobieranie klucza dostępu
  • Wdrażanie aplikacji internetowej na platformie Azure
  • Konfigurowanie ustawień aplikacji
  • Korzystanie z aplikacji internetowej

Wymagania wstępne

Do wykonania kroków tego samouczka potrzebna jest subskrypcja platformy Azure. Zanim rozpoczniesz, utwórz bezpłatne konto.

Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Button to launch Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając klawisze Ctrl+Shift V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift++V w systemie macOS.

  4. Wybierz klawisz Enter, aby uruchomić kod lub polecenie.

Tworzenie grupy zasobów

Ważne

W kroku 2 samouczka użyjesz usługi Azure Event Grid z magazynem obiektów blob utworzonym w tym kroku. Utwórz konto magazynu w regionie świadczenia usługi Azure, który obsługuje usługę Event Grid. Lista obsługiwanych regionów znajduje się w artykule Produkty platformy Azure według regionu.

  1. W usłudze Azure Cloud Shell wybierz pozycję Bash w lewym górnym rogu, jeśli nie została jeszcze wybrana.

    Screenshot showing the Azure Cloud Shell with the Bash option selected.

  2. Utwórz grupę zasobów za pomocą polecenia az group create. Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.

    Uwaga

    Ustaw odpowiednie wartości dla region i rgName (nazwa grupy zasobów).

    region="eastus"
    rgName="egridtutorialrg"
    az group create --name $rgName --location $region
    
    

Tworzenie konta magazynu

Przykład przekazuje obrazy do kontenera obiektów blob na koncie usługi Azure Storage.

Utwórz konto magazynu w utworzonej grupie zasobów przy użyciu polecenia az storage account create.

blobStorageAccount="myblobstorage$RANDOM"

az storage account create --name $blobStorageAccount --location $region \
  --resource-group $rgName --sku Standard_LRS --kind StorageV2 --access-tier hot --allow-blob-public-access true

Tworzenie kontenerów w usłudze Blob Storage

Aplikacja używa dwóch kontenerów w ramach konta usługi Blob Storage. Z kontenerem images mamy do czynienia wtedy, gdy aplikacja przekazuje obrazy w pełnej rozdzielczości. W drugim kroku serii aplikacja funkcji platformy Azure przekazuje miniatury obrazów o zmienionym rozmiarze do kontenera thumbnails .

Dostęp publiczny do kontenera images jest ustawiony na wartość off. Dostęp publiczny do kontenera thumbnails jest ustawiony na wartość container. Ustawienie dostępu publicznego na wartość container powoduje, że użytkownicy, którzy odwiedzają stronę internetową, mogą wyświetlać miniatury.

Pobierz klucz konta magazynu przy użyciu polecenia az storage account keys list. Następnie użyj tego klucza do utworzenia dwóch kontenerów za pomocą polecenia az storage container create.

blobStorageAccountKey=$(az storage account keys list -g $rgName \
  -n $blobStorageAccount --query "[0].value" --output tsv)

az storage container create --name images \
  --account-name $blobStorageAccount \
  --account-key $blobStorageAccountKey

az storage container create --name thumbnails \
  --account-name $blobStorageAccount \
  --account-key $blobStorageAccountKey --public-access container

Przykładowa aplikacja łączy się z kontem magazynu przy użyciu jego nazwy i klucza dostępu.

Tworzenie planu usługi App Service

Plan usługi App Service określa lokalizację, rozmiar i funkcje farmy serwerów sieci Web, która jest hostem aplikacji. W poniższym przykładzie jest tworzony plan usługi App Service o nazwie myAppServicePlan przy użyciu warstwy cenowej Bezpłatna:

Utwórz plan usługi App Service za pomocą polecenia az appservice plan create.

planName="MyAppServicePlan"
az appservice plan create --name $planName --resource-group $rgName --sku Free

Tworzenie aplikacji internetowej

Aplikacja internetowa zapewnia obszar hostingu dla kodu aplikacji przykładowej, który jest wdrażany z przykładowego repozytorium usługi GitHub.

Utwórz aplikację internetową w myAppServicePlanplanie usługi App Service za pomocą polecenia az webapp create.

webapp="mywebapp$RANDOM"

az webapp create --name $webapp --resource-group $rgName --plan $planName

Wdrażanie aplikacji przykładowej z repozytorium usługi GitHub

Usługa App Service obsługuje kilka metod wdrażania zawartości w aplikacji internetowej. W tym samouczku wdrażasz aplikację internetową z publicznego repozytorium przykładów usługi GitHub. Skonfiguruj wdrożenie usługi GitHub do aplikacji internetowej za pomocą polecenia az webapp deployment source config.

Przykładowy projekt zawiera aplikację ASP.NET MVC. Akceptuje ona obraz, zapisuje go na koncie magazynu i wyświetla obrazy z kontenera miniatur. Aplikacja internetowa używa przestrzeni nazw Azure.Storage, Azure.Storage.Blobs i Azure.Storage.Blobs.Models do interakcji z usługą Azure Storage.

az webapp deployment source config --name $webapp --resource-group $rgName \
  --branch master --manual-integration \
  --repo-url https://github.com/Azure-Samples/storage-blob-upload-from-webapp

Konfigurowanie ustawień aplikacji internetowej

Przykładowa aplikacja internetowa używa interfejsów API usługi Azure Storage dla platformy .NET do przekazywania obrazów. Poświadczenia konta magazynu są ustawiane w ustawieniach aplikacji internetowej. Dodaj ustawienia aplikacji do wdrożonej aplikacji za pomocą polecenia az webapp config appsettings set lub New-AzStaticWebAppSetting .

az webapp config appsettings set --name $webapp --resource-group $rgName \
  --settings AzureStorageConfig__AccountName=$blobStorageAccount \
    AzureStorageConfig__ImageContainer=images \
    AzureStorageConfig__ThumbnailContainer=thumbnails \
    AzureStorageConfig__AccountKey=$blobStorageAccountKey

Po wdrożeniu i skonfigurowaniu aplikacji internetowej możesz przetestować funkcję przekazywania obrazów w aplikacji.

Przekaż obraz

Aby przetestować aplikację internetową, przejdź pod adres URL Twojej opublikowanej aplikacji. Domyślnym adresem URL aplikacji internetowej jest https://<web_app>.azurewebsites.net. Następnie wybierz region Przekazywanie zdjęć , aby określić i przekazać plik, lub przeciągnij plik do regionu. Obraz zniknie, jeśli zostanie pomyślnie przekazany. Sekcja Wygenerowane miniatury pozostaje pusta, dopóki nie przetestujemy jej w dalszej części tego samouczka.

Uwaga

Uruchom następujące polecenie, aby uzyskać nazwę aplikacji internetowej: echo $webapp

Screenshot of the page to upload photos in the Image Resizer .NET app.

W przykładowym kodzie zadanie w pliku Storagehelper.cs jest używane do przekazywania obrazów do kontenera images na koncie magazynu przy użyciu metody UploadAsync.UploadFileToStorage Poniższy przykładowy kod zawiera zadanie UploadFileToStorage.

public static async Task<bool> UploadFileToStorage(Stream fileStream, string fileName,
                                                    AzureStorageConfig _storageConfig)
{
    // Create a URI to the blob
    Uri blobUri = new Uri("https://" +
                          _storageConfig.AccountName +
                          ".blob.core.windows.net/" +
                          _storageConfig.ImageContainer +
                          "/" + fileName);

    // Create StorageSharedKeyCredentials object by reading
    // the values from the configuration (appsettings.json)
    StorageSharedKeyCredential storageCredentials =
        new StorageSharedKeyCredential(_storageConfig.AccountName, _storageConfig.AccountKey);

    // Create the blob client.
    BlobClient blobClient = new BlobClient(blobUri, storageCredentials);

    // Upload the file
    await blobClient.UploadAsync(fileStream);

    return await Task.FromResult(true);
}

W poprzednim zadaniu użyto następujących klas i metod:

Klasa Method
Identyfikator URI Konstruktor identyfikatora URI
StorageSharedKeyCredential StorageSharedKeyCredential(String, String) konstruktor
Obiekt blobClient UploadAsync

Sprawdzanie, czy obraz jest wyświetlany na koncie magazynu

  1. Zaloguj się w witrynie Azure Portal. Z menu po lewej stronie wybierz pozycję Konta magazynu, a następnie wybierz nazwę swojego konta magazynu.

    Uwaga

    Uruchom następujące polecenie, aby uzyskać nazwę konta magazynu: echo $blobStorageAccount.

  2. W menu po lewej stronie w sekcji Magazyn danych wybierz pozycję Kontenery.

  3. Wybierz kontener obiektów blob obrazów.

  4. Sprawdź, czy obraz jest wyświetlany w kontenerze.

    Screenshot of the Container page showing the list of uploaded images.

Testowanie wyświetlania miniatur

Aby przetestować wyświetlanie miniatur, przekaż obraz do kontenera thumbnails , aby sprawdzić, czy aplikacja może odczytać kontener thumbnails .

  1. Zaloguj się w witrynie Azure Portal. Z menu po lewej stronie wybierz pozycję Konta magazynu, a następnie wybierz nazwę swojego konta magazynu. Wybierz pozycję Kontenery, a następnie wybierz kontener thumbnails . Wybierz pozycję Przekaż, aby otworzyć okienko Przekazywanie obiektu blob.

  2. Wybierz plik za pomocą selektora plików i wybierz pozycję Przekaż.

  3. Przejdź z powrotem do aplikacji, aby sprawdzić, czy obraz przekazany do kontenera thumbnails jest widoczny.

    Screenshot of the web app showing the thumbnail image.

  4. W drugiej części tej serii zautomatyzujesz proces tworzenia obrazów miniatur, dlatego nie potrzebujesz tego obrazu. W kontenerze thumbnails wybierz przekazany obraz, a następnie wybierz pozycję Usuń , aby usunąć obraz.

Następne kroki