Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Shared Access Signature

こんばんは、statemachineです。最近は文章と格闘する日々であり、いまいち技術的なところに集中できていないので、ちょっとストレスがたまり気味ですがいかがでしょうか。


今回は、BlobのShared Access Signature (SAS)について試してみようと思います。ずっと前から書こうと思っていたのですが、後回しになってました。
論よりコードです。例によって、LINQPad + 開発ストレージなら実行できるでしょう。ただし、Windows7のデフォルトで入っている画像を利用していますので、そこは適宜修正ヨロシコです。

void Main()
{
    var account = CloudStorageAccount.DevelopmentStorageAccount;
    var blobClient = account.CreateCloudBlobClient();
    var container = blobClient.GetContainerReference("pictures");
    container.CreateIfNotExist();
    var blob = container.GetBlobReference("Desert.jpg");

    blob.UploadFile(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) +
					      @"/Desert.jpg");

    // blob に対して5分間 readできるSASを取得
    var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy()
    {
       Permissions=SharedAccessPermissions.Read,
       SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5)
    });
    

    // オリジナルURI
    Console.WriteLine (blob.Uri.AbsoluteUri);
    // SAS付URIC
    Console.WriteLine (blob.Uri.AbsoluteUri + sas);
}


以下、LINQPadで実行してみたところです。2つのURIが表示されます。

上がBlob、下がSAS付のURIです。

http://127.0.0.1:10000/devstoreaccount1/pictures/Desert.jpg
http://127.0.0.1:10000/devstoreaccount1/pictures/Desert.jpg?se=2010-09-07T13%3A40%3A17Z&sr=b&sp=r&sig=q7p%2F5E5ttdONfUiDjB7FwUjvs%2BhlboHGdGFh687xlws%3D

ブラウザでアクセスしてみまーす。



以下のSmarx Blobでも言及されてますので、ご参考ください。多少、変遷しているみたいですね。

続く、かも。