演習 - アプリケーションを Azure ストレージ アカウントに接続する

完了

Azure Storage クライアント ライブラリには、Azure ストレージ アカウントとのやり取りに使用できるオブジェクト モデルがあります。 これは Azure ストレージ アカウントにすばやく接続して、Azure Storage サービス API を使用するために使用されます。

Azure Storage クライアント ライブラリ オブジェクト モデル

Azure のストレージ アカウントは、アカウントに実際の BLOB オブジェクト (ファイル) を格納する 1 つ以上の "コンテナー" で編成されています。 これらのコンテナーは、ファイル システムのフォルダーに似ています。 .NET 用の Azure Storage Blobs クライアント ライブラリを使用して、写真を保存するためのコンテナーをストレージ アカウントに作成できます。

プログラムで .NET 用 Azure Storage Blob クライアント ライブラリを使用するには、Azure.Storage.Blobs 名前空間の using ステートメントをプログラムの先頭に追加する必要があります。

  1. 次のコマンドを Program.cs に追加します。

    using Azure.Storage.Blobs;
    

    .NET アプリケーションからストレージ アカウントのコンテナーを作成および管理するには、BlobContainerClient オブジェクトを使用します。 BlobContainerClient オブジェクトをインスタンス化するには、ストレージ アカウントへの接続文字列とコンテナー名を指定する必要があります。 コンテナー名は 3 文字から 63 文字の長さにする必要があり、小文字 とダッシュ (-) 文字のみを使用できます。 このアプリケーションでは、photos という名前を使用します。

  2. アプリケーションの Main セクションに次のコードを追加して、Azure Storage の接続文字列を取得し、BlobContainerClient オブジェクトを作成します。

    var connectionString = configuration.GetConnectionString("StorageAccount");
    string containerName = "photos";
    
    BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
    

    Note

    この時点では、クライアント ライブラリは、Azure への接続や、使用されている接続文字列とアクセス キーの検証を試行していません。 Azure Blob Storage に対して操作を実行するために使用される軽量のクライアント オブジェクトが作成されているだけです。 ストレージ アカウントに対して操作が呼び出されたときにだけ、ネットワークの呼び出しが行われます。

  3. 前の行のすぐ下に、画像を格納する photos コンテナーを作成するコードを追加します。

    container.CreateIfNotExists();
    
  4. ファイルを保存します。

  5. 次に、アプリケーションを実行して、ストレージ アカウントにコンテナーを作成します。 CreateIfNotExists メソッドを使用したため、自分のプログラムを複数回実行できますが、コンテナーは最初の実行時にのみ作成されます。

    dotnet run
    
  6. 次の Azure CLI コマンドを実行することにより、コンテナーが作成されたことを確認できます。 忘れずに、<name> を実際のストレージ アカウントの名前に置き換えてください。

    az storage container list \
    --account-name <name>
    

JavaScript 用の Azure Storage Blob クライアント ライブラリには、Azure Storage Blob と対話するためのクライアント オブジェクトが多数含まれています。 この階層の最上位には、BlobServiceClient オブジェクトがあります。 JavaScript コードでこのオブジェクトを使用するには:

  1. コード エディターで index.js ファイルを開き、require('dotenv').config(); ステートメントの直後に次のステートメントを追加します。

    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. ここで、ストレージ アカウントの接続文字列を取得し、BlobServiceClient オブジェクトのファクトリ メソッド fromConnectionString に渡すことで、自分のコードに BlobServiceClient オブジェクトを作成する必要があります。 次のコード行を追加します。

    const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
    const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
    

    Note

    Azure への接続が必要な操作が呼び出されるまで、クライアント ライブラリによってそれが試みられることはありません。 クライアント オブジェクトは、Azure Blob Storage へのアクセスを可能にする軽量のオブジェクトです。接続や使用されているアクセス キーの検証は行われません。

  3. プログラムでクライアント オブジェクトを定義した後、クライアント オブジェクトのメソッドを使用して実際の作業を行うことができます。 ネットワーク呼び出しを行うメソッドは、意図的に非同期になっています。 ライブラリでは、非同期の結果を返すため Promise が使用されます。 そのため、main 関数を非同期としてマークする必要があります。 main 関数オブジェクトを次のコードに置き換えます。 2 つのスラッシュで始まる行はコメントです。

    async function main() {
     // Function code here
    }
    
  4. 変更内容を index.js に保存します。

    それでは、ストレージ アカウントに対して操作を実行するコードをいくつか追加しましょう。 ストレージ アカウントは、ストレージ アカウント内でフォルダーのように機能する 1 つ以上のコンテナーに編成されています。 ストレージ アカウントで作成した BLOB オブジェクト (ファイル) は、これらのコンテナーのいずれかに格納されます。 写真を格納するには、ストレージ アカウントにコンテナーを作成する必要があります。

    コンテナー名は 3 文字から 63 文字の長さにする必要があり、小文字 とダッシュ (-) 文字のみを使用できます。 このアプリケーションでは、photos という名前を使用します。

    ストレージ アカウントにコンテナーを作成するには、ストレージ アカウントでコンテナーを表す ContainerClient オブジェクトを取得する必要があります。 このストレージ アカウントにはコンテナーはまだ存在していませんが、ContainerClient を使用してコンテナーを作成し、作成された後でそれを管理することもできます。

  5. ContainerClient オブジェクトを取得するには、BlobServiceClient オブジェクトで getContainerClient メソッドを呼び出し、パラメーターとしてコンテナーの名前を指定します。 次に、Azure ストレージ アカウントにコンテナーを作成するには、containerClient オブジェクトの createIfNotExists メソッドを使用します。 // Function Code here コメント行をこれらのステートメントに置き換えます。

    // Create a container (folder) if it does not exist
    const containerName = 'photos';
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const containerExists = await containerClient.exists()
    if ( !containerExists) {
        const createContainerResponse = await containerClient.createIfNotExists();
        console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    else {
        console.log(`Container ${containerName} already exists`);
    }
    
  6. 変更内容を index.js ファイルに保存します。

  7. Cloud Shell コマンド ラインで次のコマンドを入力し、プログラムをビルドして実行します。これにより、ストレージ アカウントにコンテナーが作成されます。

    node index.js
    

    ヒント

    await キーワードの使用に関するエラーが表示される場合は、上記の手順の最後のステップに従って main 関数定義に async キーワードを追加していることを確認します。

    プログラムを初めて実行すると、コンテナーが正常に作成されたことが表示され、ステータスが true になっているはずです。 2 回目以降にプログラムを実行したときは、コンテナーが既に存在するために、状態が false の同様のメッセージが表示されます。

  8. 次の Azure CLI コマンドを実行することにより、コンテナーが作成されたことを確認できます。 忘れずに、<name> を実際のストレージ アカウントの名前に置き換えてください。

    az storage container list \
    --account-name <name>
    

これで、プログラムは Azure ストレージ アカウントに接続されており、photos コンテナーが作成されました。プログラムでそこに画像をアップロードしてみましょう。