sha*_*nny 3 azure azure-blob-storage
我们有一个天蓝色的 blob 存储,并启用了日志记录。我可以使用管理门户查看这些日志并下载 blob。但现在我尝试使用客户端 api 列出这些日志。大致意思是:
let account = new CloudStorageAccount(credentials, true)
let client = account.CreateCloudBlobClient()
let container = client.GetContainerReference "$logs"
container.ListBlobs()
Run Code Online (Sandbox Code Playgroud)
但这会引发网络异常代码400 Bad Request。我可以。但是,在此客户端上列出来自其他容器的 blob。我知道我需要对此容器进行身份验证,但我正在使用凭据的主访问密钥。那么为什么我无法获取 $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
Run Code Online (Sandbox Code Playgroud)
以上代码需要Storage Client Library 2.0。
您只返回一项的原因是您正在调用ListBlobs不带参数的函数。如果您在此处查看此函数的定义(http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx),您会发现您可以通过将参数指定为 true 来获取 Blob 容器中的所有 Blob useFlatBlobListing(我在上面的代码中执行此操作)。请尝试一下,它会返回 Blob 容器中所有 Blob 的列表。
| 归档时间: |
|
| 查看次数: |
1894 次 |
| 最近记录: |