こんばんは、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が表示されます。
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でも言及されてますので、ご参考ください。多少、変遷しているみたいですね。
- new: http://blog.smarx.com/posts/shared-access-signatures-are-easy-these-days
- old: http://blog.smarx.com/posts/new-storage-feature-signed-access-signatures
続く、かも。