标签: azure-storage-blobs

Azure Blob存储与文件服务

请纠正我的错误.从我对该主题的阅读到目前为止,在我看来,Azure Blob存储和文件服务都提供了存储文件和文件夹的能力(我知道blob可以存储任何二进制对象,但任何序列化二进制流只是一天结束时的文件),是一个模仿文件系统的层次结构.

只有访问它们的API略有不同,因为除了使用REST API之外,文件服务还允许您使用类似函数的Win32文件I/O查询源代码.

如果您希望应用程序存储应用程序用户拥有的某些文件,为什么还要选择另一个?

azure azure-storage azure-storage-blobs

119
推荐指数
3
解决办法
5万
查看次数

拥有许多小型Azure存储blob容器(每个容器都有一些blob)或者一个真正大容量的blob容器更好吗?

所以场景如下:

我有一个Web服务的多个实例,它将一大块数据写入Azure存储.我需要能够根据收到的时间将blob分组到容器(或虚拟目录)中.偶尔(最糟糕的每一天)旧的blob将被处理然后被删除.

我有两个选择:

选项1

我创建了一个名为"blobs"的容器(例如),然后将所有博客存储到该容器中.每个blob将使用目录样式名称,目录名称是接收时间(例如"hr0min0/data.bin","hr0min0/data2.bin","hr0min30/data3.bin","hr1min45/data.bin" ",...,"hr23min0/dataN.bin"等 - 每隔X分钟一个新目录.处理这些blob的事情将首先处理hr0min0 blob,然后处理hr0minX等等(并且在处理时仍然会写入blob).

选项2

我有许多容器,每个容器都有一个基于到达时间的名称(所以首先是一个名为blobs_hr0min0的容器,然后是blobs_hr0minX等),容器中的所有blob都是到达指定时间的那些blob.处理这些博客的事情将一次处理一个容器.

所以我的问题是,哪个选项更好?选项2是否为我提供了更好的并行化(因为容器可以位于不同的服务器中),或者选项1是否更好,因为许多容器可能导致其他未知问题?

azure azure-storage azure-storage-blobs

75
推荐指数
4
解决办法
2万
查看次数

61
推荐指数
4
解决办法
3万
查看次数

Azure Block Blob和Page Blob之间的差异?

当我最近开始混音时Windows Azure,我遇到了一种情况,即Block Blob&之间的哪一个Page Blob.我目前正在将一些text,csv或dat文件上传到blob存储,然后MapReduce使用我的C#程序为它做一个程序.是的,我已经经历了一些物品,如走了第一条,第二条.

但无法从他们那里得到一个明确的想法.缩短,Block Blob vs Page Blob.任何帮助,将不胜感激.

azure azure-storage azure-storage-blobs hdinsight

49
推荐指数
4
解决办法
4万
查看次数

如何在不编写自己的程序的情况下将一些文件上传到Azure blob存储中?

我创建了一个Azure存储帐户.我有一个400兆字节的.zip文件,我想将其放入blob存储空间供以后使用.

如果不编写代码,我怎么能这样做呢?那有什么接口吗?

windows azure azure-storage azure-storage-blobs

46
推荐指数
5
解决办法
4万
查看次数

尝试创建资产时出现System.NotSupportedException

我试图使用Azure MediaService API与一起Azure Storage APIAPI Service中主持Azure.

用户将视频流发送到服务HttpPost,服务将视频保存为我的存储帐户中的blob,媒体服务对视频进行编码,当视频链接准备就绪时,将其返回给用户.

但是,当我试图创建Asset一个System.NotSupportedException被抛出与消息:

抛出异常:Microsoft.Data.Services.Client.dll中的'System.NotSupportedException'抛出异常:mscorlib.dll中的'System.NotSupportedException'iisexpress.exe错误:0:Exception = System.NotSupportedException:此目标框架不支持您直接枚举数据服务查询.这是因为枚举会自动向数据服务发送同步请求.由于此框架仅支持异步操作,因此必须调用BeginExecute和EndExecute方法来获取支持枚举的查询结果.

我使用以下版本的所需依赖项:

Microsoft.Data.Services.Client - 5.6.2.0
Microsoft.WindowsAzure.MediaServices.Client - 3.0.0.8
Microsoft.WindowsAzure.Storage - 3.1.0.1
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

CloudMediaContext _context;
IAsset asset;
using (MemoryStream Ms = new MemoryStream(data.Data))
{
    _context = new CloudMediaContext("accountName", "accountKey");
    asset = await _context.Assets.CreateAsync("blobContainerName",
        AssetCreationOptions.None,CancellationToken.None);
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

data.Data包含byte[]视频.CreateAsync调用时抛出异常.我试着_context.Assets.Create没有运气.

重要编辑

我创建了一个新的控制台应用程序,使用了我在API服务中使用的代码并且它已成功执行.所以问题出在API服务中.

这是我的类和方法定义

public class UploadController : ApiController
{

    [HttpPost]
    public …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-storage-blobs async-await azure-media-services

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

Blob容器创建异常

每次我尝试为blob创建容器时都会出现异常

使用以下代码


CloudStorageAccount storageAccInfo;
CloudBlobClient blobStorageType;
CloudBlobContainer ContBlob;

blobStorageType = storageAccInfo.CreateCloudBlobClient();

//then I initialize storageAccInfo

ContBlob = blobStorageType.GetContainerReference(containerName);
//everything fine till here ; next line creates an exception

ContBlob.CreateIfNotExist();
Run Code Online (Sandbox Code Playgroud)
Microsoft.WindowsAzure.StorageClient.StorageClientException was unhandled
  Message="One of the request inputs is out of range."
  Source="Microsoft.WindowsAzure.StorageClient"
  StackTrace:
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
       at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
       at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImplWithRetry[T](Func`2 impl, RetryPolicy policy)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist(BlobRequestOptions options)
       at Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.CreateIfNotExist()
       at WebRole1.BlobFun..ctor() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 58
       at WebRole1.BlobFun.calling1() in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\WebRole1\BlobFun.cs:line 29
       at AzureBlobTester.Program.Main(String[] args) in C:\Users\cloud\Documents\Visual Studio 2008\Projects\CloudBlob\AzureBlobTester\Program.cs:line 19
       at …
Run Code Online (Sandbox Code Playgroud)

windows azure azure-storage azure-storage-blobs

41
推荐指数
2
解决办法
2万
查看次数

备份Azure Blob存储内容的最佳方法是什么

我知道Azure存储实体(blob,表和队列)具有内置的弹性,这意味着它们被复制到同一数据中心的3个不同服务器.最重要的是,它们也可以被复制到物理上位于不同地理区域的不同数据中心.出于所有实际目的,在这种情况下丢失数据的可能性接近于零.

但是,如果一个草率的开发人员(或者受酒精影响的开发人员))通过Azure门户或Azure存储资源管理器工具意外删除了存储帐户,会发生什么?最糟糕的是,如果黑客获取您的帐户并清除存储会怎么样?有没有办法检索已删除blob的千兆字节或是这样吗?不知何故,我认为必须有一个优雅的解决方案,Azure基础设施在这里提供,但我找不到任何文档.

我能想到的唯一解决方案是编写自己的流程(工作者角色),定期将我的整个存储备份到不同的订阅/帐户,从而大大增加了存储和交易成本.有什么想法吗?

问候,

阿尔奇尔

backup azure azure-storage azure-storage-blobs

40
推荐指数
1
解决办法
3万
查看次数

Azure Blob 400关于创建容器的错误请求

我正在开发一个ASP.Net MVC 4应用程序,我正在使用Azure Blob来存储我的用户要上传的图像.我有以下代码:

 var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);

 var blobStorage = storageAccount.CreateCloudBlobClient();
 //merchantKey is just a GUID that is asociated with the merchant
 var containerName = ("ImageAds-" + merchant.merchantKey.ToString()).ToLower();
 CloudBlobContainer container = blobStorage.GetContainerReference(containerName);
 if (container.CreateIfNotExist())
    {
       //Upload the file
    } 
Run Code Online (Sandbox Code Playgroud)

一旦if语句被删除,我就会收到以下异常:

  {"The remote server returned an error: (400) Bad Request."}
Run Code Online (Sandbox Code Playgroud)

我以为这是容器的名称,但我没有看到任何错误.连接字符串似乎创建了一个包含blob所有详细信息的良好存储空间.我不知所措.我研究了网络,每个人都说这是一个命名问题,但我发现它没有任何问题.

我使用的测试容器名称: imageads-57905553-8585-4d7c-8270-be9e611eda81

Container有以下uri: {http://127.0.0.1:10000/devstoreaccount1/imageads-57905553-8585-4d7c-8270-be9e611eda81}

更新: 我已将容器名称更改为just image,我仍然得到相同的异常.开发连接字符串如下:<add name="StorageConnection" connectionString="UseDevelopmentStorage=true" />

azure blobstorage azure-storage azure-storage-blobs asp.net-mvc-4

36
推荐指数
5
解决办法
3万
查看次数

将Cache-Control和Expires标头添加到Azure存储Blob

我正在使用Azure存储来提供静态文件blob,但我希望在提供服务时为文件/ blob添加Cache-Control和Expires标头以降低带宽成本.

CloudXplorer和Cerebrata的Cloud Storage Studio这样的应用程序提供了在容器和blob上设置元数据属性的选项,但在尝试添加Cache-Control时会感到不安.

有人知道是否可以为文件设置这些标头?

c# cache-control azure azure-storage-blobs

34
推荐指数
3
解决办法
2万
查看次数