如何通过 http 访问 Azure 存储日志?

How to access Azure Storage Logs via http?

我看到的文献表明您应该能够使用 url 访问 Azure 存储容器 (somectr) 中的日志文件,例如:

http://somectr.blob.core.windows.net/$logs?restype=container&comp=list&prefix=blob/2015/08/28/0900/000000.log

并获取该日期的日志文件目录:

http://somectr.blob.core.windows.net/$logs?restype=container&comp=list&prefix=blob/2015/08/

但是我在执行此操作时收到 404 错误。我认为这表明该对象没有访问权限。

我可以在 Azure 存储资源管理器中看到日志文件,甚至可以查看它,但存储资源管理器不允许我编辑对此容器的访问权限(尽管我可以在其他(非系统)容器上编辑)。列出了实际的日志文件,并且存在(我什至可以使用资源管理器查看它,但我想要通过 http 访问它。

我什至在 Azure 门户或 Azure Preveiw 门户中也看不到 $log 容器,我可以在其中授予 public 访问权限或其他内容。

是不是我找的引用有误?是无法通过 http 浏览器访问日志,还是我忽略了什么?

您收到此错误的原因是因为 $logs 容器的 ACL 设置为 Private 因此未经身份验证的请求失败并显示 404(未找到)错误。 请将此容器的 ACL 从 Private 更改为 Blob(或 Container),然后您应该可以直接访问日志。

更新

由于 $logs 是系统生成的容器,您无法更改它的 ACL(这就是为什么您在尝试执行此操作时会收到此 403 错误)。您需要做的是在此容器上创建一个具有 ReadList 权限的 Shared Access Signature。您只能为此使用 Azure 存储资源管理器(请参见下面的屏幕截图)。

要列出该容器中的 blob,只需将 comp=list&restype=container 添加到 SAS URL。当您将 URL 放入浏览器的地址栏时,您应该能够看到 blob 列表。

   <?xml version="1.0" encoding="utf-8"?>
    <EnumerationResults ServiceEndpoint="http://account.blob.core.windows.net/" ContainerName="$logs">
        <Blobs>
            <Blob>
                <Name>blob/2015/01/16/1300/000000.log</Name>
                <Properties>
                    <Last-Modified>Fri, 16 Jan 2015 13:50:16 GMT</Last-Modified><Etag>0x8D1FFAA7E1ECE77</Etag>
                    <Content-Length>1819</Content-Length>
                    <Content-Type>application/octet-stream</Content-Type>
                    <Content-Encoding />
                    <Content-Language />
                    <Content-MD5 />
                    <Cache-Control />
                    <Content-Disposition />
                    <BlobType>BlockBlob</BlobType>
                    <LeaseStatus>unlocked</LeaseStatus>
                    <LeaseState>available</LeaseState>
                </Properties>
            </Blob>
        </Blobs>
    </EnumartionResults>
...

要查看 blob,只需在 SAS URL 中 container name 之后和 ? 之前插入 blob 名称,如下所示:

http://accountname.blob.core.windows.net/$logs/blob/2015/01/16/1300/000000.log?sv=2014-02-14&sr=c&sig=sAmaOtRqXqyedQEfmDGsoCPxGXUUcMO43GhimoPjbxA%3D&st=2015-09-01T18%3A30%3A00Z&se=2015-09-09T18%3A30%3A00Z&sp=rl

将此 URL 粘贴到浏览器的地址栏后,您应该能够看到日志。