Azure Storage API を使用してやりとりする

完了

Azure Storage には、REST API があります。これはコンテナーおよび各アカウントに格納されているデータと連動します。 格納できるデータ型には、それぞれ独立した API があります。 データの種類には次の 4 つがあることを思い出してください。

  • BLOB はバイナリやテキスト ファイルなど、非構造化データに使用されます。
  • キューは固定のメッセージングに使用されます。
  • テーブルはキー/値の構造化ストレージに使用されます。
  • ファイルは従来の SMB ファイル共有に使用されます。

REST API を使用する

Storage REST API には、インターネット上の任意の場所から、HTTP/HTTPS 要求を送信し、HTTP/HTTPS 応答を受信できるあらゆるアプリを使用してアクセスできます。

たとえば、あるコンテナー内のすべての BLOB を一覧表示する場合は、次のような要求を作成します。

GET https://[url-for-service-account]/?comp=list&include=metadata

この要求により、アカウントに固有のデータを含む XML ブロックが返されます。

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://[url-for-service-account]/">  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://[url-for-service-account]/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 18:09:03 GMT</Last-Modified>  
        <Etag>0x8CAE7D0C4AF4487</Etag>  
      </Properties>  
      <Metadata>  
        <Color>orange</Color>  
        <ContainerNumber>01</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container2</Name>  
      <Url>https://[url-for-service-account]/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8C24928</Etag>  
      </Properties>  
      <Metadata>  
        <Color>pink</Color>  
        <ContainerNumber>02</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container3</Name>  
      <Url>https://[url-for-service-account]/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 24 Sep 2018 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8EAC0BB</Etag>  
      </Properties>  
      <Metadata>  
        <Color>brown</Color>  
        <ContainerNumber>03</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>container4</NextMarker>  
</EnumerationResults>  

しかし、この手法では、各 API と連動させるために、HTTP パケットを手動で解析および作成する必要があります。 このような理由から、Azure にはクライアント ライブラリが事前に組み込まれており、一般的な言語やフレームワークでサービスとの連動が簡単になっています。

クライアント ライブラリを使用する

クライアント ライブラリを使用すると、アプリ開発者のために大量の作業を保存できます。これは、API が試験され、多くの場合、REST API で送受信されるデータ モデルを効果的にラップするためです。

Microsoft の Azure クライアント ライブラリは、次のような多くの言語とフレームワークに対応しています。

  • .NET
  • Java
  • Python
  • Node.js
  • Go


Logos of supported frameworks you can use with Azure.

たとえば、C# で BLOB の同じ一覧を取得するには、次のコード スニペットを使用できます。

string containerName = "...";
BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

var blobs = container.GetBlobs();
foreach (var blob in blobs)
{
    Console.WriteLine($"{blob.Name} --> Created On: {blob.Properties.CreatedOn:YYYY-MM-dd HH:mm:ss}  Size: {blob.Properties.ContentLength}");
}

あるいは、JavaScript で:

const containerName = '...';
const containerClient = blobServiceClient.getContainerClient(containerName);

let blobs = containerClient.listBlobsFlat();
for await (const blob of blobs) {
  console.log(`${blob.name} --> Created: ${blob.properties.createdOn}   Size: ${blob.properties.contentLength}`);
}

Note

クライアント ライブラリは、REST API を包む薄い "ラッパー" に過ぎません。 クライアント ライブラリは、Web サービスを直接使用する場合とまったく同じように動作します。 これらのライブラリはオープン ソースでもあり、非常に透過的です。 GitHub 上のこれらのライブラリのソース コードへのリンクについては、このモジュールの最後の「その他のリソース」をご参照ください。

次は、アプリにクライアント ライブラリ サポートを追加しましょう。