4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure Storage AppendBlobを使ってみる(.NET編)

4
Last updated at Posted at 2015-12-19

原則としてBlobは追記できません。

多くの場合、追記できなくても差し支えないのですが、ログなどをHDInsight等で分析する際、オンプレ環境からBloBにログを移す作業が分析よりしんどい。そこで、ログを直接BloBに追記、保存したいというニーズが発生します。

AppendBlob

このようなニーズを満たすために2015年の夏に登場したのがAppendBlob。その名の通り追記できるBlob。
今までのBlockBlobとPageBlobと合わせて3つの種類となりました。

本当は環境依存の低いPHP SDKかREST API経由で利用したかったのですが、PHPには2015年12月時点で未実装のようです(ちらっとソースを見る限り。間違いならご指摘を!)。

またREST APIは、設定がわからず、うまく通信できませんでした(解決するには情報が少ないので一旦保留)。

リファレンスを見る限りnode.js用のSDKにはAPIが追加されているようでした。

というわけで、とりあえず王道の.NETからの接続をまずはメモしておきます。

環境

前提

  • Azureのアカウントを取得し、かつ、Storageも生成していることを前提とします。

ツール類など

とりあえず無難に下記の環境を利用します。

  • ツールはVisualStudio2015 Communityを使います。
  • コンソールアプリで試します。
  • 追加ライブラリとしてNuGetでWindowsAzure.Storageをインストールします

実装

REST APIで苦労したのがウソのように簡単に利用できます。

using System;

//追加
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace AppendBlobTest1
{
    class Program
    {
        static void Main(string[] args)
        {
            //コンテナ名
            String containerName = "CONTAINER_NAME";
            //ストレージKey
            String key = "YOUR_KEY";


            //アカウント生成
            CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials(containerName,key),useHttps:false);

            //Blobクライアント生成
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            //コンテナ参照生成
            CloudBlobContainer container = blobClient.GetContainerReference("test");

            //コンテナがなければ作る
            container.CreateIfNotExists();

            //追加Blobの参照生成
            CloudAppendBlob appendBlob = container.GetAppendBlobReference("append-blob.log");

            //作るか置き帰るか(既存を使う場合はいらない)
            //appendBlob.CreateOrReplace();

            //テキスト追記
            appendBlob.AppendText("hoge1\n");
            appendBlob.AppendText("hoge2\n");

            //内容をダウンロードしてテキスト表示
            Console.WriteLine(appendBlob.DownloadText());

            //入力街
            Console.ReadLine();
        }
    }
}

以上です。簡単。

宿題

  • Azure PHP SDKで試す(SDKが対応したら)
  • REST APIで試す(情報が増えたら)
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?