Azureの小ネタ (改)

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

SASの作成

あけましておめでとうございます。

以前の記事で、SASを取り上げたことがありますが、Storage Client Libraryが、1.x -> 2.0,3.0にアップしてそのままでは動かないので自己修正。

Shared Access Signature - Azureの小ネタ (改)

以下アップロードした画像に、前後5分間の読み取り権限を与えている例です。

void Main()
{
    string name = "...";
    string key  = "...";
    
    var creds = new StorageCredentials(name, key);
    var account = new CloudStorageAccount(creds, false);
    var client = account.CreateCloudBlobClient();
    var container = client.GetContainerReference("pictures");
    
    container.CreateIfNotExists();
    
    var blob = container.GetBlockBlobReference("a.png");
    
    string file = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + @"/a.png";
    blob.Properties.ContentType = "image/png";
    blob.UploadFromFile(file, FileMode.Open);

    // 前後5分 読み込み権限を与える
    var sas = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
    {
       SharedAccessStartTime  = DateTime.UtcNow.AddMinutes(-5),
       SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(+5),
       Permissions = SharedAccessBlobPermissions.Read
    });

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