标签: azure-blob-storage

使用 .Net Core API 从 Azure Blob 存储异步流式传输视频

我发现了一堆示例,这些示例使用了我在应用程序中不可用的对象,并且似乎与我的 .NET Core Web API 版本不匹配。本质上,我正在开发一个项目,该项目在网页上有标签,并希望使用服务器中的流加载视频,而不是通过路径直接提供文件。原因之一是文件的来源可能会发生变化,并且通过路径提供它们并不是我的客户想要的。所以我需要能够打开流并异步写入视频文件。

由于某种原因,这会生成 JSON 数据,因此这是错误的。我正在从 Azure Blob 存储下载视频文件并作为流返回,但我只是不明白需要做什么才能将流式视频文件发送到 HTML 中的标记。

我的 API 控制器,

[AllowAnonymous]
    [HttpGet("getintroductoryvideos")]
    public async Task<Stream> GetIntroductoryVideos()
    {
        try
        {
            return  _documentsService.WriteContentToStream().Result;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的服务班,

 public async Task<Stream> WriteContentToStream()
    {
        var cloudBlob = await _blobService.GetBlobAsync(PlatformServiceConstants._blobIntroductoryVideoContainerPath + PlatformServiceConstants.IntroductoryVideo1, introductoryvideocontainerName);
        await cloudBlob.FetchAttributesAsync();

        var fileStream = new MemoryStream();
        await cloudBlob.DownloadToStreamAsync(fileStream);
        return fileStream;
    }
Run Code Online (Sandbox Code Playgroud)

c# azure html5-video azure-blob-storage asp.net-core-webapi

1
推荐指数
2
解决办法
4015
查看次数

在一个 Azure Blob 存储上托管多个 Angular 应用程序

在工作中,我们在一个 Azure Blob 存储上托管多个 Angular JS 应用程序。有一个 Azure 函数充当代理并导航到合适的应用程序文件夹和 html 文件。

现在我想用 Angular 9 应用程序替换一些 Angular JS 应用程序。

但上述方法适用于 Angular JS 应用程序,但不适用于 Angular 9 应用程序。

如果我将 Angular 9 应用程序作为静态网站托管在不同的存储上,它就可以正常工作。但由于无法在 Azure 存储帐户上托管多个应用程序作为静态网站,因此我正在寻找解决此问题的方法。

是否可以在一个 Azure Blob 存储上托管多个 Angular 9 应用程序?如果是:我应该做什么才能使这项工作成功?

先感谢您!

azure azure-blob-storage angular angular9

1
推荐指数
1
解决办法
1304
查看次数

使用 azure.storage.blob 将 Python DataFrame 作为 CSV 写入 Azure Blob

我尝试了以下链接中的示例:将 Python DataFrame 作为 CSV 写入 Azure Blob但是 BlockBlobService 在 azure.storage.blob 中不再可用,因此我尝试使用 BlockBlobClient,并且可以使用以下代码创建、删除容器。但是,我找不到在容器中创建 blob 并将数据帧中的记录写入其中的方法,如上面链接中所述。请帮助我想创建一个 blob 并将数据框中的记录写入其中。

from azure.storage.blob import BlobServiceClient

blobService = BlobServiceClient.from_connection_string("**")
#blobService = BlobServiceClient(account_name=accountName, account_key=accountKey)
try:
   new_container = blobService.create_container("containerfromblobservice")
   properties = new_container.get_container_properties()
except ResourceExistsError:
   print("Container already exists.")
Run Code Online (Sandbox Code Playgroud)

python csv azure-storage dataframe azure-blob-storage

1
推荐指数
1
解决办法
5897
查看次数

az storage blob upload-batch 的最低权限

我们的 CI 管道需要将一些文件备份到 Azure Blob 存储。我正在使用 Azure CLI,如下所示:az storage blob upload-batch -s . -d container/directory --account-name myaccount

当授予服务主要贡献者访问权限时,它会按预期工作。但是,我想锁定权限,以便允许服务主体添加文件,但不能删除文件。为此需要什么权限?

Storage Blob Data Contributor我创建了一个自定义角色,赋予其与删除删除相同的权限。这(也只是Storage Blob Data Contributor直接使用角色)失败并出现Storage account ... not found. 好的,然后我继续向 blob 服务添加更多读取权限。还不够,现在我正处于它想做的地方Microsoft.Storage/storageAccounts/listKeys/action。但如果我让它访问存储密钥,那还有什么意义呢?有了存储密钥,SP 就可以完全访问该帐户,这是我首先要避免的。为什么az storage blob upload-batch需要钥匙?我可以防止这种情况发生吗?

azure azure-cli azure-blob-storage

1
推荐指数
1
解决办法
1531
查看次数

“BlobServiceClient”对象没有属性“ls_files”

我正在尝试使用此 github 中找到的 BlobServiceClient 库中的 ls_files 函数(https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/storage/azure-storage-blob/samples/ blob_samples_directory_interface.py)。但是,当我运行代码时,出现错误:

“BlobServiceClient”对象没有属性“ls_files”

这是我的代码:

import os, uuid, sys
from azure.storage.blob import BlobClient, BlobServiceClient, ContainerClient, PublicAccess, __version__
from azure.storage.blob.blockblobservice import BlockBlobService
import re

account_name = ACCOUNT_NAME
account_key = ACCOUNT_KEY
connect_str = CONNECTION_STRING
account_url = ACCOUNT_URL
container_name = CONTAINER_NAME
file_path = FILE_PATH
block_blob_service = BlockBlobService(account_name = account_name, account_key = account_key)
blob_service_client = BlobServiceClient(account_url = account_url, connect_str = connect_str, container_name = container_name)

def list_filenames_in_blob(blob):
    file_names = blob_service_client.ls_files(file_path)
    return file_names

def run_action():
    try:
       for blob in …
Run Code Online (Sandbox Code Playgroud)

python azure azure-blob-storage

1
推荐指数
1
解决办法
4322
查看次数

使用 AKS 中的用户管理标识、Python SDK 时出现 AzureBlobStorage AuthorizationPermissionMismatch 错误

我正在 AKS 中运行 Python 应用程序(作为作业,但并不重要),使用 Azure Python SDK 访问 blob 存储。我使用用户管理身份进行身份验证,ManagedIdentityCredentialclient_idkwarg 一起使用(请参阅https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.drivenidentitycredential?view=azure-python)。它能够成功查询 IMDS 端点并获取令牌,但我仍然遇到错误。有人知道我可能缺少什么设置吗?

关于用户管理身份的整体文档很少,特别是与 AKS 和 blob 存储相关的文档,以及此错误。

成功获取 IMDS 令牌:

2021-01-26 05:26:05,944 - azure.core.pipeline.policies.http_logging_policy - INFO - Request URL: 'http://REDACTED/metadata/identity/oauth2/token?api-version=REDACTED&resource=REDACTED&client_id=REDACTED'
2021-01-26 05:26:05,945 - azure.core.pipeline.policies.http_logging_policy - INFO - Request method: 'GET'
2021-01-26 05:26:05,945 - azure.core.pipeline.policies.http_logging_policy - INFO - Request headers:
2021-01-26 05:26:05,945 - azure.core.pipeline.policies.http_logging_policy - INFO -     'Metadata': 'REDACTED'
2021-01-26 05:26:05,945 - azure.core.pipeline.policies.http_logging_policy - INFO -     'User-Agent': 'azsdk-python-identity/1.5.0 Python/3.7.7 (Linux-4.15.0-1103-azure-x86_64-with-debian-9.12)'
2021-01-26 05:26:05,945 - …
Run Code Online (Sandbox Code Playgroud)

azure-active-directory azure-cli azure-blob-storage azure-managed-identity azure-aks

1
推荐指数
1
解决办法
8635
查看次数

使用 Azure.Storage.Blobs 删除目录中的所有 Blob

我正在将我的代码重构为 Azure.Storage.Blobs,因为 windowsAzure.Storage 正在贬值。但是我还没有找到删除“directoty”的方法。在旧图书馆你可以这样做:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Config.StorageConnStr);
CloudStorageAccount account = CloudStorageAccount.Parse(StorageConnection);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(ExportContainerName);
CloudBlobDirectory folder = container.GetDirectoryReference(jobid.ToLower());
var blobs = folder.ListBlobs();

foreach (var blob in blobs)
{
    ((CloudBlob)blob).DeleteIfExists();
}
Run Code Online (Sandbox Code Playgroud)

但我在新包中看不到任何类似的代码。有什么指点吗?

azure-storage azure-blob-storage

1
推荐指数
1
解决办法
4477
查看次数

Python 异步 Azure Blob 上传

我有一个代码可以读取文件目录并将文件上传到 Azure Blob 存储。它运行良好并且文件上传成功。但是,我需要帮助来修改此代码以运行异步操作以实现并发上传。

import os
import asyncio
import yaml
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__


def load_config():
    path_root = os.path.dirname(os.path.abspath(__file__))
    with open(path_root + "/config.yaml", "r") as configfile:
        return yaml.load(configfile, Loader=yaml.FullLoader)


def read_files(dir):
    with os.scandir(dir) as files:
        for filename in files:
            if filename.is_file() and not filename.name.startswith('.'):
                yield filename


def upload(files, connection_string, container_name):
    container_client = ContainerClient.from_connection_string(connection_string, container_name)
    print("Uploading images to remote blob storage")

    for file in files:
        blob_client = container_client.get_blob_client(file.name)
        with open(file.path, "rb") as data:
            blob_client.upload_blob(data)
            print(f"{file.name} upload to remote …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-asyncio azure-blob-storage

1
推荐指数
1
解决办法
4600
查看次数

如何使用数据工厂将多个 csv 文件从 blob 批量复制到多个 SQL 数据库表

我正在尝试将 blob 存储中的不同 csv 文件复制到自己的 sql 表中(我想自动创建这些表)。我见过很多问题,但没有看到任何答案。

目前我有一个 getmetadata 函数,它可以获取子项列表以获取文件名和 foreach 循环,但从那里我不知道如何将它们发送到每个文件的不同表。

azure azure-data-factory azure-blob-storage

1
推荐指数
1
解决办法
2476
查看次数

如何使用 Azure.Storage v12 中的 Azure KeyVault 密钥解密 blob

我们的代码当前使用旧的 Microsoft.WindowsAzure.Storage 库来访问 Azure 中的 blob 存储。我正在尝试使用新的 v12 Azure.Storage.Blobs 库来替换旧的库,但是我不知道如何解密/加密 blob。MS 文档(https://learn.microsoft.com/en-us/azure/storage/blobs/storage-encrypt-decrypt-blobs-key-vault?tabs=dotnet)很有帮助地说,v12 代码片段不是尚未准备好,因此没有代码示例。

旧代码是这样的:

var tokenProvider = new AzureServiceTokenProvider();
var cloudResolver = new KeyVaultKeyResolver(
    new KeyVaultClient.AuthenticationCallback(_tokenProvider.KeyVaultTokenCallback));
var encryptionThingy = await cloudResolver.ResolveKeyAsync(<Key Vault URL> + "/keys/" + <key name>, CancellationToken.None);
var policy = new BlobEncryptionPolicy(encryptionThingy, cloudResolver);
var options = new BlobRequestOptions() { EncryptionPolicy = policy };
await <ICloudBlob Instance>.DownloadToStreamAsync(<stream>, null, options, null);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经得到了这里的新代码:

var azureKeys = new KeyClient(new Uri(<key vault url>), new DefaultAzureCredential());
var encKey = azureKeys.GetKey(<key name>);
ClientSideEncryptionOptions …
Run Code Online (Sandbox Code Playgroud)

c# encryption azure-blob-storage azure-keyvault

1
推荐指数
1
解决办法
1608
查看次数