Скачать blob из Azure хранилища с SAS - PullRequest
0 голосов
/ 16 июня 2020

Мне трудно понять, как загрузить большой двоичный объект из хранилища Azure, используя. net и сгенерированный токен подписи общего доступа.

Прежде всего, большинство руководств, которые я мог find используют пакет Microsoft.Azure.Management.Storage nuget, который устарел. Вместо этого я использую новейший пакет Azure.Storage.Blobs.

Пока у меня есть следующий код. Я не знаю, что делать с сгенерированным токеном SAS. Как мне скачать оттуда BLOB-объект?

  [HttpGet]
    public async Task<IActionResult> Download([FromQuery] string blobUri)
    {
        BlobServiceClient blobServiceClient = new BlobServiceClient(this.configuration.GetConnectionString("StorageAccount"));


        // Create a SAS token that's valid for one hour.
        BlobSasBuilder sasBuilder = new BlobSasBuilder()
        {
            BlobContainerName = "my container name",
            BlobName = blobUri,
            Resource = "b",
            StartsOn = DateTimeOffset.UtcNow,
            ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
        };

        // Specify read permissions for the SAS.
        sasBuilder.SetPermissions(BlobSasPermissions.Read);

        // Use the key to get the SAS token.
        var sasToken = sasBuilder.ToSasQueryParameters(new Azure.Storage.StorageSharedKeyCredential("my account name", "my account key"));



        BlobClient blob = blobServiceClient.GetBlobContainerClient("my container name").GetBlobClient($"{blobUri}");
        await using (MemoryStream memoryStream = new MemoryStream())
        {
            await blob.DownloadToAsync(memoryStream);
           return File(memoryStream, "file");
        }

    }

1 Ответ

0 голосов
/ 16 июня 2020

В официальном репозитории github вы найдете отличный пример с использованием различных средств аутентификации. Использование ключа учетной записи в примере называется SharedKey . Существует также образец для использования токенов SAS , но их нужно как-то сгенерировать. Обычно вы делаете это с помощью ключа учетной записи ...

Другой вариант - и то, что я бы рекомендовал использовать, если это возможно, - использовать AAD (Azure Active Directory) -based aut час. В этом случае вам не нужны ни ключи учетной записи, ни токены SAS.

См. Здесь различные примеры: https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/samples/Sample02_Auth.cs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...