Azure Blob 存储 - $logs 容器中的 listblob

标签 azure azure-blob-storage

我们有一个 azure 的 blob 存储,并启用了日志记录。 我可以使用管理门户查看这些日志并下载 blob。 但现在我尝试使用客户端 api 列出这些日志。 大致思路是这样的:

let account = new CloudStorageAccount(credentials, true)
let client = account.CreateCloudBlobClient()
let container = client.GetContainerReference "$logs"
container.ListBlobs()

但这会引发网络异常代码400 Bad Request。 我可以。但是,在此客户端上列出来自其他容器的 blob。 我知道我需要对此容器进行身份验证,但我正在使用凭据的主访问 key 。 那么为什么我无法获取 $logs blob?

谢谢

最佳答案

正如我在上面的评论中提到的,您需要使用可以从 Nuget 获取的最新版本的存储客户端库:http://nuget.org/packages/WindowsAzure.Storage/ .

这是示例代码:

open Microsoft.WindowsAzure.Storage
open Microsoft.WindowsAzure.Storage.Auth
open Microsoft.WindowsAzure.Storage.Blob

[<EntryPoint>]
let main argv = 
    let credentials = new StorageCredentials("accountname", "accountkey")
    System.Console.WriteLine(credentials.AccountName)
    let account = new CloudStorageAccount(credentials, true)
    System.Console.WriteLine(account.BlobEndpoint)
    let client = account.CreateCloudBlobClient();
    let container = client.GetContainerReference "$logs"
    System.Console.WriteLine(container.Uri)
    let blobs = container.ListBlobs("", true, BlobListingDetails.All, null, null);
    for blob in blobs do
        System.Console.WriteLine(blob.Uri)
    let response = System.Console.ReadLine()
    0 // return an integer exit code

以上代码需要存储客户端库2.0。

您只返回一项的原因是您正在调用不带参数的 ListBlobs 函数。如果您在此处查看此函数的定义 ( http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx ),您会发现可以通过将 useFlatBlobListing 参数指定为 true 来获取 Blob 容器中的所有 Blob(我在代码中执行此操作)多于)。请尝试一下,它会返回 Blob 容器中所有 Blob 的列表。

关于Azure Blob 存储 - $logs 容器中的 listblob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16054810/

相关文章:

python - 使用 python 将文件加载到 Azure 文件存储

Azure Pipeline 部署到应用服务失败 : "Resource doesn' t exist. 资源在部署之前应该存在”。但应用服务正在运行

sql-server - 使用 pyodbc 从 Azure Synapse Notebook 连接到 SQL Server 时出错

sql-server - 使用 SSMS 将 CSV 导入 SQL Azure 数据库

azure - 如何跳过Azure数据工厂、复制数据工具中已复制的文件?

apache-spark - 读取过去 2 小时在 Pyspark 中创建的 parquet 文件

c#-4.0 - Windows azure - 无法从传输连接读取数据: An existing connection was forcibly closed by the remote host

azure - 使用 Azure API 了解 Blob 对象是否存在的方法

Azure Blob 存储文件级安全性

azure - Azure Blob 存储和 Azure databricks 之间的高效数据检索过程