我看过文献表明您应该能够使用以下网址访问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容器,在那里我可以授予公共访问权限。
我发现错误的参考?是不是可以通过http浏览器访问日志,还是我忽略了什么?
答案 0 :(得分:2)
您收到此错误的原因是因为$logs
容器的ACL设置为Private
,因此未经身份验证的请求会因404(未找到)错误而失败。 请将此容器的ACL从 Private
更改为Blob
(或Container
),然后您应该可以直接访问日志。
<强>更新强>
由于$logs
是系统生成的容器,因此您无法更改其ACL(这就是为什么当您尝试进行此操作时,您会收到403错误的原因执行此操作)。您需要做的是在此容器上使用Shared Access Signature
和Read
权限创建List
。您只能使用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,只需在container name
之后和?
之前的SAS网址中插入blob名称,如下所示:
http://accountname.blob.core.windows.net/ $日志/斑点/ 2015/01 /一千三分之十六/ 000000.log SV = 2014年2月14日&安培; SR = C&安培; SIG = sAmaOtRqXqyedQEfmDGsoCPxGXUUcMO43GhimoPjbxA%3D&安培; ST = 2015-09-01T18 %3A30%3A00Z&安培; SE = 2015-09-09T18%3A30%3A00Z&安培; SP = RL
将此网址粘贴到浏览器的地址栏后,您应该能够看到日志。