Share via


手順 1: Azure Storage を使用してクラウドに画像データをアップロードする

このチュートリアルは、シリーズの第 1 部です。 このチュートリアルでは、Web アプリをデプロイする方法について説明します。 この Web アプリでは、Azure Blob Storage クライアント ライブラリを使用してストレージ アカウントに画像をアップロードします。

シリーズのパート 1 では、次のタスクを実行します。

  • ストレージ アカウントの作成
  • コンテナーを作成し、アクセス許可を設定する
  • アクセス キーを取得する
  • Web アプリを Azure にデプロイする
  • アプリケーションの設定の構成
  • Web アプリと対話する

前提条件

このチュートリアルを完了するには、Azure サブスクリプションが必要です。 始める前に、無料アカウントを作成します。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

リソース グループを作成する

重要

チュートリアルの手順 2 では、この手順で作成した BLOB ストレージで Azure Event Grid を使用します。 Event Grid がサポートされている Azure リージョンにストレージ アカウントを作成してください。 サポートされているリージョンの一覧は、リージョン別の Azure 製品に関するページをご覧ください。

  1. Azure Cloud Shell で、左上隅にある [Bash] を選択します (まだ選択されていない場合)。

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

  2. az group create コマンドを使用して、リソース グループを作成します。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

    注意

    regionrgName (リソース グループ名) に適切な値を設定してください。

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

ストレージ アカウントの作成

サンプルでは、Azure ストレージ アカウント内の BLOB コンテナーに画像をアップロードします。

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

BLOB ストレージ コンテナーを作成する

アプリでは、BLOB ストレージ アカウント内の 2 つのコンテナーを使用します。 "images" コンテナーは、アプリが高解像度のイメージをアップロードする場所です。 このシリーズの 2 番目の手順で、Azure 関数アプリで、サイズ変更した画像を thumbnails コンテナーにアップロードします。

images コンテナーのパブリック アクセスは、off に設定されています。 thumbnails コンテナーのパブリック アクセスは、container に設定されています。 container パブリック アクセスに設定すると、Web ページにアクセスしたユーザーはサムネイルを表示できます。

az storage account keys list コマンドを使用して、ストレージ アカウント キーを取得します。 次に、このキーを使用して、az storage container create コマンドで 2 つのコンテナーを作成します。

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

サンプル アプリは、その名前とアクセス キーを使用してストレージ アカウントに接続します。

App Service プランを作成する

App Service プランは、アプリのホストとなる Web サーバー ファームの場所、サイズ、機能を規定します。 次の例では、Free 価格レベルの myAppServicePlan という名前の App Service プランを作成します。

az appservice plan create コマンドで、App Service プランを作成します。

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

Web アプリを作成する

Web アプリでは、GitHub サンプル リポジトリからデプロイされるサンプル アプリ コード用のホスト領域を提供します。

az webapp create コマンドを使って、myAppServicePlanApp Service プランに Web アプリを作成します。

webapp="mywebapp$RANDOM"

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

GitHub リポジトリからサンプル アプリをデプロイする

App Service は、コンテンツを Web アプリにデプロイするさまざまな方法をサポートしています。 このチュートリアルでは、パブリック GitHub サンプル リポジトリから Web アプリをデプロイします。 az webapp deployment source config コマンドを使用して、Web アプリへの GitHub のデプロイを構成します。

サンプル プロジェクトには、ASP.NET MVC アプリが含まれています。 そのアプリは、画像を受け取り、ストレージ アカウントに保存して、サムネイル コンテナーから画像を表示します。 Web アプリは、Azure.StorageAzure.Storage.Blobs、および Azure.Storage.Blobs.Models 名前空間を使用して、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

Web アプリの設定を構成する

このサンプル Web アプリでは、.NET 用 Azure Storage API シリーズを使用して、画像をアップロードします。 ストレージ アカウントの資格情報は、Web アプリのアプリ設定で設定されています。 az webapp config appsettings set または 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

Web アプリのデプロイと構成が済むと、アプリで画像のアップロード機能をテストできます。

イメージをアップロードする

Web アプリをテストするには、発行したアプリの URL に移動します。 Web アプリの既定の URL は、https://<web_app>.azurewebsites.net です。 次に、[写真のアップロード] 領域を選択し、ファイルを指定してアップロードするか、ファイルを領域にドラッグします。 正常にアップロードされると、画像は表示されなくなります。 [Generated Thumbnails] セクションは、後でこのチュートリアルの中でテストするまで空のままになります。

注意

次のコマンドを実行し、Web アプリの名前 (echo $webapp) を取得します。

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

サンプル コードでは、Storagehelper.cs ファイル内の UploadFileToStorage タスクの UploadAsync メソッドを使用して、ストレージ アカウント内の images コンテナーに画像をアップロードします。 次のコード サンプルに、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);
}

上のタスクでは、次のクラスとメソッドが使用されています。

クラス Method
Uri Uri コンストラクター
StorageSharedKeyCredential StorageSharedKeyCredential (String, String) コンストラクター
BlobClient UploadAsync

ストレージ アカウント内に画像が表示されることを確認する

  1. Azure portal にサインインします。 左側のメニューから [ストレージ アカウント] を選択し、ストレージ アカウントの名前を選択します。

    注意

    ストレージ アカウントの名前を取得するには、echo $blobStorageAccount を実行します。

  2. 左側のメニューの [データ ストレージ] セクションで、[コンテナー] を選択します。

  3. イメージ BLOB コンテナーを選択します。

  4. コンテナー内に画像が表示されることを確認します。

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

サムネイルの表示をテストする

サムネイルの表示をテストするには、thumbnails コンテナーに画像をアップロードして、アプリが thumbnails コンテナーを読み取れることを確認します。

  1. Azure portal にサインインします。 左側のメニューから [ストレージ アカウント] を選択し、ストレージ アカウントの名前を選択します。 [コンテナー] を選択し、 [サムネイル] コンテナーを選択します。 [アップロード] を選択して [BLOB のアップロード] ウィンドウを開きます。

  2. ファイル ピッカーでファイルを選択し、 [アップロード] を選択します。

  3. アプリに戻って、thumbnails コンテナーにアップロードした画像が表示されていることを確認します。

    Screenshot of the web app showing the thumbnail image.

  4. シリーズの第 2 部では、サムネイル画像の作成を自動化して、この画像が必要ないようにします。 thumbnails コンテナーで、アップロードした画像を選択し、 [削除] を選択して画像を削除します。

次の手順