我试图通过 Azure Blob 存储中的 URL 检索图像,但没有找到它,这是我得到的:
我的代码如下:
public async Task<bool> UploadFileAsync(string containerReference, string blobReference, string route)
{
CloudBlobContainer container = blobClient.GetContainerReference(containerReference);
container.CreateIfNotExists();
CloudBlockBlob blob = container.GetBlockBlobReference(blobReference);
try
{
using (var fileStream = System.IO.File.OpenRead(route))
{
await blob.UploadFromStreamAsync(fileStream);
}
}
catch (System.Exception)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
它成功地将文件上传到 blob:
然后我尝试检索其 URL 以直接访问它:
public string GetBlobUrl(string containerReference, string blobReference)
{
CloudBlobContainer container = blobClient.GetContainerReference(containerReference);
CloudBlockBlob blob = container.GetBlockBlobReference(blobReference);
return blob.Uri.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
c# azure azure-storage azure-storage-blobs azure-blob-storage
我目前正在使用ADF按计划将文件从SFTP服务器复制到Blob存储.
文件名结构为AAAAAA_BBBBBB_CCCCCC.txt.
是否可以在复制到Blob存储之前重命名该文件,以便最终得到类似文件夹的结构,如下所示?
AAAAAA/BBBBBB/CCCCCC.txt
在 Azure 中创建 HDInsights Hadoop 群集时,有两个存储选项。Azure 数据湖存储 (ADLS) 或 Azure Blob 存储。
这两个选项之间的真正区别是什么?它们如何影响性能?
我找到了这个页面https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-comparison-with-blob-storage 但它不是很具体,只使用很一般“ADLS 针对分析进行了优化”等术语。
这是否意味着它更适合存储 HDInsights 文件系统?如果 ADLS 确实更快,那么为什么不将它也用于非分析数据呢?
hadoop azure azure-blob-storage azure-data-lake azure-hdinsight
我有一个用于数据处理的 python 代码,我想使用 azure 块 blob 作为代码的数据输入,需要指定,来自块 blob 的 csv 文件。将 csv 文件从 azure blob 下载到本地路径很好,如果在本地运行,还可以为 python 代码上传其他方式,但问题是我的代码在 azure 虚拟机上运行,因为它对我的 Apple Air 来说非常重,pandas read_csv在这种情况下,来自本地路径不起作用,因此我必须通过流下载和上传 csv 文件并将其更新到 azure 存储,而无需本地保存。下载和上传 csv 的体积都非常小,远小于 blob 块限制
没有那么多教程来解释如何逐步执行此操作,MS Docs 通常也很难解释,我的最小代码如下:
用于从 azure blob 存储下载
from azure.storage.blob import BlockBlobService
storage = BlockBlobService(account_name='myname', account_key = 'mykey')
#here i don't know how to make a csv stream that could could be used in next steps#
file = storage.get_blob_to_stream('accountname','blobname','stream')
df = pd.read_csv(file)
#df for later steps#
Run Code Online (Sandbox Code Playgroud)
用于通过数据帧从代码按流上传和更新 blob
df …Run Code Online (Sandbox Code Playgroud) 根据详细介绍 Azure 存储限制的这篇文章,可以发出的 Azure 资源管理器请求的数量是有限制的。
此外,本文详细介绍了 ARM API 的限制。此处的一篇帖子声称他们在发出过多请求后遇到了运行列表操作的问题。
我的问题是,每小时为 blob 存储生成的 SAS 密钥数量是否有限制?创建 SAS 密钥是 ARM 事件吗?
例如,如果我使用 Python Azure 存储 SDK 并尝试在一小时内为各种 blob(存储帐户中容器中的文件)创建 160,000 个 SAS 密钥,我会受到限制还是停止?
我的应用程序依赖这些密钥来允许微服务访问受保护的数据,但是如果我无法在短时间内创建大量 SAS 密钥,我将无法扩展此应用程序。
azure azure-storage azure-resource-manager azure-blob-storage azure-sdk
在 Azure 中,我开发了一个函数(应用程序服务),当一个新的 csv 文件被放置在一个特定的存储帐户中时会触发它。该函数是在 Azure 中开发的,每次上传新的 csv 文件时都不会出现问题。然而,考虑到 CI/CD,我决定将我的开发过程从 Azure 转移到 Visual Studio (2017)。
代码在本地运行没有任何问题,但是一旦我将代码发布到 Azure(通过 VSTS),挑战就开始了。当新的 csv 文件上传到存储帐户时,似乎触发器没有被激活。顺便说一句,该功能确实触发了,但我无法确定这是为什么,或重新创建它。
为了使问题更易于理解,我将代码缩减为仅 Blobtrigger 和一些日志记录。此外,我删除了 VSTS 中的构建,并通过 Visual Studio 2017 直接发布了我的构建,但结果相似。该代码在本地运行良好,但发布后该功能不会被触发(或非常偶然地触发)。
我使用的代码:
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace TestApp
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([BlobTrigger("csv-files-in/{name}.csv", Connection = "AzureWebJobsStorage")]Stream myBlob, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
}
}
Run Code Online (Sandbox Code Playgroud)
“AzureWebJobsStorage”指的是定义了 Blobstorage 端点的 local.settings.json。此设置会自动部署到 Azure,但即使我手动设置此连接,也不会触发该功能。经过多次尝试自己解决这个问题后,我决定向本网站上的聪明人寻求建议。这是一个错误还是我错过了什么?在将其发布到 Azure 后,我该怎么做才能确保我的函数确实(可靠地)被触发?提前致谢。
continuous-integration visual-studio c#-3.0 azure-blob-storage azure-functions
我有一个使用C#Core .NET 2.2框架顶部编写的控制台应用程序.
我正在尝试使用C#库来获取容器中所有目录的列表.据我所知,Azure Blob存储没有真正的目录.相反,它会创建虚拟名称,使blob看起来像Azure Blob Explorer等浏览器中容器内的文件夹
我使用以下代码存储我的文件
CloudBlockBlob blockBlob = container.GetBlockBlobReference("foldername/filename.jpg");
await blockBlob.UploadFromStreamAsync(stream);
Run Code Online (Sandbox Code Playgroud)
所以我想在容器内选择一个不同的前缀名称文件夹名称列表.
所以,如果我有以下blob"foldername1/file1.jpg","foldername1/file2.jpg","foldername1/file3.jpg"和"foldername2/file1.jpg".我想要返回"foldername1","foldername2"
如何从Azure Blob存储中获取不同前缀的列表?
更新
我试图从下面的评论中获得反馈,所以我想出了以下代码
public async Task<string[]> Directories(string path = null)
{
int index = path == null ? 0 : path.Split('/', StringSplitOptions.RemoveEmptyEntries).Length;
BlobContinuationToken token = null;
List<string> directories = new List<string>();
do
{
BlobResultSegment blobsListingResult = await ContainerFactory.Get().ListBlobsSegmentedAsync(path ?? string.Empty, true, BlobListingDetails.None, 5000, token, null, null);
token = blobsListingResult.ContinuationToken;
IEnumerable<IListBlobItem> blobsList = blobsListingResult.Results;
foreach (var item in …Run Code Online (Sandbox Code Playgroud) 我正在提高我的 Azure 数据工厂能力,比较复制活动性能与映射数据流写入 Azure Blob 存储中的单个 CSV 文件。
当我通过数据集 (azureBlobSingleCSVFileNameDataset) 通过 Azure Blob 存储链接服务 (azureBlobLinkedService) 写入单个 CSV 时,使用复制活动在我期望的 blob 存储容器中获取输出。例如,文件夹/output/csv/singleFiles 下的容器MyContainer 中的MyData.csv 的输出文件。
当我通过相同的 Blob 存储链接服务但通过不同的数据集 (azureBlobSingleCSVNoFileNameDataset) 写入单个 CSV 时,使用映射数据流,我得到以下信息:
我不明白为什么在使用映射数据流时会生成零长度文件。
这是我的源文件:
链接服务/azureBlobLinkedService
{
"name": "azureBlobLinkedService",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"type": "AzureBlobStorage",
"parameters": {
"azureBlobConnectionStringSecretName": {
"type": "string"
}
},
"annotations": [],
"typeProperties": {
"connectionString": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "AzureKeyVaultLinkedService",
"type": "LinkedServiceReference"
},
"secretName": "@{linkedService().azureBlobConnectionStringSecretName}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
数据集/azureBlobSingleCSVFileNameDataset
{
"name": "azureBlobSingleCSVFileNameDataset",
"properties": {
"linkedServiceName": …Run Code Online (Sandbox Code Playgroud) 我正在 Azure DevOps 上创建一个发布管道来部署 ReactJs 应用程序。我的发布管道中有两个任务:下载构建工件任务和 AzureBlob 文件复制任务。AzureBlob 文件复制任务引发以下错误:
上传到容器:存储帐户中的“$web”:带有 blob 前缀的“XyzContainer”:“失败并出现错误:”将文件上传到 blob 存储时,“AzCopy.exe 以非零退出代码退出。
请看下面的截图:
以下是 AzureBlob 文件复制任务的设置:
谢谢你。
azure-blob-storage azure-devops azure-pipelines-release-pipeline
I need to list all of the blobs in an Azure Blobstorage container. The container has circa 200,000~ blobs in it, and I'm looking to obtain the blob name, the last modified date, and the blob size.
Following the documentation for the Azure Java SDK V12, the following code should work:
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(AzureBlobConnectionString).buildClient();
String containerName = "container1";
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
System.out.println("\nListing blobs...");
// List the blob(s) in the container.
for (BlobItem blobItem : containerClient.listBlobs()) {
System.out.println("\t" …Run Code Online (Sandbox Code Playgroud) azure ×7
c# ×2
azure-devops ×1
azure-pipelines-release-pipeline ×1
azure-sdk ×1
c#-3.0 ×1
hadoop ×1
java ×1
python ×1